Картинки в динамических списках

10.02.25

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

Всем уже, наверное, известно, как можно через индекс указать нужную картинку для строки динамического списка. Да, все предельно просто - указываем в картинке таблицы коллекцию, в поле картинки поле индекса, а в поле индекса заполняем этот самый индекс, т.е. порядковый номер. Но если лениво собирать коллекцию из кучи картинок, которые уже есть? Давайте разбираться...

Всем привет!

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

 

ПРЕДЫСТОРИЯ

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

Дальше перешел к опытным коллегам. Опытные коллеги сказали, чтобы я засунул коллекцию картинок  в параметры таблицы и не выёживался. Я с ними отчасти согласился, но парировал тем, что нет у меня такой коллекции. Более того, поглядев на просторах интырнету, я даже нашел пару ссылок на какие-то коллекции на мисте, но ссылки там сто лет назад протухли.

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

 

ТЕОРИЯ

Ну ладно, DeepSeek силен в питоне, да и в математике, полагаю, но поговорим об 1С. Если спросить тот же ИИ про картинку в динамическом списке, то он предложит загрузить ее в колонку с типом "Картинка". Но это касается таблицы или дерева значений. Для динамического списка он предложит выгрузить картинку запросом, но тогда нам нужно поле с этой картинкой в каждом элементе. Ну и не знаю, как сейчас, но раньше не было типа базы данных "ДвоичныеДанные", хотя был тип "ХранилищеЗначения".

 

ПУТЬ САМУРАЯ

В итоге я пошел по иному пути - помещать картинку из базы при выводе. Буду использовать "СписокПриПолученииДанныхНаСервере".

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

Событие "СписокПриПолученииДанныхНаСервере" динамического списка имеет одну неприятную особенность - выполняется на сервере без контекста, соответственно так просто в него не передать нужные данные, поэтому первый заход с засовыванием адреса картинки в строку столкнулся с 20-секунднам временем жизни. Вот код:

Стало понятно, что нужно как-то передать уникальный идентификатор формы, чтобы хранилище не протухло.

Да, в коде для хранения адреса картинки я использую первое попавшееся строковое поле динамического списка, которое имеет достаточно символов в своем составе, чтобы полностью вместить этот адрес. Ну и показывать его не нужно - достаточно указать это поле в "ПутьКДаннымКартинкиСтроки" как-то так:

 

Да, да, я делаю очередной велосипед...

 

САМУРАЙСТВО

Итак, задача - передать уникальный идентификатор формы. Как же это сделать? Оказывается, все просто - достаточно покласть его в дополнительные свойства настроек компоновки данных. Вас же на курсах учат про то, что почти у всего в 1С есть дополнительные свойства? Ну и славненько.

В итоговом итоге код модуля формы превратился в такой:

Ну и результат не заставил себя ждать:

 

 

 

ЗАКЛЮЧЕНИЕ

Да, очередной велосипед велосипедю. Но если не велосипедить, то и меня тоже заменит ИИ.

Всем всех благ, счастья, здоровья.

Подписывайтесь на каналы, ставьте лайки, пишите комменты, палите ленты...

ЗЫ: картинку бородатого админа предоставил гигачат.

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

УФ динамический список картинка картинки

См. также

Работа с интерфейсом Анализ учета Мониторинг 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"!

31720 руб.

27.03.2025    75481    47    36    

58

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

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

36600 руб.

28.08.2025    6629    2    2    

6

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

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

6100 руб.

14.01.2016    59687    22    25    

47

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

Знакомая ситуация? Пользователи, особенно менеджеры, уверены: отборов много не бывает. Идут пожелания добавить в форму списка еще один быстрый фильтр, еще два, еще пять... В итоге интерфейс превращается в нагромождение полей отбора, а потребность в «самом главном» отборе, который «вот прямо сейчас нужен», все равно не закрыта. Универсальное расширение, которое решает эту проблему элегантно и технологично. С его помощью в любую форму списка можно легко добавить панель настраиваемых кнопок-закладок, каждая из которых применяет сложный фильтр-запрос, а так же показывает актуальное количество элементов в реальном времени.

6088 руб.

17.10.2025    1682    3    0    

2

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

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

20.08.2024    47659    mrXoxot    44    

138

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

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

27.05.2024    25987    smielka    38    

114

Инструментарий разработчика Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    17232    180    acces969    31    

