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