Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Ломается галерея картинок в обработке

v7: Ломается галерея картинок в обработке
Я
   MadDAD
 
06.12.17 - 11:37
Может кто сталкивался? На своей машине (Win7 x64) во внешнюю обработку добавляю кнопки с картинками. Сохраняю. Все открывается и работает ок.

Та же обработка в терминалке на сервере (Srv 2008 R2 x64) при попытке открыть в предприятии говорит "Unexpected file format." При открытии в конфигураторе  "Неправильный формат файла." и файл остается заблокированным.

Стал копать. При сохранении на сервере галерея картинок получается больше. Если разобрать и собрать GComp'ом проблема сохраняется. Если разобрать, подставить галерею из обработки сохраненной на сервере и собрать обратно, то все ок.

Платформа абсолютно идентичная. Версия MFC42 одинаковая. На машине другого разработчика (Win7 x64) тоже не открывается.
 
 
   Ёпрст
 
1 - 06.12.17 - 11:37
[:]||||||||||||||||||[:]
   Ёпрст
 
2 - 06.12.17 - 11:38
Поставь пароль на поделку свою, сохрани. Потом убери пароль.
   Ёпрст
 
3 - 06.12.17 - 11:38
Иначе в контейнер не помещаются картинки вообще.
   MadDAD
 
4 - 06.12.17 - 11:41
(3)(2) Не, не катит. Пробовал первым делом. Сами картинки в ert присутствуют.
   Ёпрст
 
5 - 06.12.17 - 11:47
вся галерея там в бмп формате без заголовка, насколько я помню.
   Ёпрст
 
6 - 06.12.17 - 11:47
можно посмотреть, чем они там отличаются
   MadDAD
 
7 - 06.12.17 - 12:09
(6) С форматом галереи я разобрался. Даже тулзу написал. Это CImageList выгруженный в файл. Читается при помощи ImageList_Open(). Отличаются они тем, что на моей машине сама картинка этого имиджлиста сложена в иконках по одной в строке, а в варианте с сервера - по 4 в строке.

И вот хз почему так происходит.
   MadDAD
 
8 - 06.12.17 - 13:01
(0) Отвечу сам себе. Не все красивости одинаково полезны.

Причина была в том, что у меня рядом с 1cv7s.exe лежал манифест (1cv7s.exe.manifest), в котором было указано использовать ComCtl32.dll версии 6.0. А на сервере такого манифеста не было и там используется версия постарше, которая сохраняет ImageList в немного другом формате. Разница в (6) - иконки в большом битмапе по разному уложены. И в конце после битмапа есть еще пара десятков непонятных байт.

В давние времена манифест был добавлен для того, чтобы 1С отображалась на экране с красивыми закругленными кнопками и прочими стилями Windows. Это такой способ включить поддержку тем в старых приложениях. После удаления манифеста моя платформа стала так же ругаться на эти обработки.
   MadDAD
 
9 - 06.12.17 - 13:10
В результат всех изысканий родилась утилита, которая умеет распаковывать галерею, собирать её из больших файлов и из Gallery.bmp после GComp.

https://cloud.mail.ru/public/JDf3/fSmeMzCmi

Понимает так же ImageList в новом формате.
   Ёпрст
 
10 - 06.12.17 - 13:11
ого, я уже и не помню, зачем манифест применял, парочка валяется в каталоге.
 
 Рекламное место пустует
   MadDAD
 
11 - 06.12.17 - 13:36
https://cloud.mail.ru/public/GZWt/dJGgmFwGA
Новая версия.

Старая открывает в новом формате и записывает тоже. В этой версии поправил, записывает в старом формате.
   Ёпрст
 
12 - 06.12.17 - 13:36
спсб, пригодится
   MadDAD
 
13 - 06.12.17 - 14:28
Совсем новая версия.

Добавил ключ -r.
Конвертировать без промежуточной разборки - сборки галереи.

https://cloud.mail.ru/public/J4ju/s1DhjEbXa

Пользоваться так:
Для исправления ошибки с версией берем FAR и плагин DocFileBrowser. Вытаскиваем поток Gallery.

Запускаем утилу: GalleryTool -r Gallery Gallery.bak должна написать что нашла сколько-то картинок и записала в в Gallery новую галерею.
Складываем Gallery обратно в обработку.

Для компиляции галереи из распакованного GComp исходника:
GalleryTool -c "[путь]\PictureGallery" Gallery
Должна написать, что собрала Gallery из 100500 картинок. Она сами их отресайзит в размер 80х80 и положит на белый фон. Сделает Gallery.head, Gallery.bmp и Gallery.tail. А так же поток Gallery целиком. Дальше можно собрать GComp или положить новый Gallery обратно в собранный MD как  в первом варианте.

Для разборки на отдельные иконки:
Вытаскиваем поток Gallery. Запускаем утилу - 
GalleryTool -d Gallery "[Каталог]"
Разберет все на иконки 80x80 и сложит в каталог [Каталог].

Так же можно собрать поток Gallery из Gallery.bmp ( ключ -f), но привязки к реальным картинкам не будет, т.к. неоткуда её взять.

Думаю будет полезно тем, кто разбирает/собирает конфу при помощи GComp и меняет картинки.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует