Прокачай список. Как добавить дополнительную информацию в динамический список с помощью расширения!

28.02.25

Разработка - Работа с интерфейсом

В статье узнаете, как улучшить функционал динамического списка в 1С с помощью расширений. Как добавить дополнительную информацию и новые колонки, интегрировать иконки. Простые шаги и примеры позволят вам расширить возможности вашей конфигурации.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Прокачай список. Как добавить дополнительную информацию в динамический список с помощью расширения!:
.rar 29,65Kb ver:1.1.1.1
88 Скачать бесплатно

Постановка задачи

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

Далее в качестве примера рассмотрю файлы с расширением JPG на примере одной колонки для конфигурации "Управление торговлей, редакция 11 (11.5.7.402)", версия платформы 8.3.24.1467.  

 

1. Добавляем расширение в конфигураторе 1С

Для начала, создадим расширение в конфигураторе 1С. Откройте вашу конфигурацию и добавьте новое расширение с назначением "Адаптация". Дайте ему имя, соответствующее вашим потребностям, и сохраните изменения. Так же можно снять флажок "Безопасный режим" для того чтобы убрать дополнительные проверки модулей расширения или регулировать профилем безопасности если решение работает в клиент-серверном варианте, подробнее тут. Ссылки на статьи по расширениям: Расширения конфигураций. Адаптация прикладных решений.Расширения конфигураций. Е. Ю. Хрусталева

 

2. В качестве примера форма списка номенклатуры, добавляем в расширение процедуру ПриСозданииНаСервереПосле

Теперь добавим в расширение процедуру ПриСозданииНаСервереПосле. Для этого откройте форму списка номенклатуры и добавьте в расширение  процедуру ПриСозданииНаСервере, встав на заголовок процедуры правой кнопкой мыши пункт "Добавить в расширение". Ниже приведен код, который будет перехватывать текст запроса динамического списка и добавлять новое поле ИндексКартинкиJPG.

 
 ПриСозданииНаСервереПосле

 

3. Добавляем новую колонку на форму программно

Следующий шаг — добавление новой колонки на форму программным способом. Для этого создаем новую процедуру на сервере СоздатьЭлементФормы ее так же можно разместить в общем модуле если планируется использовать в других формах, вызов процедуры происходит из процедуры описанной выше ПриСозданииНаСервереПосле. Используем следующий код:

 
 СоздатьЭлементФормы сокращенный вариант

 

 
 СоздатьЭлементФормы для добавления разных элементов программно

 

4. Вывод иконки картинки в строках событие ПриПолученииДанныхНаСервере

Для вывода иконки картинки в строках добавим в расширении обработчик события динамического списка ПриПолученииДанныхНаСервереПосле. Пример кода ниже:

 
 ПриПолученииДанныхНаСервереПосле

 

5. Открытие файла 2-м кликом событие СписокВыбор

Для открытия файла двойным кликом добавим обработчик события динамического спискаВыборПосле. Код ниже:

 
 ВыборПосле

 

Результаты работы расширения

Отрываем форму списка номенклатуры, получаем новую колонку JPG в списке:

 

 

Позиционируемся на первой колонке и при двойном клике открываем окно присоединенных файлов:

 

 

Следуя этим шагам, вы сможете добавить дополнительную информацию в динамический список с помощью расширения. Преимущество способа - конфигурация на поддержке, что значительно упрощает ее обновление.

Спасибо за внимание.

Применение cтандартов и методик разработки конфигураций на практике

Шаблоны для применения cтандартов и методик разработки конфигураций 1С

Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3.

Конфигурация "Табель учета рабочего времени. (Учет работ, доходов и расходов. Взаимодействие с клиентами)"

Применение ChatGPT в 1С и не только

Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.

Загрузка данных из унифицированных форм УПД и ТОРГ-12.

Список документов и их количество в базе.

 

 

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.7.402

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56402    31    25    

45

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36000 руб.

28.08.2025    2702    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Расширение «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

6000 руб.

14.01.2016    58241    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22865    32    6    

