Оглавление

Правила для 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.


Оглавление Платформа 8.3.13.1809