Что такое двоичные данные в 1С и как их использовать

Двоичные данные в 1С предназначены для хранения фалов произвольного формата. С их помощью можно:

  • Организовать взаимодействие по двоичному протоколу с различными устройствами;
  • Хранить в виде реквизита объекта метаданных файлы любых форматов;
  • Конвертировать текстовые данные в бинарные (чаще всего используется для отправки отчетов);
  • Работать с двоичными данными в памяти.

Что может система

При работе с двоичными данными платформа 8.3 умеет выполнять следующие действия:

  1. Выполнять чтение и запись двоичных данных;
  2. Перемещать данные с клиента на сервер и обратно с использованием временного хранилища;
  3. Инициализировать с помощью бинарных файлов объект типа «Картинка»;
  4. Считывать их из всемирной сети с использованием объектов «ПочтовоеВложение», «НТТРСоединение» и т.д.
  5. Использовать криптографические средства для шифрования и подписи важных вложений;
  6. При помощи объекта «ХешированиеДанных» вычислять хеш-функцию.

Сохранение данных в реквизит

Для примера создадим в тестовой конфигурации справочник.

  1. Создадим в справочнике реквизит «Картинка» и присвоим ему тип «ХранилищеЗначения» (Рис.1); Рис.1

На самом деле, использовать один и тот же справочник для хранения информации о номенклатуре и бинарных данных картинок немного неправильно. При достаточно больших объемах данных и тяжеловесных файлах крупного размера могут возникнуть нежелательные простои и «тормоза» в работе системы. Гораздо корректнее с точки зрения системы будет организовать отдельный справочник «Картинки», ссылку на который мы могли бы задать как тип реквизита.

  1. Создаем форму элемента справочника, так как политика фирмы 1С в отношении интерфейса в последнее время направлена на значительное превалирование  управляемых форм над обычными, вариант с обычной формой мы рассматривать не будем;
  2. При создании формы элемента справочника в управляемом режиме мы увидим, что поместить на форму элемент с типом «ХранилищеЗначения» невозможно (Рис.2) Рис.2
  3. Поэтому после создания формы мы создадим новый реквизит формы с типом данных «Строка» и длиной строки в 0 символов, реквизит назовем «КартинкаФормы»;
  4. Размещать на форме мы его пока не будем, сама форма принимает вид, представленный на Рис.3 Рис.3
  5. Создадим и определим команду «Добавить картинку» и добавим на форму соответствующую кнопку;
  6. Определим для нее процедуры на клиенте и на сервере (Рис.4); Рис.4
  7. Несмотря на то, что на форме ничего вроде бы не меняется, двоичные данные выбираемого файла уже записываются в соответствующий реквизит нашего справочника;

Важно отметить, что ввиду того, что реквизиты типа «ХранилищеЗначения», содержащие двоичные данные недоступны в режиме управляемого приложения, обращение к ним возможно только с использованием метода РеквизитФормыВЗначение.

  1. Для того чтобы это проверить мы создадим команду «ПрочитатьДвоичныеДанные» и запишем для неё код (Рис.5); Рис.5
  2. Посмотрим, что выдаст нам последняя записанная команда (Рис.6); Рис.6

В поле сообщения представлена запись двоичных данных хранилища значений.

Чтение данных из реквизита

Создадим обработку, которая будет выводить хранящийся в бинарном виде в нашей конфигурации файл в табличный документ (это нужно, допустим для вывода на печать логотипа фирмы).

  1. Добавляем форму произвольной внешней обработки;
  2. Создаем на форме два реквизита (Справочник и ТабличныйДокумент);
  3. Реквизиту Справочник присваиваем тип значения СправочникСсылка.НоменклатураСКартинкой, ТабличныйДокумент имеет соответствующий вид (Рис.7); Рис.7
  4. Создаем команду ПоказатьКартинкуИзСправочника на клиенте с последующим выполнением части кода на сервере (Рис.8); Рис.8

В принципе, это весь код, который нам нужен. С помощью оператора Получить() мы читаем двоичные данные, хранящиеся в соответствующем реквизите справочника и передаем их в объект «Картинка», который и будет показан в верхней левой ячейке табличного документа формы (Рис.9).

Рис.9

Преобразование данных