51

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Редактор графов в 1С - внешний отчет, который формирует графы на основе таблицы значений, используя рисунки табличного документа. Есть возможность добавления, редактирования объектов графа и выгрузки результата в таблицу значений.

5040 руб.

06.10.2020    12852    8    8    

14

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    43395    mrXoxot    44    

138

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    24834    smielka    38    

111
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aximo 2530 19.07.24 12:15 Сейчас в теме
Вот тип процедур "ПриПолученииДанныхНаСервереПосле", касаемых динамических списков - будет сильно тормозить весь список...

идеально, когда весь список собран единым запросом
2. improg 742 21.07.24 16:08 Сейчас в теме
(1) Ну, такой способ самый распространенный, хотя и не самый оптимальный, но рабочий. Вы предлагаете делать множество левых соединений в запросе ДС?
5. ixijixi 2070 22.07.24 11:49 Сейчас в теме
(2) Снизить нагрузки можно закэшировав уже полученные значения
&НаСервереБезКонтекста
Процедура УТ_СписокРасширенныйПоискНоменклатураПриПолученииДанныхНаСер­вереПосле(ИмяЭлемента, Настройки, Строки)

	Если Не Настройки.ДополнительныеСвойства.Свойство("Кэш") Тогда
		Настройки.ДополнительныеСвойства.Вставить("Кэш", Новый Массив);
	КонецЕсли;
	
	НеобработанныеСсылки = ОбщегоНазначенияКлиентСервер.РазностьМассивов(Строки.ПолучитьКлючи(), Настройки.ДополнительныеСвойства.Кэш);
	
	Если НеобработанныеСсылки.Количество() > 0 Тогда
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	НоменклатураФайлы.ВладелецФайла КАК Номенклатура
		|ИЗ
		|	Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураФайлы
		|ГДЕ
		|	НоменклатураФайлы.ВладелецФайла В(&ВладелецФайла)
		|	И НоменклатураФайлы.Расширение = &Расширение";
		
		
		Запрос.УстановитьПараметр("ВладелецФайла", НеобработанныеСсылки);
		Запрос.УстановитьПараметр("Расширение", "JPG");
		
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		
		Пока Выборка.Следующий() Цикл
			Настройки.ДополнительныеСвойства.Кэш.Добавить(Выборка.Номенклатура);
		КонецЦикла;
		
	КонецЕсли;
	
	Для Каждого СтрокаСписка Из Строки Цикл
		СтрокаСписка.Значение.Данные["ИндексКартинкиJPG"] = Настройки.ДополнительныеСвойства.Кэш.Найти(СтрокаСписка.Ключ) <> Неопределено;
	КонецЦикла;
	
КонецПроцедуры
Показать
JohnyDeath; 0x00; improg; +3 Ответить
14. QbeeQ 17 23.03.25 23:10 Сейчас в теме
(5) Простите, можете прокомментировать один нюанс, касательно Вашего кода?

Читаю синтаксис-помощник про событие ПриПолученииДанныхНаСервере. Там написано:

<Настройки>
Тип: НастройкиКомпоновкиДанных.
Содержит копию полных настроек динамического списка.

