Имя: Пароль:
1C
1С v8
Интересный баг платформы 8.3 при работе с картинками
,
0 k23
 
04.10.18
10:34
Вот такой код:
Результат = Новый Картинка(“c:\test.xlsx”, Ложь);
Если Результат.Формат() = ФорматКартинки.НеизвестныйФормат Тогда
Сообщить("НеизвестныйФормат");
Иначе
Сообщить("Ok");
КонецЕсли;

Естественно, вместо указанного имени файла нужно указать что-то существующее. Именно файл формата excel - xlsx. С xls всё нормально.
Из xlsx создаётся кривая картинка. На платформе 8.2 всё нормально.
Вместо xlsx можно использовать zip. Тот же эффект. Вероятно, все типы файлов, сжатые по zip-алгоритму, будут так себя проявлять.
1 Aleksey
 
04.10.18
10:55
в чем баг? В чем кривость картинки. Ничего не понятно
2 Cool_Profi
 
04.10.18
11:14
(1) Баг в том (по мнению ТС) что картинка не отдаёт НеизвестныйФормат, а вылетает в исключение
3 vis_tmp
 
04.10.18
11:25
"Из xlsx создаётся кривая картинка" - а это штатное поведение было?
4 Aleksey
 
04.10.18
11:42
(3) Кривая это как? Цвета не те, или что? Или вместо подписи xls стоит подпись doc? Я просто не знаю что должно быть и что отдает
5 k23
 
04.10.18
11:56
(3) штатное поведение - создавать объект картинка, к свойствам и методам которого можно обратиться без выпадания в исключение.
(4) что вы курите по утрам? какие такие цвета в картинке из файла екселя :-)
6 spiller26
 
04.10.18
12:08
xlsx - это архив
7 spiller26
 
04.10.18
12:10
(0) Возьми любой файл xlsx, поменяй расширение на zip, распакуй и увидишь чудо.
8 НЕА123
 
04.10.18
12:12
(4)
>Цвета не те, или что?

из (5) следует, что монохромная картинка
9 Cyberhawk
 
04.10.18
12:14
Это карма за неумение внятно изъясняться у тебя такая
10 Йохохо
 
04.10.18
12:28
(9) надо было "зацените пацаны сувал в картинку всякую шнягу и уронил с1!, 8.3 сырая гуся в чат"
11 Cyberhawk
 
04.10.18
12:39
(10) А что за "гуся в чат"? ))
12 k23
 
04.10.18
13:34
(6)(7) вы сами то читали (0) ?
13 spiller26
 
04.10.18
13:37
(12) естественно.
14 Tatitutu
 
04.10.18
13:38
(7) зачем так напрягаться ?
зажал SHIFT и ПКМ - открыть с помощью - выбрать любой архитор
(главное не назначить действие по умолчанию;)

(12) смысл твоего послания...
что если подсунуть какую то хрень (в виде XLSX)
то 1С не сообщит, что это ФорматКартинки.НеизвестныйФормат
а сделает вид что все ок ?
15 spiller26
 
04.10.18
13:42
(15) когда то давно рассказывали байку про пользователя, который пытался ввести "30 февраля".
16 bolobol
 
04.10.18
14:02
(15) Законодательно?
17 k23
 
04.10.18
17:55
(14) > а сделает вид что все ок ?
Да, именно так. 1с не будет никакой вид делать, метод Формат() вернёт то или иное значение.

(15) а по вашему какие файлы можно использовать для программного создания объекта Картинка? Вы как определяете можно из них создать картинку или нельзя? на глаз?
18 sechs
 
04.10.18
18:02
Это не баг, а фича. Платформа рассматривает zip как набор картинок с разным разрешением для разных экранов. Ну и подпихиваешь мусор - получаешь мусор.

Загляни в любую современную типовую.
19 k23
 
04.10.18
21:31
(18) да, действительно, если подсунуть архив с картинками, то Формат() возвращает неопределено и не валится в исключение.Назвать это фитчей не рискнул бы.
Можно поподробней о современных типовых, где используются картинки в архивах?
У картинки есть метод Преобразовать(), в котором что-то есть про некий манифест вариантов картинки, если картинка представлена архивом.
В тех современных типовых, что у меня, нет подобных вариантов использования.
Может есть ссылка на описание сего секретного зафитченного механизма?
20 sechs
 
04.10.18
21:47
Дык эта... какбэ не с 8.3.3 уже.

Открываешь, например книжку/страничку:
Разработка и администрирование/Методическая поддержка для разработчиков и администраторов 1С:Предприятия 8/Перевод конфигураций на платформу "1С:Предприятие 8.3" без режима совместимости с версией 8.2/Перевести картинки в наборы картинок

А там внезапно:

Для возможности масштабирования картинок управляемой формы в интерфейсе Такси на платформе "1С:Предприятие 8.3" версии 8.3.10 и выше рекомендуется все картинки в конфигурации перевести в наборы картинок. Для этого необходимо выполнить следующие действия:
Сделать несколько вариантов картинки в размерах для масштаба в 85, 100, 125, 150, 175, 200, 300 и 400 %%, так же вариант для приложения в интерфейсе 8.2 и 8.2 (обычное приложение), если предусмотрены эти режимы работы.
Поместить картинку в zip-архив.
Включить в архив файл manifest.xml с описанием соответствия размеров и типов экрана.
Загрузить zip-архив в конфигурацию как картинку.
Пример manifest.xml для набора из картинок:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Picture>
    <PictureVariant name="85.png" screenDensity="bldpi" glyphWidth="14" glyphHeight="14"/>
    <PictureVariant name="100.png" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
    <PictureVariant name="125.png" screenDensity="aldpi" glyphWidth="20" glyphHeight="20"/>
    <PictureVariant name="150.png" screenDensity="mdpi" glyphWidth="24" glyphHeight="24"/>
    <PictureVariant name="175.png" screenDensity="amdpi" glyphWidth="28" glyphHeight="28"/>
    <PictureVariant name="200.png" screenDensity="hdpi" glyphWidth="32" glyphHeight="32"/>
    <PictureVariant name="300.png" screenDensity="xdpi" glyphWidth="48" glyphHeight="48"/>
    <PictureVariant name="400.png" screenDensity="udpi" glyphWidth="64" glyphHeight="64"/>
    <PictureVariant name="Picture.png" interfaceVariant="version8_2" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
    <PictureVariant name="Picture.png" interfaceVariant="version8_2_OrdinaryApp" screenDensity="ldpi" glyphWidth="16" glyphHeight="16"/>
</Picture>

Открываешь, например ERP2, а там внезапно ОбщаяКартинка.ДлительнаяОперация48 в формате zip

Открываешь, например СП, а там внезапно Картинка.НаборВариантов Тип Булево, Истина - картинка содержит несколько вариантов изображений.
21 sechs
 
04.10.18
21:53
22 sechs
 
04.10.18
21:58
Точнее, начиная 8.3.3 начали впиливать в вариант могильного клиента, а к 8.3.10 дотянули до всех вариантов...
23 k23
 
05.10.18
09:13
(21)(22) сильный ответ! спасиб. покопаюсь.
Прогер, кодирующий разбор картинки в 1с явно накосячил. Где-то у него код падает не до конца инициализируя объект.
24 НЕА123
 
05.10.18
09:38
тут про ZIP файлы

Интересный баг платформы 8.3 при работе с картинками

похоже, что файлы (0) тоже такие.
25 НЕА123
 
05.10.18
09:40
(24) сторно.
не в эту ветку.
26 НЕА123
 
05.10.18
09:42
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший