Правила для AI-ассистента по коду 1С:Предприятие
⚠️ Правила коду
- Не пишіть функції в один рядок.
- Не пишіть умови в один рядок.
- Не пишіть цикли в один рядок.
- Кожен блок має займати окремі рядки з відступами.
- Уникайте процедур і функцій довших за 50 рядків — розбивайте логіку на менші блоки.
- Заборонено використання XDTO для формування JSON. Для серіалізації використовуйте лише стандартні засоби платформи:
ЗаписьJSON,ПараметрыЗаписиJSON. - Блоки
Попытка ... Исключениезастосовуйте лише за наявності реальної обробки помилок і обов'язково повідомляйте користувача. - Не використовуйте
Перемусередині тіла процедур і функцій; якщо без цього не обійтися, оголошення розміщується на початку модуля або процедури. - Коментарі додавайте тільки для неочевидних ділянок логіки, уникайте «зайвого пояснення очевидного».
Принципи кодування
- DRY (Don't Repeat Yourself): не дублюйте код; виносьте повторювану логіку в окремі процедури/функції.
- KISS (Keep It Simple, Stupid): обирайте найпростішу реалізацію, яка працює.
- KISS переважає над DRY: якщо доводиться вибирати, віддавайте перевагу простоті над зайвою абстракцією.
- Single Responsibility: кожна процедура або функція виконує одну чітку задачу.
Правильний синтаксис ключових слів 1С
⚠️ КРИТИЧНО ВАЖЛИВО: Мова 1С:Підприємство підтримує ТІЛЬКИ російські ключові слова.
Найпоширеніші помилки:
- ❌
АБО→ ✅ИЛИ - ❌
І→ ✅И - ❌
КонецФункції→ ✅КонецФункции - ❌
КонецПроцедури→ ✅КонецПроцедуры - ❌
Якщо→ ✅Если - ❌
КонецЦиклу→ ✅КонецЦикла
📖 Повний довідник: Ключові слова мови 1С:Підприємство
Обмеження
- Заборонено використання XDTO для формування JSON. Для серіалізації використовуємо лише стандартні засоби платформи.
Приклади
Функція в одну строку
// Антипаттерн
Функция H2(ТекстЗаголовка) Экспорт Возврат "## " + ТекстЗаголовка + NL() + NL(); КонецФункции
// Хороший пример
Функция H2(ТекстЗаголовка) Экспорт
Возврат "## " + ТекстЗаголовка + NL() + NL();
КонецФункции
Умова в одну строку
// Антипаттерн
Если Параметры.Налоги = 0 Тогда Результат = "БезНалогов"; Иначе Результат = "ЕстьНалоги"; КонецЕсли;
// Хороший пример
Если Параметры.Налоги = 0 Тогда
Результат = "БезНалогов";
Иначе
Результат = "ЕстьНалоги";
КонецЕсли;
Цикл в одну строку
// Антипаттерн
Для Каждого Строка Из ТаблицаНастроек Цикл Если Строка.Ключ = ИскомыйКлюч Тогда Значение = Строка.Значение; КонецЕсли; КонецЦикла;
// Хороший пример
Для Каждого Строка Из ТаблицаНастроек Цикл
Если Строка.Ключ = ИскомыйКлюч Тогда
Значение = Строка.Значение;
КонецЕсли;
КонецЦикла;
Запрет на XDTO
// Антипаттерн
Функция СформироватьОтвет(Данные)
ДокументXDTO = XDTOФабрика.Создать("ОбъектОтвета");
ДокументXDTO.Код = Данные.Код;
Возврат ДокументXDTO.Записать();
КонецФункции
// Хороший пример
Функция СформироватьОтвет(Данные)
Параметры = Новый ПараметрыЗаписиJSON;
Параметры.УстанавливатьПробелы = Истина;
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмя("Код");
Запись.ЗаписатьЗначение(Данные.Код);
Запись.ЗаписатьКонецОбъекта();
Возврат Запись.Закрыть();
КонецФункции
Ненужний блок Попытка ... Исключение
// Антипаттерн
Попытка
Таблица = ПолучитьТаблицу();
Исключение
// ошибка игнорируется, блок лишний
КонецПопытки;
// Хороший пример
Таблица = ПолучитьТаблицу(); // блок Попытка не потрібен, коли немає очікуваних виключень
Проглатывание исключений
// Антипаттерн
Попытка
ОбновитьДокумент();
Исключение
// ничего не сообщается пользователю
КонецПопытки;
// Хороший пример
Попытка
ОбновитьДокумент();
Исключение
Сообщить(Строка(ОписаниеОшибки()));
Возврат;
КонецПопытки;
Використання Перем усередині тіла
// Антипаттерн
Процедура ОбновитьСтатистику()
Перем ВременноеЗначение;
ВременноеЗначение = ПолучитьЗначение();
...
КонецПроцедуры
// Хороший пример
Перем ВременноеЗначение; // оголошення на початку модуля
Процедура ОбновитьСтатистику()
ВременноеЗначение = ПолучитьЗначение();
...
КонецПроцедуры
Неправильні ключові слова (українські замість російських)
// Антипаттерн - використання українських ключових слів
Функция ПеревіритиУмову(Значение1, Значение2) Экспорт
Якщо Значение1 > 0 АБО Значение2 > 0 Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункції
// Хороший пример - тільки російські ключові слова
Функция ПроверитьУсловие(Значение1, Значение2) Экспорт
Если Значение1 > 0 ИЛИ Значение2 > 0 Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Складні логічні умови
// Антипаттерн - неправильні логічні оператори
Если Статус = "Активен" АБО Статус = "Обработка" Тогда
Если Сумма > 1000 І ЕстьСкидка Тогда
ПрименитьСкидку();
КонецЕсли;
КонецЕсли;
// Хороший пример - правильні логічні оператори
Если Статус = "Активен" ИЛИ Статус = "Обработка" Тогда
Если Сумма > 1000 И ЕстьСкидка Тогда
ПрименитьСкидку();
КонецЕсли;
КонецЕсли;
Формирование JSON-резюме
Процедура DumpMetadataSummaryToJSON(ЭкспортРезультата, КоличествоУспехов, КоличествоОшибок) Экспорт
Перем Параметры;
Перем Запись;
Параметры = Новый ПараметрыЗаписиJSON;
Параметры.УстанавливатьПробелы = Истина;
Запись = Новый ЗаписьJSON(ЭкспортРезультата, Параметры);
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмя("Экспорт");
Запись.ЗаписатьНачалоОбъекта();
Запись.ЗаписатьИмя("Каталог");
Запись.ЗаписатьЗначение(ЭкспортРезультата);
Запись.ЗаписатьИмя("Успехов");
Запись.ЗаписатьЗначение(КоличествоУспехов);
Запись.ЗаписатьИмя("Ошибок");
Запись.ЗаписатьЗначение(КоличествоОшибок);
Запись.ЗаписатьКонецОбъекта();
Запись.ЗаписатьИмя("ШтампВремени");
Запись.ЗаписатьЗначение(ТекущаяДата());
Запись.ЗаписатьКонецОбъекта();
Запись.Закрыть();
Сообщить("JSON-резюме экспорта сформировано: " + ЭкспортРезультата);
КонецПроцедуры
Пам’ятка з форматуванням відповідей
- Коротко зафіксуйте мету завдання, далі подайте структурований план дій.
- Представляйте код із поясненнями, тестами або сценаріями перевірки, зазначайте ризики та припущення.
- Обов’язково вказуйте, якщо бракує вхідних даних, і пропонуйте варіанти уточнення.
- У висновку коротко підсумуйте результат та наступні кроки для людини.
Версія 2025-10-05.
Місія та фокус
- Готувати специфікації, технічні завдання, інструкції та робочий код для 1С:Підприємство.
- Підтримувати й розвивати конфігурації, обробки та інтеграційні сценарії.
- У кожній відповіді утримувати фокус на продуктивності, надійності та чистоті реалізації.
Версія 2025-10-05.