Иногда возникает потребность вывести в динамическом списке дополнительные поля из таблиц, рассчитанных и хранящихся на форме обработки. Для простоты имеем на форме вверху таблицу типа ТаблицаЗначений, внизу выводится список номенклатуры, по кнопке Приджойнить в динамическом списке проставляются значения из верхней таблицы.
Для вывода значений из таблицы воспользовался событием
&НаСервереБезКонтекста
ПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Проблема была как передать таблицу из формы на сервер без контекста - можно сохранить таблицу (точнее конвертации ее в соответствие или массив) или же можно поместить во временное хранилище и сохранить адрес таблицы в дополнительных свойствах настроек компоновщика данных динамического списка
&НаСервере
Процедура ПриджойнитьНаСервере()
.......................
//ТЗ - коллекция данных либо адрес в хранилице
СписокНоменклатуры.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("ТЗ", ТЗ);
Элементы.СписокНоменклатуры.Обновить();
КонецПроцедуры
При обновлении динамического списка срабатывает событие
&НаСервереБезКонтекста
Процедура СписокНоменклатурыПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
// Вставить содержимое обработчика.
Если Настройки.ДополнительныеСвойства.Свойство("ТЗ") Тогда
//получаем ТЗ
Для каждого Стр Из Строки Цикл
ДанныеСтроки = Стр.Значение.Данные;
СтрокаТЗ = ТЗ.Найти(ДанныеСтроки.Номенклатура,"Номенклатура");
Если СтрокаТЗ <> Неопределено Тогда
ДанныеСтроки.ДопПоле = СтрокаТЗ.ДопПоле;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Статья больше написана как шпаргалка для себя, но, может быть, кому-то будет полезна.