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

11.08.24

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

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

Скачать файл

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

Наименование SM По подписке [?]
Прокачай список. Как добавить дополнительную информацию в динамический список с помощью расширения!:
.rar 29,65Kb
25
25
0 SM
Скачать

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

Нужно видеть в списке номенклатуры по отдельным колонкам форматы картинок, которые прикреплены к товару. Например, у товара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.

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

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

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

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

 

 

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

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

См. также

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    18080    25    6    

39

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    10985    mrXoxot    43    

107

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    5956    smielka    37    

97

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    13283    808    elcoan    47    

113

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    11092    160    acces969    31    

121

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    4958    kalyaka    6    

33

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

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

6000 руб.

18.01.2022    9659    1    2    

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

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

	Если Не Настройки.ДополнительныеСвойства.Свойство("Кэш") Тогда
		Настройки.ДополнительныеСвойства.Вставить("Кэш", Новый Массив);
	КонецЕсли;
	
	НеобработанныеСсылки = ОбщегоНазначенияКлиентСервер.РазностьМассивов(Строки.ПолучитьКлючи(), Настройки.ДополнительныеСвойства.Кэш);
	
	Если НеобработанныеСсылки.Количество() > 0 Тогда
		
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ РАЗРЕШЕННЫЕ
		|	НоменклатураФайлы.ВладелецФайла КАК Номенклатура
		|ИЗ
		|	Справочник.НоменклатураПрисоединенныеФайлы КАК НоменклатураФайлы
		|ГДЕ
		|	НоменклатураФайлы.ВладелецФайла В(&ВладелецФайла)
		|	И НоменклатураФайлы.Расширение = &Расширение";
		
		
		Запрос.УстановитьПараметр("ВладелецФайла", НеобработанныеСсылки);
		Запрос.УстановитьПараметр("Расширение", "JPG");
		
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		
		Пока Выборка.Следующий() Цикл
			Настройки.ДополнительныеСвойства.Кэш.Добавить(Выборка.Номенклатура);
		КонецЦикла;
		
	КонецЕсли;
	
	Для Каждого СтрокаСписка Из Строки Цикл
		СтрокаСписка.Значение.Данные["ИндексКартинкиJPG"] = Настройки.ДополнительныеСвойства.Кэш.Найти(СтрокаСписка.Ключ) <> Неопределено;
	КонецЦикла;
	
КонецПроцедуры
Показать
JohnyDeath; 0x00; improg; +3 Ответить
3. improg 702 21.07.24 16:09 Сейчас в теме
Добавил бонусом в статью полную версию процедуры "СоздатьЭлементФормы".
4. aximo 2079 21.07.24 19:22 Сейчас в теме
Для простых вещей сойдет
6. fancy 35 23.07.24 08:41 Сейчас в теме
Пару копеек своих вставлю
1) Номенклатуру наверное стоит выбирать в запросе "РАЗЛИЧНУЮ" чтоб дублей в кэше не было
2) если используется функция РазностьМассивов, то логично и лаконично заменить на
Кэш = ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Кэш, Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура"));
11. improg 702 24.07.24 13:13 Сейчас в теме
(9) Да спасибо, на счет различные согласен, хотя и не критично, запрос должен быть максимально простым в таких конструкциях, по поводу кеша подумаю позже как его применить.
(6)
7. Re:аниматор 338 24.07.24 11:39 Сейчас в теме
(5) Точно снижается нагрузка? Кэшируются только найденные значения. Но при сравнение массивов (строк и кэша) всегда будет разница за счет не найденных значений кэша.. т.е. будут передаваться в запрос не найденные в кэше, а в кэш не попадут т.к. не соответствуют условиям запроса.

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

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