Что такое двоичные данные в 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


Оснащение для магазина с доставкой от компании Ru-Holod
Выбор оборудования зависит от цели его эксплуатации. В магазине оборудование для реализации продуктов питания, условия хранения которых требуют поддержания особой ...
Проверка отчетности 6-НДФЛ и 2-НДФЛ в 1С ЗУП 3.1
Какие проверки необходимо произвести для успешной сдачи отчетов 6-НДФЛ и 2-НДФЛ и какие средства в 1С ЗУП 3.1 в этом ...
Как сократить издержки в производственной компании малого бизнеса. Вебинар
18 февраля 2020 г. состоялся вебинар «Как сократить издержки в производственной компании малого бизнеса. Планирование, фактическая себестоимость, анализ в 1С:Управление ...
Интервью с Сергеем Кукановым
На предприятии есть производство, но вы ещё не доросли до крупных систем управления? Тогда вполне можете попробовать обойтись решением 1С:Управление ...
Годовая отчетность за 2019 г.: бухгалтерская и налоговая
Оформить заявку на участие в онлайн-семинаре "Годовая отчетность за 2019 г.: бухгалтерская и налоговая" https://buhexpert8.ru/dostup#buh ПРОГРАММА СЕМИНАРА НАЛОГОВАЯ ОТЧЕТНОСТЬ: • ...
Новое в ЗУП за 5 мин [выпуск от 17.02.2020]
Выпуск на нашем сайте - https://buhexpert8.ru/1s-zup#tt-5min В этом выпуске: • Разместили ответы на вопросы с семинара по СЗВ-ТД • Обновили ...
1С:ERP Урок 55. Исполнение заказа на производство
Пятьдесят пятый видеоурок вводного курса по «1С:ERP Управление предприятием». Тема на сегодня – исполнение заказа на производство (без использования пооперационного ...
Новое в учете и отчетности по НДФЛ в 2020 году
Изменения по НДФЛ в 2020 году. Изменения сроков и порядка представления отчетности по НДФЛ. Как представить отчетность по доходам по ...
Ошибки при учете договоров ГПХ в 1С ЗУП 3.1
Кого считать работниками по договорам ГПХ. Ошибки квалификации договоров ГПХ. Выплаты по договорам ГПХ в 1С ЗУП 3.1. Смотрите тест-драйва ...
Ответы на популярные вопросы по ЭТК - часть 2
Фрагмент вебинара по электронным трудовым от 11.02.2020 - Если все оставляют бумажные трудовые, можно ли не сдавать СЗВ-ТД? - Нужно ...
Юридическая и организационная (управленческая) структура Компании в 1С:ЗУП КОРП
✔️ Как настроить в 1С:ЗУП КОРП юридическую и организационную (управленческую) структуру Компании? ✔️ Какой отчет показывает сотрудников в разрезе оргструктуры? ...
1С:Электронные трудовые книжки - бесплатный сервис от фирмы 1С
Если вы не используете программу 1С, предлагаем вам воспользоваться сервисом для формирования отчета СЗВ-ТД совершенно бесплатно. Переходите по ссылке etk.1c.ru ...
Сведения о среднесписочной численности работников в 1С 8.3 ЗУП
Кем и в какие сроки сдаются сведения по среднесписочной численности. Что входит в понятие среднесписочная численность и как она рассчитывается ...