132
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. korvintorson 42 10.02.25 08:47 Сейчас в теме
Чего только программист не сделает от лени (взять граф редактор и склеить коллекцию)
7. dhurricane 10.02.25 15:47 Сейчас в теме
(1) Какой посоветуете?
8. korvintorson 42 10.02.25 18:26 Сейчас в теме
(7) Я юзаю paint.net
lone_mayson; +1 Ответить
11. starik-2005 3213 10.02.25 18:35 Сейчас в теме
(7)
Какой посоветуете?
Чтобы склеить коллекцию что-ли? Так в идешь в любой ИИ, пишешь "напиши прогру на питоне, которая горизонтально склеит все картинки в каталоге в один файл". Все.
13. SergMuravev 881 10.02.25 23:28 Сейчас в теме
(1) Не рекомендую клеить коллекцию, дерево начинает тормозить при интерактивном взаимодействии
Прикрепленные файлы:
Evg-Lylyk; +1 Ответить
22. Strady 15.11.25 02:30 Сейчас в теме
(1) для случаев, когда не всегда заранее знаешь все картинки коллекции. Автору спасибо, полезный прием.
2. starik-2005 3213 10.02.25 08:48 Сейчас в теме
О, чел, который рассказывает про многопоток, и который за мое ему пояснение засунул меня в свой блэклист, решил минуснуть. Ну на здоровье)))

ЗЫ: видимо мое пояснение прям в сердце его некомпетентности пульнуло)))
Fox-trot; +1 Ответить
9. korvintorson 42 10.02.25 18:31 Сейчас в теме
(2) Ты бухаешь что ли, какой блэклист? Мой блэклист девственно чистый. И минуснул тебя не я, делать мне больше нечего.
А за твоё пояснение про многопоток тебя надо было не в блэклист засунуть, а в другое место потемнее, но я вежливый))
10. starik-2005 3213 10.02.25 18:33 Сейчас в теме
(9)
И минуснул тебя не я
Не ты. И пояснял я не тебе. И я вообще не знаю, кто ты такой.
12. korvintorson 42 10.02.25 18:36 Сейчас в теме
17. starik-2005 3213 11.02.25 11:16 Сейчас в теме
(12) Кстати, да. Мы с тобой тоже говорили про многопоточность. Ну ты там заявил, что в 1С она "ненастоящая". Типа мьютексов нет, атомарного чтения, того-сего. Ну так его, условно, нигде нет - везде накручены свои костыли. Мьютексы останавливают процесс через менеджер процессов ОС, видимо, т.е. упираются в таймер ОС, на который завязано переключение задач. Поэтому для скорости юзают спинлоки, которые жрут производительность. Древний вариант спинлока - обычная файловая блокировка, которую в 1С легко реализовать. Мьютекс - да, сложнее, так и 1С - это предметно-ориентированный язык. Обмен данными между потоками? Да вполне. Попробуй поиграться с хранилищем значений. Предположу, что два ФЗ могут получить данные из одного адреса временного хранилища. И если это "сложный тип" (соответствие, например, или структура, массив, ...), то адрес этой переменной для обоих потоков будет один. Потокобезопасно? Нет. Ну так используй файловую блокировку - и будет тебе атомарность. Ты ж программист - придумай что-нить, а не ной, что нет там каких-то фишек. Так что сам в темную комнату сходи и в углу постой...

По поводу того пассажира, который минус влепил, то суть дискуссии была даже не в ответе на его сообщение, а в пояснении кому-то, его спросившему, в плане того, что далеко не обязательно параллелить сами расчеты - достаточно запараллелить запись регистров, которые уже рассчитаны. После чего меня этот пассажил засунул в свой блэклист. А потом он на конференции выступал как раз с докладом о том, что можно параллелить запись. Ну, как бы, интересный подход. Может он думал, что он эту тему придумал. Но мы обсуждали с одним больным пенсионером это в комментах к моей статье о выборе процессора для 1С, где пенсионер, видимо на шахте торговавший углем - один товар, никак не мог понять, что если нечего параллелить, то на параллельность можно взглянуть с другой стороны - писать параллельно сформированные в памяти движения.
18. korvintorson 42 11.02.25 13:50 Сейчас в теме
(17) Ты говорил, что ФЗ - это потоки. Архитектурно, в платформе 1С - да, они может и потоки, но мне, как разрабу, от этого никакого толку. Главное отличие потоков (thread) от изолированных процессов (process) - потоки оперируют в общем пространстве памяти. Я не могу заставить два ФЗ оперировать в общем пространстве памяти на уровне языка 1С. А значит функционально они для меня, как разраба, потоками не являются, а являются обычными изолированными процессами. Да еще и доступными только на сервере.
Предположу, что два ФЗ могут получить данные из одного адреса временного хранилища.

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

