Всем привет!
Самописная конфигурация 1С Предприятие 8.2 в режиме "Управляемое приложение".
Для возможности использования "Субконто" при создании отчетов ведение счетов осуществляется с помощью объекта "ПланыСчетов.НИС_Учт_Сч_Счета".
Атрибут "ПланыСчетов.НИС_Учт_Сч_Счета" включен в табличную часть "Документы.Фин_Док_Платеж".
В то же время возникла задача отображения счетов в произвольном дереве. Для этого создан объект "Справочники.НИС_Учт_Сч_Счета". Один из атрибутов справочника "ПланыСчетов.НИС_Учт_Сч_Счета".
Теперь при редактировании "Документы.Фин_Док_Платеж" в табличной части атрибута "ПланыСчетов.НИС_Учт_Сч_Счета" нужно, чтобы выбор производился из более удобной формы отображения "Справочники.НИС_Учт_Сч_Счета".
Для этого сделал обработчик события "НачалоВыбора"
//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОперацииСчетДТНачалоВыбора
//
// Назначение: Вызывает интерфейс выбора "СчетДТ"
//
// Вызов: Вызывается при нажатии кнопки выбора или нажатии клавиши F4 на атрибуте "СчетДТ"
//
&НаКлиенте
Процедура ОперацииСчетДТНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// ===============================================
// = Создадим форму выбора из "Справочники.Счета =
// ===============================================
фВыборСчета = ОСНВ_ФормаВыбора();
фВыборСчета.ВладелецФормы = ЭтаФорма;
фВыборСчета.Открыть();
// ===============================
// = Передать выбранное значение =
// ===============================
//ОповеститьОВыборе(лСчетДТ);
// ===================================
// = Запретить стандартную обработку =
// ===================================
СтандартнаяОбработка = Ложь;
КонецПроцедуры // ОперацииСчетДТНачалоВыбора
//////////////////////////////////////////////////////////////////////////////
//
// Функция ОСНВ_ФормаВыбора
//
// Назначение: Возвращает форму выбора "Справочники.НИС_Учт_Сч_Счета"
//
// Вызов: Процедура ОперацииСчетДТНачалоВыбора
//
&НаСервереБезКонтекста
Функция ОСНВ_ФормаВыбора()
Возврат Справочники.НИС_Учт_Сч_Счета.ПолучитьФормуВыбора("ФормаВыбора");
КонецФункции // ОСНВ_ФормаВыбора
Насколько я Вас понял: неверная директива компиляции.
Попробовал совсем убрать, пробовал заменить "НаСервере" - результат та же ошибка.
ОткрытьФорму()
Здравствуйте!
Разрешите адресовать Вам еще один вопрос по доработке данной задачи.
Для использования в будущем единого механизма использования интерфейса выбора "Счет" решил запоминать ссылку на поле формы, откуда идет вызов, а затем по ней занести значение.
Для этого в начале модуля формы документа объявил переменную
///////////////////////////////////////////////////
//
// Назначение: Поле для занесения выбранного счета
//
// Использование:
// - устанавливается: Процедура ОперацииСчетДТНачалоВыбора
// - считывается для адресации значения: Процедура ОбработкаВыбора
//
Перем мВыборСчета;
//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОперацииСчетДТНачалоВыбора
//
// Назначение: Вызывает интерфейс выбора "СчетДТ"
//
// Вызов: При нажатии кнопки выбора или нажатии клавиши F4 на атрибуте "СчетДТ"
//
&НаКлиенте
Процедура ОперацииСчетДТНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
// ==================================================================================
// = ВОТ ЗДЕСЬ В ОТЛАДЧИКЕ ВИДНО, КАК ЗАПОМИНАЕТСЯ =
// ==================================================================================
мВыборСчета = Элементы.Операции.ТекущийЭлемент;
// ==========================================================
// = Создадим форму выбора из "Справочник.НИС_Учт_Сч_Счета" =
// ==========================================================
фВыборСчета = ОткрытьФорму("Справочник.НИС_Учт_Сч_Счета.Форма.ФормаВыбора");
фВыборСчета.ВладелецФормы = ЭтаФорма;
фВыборСчета.Открыть();
// ===================================
// = Запретить стандартную обработку =
// ===================================
СтандартнаяОбработка = Ложь;
КонецПроцедуры // ОперацииСчетДТНачалоВыбора
//////////////////////////////////////////////////////////////////////////////
//
// Процедура ОбработкаВыбора
//
// Назначение: Заполняет выбранный "СчетДТ"
//
// Вызов: При выборе значения в подчиненной форме
//
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
// =============================
// = Проверить источник выбора =
// =============================
Если ИсточникВыбора.ИмяФормы = "Справочник.НИС_Учт_Сч_Счета.Форма.ФормаВыбора" Тогда
// = Произведен выбор из "Справочник.НИС_Учт_Сч_Счета"
// ===================================================
// ================================
// = ТУТ ЗНАЧЕНИЕ "Неопределено", хотя должно сохраниться "ПолеФормы" =
// ================================
мВыборСчета = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");
КонецЕсли;
КонецПроцедуры // ОбработкаВыбора
С управляемыми формами, забудьте о глобальных переменных модуля. Навсегда забудьте.
Пропишите &НаКлиенте над Перем мВыборСчета; и должно заработать.
Элементы.Операции.ТекущиеДанные.СчетДТ = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");
// ================================
// = ТУТ тип мВыборСчета "ПолеФормы" =
// ================================
мВыборСчета = ОбщиеМеханизмыКлиента.ПолучитьЗначение("Справочник.НИС_Учт_Сч_Счета", ВыбранноеЗначение, "Счет");
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua