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

28.08.26

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

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

Бесплатные

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

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

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

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

  • 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 Режим совместимости Массив байт Внешние обработки.

См. также

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    13311    115    0    

78

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    83193    432    171    

361

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

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

16500 руб.

02.09.2020    285547    1606    423    

1220

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    16714    63    62    

73

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    44143    122    54    

135

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

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

15250 руб.

25.08.2025    76791    147    41    

154

Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)

Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.

18300 руб.

11.09.2026    3689    5    0    

10

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

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

17000 руб.

10.11.2023    28707    103    46    

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