Динамический спискок - "реквизит1" таблица на форме.
Функция выгружает динамический список с учетом отбора в таблицу значений "ТаблицаРезультат".
Далее выгружаем ссылки на элементы в массив для дальнейшей передачи клиенту.
&НаСервере Функция СписокВТЗнаСервере() // реквизит1 - динамический список на форме
Схема = Элементы.Реквизит1.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Настройки = Элементы.Реквизит1.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки); массивСсылок=ТаблицаРезультат.ВыгрузитьКолонку("Ссылка"); // выгружаем ссылки в массив для передачи клиенту возврат массивСсылок; КонецФункции
Идею взял отсюда: https://forum.infostart.ru/forum9/topic73522/
Приведу весь текст обработки "Групповое перемещение номенклатуры в выбранную группу". Переделать ее можно под что угодно.
Задача была такая:
У клиента более 130 тысяч товаров. Нужно сделать обработку чтобы было удобно перемещать их в нужные группы.
Стандартные обработки типа "Универсальный подбор и обработка объектов 1С 8.3" никак не хотели видеть дополнительные реквизиты, только через запросы.
Поэтому было решено с ними не заморачиваться, а написать свою обработку.
&НаСервере Функция СписокВТЗнаСервере() // реквизит1 - динамический список на форме Схема = Элементы.Реквизит1.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); Настройки = Элементы.Реквизит1.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных(); МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаРезультат = ПроцессорВывода.Вывести(ПроцессорКомпоновки); массивСсылок=ТаблицаРезультат.ВыгрузитьКолонку("Ссылка"); // выгружаем ссылки в массив для передачи клиенту возврат массивСсылок; КонецФункции &наСервере процедура ПереброситьНоменклатуруНаСервере(эл) ном=эл.получитьОбъект(); ном.родитель=НовыйРодитель; ном.записать(); конецПроцедуры &НаКлиенте Процедура ПереброситьНоменклатуру(Команда) если НЕ ЗначениеЗаполнено(НовыйРодитель) тогда сообщить("Укажите новый каталог"); возврат; конецЕсли; массивСсылок=СписокВТЗнаСервере(); сч = 0; СчМах = МассивСсылок.Количество(); Для каждого эл Из МассивСсылок Цикл // Элементы.Реквизит1.ТекущаяСтрока = эл; сч=сч+1; Состояние(эл, сч/СчМах*100,"... обработка", БиблиотекаКартинок.Обработка); ПереброситьНоменклатуруНаСервере(эл); ОбработкаПрерыванияПользователя(); КонецЦикла; Элементы.Реквизит1.Обновить(); КонецПроцедуры