Хочется навести порядок в библиотеке картинок.
1. Установить какие картинки в каких формах используются и поудалять ненужное.
Какие инструментами можно для этого использовать?
2. Понять для себя откуда берутся битые картинки и не допускать их в дальнейшем.
(https://disk.yandex.ru/i/1XzWmUb9A1AYEQ)
1. Перебрать все формы конфигурации можно, и получить все используемые идентификаторы картинок, а вот понять, какая картинка стоит за каким идентификатором уже "помощник нужен".
Выдержка из "Исходники GComp\Documentation\txt\DlgForms.txt":
"...Идентификатор картинки из 41-го параметра контрола рассчитывается не просто, а очень просто.
Идем в папку PictureGallery. Находим нужную картинку. Ее имя - это что-то вроде
__Picture.NNNNNNN.ext, где NNNNN - некоторое 16-ричное число, а ext - расширение.
Так вот, если преобразовать 16-ричное число в 10-ричное - получим идентификатор из формы..."
Цитата: item от 09 июля 2025, 12:471. Перебрать все формы конфигурации можно, и получить все используемые идентификаторы картинок
А вот это чем сделать?
См. соседнюю ветку (https://forum.dorex.pro/index.php?topic=277.0)
Нужна вк parser.dll и класс "МетаФорма"
Код:
Результат = СоздатьОбъект("ТаблицаЗначений");
Результат.НоваяКолонка("Идентификатор", "Строка");
Результат.НоваяКолонка("Счётчик", "Число");
МетаФорма = СоздатьОбъект("МетаФорма");
СервисФорм = СоздатьОбъект("Сервис");
СписокВсехФорм = СервисФорм.СписокВсехФорм();
КоличествоФорм = СписокВсехФорм.КоличествоСтрок();
Для НомерФормы = 1 По КоличествоФорм Цикл
ИмяФормы = СписокВсехФорм.ПолучитьСтроку(НомерФормы);
Состояние("" + НомерФормы + "/" + КоличествоФорм + " " + ИмяФормы);
Попытка
МетаФорма.УстановитьФорму(ИмяФормы);
Исключение
Сообщить("Ошибка формы " + ИмяФормы + ":" + ОписаниеОшибки(), "!");
Продолжить;
КонецПопытки;
Если МетаФорма.ИдентификаторКартинки <> "0" Тогда
Результат.НоваяСтрока();
Результат.Идентификатор = МетаФорма.ИдентификаторКартинки;
Результат.Счётчик = 1;
КонецЕсли;
Для НомерАтрибута = 0 По МетаФорма.Атрибуты.Количество() - 1 Цикл
МетаАтрибут = МетаФорма.Атрибуты.Получить(НомерАтрибута);
Если МетаАтрибут.ИдентификаторКартинки <> "0" Тогда
Результат.НоваяСтрока();
Результат.Идентификатор = МетаАтрибут.ИдентификаторКартинки;
Результат.Счётчик = 1;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Результат.Свернуть("Идентификатор", "Счётчик");
Результат.Сортировать("Идентификатор");
//Результат.Выгрузить(КудаНадоНаФорме);
Не пойму как картинку вставить корректно, пусть будет так
https://disk.yandex.ru/i/1XzWmUb9A1AYEQ (https://disk.yandex.ru/i/1XzWmUb9A1AYEQ)
Вот эта плесень в картинках в какие-то древние годы появилась непонятно почему - хочу избавится.
Основных картинок может с десяток - их оставляю. Остальное поудаляю вообще. Но хочется знать, где встречаются битые, чтобы их после чистки исправить на нормальные.
Ну и ещё интересен механизм возникновения этой ерунды, может где уже разбирали. Чтобы избегать в дальнейшем.
Предполагаю, что это какая-то шляпа с добавлением в библиотеку картинок из форм (отчетов, обработок), копируемых из других конфигураций. Может под этим же идентификатором другая картинка со стороны приходит и в библиотеке получаются дубли идентификаторов, что приводит к объединению картинок при отображении. В общем, хочется разобраться.
#4 О, супер! Спасибо, буду разбираться.