Нечасто, но бывает, что при работе с нестандартными обменами с внешними системами требуется конвертация данных из двоичного формата в формат Base64 или обратно.

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

  1. Base64Строка – переводит заданное значение в строку соответствующей кодировки;
  2. Base64Значение – делает обратное преобразование.

Оптимизация вышеприведенного кода

Код, представленный на Рис.4, безусловно, работает, но с одной существенной оговоркой: если в свойствах конфигурации установлен флажок «Режим использования модальности» (Рис.10). В противном случае его использование вызовет ошибку. Рис.10

Для того, чтобы этого не происходило надо находясь в модуле формы элемента справочника, зайти в меню Текст->Рефакторинг->Нерекомендуемые синхронные вызовы->Преобразовать вызовы модуля.

По прошествии некоторого времени синхронные вызовы автоматически будут преобразованы в асинхронные, а код примет вид (Рис.11)

Рис.11


Добавить комментарий

Ваш e-mail не будет опубликован.

*

code


11.12 Программирование в 1С для школьников. Урок 10
Урок 10 школьного курса "Программирование в 1С:Предприятие 8.3", посвященный 5-ой задаче профиля "Автоматизация бизнес-процессов" https://kpk.1c.ru/nti ...
05.12 Программирование в 1С для школьников. Урок 9
Урок 9 школьного курса "Программирование в 1С:Предприятие 8.3", посвященный 4-ой задаче профиля "Автоматизация бизнес-процессов" https://kpk.1c.ru/nti ...
Автоматический расчет тарификации преподавателей в 1С:ЗКГУ 8
Автоматический расчет тарификации преподавателей в «1С:ЗКГУ 8» (ред. 3) Из этого видеоурока экспертов 1С вы узнаете, как в программе «1С:Зарплата ...
НТВ Утро День Бухгалтерии 1С
Репортаж НТВ о ежегодном Дне бухгалтерии 1С в Большом Московском Цирке на Проспекте Вернадского ...
Управление прибылью: точки роста. Вебинар
5 декабря прошел второй вебинар серии для малого бизнеса «Управляйте бизнесом на основании цифр». В вебинаре на практических примерах помогаем ...
06.12 Игра "Монополия". Урок 4
Урок 4 курса "Многопользовательская система с экономической составляющей" в рамках которого школьники смогут сами доработать игру "Монополия", написанную на платформе ...
07.12. Вебинар для школьников по базовым бизнес-процессам предприятия. Практикум.
Последний практикум для школьников по Базовым бизнес-процессам в рамках дистанционной подготовки на втором туре КД ОНТИ профиля "Автоматизация бизнес-процессов" https://kpk.1c.ru/nti ...
04.12 Программирование в 1С для школьников. Урок 8
Урок 8 школьного курса "Программирование в 1С:Предприятие 8.3", посвященный 4-ой задаче профиля "Автоматизация бизнес-процессов" https://kpk.1c.ru/nti ...
Инвентаризация оценочных обязательств и резервов по отпускам за 2019 год в 1С ЗУП 3.1
Инвентаризация оценочных обязательств и резервов по отпускам в 1С ЗУП 3.1 производится автоматически при расчете резервов отпусков за декабрь. Расчет ...
Учет МРОТ при расчете среднего заработка в 1С ЗУП 3.1
Нужно ли учитывать МРОТ при расчете среднего заработка в 1С ЗУП 3. В каких случаях ставится флажок "Учитывать МРОТ при ...
Многоскладской учет. Разбор задачи по программированию 1С от Павла Чистова
Фирма "1С" выпускает серию видео от Павла Чистова "Разбор задач по программированию 1С" Задача "Многоскладской учет ". В задаче нестандартно ...
Экзамен Специалист-консультант 1C:ERP, 1C:УТ. Правила аттестации. Уточнения и пояснения
И снова об экзаменах 1С:Специалист-консультант по "1С:ERP Управление предприятием 2" и "1С:Управление торговлей". Сегодня в выпуске: — уточнения в правилах ...
02.12 Мастер-класс по мобильной разработке на платформе в 1С:Предприятие 8
Мастер-класс по мобильной разработке в 1С отВиталия Рыбалки, эксперта по технологической платформе 1С:Предприятия 8. Виталий расскажет вам не только о ...
1С:ERP Урок 46. Управление доставкой. Часть 2
Сорок шестой видеоурок вводного курса по «1С:ERP Управление предприятием». Это заключительный урок по подсистеме "Склад и доставка". Тема на сегодня ...