Недавно встала задача в конфигурации 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).
ссылка на оригинал статьи https://habr.com/ru/articles/920304/
Добавить комментарий