Разработка под 1С 7.7 (1c77-dev)

SkillAI & models

Development and customization for 1C:Enterprise 7.7 (also known as "77", "семерка"): editing and creating code modules (.1s, CP1251 encoding), forms (.frm), configuration objects (1Cv7.MD), external data processors and reports (.ert), plus decompiling and assembling .ert / 1Cv7.MD via GComp. ALWAYS

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Разработка под 1С 7.7 (1c77-dev) skill

What this skill tells your AI

The instructions your AI receives, as published by desko77/claude-code-skills-1c in skills/1c77-dev/SKILL.md and read by ahel’s review.

Доработка кода, форм, метаданных и внешних обработок 1С:Предприятия 7.7. Версия 7.7 кардинально отличается от 8.x, и привычные для 8.x приемы тут ломаются. Этот скилл собирает рабочие приемы, особенности синтаксиса и готовые скрипты.

Чем 7.7 отличается (читать обязательно)

  • Нет EDT и .bsl/.mdo. Конфигурация хранится в бинарном 1Cv7.MD, внешние обработки - в бинарном .ert. Редактируемые исходники получают разбором через GComp (текстовые .1s, .frm, .mdp, .mxl).
  • Кодировка везде CP1251. Файлы .1s/.frm/.mdp - не UTF-8. Инструмент Grep (ищет по UTF-8-байтам) кириллицу в них не находит. Read показывает кракозябры. Читать/править - только через Python с encoding='cp1251' (см. scripts/cp1251_io.py) либо через MCP-сервер 1c77-metadata.
  • Синтаксис строже и беднее 8.x. Нет типа Булево; число в условии Если не приводится к логическому; многих функций 8.x (ЗначениеЗаполнено, штатной ПустаяСтрока как Булево) нет или ведут себя иначе. Это источник большинства ошибок компиляции. Подробно: references/syntax-gotchas-77.md.

Карта навигации

Читай нужный файл по ситуации, не загружай все сразу:

КогдаФайл
Пишешь/правишь BSL-код 7.7, ловишь ошибку компиляции "Выражение должно иметь логический тип" и т.п.references/syntax-gotchas-77.md
Нужно понять структуру .1s / .frm / .mdp / .mxl / .ert, что внутри обработкиreferences/file-formats-77.md
Надо разобрать .ert в исходники или собрать обратноreferences/gcomp.md
Анализ метаданных конфигурации, поиск реквизита, проверка запроса 7.7, окружениеreferences/mcp-and-tools.md

Скрипты в scripts/ (запуск с --help):

  • cp1251_io.py - чтение/запись/grep по .1s в CP1251 (когда обычный Grep слеп).
  • analyze_module.py - инвентаризация модуля: СоздатьОбъект, типы метаданных, глобальные гл*-функции, обращения к реквизитам.
  • patch_by_marker.py - идемпотентная вставка блока кода по маркеру-якорю (для повторяемых правок).
  • build_ert.py / unpack_ert.py - обертки GComp (сборка/разбор .ert) через PowerShell.

Базовый workflow доработки

  1. Понять объект. Метаданные и код существующих объектов конфигурации смотри через MCP 1c77-metadata (get_object, get_module, search_field, validate_query) - это быстрее и точнее ручного парсинга. Для внешней обработки .ert сначала разбери ее GComp (unpack_ert.py), затем работай с .1s/.frm. Детали: references/mcp-and-tools.md, references/gcomp.md.

  2. Править код только через CP1251. Используй scripts/cp1251_io.py или Python напрямую (Path.read_text(encoding='cp1251') / write_text(..., encoding='cp1251', newline='')). Никогда не правь .1s инструментом, который пишет UTF-8 - сломаешь кодировку всего файла. Для повторяемых вставок (одинаковый блок в N мест) используй patch_by_marker.py - он идемпотентен.

  3. Сверить синтаксис 7.7 ДО сборки. Прогони мысленно (или поиском) по чек-листу особенностей из references/syntax-gotchas-77.md. Самая частая ошибка: голый вызов функции или число в условии Если/ИначеЕсли без операции сравнения. Проверка запросов - validate_query MCP 1c77-metadata.

  4. Собрать .ert и проверить. Сборка - только рабочим GComp через PowerShell (build_ert.py). Перед сборкой - бэкап .ert. После - убедиться, что timestamp/размер изменились (GComp молча не пересобирает при битых аргументах). Финальная компиляция BSL и проверка - при открытии в самой 7.7.

Самопроверка перед сборкой .ert

Чек-лист прогонять по СВОЕМУ сгенерированному коду ДО вызова gcomp:

  • В условиях Если/Пока нет голых вызовов функций или чисел - каждое сравнение явное и в скобках: (Ф(х)=1) И (у=2).
  • ПустаяСтрока/ПустоеЗначение сравнивать с 1/0.
  • Каждая вызываемая процедура/функция объявлена ВЫШЕ точки вызова или в глобальном модуле - проверить греп-поиском определения.
  • Симв(), не Символ(); тернарник ?(усл,а,б) с явными сравнениями.
  • Нет обращений к несуществующим у 7.7 методам 8.x.

Детали и полный список - references/syntax-gotchas-77.md.

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

Критические правила (ключевые отличия синтаксиса, детали в references)

  • Логический тип в Если. Если ПустаяСтрока(Х) Тогда -> ошибка "Выражение должно иметь логический тип". Нужно сравнение: Если ПустаяСтрока(Х) = 1 Тогда, а НЕ ПустаяСтрока(Х) -> ПустаяСтрока(Х) = 0. То же для тернарника: ?(ПустоеЗначение(Х) = 1, "", ...). Полный список - references/syntax-gotchas-77.md.
  • CP1251. Grep по кириллице в .1s молчит (UTF-8 vs CP1251). Не делай вывод "совпадений нет" по Grep - ищи через cp1251_io.py grep или MCP.
  • GComp запускать только из PowerShell. Из Bash кириллица в путях бьется, gcomp молча выходит с ложным успехом и ничего не собирает. Рабочий exe - в C:\Program Files\GComp\Release\GComp.dll рядом), "голый" exe из каталогов проекта не запускается. Детали - references/gcomp.md.
  • Минимальный diff при багфиксе. Правь только код, связанный с багом. Не переформатируй CP1251-файл целиком - рискуешь кодировкой и шумным diff.

Проверка качества

После правки BSL 7.7 - прогон через MCP 1c-naparnik (ask_1c_ai) для оценки и validate_query (1c77-metadata) для запросов. EDT-валидация и bsl-platform-help к 7.7 неприменимы (это 8.x).

Signals

GitHub stars
61
Forks
14
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-1c77-dev
Source
github.com/desko77/claude-code-skills-1c