Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 17:25

Создание текстового файла с двоичным кодом картинки средствами 1С!

Автор Yura063, 05 июн 2015, 00:55

0 Пользователей и 1 гость просматривают эту тему.

Yura063



Доброго времени суток!

В этой статье я хочу поделиться своим опытом по разработке файла, в моем случае это был dat - файл, который содержит не только текст, но и не сериализованный двоичный код картинки.

В нашу организацию прибыло новое оборудование на котором стоял принтер Zebra с поддержкой  EPL2. На этом принтере печатались этикетки. Вся выгрузка на это оборудование шла из 1С. Выгрузка содержала данные для работы станка и этикетку в формате EPL. Руководитель поставил задачу, поместить на этикетку картинку. Программное обеспечение  (ПО)  оборудования просто находило файл необходимой этикетки и отправляло на принтер, не обрабатывая данные. Тут и начались проблемы. Для пояснения, выгрузить двоичный код картинки в текстовый файл не трудно, но когда мы хотим выгрузить текст + двоичный код картинки в один файл, любой Программист 1С скажет, необходимо сериализовывать двоичные данные картинки. Но, как я писал выше, ПО не обрабатывает данные а просто находит и кидает dat - файл на принтер. Проштудировав интернет, я не смог найти как решить проблему, как объединить в один файл строки и двоичные данные.

Для полноты понимания приведу структуру dat - файла:

q799
N
ZB
I8,C,001
A12,0,0,3,2,2,N,"текст"
************ еще строки текста с координатами, текстом и командами EPL*****************
A396,208,0,3,2,2,R,"текст"
B320,40,0,E30,2,1,80,B,"текст"
GW591,0,24,192, (Двоичные данные картинки без сериализации)
P1

Пробовал разные варианты. Выгружал картинку в файл (ДвоичныеДанные.Записать("Путь")), потом открывал этот файл и добавлял текст перед данными и в конец данных. Но при добавлении данных половина картинки исчезала. И на этом предисловие заканчивается. Может я выполнил это задание не совсем правильно,  у кого есть более правильное решение - готов выслушать.

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

1. Я создал первый файл (текстовый) в него забил все данные, команды необходимые для распознавания принтера и текст для вывода на этикетку.

ИмяФайла = ПапкаВыгрузкиЭтикеток + "\" + ИмяФайла+ ".dat";
ФаилЭтикетки = Новый ТекстовыйДокумент;
ФаилЭтикетки.УстановитьТекст(ТекстЭтикетки);
ФаилЭтикетки.Записать(ПапкаВыгрузкиЭтикеток + "\" + НомерЗаготовки + ".dat.1",КодировкаТекста.ANSI);


2. Далее выгружаем картинку и вставляем в нее команду "P1" - команда печати и в конце удаляем все временные файлы которые нам не нужны.

ДД = Новый ДвоичныеДанные("ПутьККартинке");
ДД.Записать(ПапкаВыгрузкиЭтикеток + "\" + ИмяФайла+ ".dat.2");
ФаилЭтикетки.Прочитать(ПапкаВыгрузкиЭтикеток + "\" + ИмяФайла+ ".dat.2");
ФаилЭтикетки.ВставитьСтроку(ФаилЭтикетки.КоличествоСтрок()+1,"P1");
ФаилЭтикетки.Записать(ПапкаВыгрузкиЭтикеток + "\" + ИмяФайла+ ".dat.2",КодировкаТекста.ANSI);
ОбъединитьФайлы(ИмяФайла+".*", ПапкаВыгрузкиЭтикеток + "\" + ИмяФайла + ".dat");

//Удаление Файлов
УдалитьФайлы(ПапкаВыгрузкиЭтикеток,"*.1");
УдалитьФайлы(ПапкаВыгрузкиЭтикеток,"*.2");


Вот и все. Надеюсь кому-то моя статья поможет, а может кто-то поделится своим опытом.

Спасибо! Сайт автора: yuis.ru
Помогли, отблагодари!

Теги:

Похожие темы (1)

Рейтинг@Mail.ru

Поиск