Недавно встала задача в конфигурации ERP в форме списка документов "Заказы клиентов", выводить дополнительную информацию в виде "скрепки" которая бы говорила о том что данный документ имеет прикрепленные скан копии документов подтверждающие его значимость.
В стандартной конфигурации за вывод списка документов отвечает динамический список, там нужная информация отсутствует рис 1-2.

Рис 1.

Рис 2.
Сама форма списка выглядит пока вот так рис 3. Кроме того что заказ проведен не видим ни каких других картинок

Рис 3.
Решение .
Оно заключается в двух вариантах назовем их так:
Меняем жестко динамический список
Меняем мягко динамический список
1. Меняем динамический список на уровне запросов
Поискал где и информация о том что к документу прикреплены скан копии файлы документов.
Они конечно же в регистре сведений "Наличие файлов", разработку ведем в расширении,
заимствуя туда необходимые объекты рис 4.

Заходи на "ФормуСпискаДокументов" ( а не на "Форму Списка" !) и меняем динамический список добавив регистр "Наличие файлов" и создав "Левое соединение" с регистром . рис 5-6.

Рис 5.

В динамическом списке появилось новое поле "ЕстьФайл" типа булево. Рис 7.

Рис 7.
В свойствах поля устанавливаем тип "картинка" и назначаем картинку "скрепку" в том числе и в шапке поля Рис 8.

Все готово осталось посмотреть на результат Рис 9.

2. Минимальное изменение запроса в динамическом списке, вывод дополнительной информации при обработке списка.
Исходный запрос динамического списка может быть достаточно сложный в плане соединений таблиц источников и другого, для того чтобы добавить свои изменения в виде соединений с регистрами.
Какой же вариант в этом случае? Он заключается в добавление в запрос лишь полей которые будут выводится на форме. Рис 2.1

По умолчанию это поле всегда имеет значение = Ложь, поле появилось у нас в динамическом списке, выносим его на форму установив вид "Поле Картинки" и установив значение поля "Картинка значений" в виде картинки скрепки Рис 2.2

Ну и теперь остается получить каким то образом доступ к дополнительным реквизитам чтобы присвоить им значения при выводе формы списка (Заказы клиента).
За это отвечает метод модуля формы - "СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)", в этом методе параметр "Строки" поможет реализовать заполнение при выводе списка. Заимствуем этот метод в расширение из основной конфигурации с директивой "&Изменение Контроль" и пропишем в нем необходимы код. Рис 2.3
&НаСервереБезКонтекста
&ИзменениеИКонтроль("СписокПриПолученииДанныхНаСервере")
Процедура sps_СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
#Вставка
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НаличиеФайлов.ЕстьФайлы КАК ЕстьФайлы,
| НаличиеФайлов.ОбъектСФайлами КАК ОбъектСФайлами
|ИЗ
| РегистрСведений.НаличиеФайлов КАК НаличиеФайлов
|ГДЕ
| НаличиеФайлов.ОбъектСФайлами В(&ЗаказыКлиента)";
Запрос.УстановитьПараметр("ЗаказыКлиента",Строки.ПолучитьКлючи());
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка <> неопределено Тогда
Пока Выборка.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
СтрокаСписка = Строки[Выборка.ОбъектСФайлами];
СтрокаСписка.Данные.ЕстьФайл = Выборка.ЕстьФайлы;
КонецЦикла;
КонецЕсли;
#КонецВставки
// ЭлектронноеВзаимодействие.СервисEDI
ДокументыEDIИнтеграция.ПриПолученииДанныхНаСервереСписокДокументов(Перечисления.ТипыДокументовEDI.ЗаказКлиента, ИмяЭлемента, Настройки, Строки);
// Конец ЭлектронноеВзаимодействие.СервисEDI
КонецПроцедуры
Рис 2.3
В этом коде очень важным является параметр - "Строки" у него есть ключи это ссылки на документы и значение этих ключей в виде данных. "Строки.ПолучитьКлючи()" функция позволяет получить все содержимое динамического списка, для его использования в дальнейшем для внесения информации и отображении уже с внесенной информацией.
Первоначально значения поля динамического списка "ЕстьФайл" имеет значение ложь Рис 2.4.

Подготовим запросом (который мы в первом варианте включали в текст запроса динамического списка) необходимые данные - документы в которых есть присоединенные файлы.
Используя виде ключа ссылки ("ОбъектСФайлами") на документы заказ клиента, подставим необходимые данные
СтрокаСписка = Строки[Выборка.ОбъектСФайлами];
СтрокаСписка.Данные.ЕстьФайл = Выборка.ЕстьФайлы;
и результат это список документов с дополнительными реквизитами или обработкой списка, можно назначить цвет, шрифт, вычислить какое то значение и другое при выводе списка.

Заключение:
Динамические списки мощный элемент в разработке на 1С, буду рад если для кого то материал статьи будет интересным.
До новых встреч на HABR .
(SPS).
Комментарии (3)
Naf2000
20.06.2025 12:56В первом варианте я бы сделал изменение запроса программно, например через схему запроса. Во 2-м тоже, но там изменения минимальны.
По поводу второго:
РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Если Выборка <> неопределено Тогда Пока Выборка.Следующий() Цикл
Зачем проверка на неравенство Неопределено?
sevenlis
а что в ЕРП разве нет функционала БСП?