Почему на обычных формах 1С вечно разъезжаются привязки и как мы перестали править их руками: редактор, линтер, превью в браузере и скилл для ИИ

06.11.26

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

Кто правил неуправляемые формы в УТ 10 или УПП, знает эту боль: добавил поле перестало растягиваться окно. А для ИИ-агентов (Cursor, Claude Code) бинарный файл обычной формы вообще чёрный ящик. Я разобрал внутренний формат обычных форм и собрал инструмент, который сам считает привязки и разделители, добавляет кнопки, поля и колонки списков, проверяет форму линтером и рисует превью 1:1 в браузере.

Файлы

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

Наименование Скачано Купить файл
Редактор, линтер привязок и AI-Skill для обычных форм 1С (Ext/Form.bin)
.zip 343,83Kb ver:1.0.0
5 3 400 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

У нас в компании до сих пор живёт большой контур на обычных формах. И каждый раз, когда нужно добавить пару полей или кнопку, начинается одно и то же. Привязки ломаются, а исправлять их муторно. Особенно в сложных формах, которые дорабатывались годами разными людьми — десятки невидимых разделителей (направляющих) и перекрёстных привязок.

Когда я начал подключать к разработке ИИ-агентов, это стало отдельным квестом — управляемую форму читает и правит легко, обычная форма только вручную.

Пришлось выяснить, как Конфигуратор хранит обычные формы и их привязки, и написать свой инструмент. В итоге я перестал настраивать привязки руками — скрипты добавляют или двигают элементы, а все привязки и разделители считаются автоматически. А ещё бонусом он может в автоматическом режиме проверить, есть ли наложение элементов во всей конфигурации — так я нашёл много элементов, которые вообще никто никогда не видит: вставили, забыли, так оно и лежит слоями прямо как в археологии :)

Как устроены привязки изнутри (и почему они вечно ломаются)

Когда я разобрал сериализацию формы в frame.dll, стало понятно, почему в Конфигураторе так легко сломать вёрстку.

У каждого элемента на форме есть блок геометрии {8, Left, Top, Right, Bottom, НомерСтраницы, ...} и 6 границ: 0 — Верх, 1 — Низ, 2 — Лево, 3 — Право, 4 — Центр по горизонтали, 5 — Центр по вертикали.

Каждая привязка хранится в файле дважды — как двунаправленный граф:

  1. Исходящая пружина у самого элемента: запись вида {2, TargetID, TargetEdge, OffsetPx}. Она говорит: «Моя граница должна отстоять от границы TargetEdge объекта TargetID ровно на OffsetPx пикселей».
    • Если TargetID равен 0 — граница привязана к краю самой формы (панели).
    • Если TargetID равен ID самого элемента (например, правый край привязан к своему же левому краю со смещением Width) — это жёсткая распорка, элемент держит фиксированную ширину.
    • Если TargetID — это ID соседнего поля ввода, они сцеплены в цепочку.
  2. Входящая обратная ссылка у родителя или соседа: у самой панели (InnerPanel) и у каждого контрола есть 6 встречных списков: «Ко мне за такую-то границу прицеплены вот эти элементы».
  3. Разделители (Guides): отдельно в панели лежит массив пунктирных линий-направляющих с их координатами в пикселях и отступами от противоположного края.

Как только вы двигаете элемент на форме в Конфигураторе или меняете координаты в файле, смещения OffsetPx, координаты разделителей и встречные списки должны сойтись до пикселя. Если обратная ссылка потерялась или смещение разошлось с координатами (Left, Top, Right, Bottom) — элементы при открытии или растягивании окна начинают наезжать друг на друга или блокировать.

Протестировано на платформе 1С:Предприятие 8.3 (релиз 8.3.27.2074, совместимо со всеми релизами 8.2 и 8.3).

Что делает мой инструмент