Когда мне будет надо - я придумаю. Но это не будет означать, что "в 1С есть многопоточность", а будет означать "в 1С нет многопоточности и мне пришлось строить велосипед с костылями".
19. starik-2005 3213 11.02.25 14:31 Сейчас в теме
(18)
Но это не будет означать, что "в 1С есть многопоточность", а будет означать "в 1С нет многопоточности и мне пришлось строить велосипед с костылями".
Так проблема-то твоя в формулировках, а не в использовании. 1С - это CRUD, писать на нем игру с 3Д-графоном - это как запускать дум на тесте беременности. ФЗ - это отдельные что-то там, для процессора совершенно никакой разницы нет, потоки это или процессы. Просто совокупность команд машинного кода, адреса которых последовательно или не сильно засовываются в регистр указателя команд. То, что у разных процессов нет общего доступа к памяти, то тоже не совсем верно, ибо есть shared memory - та самая общая память, доступная процессам.

Т.е. все очень условно, зависит от конкретной реализации в конкретной операционной системе. Поэтому ФЗ - это потоки/процессы/назовикакугодно, которые выполняются на разных ядрах или даже процессорах, или даже на одном ядре (да, внезапно). С точки зрения 1С, "память" - это вообще то, что в базе данных записано. Что не записано - того не существует.

И ФЗ помогают ускорить работу по расчету чего-либо в некоторое количество раз. Остается решить проблему взаимодействия этих ФЗ друг с другом. Но если результат - это записи в базе данных, то с базой данных эти "потоки" вполне себе могут параллельно взаимодействовать и даже защищаться от разных ситуаций блокировками, о которых много и разно говорят на всяческих курсах.
20. mrsmrv 129 16.02.25 14:15 Сейчас в теме
(17) о, я то общение помню, обработку ему для примера ещё запилил, которая параллельно себестоимость "причёсывала"
3. aximo 2602 10.02.25 11:49 Сейчас в теме
Давай, Сергей, жги - от тебя всегда что-нибудь интересненькое по коду.
4. top_1c 4021 10.02.25 12:04 Сейчас в теме
Ст, СС, ДС это стиль?) Я бы прошел мимо, но зная Сергея, какой он тролль, не удержался. А так конечно прикольно, история познавательная, лайк заслуженно, но проще в редактор загнать и код писать не нужно.
5. starik-2005 3213 10.02.25 14:08 Сейчас в теме
(4)
Ст, СС, ДС это стиль?)
Прототипы пишу именно так. При том эти переменные часто нагляднее, чем "СоответствиеКартинок", "ДанныеСтрокиСписка", "ДополнительныеСвойства". Ну честно, у меня глаза устают от чтения этой всей дичи, которая ровно на три строки кода нужна.

И, заметьте, я не называю процедуры и функции "ДС", "СС", "СТ" и прочими словами. А переменная - это эфемерное хранилище адреса на три строки - я называю так, чтобы мне было понятно. Не более.
6. starik-2005 3213 10.02.25 14:16 Сейчас в теме
(4)
но проще в редактор загнать и код писать не нужно
Если про картинки вместо кода, то у меня слетела в очередной раз дома комьюнити-лицуха, ибо я поменял конфигурацию файлов подкачки. 1С вообще забила мне выдавать лицухи в итоге. Таким образом я скопипастил картинки из чата, в котором с коллегами обсуждал данный казус. так что сорян за картинки вместо кода.

С другой стороны, эти картинки вряд ли заинтересуют ИИ, который в итоге так и не научится вставлять картинки в динамический список, а мешки с костями научатся. Небольшая победа над ИИ )))
14. BackinSoda 10.02.25 23:32 Сейчас в теме
Как по мне проще за 5-10 минут склеить прямо в библиотеке картинок 1с
15. SergMuravev 881 11.02.25 00:07 Сейчас в теме
Пример торможения коллекции. В гифке два примера: с коллекцией и с отдельной картинкой. Дисклеймер: это дерева значений, а не динамические списки. Как в ДС будет себя коллекция вести - неизвестно.
Прикрепленные файлы:
user2097170; Evg-Lylyk; +2 Ответить
16. starik-2005 3213 11.02.25 09:59 Сейчас в теме
(15) я вообще не понимаю, почему 1с тормозит от коллекций - даже больших. Но да, эффект есть.
SergMuravev; +1 Ответить
21. SergMuravev 881 19.02.25 20:22 Сейчас в теме
(16) Вношу корректировку: если коллекция размещена в Общих картинках, то торможения нет. Но если как абсолютная картинка, то тормозит.
Для отправки сообщения требуется регистрация/авторизация