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

14.09.24

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

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

Скачать файл

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

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

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

Нужно видеть в списке номенклатуры по отдельным колонкам форматы картинок, которые прикреплены к товару. Например, у товара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С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63097    44    59    

82

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

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

2400 руб.

29.06.2020    18965    26    6    

41

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

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

1500 руб.

06.10.2020    10324    7    7    

10

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

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

20.08.2024    17642    mrXoxot    43    

121

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

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

27.05.2024    7925    smielka    37    

100

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

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

27.12.2023    15227    960    elcoan    49    

117

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

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

2 стартмани

10.04.2023    12022    163    acces969    31    

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

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

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

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

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