Краткое описание формата файла *.1CM

26.02.24

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

Выкладываю свои знания и знания других экспертов об этом формате.

Какова цель?

Закрыть модули, не устанавливая пароль на модуль и не поставляя модули без исходников.

Есть решение?

Создать новую базу в списке информационных баз. Открыть конфигуратор. Создать любой объект метаданных, например, обработку. В обработке создать форму обработки, в модуле формы написать любой код. Открыть модули объекта и менеджера обработки и написать любой код.

Пример кода:

Сохранить конфигурацию.

В меню конфигуратора нажать "Конфигурация" - "Создать мобильное приложение", нажать "Записать в файл", выбрать файл для сохранения, нажать "Сохранить", появляется окно с надписью "Мобильное приложение записано", нажать "Ок". Всё, модули закрыты.

Как понять что модули закрыты?

Разархивировать сохранённый файл 1cema.zip. В архиве лежат 2 файла 1cema.xml и 1Cv8.1CM. Открыть файл 1Cv8.1CM блокнотом Notepad++. Формат файла 1Cv8.1CM напоминает формат информационной файловой базы 1Cv8.1CD.

Создать еще одну новую базу в списке информационных баз. В каталоге новой базы заменить 1 файл 1Cv8.1CD на 1Cv8.1CM. В списке информационных баз нажать "Конфигуратор". Появляется окно "Информационная база не обнаружена. Создать новую базу?", нажать "Нет". Пробуем переименовать расширение файла 1CM на 1CD. Снова открыть конфигуратор, конфигуратор открылся. Что!?! Открыть окно конфигурации, далее открыть по очереди все модули обработки (объект, менеджер, форма).

Что видим? У модуля формы код остался в целости и сохранности открыт, у других модулей исходники пропали. Как так!?!

Давайте разбираться. Сначала выгрузим конфигурацию в файлы, нажав "Конфигурация" - "Выгрузить конфигурацию в файлы". В открывшемся окне выбрать пункт "XML файлы", выбрать каталог для выгрузки конфигурации в файлы и нажать "Выгрузить".

Упс, ошибка.

А что с файлом CF?

Ок, пробуем сохранить конфигурацию в файл, нажав "Конфигурация" - "Сохранить конфигурацию в файл". Выбрать файл *.cf для сохранения и нажать "Сохранить". Файл сохранился. Открыть файл 1Cv8.cf блокнотом Notepad++. Формат cf мобильного приложения напоминает формат обычного cf. 

Распаковываем файл *.cf всем давно известным инструментом V8Unpack.

В списке распакованных файлов есть файлы:

ee4abc77-b917-438c-8e58-5bb55c15be9f.0_1

ee4abc77-b917-438c-8e58-5bb55c15be9f.0_3

Открыть любой из вышеперечисленных файлов блокнотом Notepad++.

Код, содержащий непонятные символы, но со знакомыми строками. Это, видимо, и есть старый добрый байт-код.

А что пишут другие эксперты? (выделил светло желтым фоном)

Ответ:

Очень похоже на скомпилированную в бинарное представление скобочную запись как в DT.
На глаз - вроде оно, с теми же кодами команд.

И как преобразовать бинарный байт-код в текстовый?

Есть описание формата. Сделать конвертер из бинарного представления данных во внутреннее.

А обратного преобразования нет?

В данный момент нет. Но сделать вроде не сложно.

Ответ:

Одну и ту же конфу сохранить как обычный cf (и распаковать), и из неё же сделать apk (затем вытащить 1СМ, из него cf, и тоже распаковать). Сравнить, понять принцип отличий и сделать конвертер. То есть, идти методом индукции, от частного к общему. На основании нескольких примеров создать алгоритм преобразования.

Есть ли возможность выгрузить CF без использования стороннего инструмента?

Ответ:

Публикуешь мобильное приложение, скачиваешь конфу не 1сным клиентом, а просто браузером. Получаешь конфу полностью в нормальном виде по объектам.

Что означают расширения файлов 0_1 и 0_2?

Ответ:

По сути, с помощью директив компиляции, также как и с помощью инструкций препроцессора в одном исходном модуле описываются сразу несколько модулей. Один модуль исполняется на клиенте, другой на сервере, третий на сервере без контекста. Для каждой директивы компиляции (а их всего 5) 1С компилирует отдельный модуль. Увидеть это можно на примере cf-файла мобильного приложения, а также файла 1cema.xml. Формат cf мобильного приложения немного отличается от формата обычного cf. Одно из отличий состоит в том, что в cf мобильного приложения все модули хранятся без исходных текстов, в скомпилированном виде. Даже модули управляемых форм. И хранятся скомпилированные модули управляемых форм в 4-х отдельных файлах, по одному скомпилированному модулю для каждой из 4-х доступных для управляемых форм директив компиляции (&НаКлиенте, &НаСервере, &НаСервереБезКонтекста, &НаКлиентеНаСервереБезКонтекста).
Собственно, из всего вышесказанного я делаю вывод, что директивы компиляции - это другая форма инструкций препроцессора. Как конкретно 1С внутри себя реализовала обработку директив компиляции, на стадии препроцессинга или на стадии компиляции - не так уж и важно, имхо. Главное, что смысл директив компиляции, но мой взгляд, тот же, что и у инструкций препроцессора.

Вопросы есть?

Вопрос:

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

Ответ:

Установить пароль можно на общий модуль, в нем реализовать всю логику, а в модуле формы вставить вызовы этого общего модуля.
Во многих отраслевых решениях 1С сделано примерно так.

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    127536    688    389    

740

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    8501    25    6    

47

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

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

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

14400 руб.

06.12.2023    3850    20    1    

43

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

10000 руб.

10.11.2023    4808    12    2    

38

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 руб.

14.01.2013    179037    1086    0    

863

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

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

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    28341    83    146    

61

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15142    3    12    

38

"Менеджер потоков 2.1": УПП: "Восстановление партий"

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

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11926    5    9    

7