Алхимический способ работы с двоичными данными — универсальная библиотека под версии 1С 8.х

28.08.26

Разработка - Инструментарий разработчика

Набор функций работы с двоичными данными, которые представляют собой аналоги решения механизмов платформы 1С 8.3.9, которые работают на всех версиях 1С 8.х, в том числе и мобильные приложения.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Обработка с библиотекой (код в модуле объекта ) для платформы 8.2 и новее
.epf 8,61Kb
78 Скачать бесплатно
Обработка с библиотекой (код в модуле объекта ) для платформы 8.0 и новее
.epf 8,04Kb
28 Скачать бесплатно
Алхимический способ работы с двоичными данными — универсальная библиотека под версии 1С 8.х: (версия 2.0 с буферами)
.epf 10,17Kb
0 Скачать бесплатно
Алхимический способ работы с двоичными данными — универсальная библиотека под версии 1С 8.2: (версия 2.0 с буферами)
.epf 10,76Kb
0 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

При подготовке доклада на конференцию infostart teach event 2025 возникла идея сделать аналог оператора Выполнить под WEB клиент и мобильный клиент через создание внешней подключаемой обработки. На этом сайте представлен яркий пример упаковки обработок, расширения, конфигурация на функционале платформы 8.3.9 и новее: Yellow Packer и Распаковщик. Однако, работа с двоичными данными возможна и на более ранних версиях 1С, но для этого нужна функция Преобразовать64 , которая преобразует строку base64 в массив байтов и обратно из массива байт в base64. Пользуясь случаем, выражаю благодарность автору за её реализацию.

Данная библиотека представляет собой универсальный слой совместимости (Compatibility Layer), который реализует на уровне встроенного языка функции для работы с двоичными данными. Её ключевая цель — предоставить единый API (программный интерфейс) для абсолютно всех платформ 1С 8.x, включая версии 8.0.5 – 8.3.8, мобильные клиенты (КПК), а также конфигурации, работающие в режиме совместимости, где нативные объекты недоступны.

Ядро библиотеки основано на работе через массив байт. Вся логика построена на базовом типе Массив, где каждый элемент — число от 0 до 255 (байт). Это позволяет:

  • Обойти отсутствие в старых версиях объектов ПотокБуферДвоичныхДанныхХешированиеДанных.

  • Не зависеть от режима совместимости и типа клиента (толстый/тонкий/веб/мобильный).

  • Иметь одну кодовую базу для гетерогенных сред (например, сервер 8.3.12 и клиенты на КПК с 8.2).

Отличие библиотеки от платформы приведено в виде следующей таблицы:

Особенности Библиотека Платформа 8.3.9+
Работа с файлами Читает файл всегда целиком в память. Позволяет читать файл порциями (блоками), снижая потребление памяти. За счёт потоковой работы с диском технически ничем не ограничена (файлы в сотни ГБ).
Ограничения на размер Ограничена оперативной памятью и предельным размером массива (2^31). Технически не ограничена (работа с диском).
Использование компонент Не используются внешние компоненты. Встроенные оптимизированные механизмы.
Требования / Совместимость Достаточно платформы 1С 8.0.5 (использует XMLСтрока/XMLЗначение). Не зависит от режима совместимости. Требует платформы 8.3.9+ и соответствующего режима совместимости.
Типы клиентов Работает на всех клиентах, кроме клиентской части WEB. Аналогичные ограничения со стороны WEB-клиента.
Основное преимущество Универсальность: один код для всех версий 1С 8.x и мобильных платформ. Оптимальный выбор для внешних обработок, старых конфигураций, и файлов не более 10-100 МБ. Производительность и работа с большими данными. Оптимальный выбор для современных конфигураций без ограничений.


Прямое применение библиотеки:

  • Старые версии (1С 8.0–8.3.8) и мобильные клиенты/приложения и КПК, где нет современных методов работы с данными.

  • Конфигурации со старым режимом совместимости (например, УПП).

  • Разработчики внешних обработок, которым нужен один код для всех клиентов для версии 1С 8.х

  • Унифицированный подход работы с небольшими файлами на 1С 8.х

Справочник функций библиотеки применительно к функциям платформы:

