1С:Предприятие 8
Система программ
Архитектура платформы 1С:Предприятие
(версия 8.3.26)

Работа с двоичными данными

Встроенный язык содержит ряд низкоуровневых инструментов для работы с двоичными данными. Они позволяют решать такие задачи как:
  • Взаимодействие со специализированными устройствами по двоичному протоколу;
  • Разбор файлов и манипуляция файлами различных форматов;
  • Конвертация текстовых данных напрямую в двоичные данные, например, для отправки отчетов;
  • Работа с двоичными данными в памяти.

Потоки

Основу для работы с двоичными данными составляет группа типов, которую можно обозначить словом «потоки»: Поток, ФайловыйПоток и ПотокВПамяти. Потоки предназначены для последовательного чтения/записи больших объемов двоичных данных. Их преимущество заключается в том, что они позволяют работать с потоками данных произвольного объёма. Но вместе с этим они предоставляют лишь базовые возможности работы, такие как чтение из потока, запись в поток и изменение текущей позиции. Потоки можно сконструировать по имени файла или из объекта ДвоичныеДанные.

Чтение и запись данных

Из потоков можно сконструировать объект ЧтениеДанных. Он, в отличие от потоков, позволяет уже читать отдельные байты, символы, числа. С его помощью можно прочитать строку с учётом кодировки, или прочитать данные до некоторого известного заранее маркера. Этот объект имеет своего «антипода», ЗаписьДанных, который конструируется аналогичным образом, но занимается не чтением, а записью данных. Поскольку эти объекты читают/пишут данные из/в потоки, то они также делают это последовательно, что позволяет работать с потоками произвольного объёма.

Буфер двоичных данных

Любую часть прочитанных данных можно получить в виде объекта БуферДвоичныхДанных. Главное отличие этого объекта заключается в том, что он предоставляет не последовательный, а произвольный доступ к данным, и позволяет изменять их по месту. Все данные этого объекта полностью находятся в оперативной памяти. Поэтому, с одной стороны, он предназначен для анализа и редактирования не очень больших объёмов двоичных данных. Но с другой стороны даёт удобные возможности для произвольного чтения и записи байтов, представленных числами, для разделения буфера на несколько частей и объединения нескольких буферов в один, а также для получения части буфера указанного размера.

Побитовые операции

При работе с буфером двоичных данных поддерживаются побитовые логические операции И, ИЛИ, исключительное ИЛИ, ИНЕ и инвертирование. Эти операции удобны, например, для декодирования формата обмена с торговым оборудованием.

Для более простых и распространенных случаев поддерживаются побитовые операции с целыми числами: И, ИЛИ, НЕ, ИНЕ, исключительное ИЛИ, а также побитовые сдвиги влево и вправо.