Я собрал автономный набор скриптов на Python (без сторонних библиотек и без запуска 1cv8.exe) + описание скилла SKILL.md для подключения к ИИ-агентам:

  1. Безопасная распаковка, сборка и лечение Ext/Form.bin (form_bin.py)
    • Распаковывает Ext/Form.bin в два файла (form.layout и Module.bsl) и собирает обратно строго в PLAIN-режиме с проверкой UTF-8 BOM.
    • Если вам достался битый Form.bin (кто-то сжал его через Deflate или сбил кодировку), команда verify --fix чинит его на месте.
  2. Парсер скобочного дерева (ordinary_form_ast.py)
    • Разбирает form.layout в понятный JSON: все контролы (понимает более 20 классов: поля ввода, кнопки, надписи, табличные поля, панели со вкладками, рамки, командные панели), их координаты, страницы, события и колонки таблиц.
    • Гарантирует 100% обратимость: разбор и обратная сериализация не меняют ни одного байта.
  3. Редактор форм с авторасчётом привязок (ordinary_form_editor.py) Вам и ИИ-агенту больше не нужно трогать привязки руками:
    • set-rect (подвинуть или изменить размер): меняет координаты элемента, сам пересчитывает смещения всех его исходящих пружин, находит все соседние контролы, привязанные к его границам, и синхронно обновляет их пружины и индивидуальные разделители (Guides). Соседние поля никуда не уезжают.
    • add-control (добавить элемент): добавляет Кнопка, Надпись, ПолеВвода, ПолеВыбора, Флажок, РамкаГруппы (на форму или на нужную страницу панели). Сам выделяет свободный ControlID, сдвигает счётчик NextControlID в шапке формы, создаёт распорки ширины/высоты со встречными ссылками, выставляет TabOrder и прописывает обработчик события BSL.
    • add-column / bind-column (добавить или привязать колонку в ТабличноеПоле): решает известную проблему списков (СправочникСписок / ДокументСписок), когда добавленная колонка отображается пустой. Причина в том, что в колонке списка (CLSID 48a6ebc3-...) тип данных хранится сразу в двух местах: в открытом core[35] (Pattern) и внутри поля core[39], где зашит #base64-блок CompressedMemoryStream (18-байтный заголовок + сжатый Deflate wbits=-15 поток встроенного редактора ячейки). Скрипт сам формирует и пакует этот #base64 по переданным --data-uuid и --type-uuid.
    • build-from-dsl (собрать форму с нуля по JSON): по короткому JSON-описанию генерирует готовую обычную форму со всеми направляющими, страницами и привязками.
  4. Статический линтер формы до запуска 1С (form_linter.py) Проверяет форму без открытия Конфигуратора:
    • сверяет прямые и обратные ссылки привязок (MISSING_REVERSE_SPRING_REF, SPRING_OFFSET_DESYNC);
    • симулирует растягивание окна формы на +200x150 пикселей по графу пружин и показывает, какие элементы схлопнутся (CONTROL_COLLAPSE_ON_RESIZE);
    • находит наложения элементов друг на друга на одной вкладке (CONTROL_OVERLAP);
    • проверяет счётчик NextControlID, дубли ID/имён и сверяет все привязанные события кнопок и полей с реальными процедурами в Module.bsl.
  5. Визуальное превью 1:1 в браузере (form_preview.py)
    • Генерирует один HTML-файл с отрисовкой обычной формы в классическом стиле 1С 8.2/8.3.
    • В браузере можно включить отображение всех линий-разделителей (Guides), порядок обхода (TabOrder), кликнуть мышкой в любой элемент и справа увидеть его ID, координаты, привязки, колонки, события и замечания линтера.

 

Пример работы из консоли

 

powershell

# 1. Распаковываем Ext/Form.bin

python scripts/form_bin.py unpack "Catalogs/Номенклатура/Forms/ФормаСписка/Ext/Form.bin" --out-dir "./staging"

# 2. Двигаем или меняем размер существующего элемента (привязки пересчитаются сами)

python scripts/ordinary_form_editor.py set-rect "./staging/form.layout" -o "./staging/form.layout" `

--control "ПолеВводаКомментарий" --left 100 --top 12 --width 260 --height 19

# 3. Добавляем кнопку с обработчиком

python scripts/ordinary_form_editor.py add-control "./staging/form.layout" -o "./staging/form.layout" `

--type Кнопка --name кнПроверить --caption "Проверить" `

--left 446 --top 8 --width 80 --height 19 --handler кнПроверитьНажатие

# 4. Добавляем колонку в СправочникСписок с привязкой к реквизиту

python scripts/ordinary_form_editor.py add-column "./staging/form.layout" -o "./staging/form.layout" `