1. Базовые преобразования (используют XMLСтрока/XMLЗначение

Функция Назначение и применение Ключевая особенность / Аналог в 1С 8.3.9+
ДвоичныеДанныеИзМассива
(МассивБайт)
Создаёт объект ДвоичныеДанные из массива байт. Мост для записи результата в файл или сохранения в базе. Особенность: Использует XMLЗначение, совместима с 1С 8.0.5.
Аналог: Новый ДвоичныеДанные(БуферДвоичныхДанных)
МассивИзДвоичныхДанных
(Данные)
Извлекает массив байт из объекта ДвоичныеДанные. Первый шаг для разбора любого файла, загруженного в систему. Особенность: Использует XMLСтрока.
Аналог: Буфер = ДвДанные.ПолучитьБуферДвоичныхДанных()
МассивИзФайла
(ИмяФайла)
Вспомогательная функция. Читает файл целиком в массив байт. Особенность: Упрощает начало работы.
Аналог: ДвДанные = Новый ДвоичныеДанные(ИмяФайла)

2. Низкоуровневый парсинг и сборка (аналог Потока)

Функция Назначение и применение Пример / Аналог в 1С 8.3.9+
ПрочитатьЦелое8/16/32/64ИзМассива
и
ПрочитатьЦелоеИзМассива
(Массив, Позиция, ...)
Чтение чисел из бинарной структуры. Основа для разбора заголовков файлов (BMP, PNG), сетевых пакетов, пользовательских форматов. Пример: Ширина = ПрочитатьЦелое32ИзМассива(ДанныеФайла, 18);
Аналог: Число = Поток.Прочитать(Целое32);
ЗаписатьЦелое8/16/32/64ВМассив
и
ЗаписатьЦелоеВМассив
(Массив, Позиция, ...)
Запись чисел в бинарную структуру. Основа для сборки данных для отправки внешнему оборудованию или генерации файлов. Пример: ЗаписатьЦелое16ВМассив(Буфер, 0, 1024, "BigEndian");
Аналог: Поток.Записать(Значение, Целое16);
ЗаписатьМассивВМассив
(Целевой, Исходный, Позиция)
Копирование блоков данных. Аналог записи в буфер. Используется для сборки итогового файла из фрагментов. Аналог: Работа с областями БуфераДвоичныхДанных.

3. Преобразования данных и кодировок


Функция
Назначение и применение Пример / Особенности
ПолучитьМассивБайтовИзСтроки
(Строка, Кодировка="UTF8")
Преобразует строку в байты. Критична для формирования текстовых полей в бинарных протоколах. Пример: ИмяВUTF16 = ПолучитьМассивБайтовИзСтроки("Привет", "UTF16");
Аналог: Использование ЗаписьТекста в поток с указанием кодировки.
ПолучитьСтрокуИзМассиваБайтов
(Массив, Кодировка="UTF8")
Декодирует байты в строку. Необходима для чтения текста из бинарных файлов. Пример: Текст = ПолучитьСтрокуИзМассивБайтов(ПрочитанныеБайты, "UTF8");
ПолучитьМассивИзHexСтроки
(HexСтрока)
Конвертирует строку шестнадцатеричных символов (HEX) в массив байт. Особенность: Не имеет прямого аналога в платформе.
Пример: Массив = ПолучитьМассивИзHexСтроки("A1FF2B");
ПолучитьHexСтрокуИзМассивБайтов
(МассивБайтов)
Конвертирует массив байт в строку HEX-символов. Незаменима для отладки (дамп данных). Пример: Дамп = ПолучитьHexСтрокуИзМассивБайтов(Данные); // "A1FF2B..."

 

Практический пример: чтение ширины и высоты из BMP на всех версиях 1С 8.х с помощью библиотеки:

// Универсальная функция, работающая на всех версиях 1С 8.x
Процедура ПрочитатьРазмерыBMP(ПутьКФайлу)

    // 1. Универсальное чтение файла в массив байт
    ДанныеФайла = МассивИзФайла(ПутьКФайлу);
    
    // 2. Проверка сигнатуры "BM"
    Если Не (ДанныеФайла[0] = 66 И ДанныеФайла[1] = 77) Тогда // "B" и "M"
        ВызватьИсключение "Это не BMP-файл";
    КонецЕсли;
    
    // 3. Чтение ширины и высоты из заголовка (смещения 18 и 22)
    Ширина = ПрочитатьЦелое32ИзМассива(ДанныеФайла, 18);
    Высота = ПрочитатьЦелое32ИзМассива(ДанныеФайла, 22);
    
    Сообщить("Размер изображения: " + Ширина + " x " + Высота + " пикселей");
    
КонецПроцедуры

Аналог на 1С 8.3.9+  - используя возможности платформы:

// Работает ТОЛЬКО на платформе 8.3.9+ в подходящем режиме совместимости
Процедура ПрочитатьРазмерыBMP_Платформа(ПутьКФайлу)
    
    Поток = Новый ПотокВФайле(ПутьКФайлу, РежимОткрытияФайла.Чтение);
    
    // Чтение заголовка
    Поток.Пропустить(2); // Пропускаем сигнатуру "BM"
    Поток.Пропустить(12); // Пропускаем размер файла и зарезервированные поля
    СмещениеДанных = Поток.Прочитать(Целое32);
    РазмерЗаголовка = Поток.Прочитать(Целое32);
    Ширина = Поток.Прочитать(Целое32);
    Высота = Поток.Прочитать(Целое32);
    
    Сообщить("Размер изображения: " + Ширина + " x " + Высота + " пикселей");
    Поток.Закрыть();
    
КонецПроцедуры

Обновление от 28.08.2026 - добавил функции со смещением

Добавил новые функции - чтобы было проще переносить функционал 1С 8.3.9 и в обратную сторону.

4. Буферный слой (имитация БуфераДвоичныхДанных) от 28.08.2026 - версия 2.0.

Категория Функция Назначение и применение Ключевая особенность / Аналог в 1С 8.3.9+
Конструкторы БуферСоздать([Данные], [ПорядокБайтов]) Создает контекст буфера. Данные могут быть массивом, строкой (HEX, Base64, текст) или ДвоичныеДанные. Автоматически определяет тип входных данных. Аналог: Новый БуферДвоичныхДанных
БуферСоздатьФиксированный(Размер, [ПорядокБайтов]) Создает буфер фиксированного размера, заполненный нулями. Полезно для резервирования места. Аналог: Новый БуферДвоичныхДанных(Размер)
Чтение
(позиция ↑)
БуферПрочитатьБайт(Контекст) Читает 1 байт из текущей позиции. Позиция автоматически смещается на размер прочитанного.
Аналог: Буфер.Прочитать(Тип)
БуферПрочитатьЦелое16(Контекст) Читает 2 байта как Целое16.
БуферПрочитатьЦелое32(Контекст) Читает 4 байта как Целое32.
БуферПрочитатьЦелое64(Контекст) Читает 8 байт как Целое64.
БуферПрочитатьБайты(Контекст, Количество) Читает массив байтов заданной длины. Возвращает Массив прочитанных байт. Аналог: Буфер.Прочитать(Тип, Длина)
Запись
(позиция ↑, авторасширение)
БуферЗаписатьБайт(Контекст, Значение) Записывает 1 байт в текущую позицию. При выходе за границы буфер автоматически расширяется.
Аналог: Буфер.Записать(Значение, Тип)
БуферЗаписатьЦелое16(Контекст, Значение) Записывает 2 байта.
БуферЗаписатьЦелое32(Контекст, Значение) Записывает 4 байта.
БуферЗаписатьЦелое64(Контекст, Значение) Записывает 8 байт.
БуферЗаписатьБайты(Контекст, МассивБайт) Записывает массив байтов. Упрощает копирование блоков данных. Аналог: ЗаписатьМассивВМассив
Управление позицией БуферУстановитьПозицию(Контекст, Позиция) Устанавливает позицию для чтения/записи. Аналог: Буфер.УстановитьПозицию()
БуферПолучитьПозицию(Контекст) Возвращает текущую позицию в буфере. Аналог: Буфер.ПолучитьПозицию()
БуферСдвинутьПозицию(Контекст, Смещение) Сдвигает позицию на заданное количество байт. Полезно для пропуска данных. Аналог: Поток.Пропустить()
Работа с данными БуферПолучитьОбласть(Контекст, НачатьС, Длина) Копирует область буфера в новый контекст. Аналог: Буфер.Скопировать()
БуферПолучитьHex(Контекст, [НачатьС], [Длина]) Возвращает HEX-строку (дамп) из буфера. Незаменима для отладки. Особенность: отсутствует в платформе 8.3.9.
БуферПолучитьМассив(Контекст) Возвращает внутренний массив байтов. Мост к оригинальным функциям библиотеки.
БуферПолучитьДвоичныеДанные(Контекст) Возвращает объект ДвоичныеДанные. Аналог: ДвоичныеДанныеИзМассива
БуферПолучитьBase64(Контекст) Возвращает строку Base64 из буфера. Особенность: удобно для передачи данных по HTTP.
Ошибки
(вместо исключений)
БуферЕстьОшибка(Контекст) Проверяет флаг ошибки в контексте. Позволяет обрабатывать ошибки без Попытка/Исключение.
БуферПолучитьОшибку(Контекст) Возвращает описание ошибки.
БуферСброситьОшибку(Контекст) Сбрасывает флаг ошибки.
Дополнительно РежимТолькоЧтение Свойство контекста. При установке в Истина запрещает запись в буфер. Особенность: отсутствует в платформе 8.3.9.

Пример новых функций:

// Создаем буфер из HEX-строки
Буфер = БуферСоздать("0x01020304", "LittleEndian");

// Читаем число (позиция автоматически смещается на 4)
Число = БуферПрочитатьЦелое32(Буфер); // = 0x04030201

// Возвращаем позицию в начало и записываем новое значение
БуферУстановитьПозицию(Буфер, 0);
БуферЗаписатьЦелое32(Буфер, 0x12345678);

// Получаем HEX-дамп для отладки
Сообщить(БуферПолучитьHex(Буфер)); // "78563412"

// Проверяем ошибки
Если БуферЕстьОшибка(Буфер) Тогда
    Сообщить("Ошибка: " + БуферПолучитьОшибку(Буфер));
КонецЕсли;

Для 2.0 характерен принцип - версия 1.0 целиком и полностью сохранена и включена в неё.

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.309
  • Управление торговлей, редакция 10.3, релизы 10.3.88.3, 10.3.74.3
  • Бухгалтерия государственного учреждения, редакция 2.0, релизы 2.0.110.60

Вступайте в нашу телеграмм-группу Инфостарт

Библиотека 1С Двоичные данные Кросс-платформенность 1С 8.2 1С 8.0 1С 8.1 1С 8.3 1С 8.5 Режим совместимости Массив байт Внешние обработки.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    276762    1551    423    

1197

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    69901    139    41    

147

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27621    102    46    

107

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5. Работает на возможностях платформы, внешние компоненты не используются.

6000 руб.

25.02.2026    5848    19    1    

21

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    56046    189    63    

221

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Программист Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    3472    8    0    

22
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ТочкаScarab 08.10.25 13:06 Сейчас в теме
Дима?! а чё для 8.0 зажал? по обоим ссылкам скачивается одинаковый файл только для 8.2 :(
2. Dima1205 155 08.10.25 13:36 Сейчас в теме
(1) странно что они оба одинаковых, сейчас выложу.
3. Dima1205 155 08.10.25 13:50 Сейчас в теме
(1) Все залил правильный файл.
4. ТочкаScarab 08.10.25 13:58 Сейчас в теме
(3) спасибо! подтверждаю - скачалось нормально. бывает ;)
5. SerVer1C 1143 08.10.25 19:05 Сейчас в теме
Бегите от тех, кто использует старьё !
6. Dima1205 155 08.10.25 19:18 Сейчас в теме
(5) Как показывает практика новые версии 1С есть всегда, а вот режим совместимости... Плюс полно отраслевых конфигураций на разных предприятий, реализованный на основе БСП, которые не обновишь как типовые... Как-то так, а инструменты - на то и инструменты - должны работать везде.
Для отправки сообщения требуется регистрация/авторизация