Библиотека картинок

Автор Харлампий Дымба, 09 июля 2025, 12:06

« назад - далее »

Харлампий Дымба

Хочется навести порядок в библиотеке картинок.

1. Установить какие картинки в каких формах используются и поудалять ненужное.
Какие инструментами можно для этого использовать?

2. Понять для себя откуда берутся битые картинки и не допускать их в дальнейшем.


item

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

Выдержка из "Исходники GComp\Documentation\txt\DlgForms.txt":
"...Идентификатор картинки из 41-го параметра контрола рассчитывается не просто, а очень просто.
Идем в папку PictureGallery. Находим нужную картинку. Ее имя - это что-то вроде
__Picture.NNNNNNN.ext, где NNNNN - некоторое 16-ричное число, а ext - расширение.
Так вот, если преобразовать 16-ричное число в 10-ричное - получим идентификатор из формы..."


Харлампий Дымба

Цитата: item от 09 июля 2025, 12:471. Перебрать все формы конфигурации можно, и получить все используемые идентификаторы картинок
А вот это чем сделать?

item

См. соседнюю ветку
Нужна вк parser.dll и класс "МетаФорма"

item

Код:

    Результат = СоздатьОбъект("ТаблицаЗначений");
    Результат.НоваяКолонка("Идентификатор", "Строка");
    Результат.НоваяКолонка("Счётчик", "Число");
    
    МетаФорма = СоздатьОбъект("МетаФорма");
    
    СервисФорм = СоздатьОбъект("Сервис");
    СписокВсехФорм = СервисФорм.СписокВсехФорм();
    КоличествоФорм = СписокВсехФорм.КоличествоСтрок();
    Для НомерФормы = 1 По КоличествоФорм Цикл
        ИмяФормы = СписокВсехФорм.ПолучитьСтроку(НомерФормы);
        
        Состояние("" + НомерФормы + "/" + КоличествоФорм + " " + ИмяФормы);
        
        Попытка
            МетаФорма.УстановитьФорму(ИмяФормы);
        Исключение
            Сообщить("Ошибка формы " + ИмяФормы + ":" + ОписаниеОшибки(), "!");
            Продолжить;
        КонецПопытки;
        
        
        Если МетаФорма.ИдентификаторКартинки <> "0" Тогда
            Результат.НоваяСтрока();
            Результат.Идентификатор = МетаФорма.ИдентификаторКартинки;
            Результат.Счётчик = 1;
        КонецЕсли;
        
        Для НомерАтрибута = 0 По МетаФорма.Атрибуты.Количество() - 1 Цикл
            МетаАтрибут = МетаФорма.Атрибуты.Получить(НомерАтрибута);
            Если МетаАтрибут.ИдентификаторКартинки <> "0" Тогда
                Результат.НоваяСтрока();
                Результат.Идентификатор = МетаАтрибут.ИдентификаторКартинки;
                Результат.Счётчик = 1;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    
    Результат.Свернуть("Идентификатор", "Счётчик");
    Результат.Сортировать("Идентификатор");
    //Результат.Выгрузить(КудаНадоНаФорме);

Харлампий Дымба

Не пойму как картинку вставить корректно, пусть будет так
https://disk.yandex.ru/i/1XzWmUb9A1AYEQ
Вот эта плесень в картинках в какие-то древние годы появилась непонятно почему - хочу избавится.
Основных картинок может с десяток - их оставляю.  Остальное поудаляю вообще. Но хочется знать, где встречаются битые, чтобы их после чистки исправить на нормальные.
Ну и ещё интересен механизм возникновения этой ерунды, может где уже разбирали. Чтобы избегать в дальнейшем.
Предполагаю, что это какая-то шляпа с добавлением в библиотеку картинок из форм (отчетов, обработок), копируемых из других конфигураций. Может под этим же идентификатором другая картинка со стороны приходит и в библиотеке получаются дубли идентификаторов, что приводит к объединению картинок при отображении. В общем, хочется разобраться.




Харлампий Дымба

#4 О, супер! Спасибо, буду разбираться.