Исходя из этого возникает два вопроса:
1. Имеют ли смысл строки с использованием кэша в Вашем коде?
На мой взгляд, нет. Я проверил. Программа каждый раз при получении следующей порции строк вновь его формирует
2. Пытаюсь в качестве кэша использовать менеджер временных таблиц, но что-то не могу придумать где его хранить вне контекста формы. Может быть подскажете?
15. QbeeQ 17 23.03.25 23:48 Сейчас в теме
(14) Разрешите сам отвечу.
В моём случае проще и быстрей данные выгрузить в таблицу значений и поместить во временное хранилище.
Менеджер временных таблиц никуда лезть не хочет :(

&НаСервере
Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	АдресКэша = ПоместитьВоВременноеХранилище(ДанныеСинхронизации(), ЭтаФорма.УникальныйИдентификатор);
	СписокДокументыПоступления.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить("КэшДанныхСинхронизации", АдресКэша);
	
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СписокДокументыПоступленияПриПолученииДанныхНаСервереПосле(ИмяЭлемента, Настройки, Строки)
	
	Если Не Настройки.ДополнительныеСвойства.Свойство("КэшДанныхСинхронизации") Тогда Возврат; КонецЕсли;
	
	КэшДанныхСинхронизации = ПолучитьИзВременногоХранилища(Настройки.ДополнительныеСвойства.КэшДанныхСинхронизации);
	
	Для Каждого СтрокаСписка Из Строки Цикл
		СтрокаДанныхСинхронизации = КэшДанныхСинхронизации.Найти(СтрокаСписка.Ключ, "Ссылка");
		Если СтрокаДанныхСинхронизации = Неопределено Тогда Продолжить; КонецЕсли;
		ЗаполнитьЗначенияСвойств(СтрокаСписка.Значение.Данные, СтрокаДанныхСинхронизации, "СостояниеСинхронизации,ДатаСинхронизации");
	КонецЦикла;
	
КонецПроцедуры
Показать
3. improg 742 21.07.24 16:09 Сейчас в теме
Добавил бонусом в статью полную версию процедуры "СоздатьЭлементФормы".
4. aximo 2530 21.07.24 19:22 Сейчас в теме
Для простых вещей сойдет
6. fancy 37 23.07.24 08:41 Сейчас в теме
Пару копеек своих вставлю
1) Номенклатуру наверное стоит выбирать в запросе "РАЗЛИЧНУЮ" чтоб дублей в кэше не было
2) если используется функция РазностьМассивов, то логично и лаконично заменить на
Кэш = ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Кэш, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура"));
11. improg 742 24.07.24 13:13 Сейчас в теме
(9) Да спасибо, на счет различные согласен, хотя и не критично, запрос должен быть максимально простым в таких конструкциях, по поводу кеша подумаю позже как его применить.
(6)
7. Re:аниматор 337 24.07.24 11:39 Сейчас в теме
(5) Точно снижается нагрузка? Кэшируются только найденные значения. Но при сравнение массивов (строк и кэша) всегда будет разница за счет не найденных значений кэша.. т.е. будут передаваться в запрос не найденные в кэше, а в кэш не попадут т.к. не соответствуют условиям запроса.

Переменная "НеобработанныеСсылки" не попадают строки по которым нет файлов!

Да, соглашусь с (6) там в запросе нужно поменять на РАЗЛИЧНЫЕ т.к. может быть несколько файлов на одного владельца
8. ixijixi 2070 24.07.24 11:43 Сейчас в теме
(7) Согласен, алгоритм есть куда совершенствовать, но согласитесь - это лучше, чем обращаться к базе при каждой прокрутке списка.
Точно снижается нагрузка
Надо замеры включать, чтобы сказать точно. Но в типовых делают именно так, думаю они шарят)
12. Cyberhawk 137 27.07.24 18:14 Сейчас в теме
(8)
это лучше, чем обращаться к базе при каждой прокрутке списка
При таком подходе я никогда не увижу в списке тех изменений, что произошли в базе после первого наполнения кеша.
Особенно если учесть, что при двойном клике там открывается список присоединенных файлов, то наверняка там их состав тоже будут менять, но результат своего труда пользователь после этого не увидит...
13. ixijixi 2070 27.07.24 22:14 Сейчас в теме
(12) Тащемта, при записи происходит оповещение динамического списка, все можно отловить и обновить кэш.
9. Re:аниматор 337 24.07.24 11:50 Сейчас в теме
(8) Да, нужно минимизировать обращения к запросам, но кэшировать тогда нужно все получаемые строки, а не строки где есть файлы. Файлов то может быть в 1 строке из 1 000 к примеру. и в кэше будет 1 строка, а всегда проверятся будет 999 строк
10. ixijixi 2070 24.07.24 12:32 Сейчас в теме
(9) Я же уже согласился)))
Для отправки сообщения требуется регистрация/авторизация