Передача элементов динамического списка в ПараметрКоманды

1. AlexUnder 23.03.24 10:51 Сейчас в теме
Приветствую всех!
При вызове процедуры печати из модуля менеджера документа, в ПараметрКоманды содержатся ссылки на выбранные элементы динамического списка.
Подскажите пожалуйста, как передать все значения(Документ.Ссылка) динамического списка в ПараметрКоманды, чтобы пользователь не прибегал к ручному выбору?
Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. polax 23.03.24 16:17 Сейчас в теме
А какие элементы списка задействованы? Если это выбранные строки, то у ДС есть метод ВыбранныеСтроки - массив в котором хранятся строки выделенные пользователем. Если же нужно что-то выбирать, то можно ДС преобразовать в ТЗ и там осуществлять поиск и вывод нужных строк/значений
3. AlexUnder 23.03.24 16:37 Сейчас в теме
(2) Задействованы выбранные строки. Сама задача передать не выбранные строки, а все строки динамического списка в "ПараметрКоманды".
В коде реализовано следующим образом:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ТабДок = Новый ТабличныйДокумент;
	Печать(ТабДок, ПараметрКоманды);
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.Показать("Маршрутный лист");
	//}}
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды) 
	Документы.Продажи.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры
Показать
4. polax 23.03.24 17:13 Сейчас в теме
Выводи ДС в таблицу значений и ее как параметр
&НаСервере
Функция ВТЗ()

    //Получаем СКД с текстом запроса
    СКД_запрос = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();

    //Получаем настройки пользователя (отборы, сортировки и т.п.)
    Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

    //Переводим динамический список в таблицу значений
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД_запрос, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

    ПроцессорВыводаРезультата = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЗ = ПроцессорВыводаРезультата.Вывести(ПроцессорКомпоновкиДанных);// Таблица значений

    Возврат ТЗ();

КонецФункции
Показать
5. AlexUnder 24.03.24 08:23 Сейчас в теме
(4)
&НаСервере
Функция ВТЗ()

//Получаем СКД с текстом запроса
СКД_запрос = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();

//Получаем настройки пользователя (отборы, сортировки и т.п.)
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();

//Переводим динамический список в таблицу значений
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД_запрос, Настройки, , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);

ПроцессорВыводаРезультата = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТЗ = ПроцессорВыводаРезультата.Вывести(ПроцессорКомпоновкиДанных);// Таблица значений

Возврат ТЗ();

КонецФункции
Показать


Прошу прощения, я некорректно сформировал вопрос, требуется передать ссылки на все документы содержащиеся в ДС.

В предложенной Вами реализации передаются только строки.
6. polax 24.03.24 08:50 Сейчас в теме
А просто взять запрос динамического списка, выполнить его и результат (ТЗ или выгруженная колонка с ссылкой - массив) передать как параметр? Зачем еще что-то придумывать, если надо ВЕСЬ ДС?
AlexUnder; +1 Ответить
7. AlexUnder 24.03.24 09:09 Сейчас в теме
(6) Полагаю годный вариант, спасибо за уделенное внимание и помощь.
Решил другим способом. Передал дату из "ПараметрыВыполненияКоманды" в модуль менеджера, и оттуда дернул запросом.
Возможно кому-то пригодится:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ТабДок = Новый ТабличныйДокумент;
	Если ПараметрыВыполненияКоманды.Источник.ПоказатьВсеПродажи <> Истина Тогда
	Печать(ТабДок, ПараметрыВыполненияКоманды.Источник.ДеньПродаж);
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.Показать("Маршрутный лист");
Иначе
	  Сообщение = Новый СообщениеПользователю;
	  Сообщение.Текст = "Печать маршрутного листа по всем продажам невозможна. Пожалуйста выберите необходимый день продаж.";
	  Сообщение.Сообщить();
КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ДеньПродаж) 
	Документы.Продажи.Печать(ТабДок, ДеньПродаж);
КонецПроцедуры
Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот