Разработка и доработка под 1С:Предприятие 7.7 (она же "77", "семерка"): правка и создание модулей кода (.1s, кодировка CP1251), форм (.frm), объектов конфигурации (1Cv7.MD), внешних обработок и отчетов (.ert), плюс разбор и сборка .ert / 1Cv7.MD через GComp. Используй ВСЕГДА, когда задача касается 1С 7.7: файлы .1s / .ert / .frm / .mdp / 1Cv7.MD; глобальный модуль, модули проведения и формы 7.7; синтаксис 7.7 (нет типа Булево; ПустаяСтрока; СоздатьОбъект; тернарник ?(); ошибка компиляции "Выр...
Scanned 9/2/2026
Install to Claude Code
npx -y skills add Desko77/claude-code-skills-1c --skill 1c77-dev --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of 1c77 Dev?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/desko77-1c77-dev)More formats (shields.io, HTML) on the badges page.
---
name: 1c77-dev
description: >-
Разработка и доработка под 1С:Предприятие 7.7 (она же "77", "семерка"): правка и создание модулей
кода (.1s, кодировка CP1251), форм (.frm), объектов конфигурации (1Cv7.MD), внешних обработок и
отчетов (.ert), плюс разбор и сборка .ert / 1Cv7.MD через GComp. Используй ВСЕГДА, когда задача
касается 1С 7.7: файлы .1s / .ert / .frm / .mdp / 1Cv7.MD; глобальный модуль, модули проведения и
формы 7.7; синтаксис 7.7 (нет типа Булево; ПустаяСтрока; СоздатьОбъект; тернарник ?(); ошибка
компиляции "Выражение должно иметь логический тип"); обход справочников и документов 7.7, выгрузка
через ТаблицаЗначений или FileSystemObject; сборка или разбор внешних обработок 7.7 (gcomp);
миграция данных с 7.7; поиск и правка кириллицы в .1s (обычный grep ее не находит из-за CP1251).
Применяй даже без явного "7.7", если речь о старой конфигурации с файлами .1s/.ert/.md или о
ТиС / Торговле / Бухгалтерии 7.7 / УПП 7.7. НЕ использовать для 1С 8.x: EDT, .bsl, .mdo, .epf, .erf,
.cf, .cfe, управляемые формы, расширения конфигурации (CFE), СКД, Конвертация данных (КД) 2.x,
конфигурации УНФ / ERP / ЗУП / УТ / БП 3.x - для них есть отдельные 1c-* скиллы. Не применять и к
общим задачам с кодировкой CP1251 вне 1С 7.7 (например конвертация csv-файлов).
---
# Разработка под 1С 7.7 (1c77-dev)
Доработка кода, форм, метаданных и внешних обработок 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).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!