--table "СправочникСписок" --name "КодТНВЭД" --caption "Код ТН ВЭД" --width 120 `

--data-uuid "<UUID-реквизита>" --type-uuid "<UUID-типа>"

# 5. Или собираем новую форму целиком из JSON

python scripts/ordinary_form_editor.py build-from-dsl "examples/sample_form_dsl.json" -o "./staging/form.layout"

# 6. Проверяем линтером, строим HTML-превью и пакуем обратно в Ext/Form.bin

python scripts/form_linter.py "./staging/form.layout" --module "./staging/Module.bsl"

python scripts/form_preview.py "./staging/form.layout" -o "./staging/form.preview.html"

python scripts/form_bin.py pack "./staging" "Catalogs/Номенклатура/Forms/ФормаСписка/Ext/Form.bin" --cleanup

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

См. также

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

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

50000 руб.

10.09.2026    13260    104    0    

78

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

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

24900 руб.

20.08.2024    83173    431    171    

361

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

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

16500 руб.

02.09.2020    285493    1606    423    

1220

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

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

14000 руб.

17.04.2026    16689    63    62    

73

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

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

22570 руб.

06.10.2023    44123    122    54    

135

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

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

15250 руб.

25.08.2025    76738    147    41    

154

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

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

18300 руб.

11.09.2026    3667    5    0    

10

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    92203    69    44    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. GarriSoft 801 06.11.26 17:20 Сейчас в теме
На первый взгляд, не вероятно круто!

Я правильно понимаю, ИИ агент может легко модифицировать обычные формы, а так же "видеть" их через браузер?
3. it@contlog.ru 15 06.11.26 19:52 Сейчас в теме
(1) Да! Он видит всю структуру формы в JSON (через AST-парсер) и правит её командами редактора, плюс генерирует точное в HTML/SVG, чтобы оценить вёрстку без открытия Конфигуратора прямо в IDE, харнесе или браузере. Ему можно кинуть скрин текущей формы и нарисовать новую в паинте схематично или словами.
amiralnar; GarriSoft; +2 – Ответить
4. dreamadv 158 08.11.26 22:42 Сейчас в теме
(3) а мой видели ? :)) https://github.com/dreamadv81/form-ordinary мой визуально почти 1:1 как в 1С рендер форм. И знает все доступные классы. Более месяца на разработку ушло. Распространяю бесплатно :)
Прикрепленные файлы:
amiralnar; +1 – Ответить
5. it@contlog.ru 15 09.11.26 06:54 Сейчас в теме
(4) Круто! Агент с Rea собрал мне скил примерно за 30 мин. Месяц я тестировал на своих задачах не веря в то что это не галлюцинации. Ни одного сбоя. Но в эпоху ИИ, когда любой проект может быть повторен по текстовому описанию, теперь неясно как мы будем зарабатывать завтра? Как вы считаете? Я без сарказма спрашиваю.
8. dreamadv 158 09.11.26 14:04 Сейчас в теме
(5) Ну раз 30 минут. Выкладывайте на github.
6. it@contlog.ru 15 09.11.26 07:45 Сейчас в теме
(4) Сегодня стоит вопрос, сколько стоит решение вопроса. Сколько токенов вы потратили на разработку? И сколько токенов тратит ваше решение при ежедневной работе. Некоторые подходы становятся неоправданно дорогими и кожаный просто дешевле. Вот сравнил наши подходы.

Сценарий А: Типовая точечная правка (добавить кнопку / колонку / поле, сдвинуть элемент)
Мой скилл: ~8 000 – 12 000 токенов
Ваш скилл: ~35 000 – 45 000 токенов

Сценарий Б: Правка специфического свойства (шрифт, рамка, страница панели, порядок обхода)
Мой скилл: ~20 000 – 35 000 токенов
Ваш скилл: ~40 000 – 55 000 токенов

Сценарий В: Создание новой сложной формы с нуля (15–30 реквизитов, закладки, табличная часть)
Мой скилл: ~15 000 – 25 000 токенов
Ваш скилл: ~45 000 – 60 000 токенов

Мой скилл экономичнее в 3–4 раза
Еще у вас есть опасная ловушка — команда decode: если агент решит прочитать сгенерированный form.json (который в 3 раза тяжелее исходного form.frm), он потратит 150K–250K токенов на одну форму.
7. dreamadv 158 09.11.26 13:04 Сейчас в теме
(6) Когда-то считали количество тактов процессора ) и оптимизировали код для этого. В какой-то момент вся эта экономия станет незначительной. И мне важно качество UI получаемой формы на выходе без значительного и детального описания для агента что нужно сделать.
2. it@contlog.ru 15 06.11.26 19:51 Сейчас в теме
Ещё один сценарий, который у нас неожиданно зашёл — сборка форм для разовых внешних обработок. Когда нужно быстро накидать обработку с парой полей отбора, флажком и кнопкой «Выполнить», агент просто генерит готовую обычную форму. Вообще не приходится открывать Конфигуратор и двигать поля мышкой.
GarriSoft; +1 – Ответить
Для отправки сообщения требуется регистрация/авторизация