Рассмотрим ситуацию, когда в нетиповой или самописной конфигурации 1С на управляемых формах (без использования Библиотеки Стандартных Подсистем — БСП) требуется выгрузить или напечатать один документ сразу для нескольких выделенных элементов справочника (например, справочника «Сотрудники»). Разберем основные способы реализации этой задачи.
Это наиболее удобный и штатный механизм платформы 1С:Предприятие 8.3 для работы со списками объектов.
Разберем порядок настройки команды в конфигураторе по шагам:
Справочники.Сотрудники) и создаем новую команду.СправочникСсылка.Сотрудники);Множественный.Проанализируем пример кода в модуле команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// ПараметрКоманды содержит массив ссылок на выделенные строки
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("МассивСотрудников", ПараметрКоманды);
// Открываем форму внешней обработки или отчета, передавая массив ссылок
ОткрытьФорму("Обработка.ПечатьОтчетаПоСотрудникам.Форма",
ПараметрыОткрытия,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность);
КонецПроцедуры
Если требуется передать выбранные элементы напрямую из формы списка с помощью кнопки, размещенной на самой форме, воспользуемся свойством динамического списка ВыделенныеСтроки.
Элементы.Список) и проверяем, чтобы свойство МножественныйВыбор было установлено в значение Истина.Посмотрим на пример кода в модуле формы списка:
&НаКлиенте
Процедура СформироватьПечать(Команда)
// Получаем массив ссылок на выделенные в списке элементы
МассивВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки;
Если МассивВыделенныхСтрок.Количество() = 0 Тогда
ПоказатьПредупреждение(, "Не выбрано ни одного элемента!");
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура("МассивСсылок", МассивВыделенныхСтрок);
ОткрытьФорму("ВнешняяОбработка.ПечатьДокументов.Форма", ПараметрыФормы);
КонецПроцедуры
Выясним основные нюансы, которые необходимо учитывать при передаче множественного выбора:
ВыделенныеСтроки возвращает массив ссылок только в том случае, если у динамического списка в свойствах заполнена ОсновнаяТаблица. Если список сформирован на основе произвольного запроса без основной таблицы, элементы массива будут содержать не ссылки, а ключи строк (структуры).ТипЗнч(Элемент).ВыделенныеСтроки доступно только на клиенте. Передача массива ссылок на сервер для выполнения запросов или формирования печатной формы должна выполняться явным образом через параметры серверных процедур и функций.