Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Замена интерфейса выбора ПланаСчетов          
SV71 Подменю пользователя
сообщение 09.09.14, 10:46
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Всем привет!

Самописная конфигурация 1С Предприятие 8.2 в режиме "Управляемое приложение".

Для возможности использования "Субконто" при создании отчетов ведение счетов осуществляется с помощью объекта "ПланыСчетов.НИС_Учт_Сч_Счета".
Атрибут "ПланыСчетов.НИС_Учт_Сч_Счета" включен в табличную часть "Документы.Фин_Док_Платеж".

В то же время возникла задача отображения счетов в произвольном дереве. Для этого создан объект "Справочники.НИС_Учт_Сч_Счета". Один из атрибутов справочника "ПланыСчетов.НИС_Учт_Сч_Счета".

Теперь при редактировании "Документы.Фин_Док_Платеж" в табличной части атрибута "ПланыСчетов.НИС_Учт_Сч_Счета" нужно, чтобы выбор производился из более удобной формы отображения "Справочники.НИС_Учт_Сч_Счета".

Для этого сделал обработчик события "НачалоВыбора"
//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОперацииСчетДТНачалоВыбора
//
// Назначение: Вызывает интерфейс выбора "СчетДТ"
//
// Вызов: Вызывается при нажатии кнопки выбора или нажатии клавиши F4 на атрибуте "СчетДТ"
//
&НаКлиенте
Процедура ОперацииСчетДТНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // ===============================================
    // = Создадим форму выбора из "Справочники.Счета =
    // ===============================================
    фВыборСчета = ОСНВ_ФормаВыбора();
    фВыборСчета.ВладелецФормы = ЭтаФорма;
    фВыборСчета.Открыть();
    
    // ===============================
    // = Передать выбранное значение =
    // ===============================
    //ОповеститьОВыборе(лСчетДТ);
    
    // ===================================
    // = Запретить стандартную обработку =
    // ===================================
    СтандартнаяОбработка = Ложь;
КонецПроцедуры // ОперацииСчетДТНачалоВыбора


//////////////////////////////////////////////////////////////////////////////
//
// Функция ОСНВ_ФормаВыбора
//
// Назначение: Возвращает форму выбора "Справочники.НИС_Учт_Сч_Счета"
//
// Вызов: Процедура ОперацииСчетДТНачалоВыбора
//
&НаСервереБезКонтекста
Функция ОСНВ_ФормаВыбора()
    Возврат Справочники.НИС_Учт_Сч_Счета.ПолучитьФормуВыбора("ФормаВыбора");
КонецФункции // ОСНВ_ФормаВыбора


При попытке исполнения возникает ошибка:
Цитата
{Документ.Фин_Док_Платеж.Форма.ФормаДокумента.Форма(770)}: Ошибка при вызове метода контекста (ПолучитьФормуВыбора)
Возврат Справочники.НИС_Учт_Сч_Счета.ПолучитьФормуВыбора("ФормаВыбора");
по причине:
Интерактивные операции недоступны


Подскажите пожалуйста: в чем проблема?

alex040269 Подменю пользователя
сообщение 09.09.14, 11:32
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(SV71 @ 09.09.14, 11:46) *
Подскажите пожалуйста: в чем проблема?

Цитата(SV71 @ 09.09.14, 11:46) *
&НаСервереБезКонтекста



Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

SV71 Подменю пользователя
сообщение 09.09.14, 12:09
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Насколько я Вас понял: неверная директива компиляции.

Попробовал совсем убрать, пробовал заменить "НаСервере" - результат та же ошибка.

Petre Подменю пользователя
сообщение 09.09.14, 12:21
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2902
Из: Київ, Україна
Спасибо сказали: 1144 раз
Рейтинг: 1225

ОткрытьФорму()


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

logist Подменю пользователя
сообщение 09.09.14, 12:25
Сообщение #5

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(SV71 @ 09.09.14, 12:09) *
Попробовал совсем убрать, пробовал заменить "НаСервере" - результат та же ошибка.

Замените
ОСНВ_ФормаВыбора();
на
ОткрытьФорму("ПутьКФормеВыбора")

не надо создавать лишних процедур.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: SV71,

SV71 Подменю пользователя
сообщение 09.09.14, 13:58
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(logist @ 09.09.14, 14:25) *
Замените
ОСНВ_ФормаВыбора();
на
ОткрытьФорму("ПутьКФормеВыбора")


Огромное спасибо!
Все получилось.
Тема закрыта.

SV71 Подменю пользователя
сообщение 10.09.14, 12:37
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Здравствуйте!

Разрешите адресовать Вам еще один вопрос по доработке данной задачи.

Для использования в будущем единого механизма использования интерфейса выбора "Счет" решил запоминать ссылку на поле формы, откуда идет вызов, а затем по ней занести значение.

Для этого в начале модуля формы документа объявил переменную
///////////////////////////////////////////////////
//
// Назначение: Поле для занесения выбранного счета
//
// Использование:
// - устанавливается: Процедура ОперацииСчетДТНачалоВыбора
// - считывается для адресации значения: Процедура ОбработкаВыбора
//
Перем мВыборСчета;


После этого в процедурах создал код заполнения и считывания значения
//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОперацииСчетДТНачалоВыбора
//
// Назначение: Вызывает интерфейс выбора "СчетДТ"
//
// Вызов: При нажатии кнопки выбора или нажатии клавиши F4 на атрибуте "СчетДТ"
//
&НаКлиенте
Процедура ОперацииСчетДТНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // ==================================================================================
    // = ВОТ ЗДЕСЬ В ОТЛАДЧИКЕ ВИДНО, КАК ЗАПОМИНАЕТСЯ =
    // ==================================================================================
    мВыборСчета = Элементы.Операции.ТекущийЭлемент;
    
    // ==========================================================
    // = Создадим форму выбора из "Справочник.НИС_Учт_Сч_Счета" =
    // ==========================================================
    фВыборСчета = ОткрытьФорму("Справочник.НИС_Учт_Сч_Счета.Форма.ФормаВыбора");
    фВыборСчета.ВладелецФормы = ЭтаФорма;
    фВыборСчета.Открыть();
    
    // ===================================
    // = Запретить стандартную обработку =
    // ===================================
    СтандартнаяОбработка = Ложь;
КонецПроцедуры // ОперацииСчетДТНачалоВыбора



//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОбработкаВыбора
//
// Назначение: Заполняет выбранный "СчетДТ"
//
// Вызов: При выборе значения в подчиненной форме
//
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
    // =============================
    // = Проверить источник выбора =
    // =============================
    Если ИсточникВыбора.ИмяФормы = "Справочник.НИС_Учт_Сч_Счета.Форма.ФормаВыбора" Тогда
        // = Произведен выбор из "Справочник.НИС_Учт_Сч_Счета"
        // ===================================================
        
        // ================================
        // = ТУТ ЗНАЧЕНИЕ  "Неопределено", хотя должно сохраниться "ПолеФормы" =
        // ================================
        мВыборСчета = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");
        
    КонецЕсли;  
КонецПроцедуры // ОбработкаВыбора


Когда в отладчике останавливаюсь в "Процедура ОбработкаВыбора", то значение переменной "мВыборСчета" неопределено, хотя при пошаговой отладке "Процедура ОперацииСчетДТНачалоВыбора" видно, что оно заполняется значением тип "ПолеФормы".

Наверное я неверно указываю глобальную переменную?
Подскажите как правильно?

DartRomanius Подменю пользователя
сообщение 10.09.14, 12:45
Сообщение #8

Ветеран
Иконка группы
Группа: Местный
Сообщений: 824
Из: Запорожье
Спасибо сказали: 145 раз
Рейтинг: 0

С управляемыми формами, забудьте о глобальных переменных модуля. Навсегда забудьте.


Signature
-----------------------------------------------------------------------------------
Единственный, интуитивно понятный интерфейс - мамкина сиська!
Всему остальному надо учиться! (с) Не знаю кто....

alex040269 Подменю пользователя
сообщение 10.09.14, 13:02
Сообщение #9

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Пропишите &НаКлиенте над Перем мВыборСчета; и должно заработать.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Спасибо сказали: SV71,

SV71 Подменю пользователя
сообщение 10.09.14, 13:43
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 80
Спасибо сказали: 3 раз
Рейтинг: 0

Цитата(alex040269 @ 10.09.14, 15:02) *
Пропишите &НаКлиенте над Перем мВыборСчета; и должно заработать.


Спасибо, помогло по передаче параметра.

Только теперь не получается занести информацию.

Прямое обращение работает нормально:
     Элементы.Операции.ТекущиеДанные.СчетДТ = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");


Через переданный параметр типа "ПолеФормы" отрабатывает без ошибок, но значение на форму не попадает. Непонятно куда оно вообще уходит.
       // ================================
        // = ТУТ тип  мВыборСчета "ПолеФормы" =
        // ================================
        мВыборСчета = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");


Помогите пожалуйста добить вопрос.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 13:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!