Cursor IDE для 1С. Кодревью и рефакторинг с помощью AI

21.04.25

Разработка - Рефакторинг и качество кода

Цель статьи: кратко показать инструмент и возможности Cursor IDE.

Основные возможности Cursor IDE

  • Главное - это AI чат-помощник с поддержкой русского языка (с помощью него можно задавать вопросы и вносить правки в код)
  • Автодополнение и подсказки 1С
  • Автоматический рефакторинг (может внести изменения в код и обосновать, почему так сделал, переименование переменных и т.п.)
  • Проверка качества кода 1С (поиск узких мест, ошибки и т.п.).

 

Подготовка 1С

  1. Выгружаем код конфигурации 1С в файлы в папку (Конфигурация - Выгрузить конфигурацию в файлы)

 

Подготовка Cursor IDE

  1. Скачиваем и устанавливаем Cursor IDE с сайта (без VPN и регистрации 🙃)
  2. Для удобства навигации по метаданным 1С ставим плагин
  3. Для подсветки синтаксиса 1С как вариант ставим плагин
  4. Опционально можно поставить плагин для выбора темы оформления

 

Работа в Cursor IDE

Запускаем и выбираем папку с файлами конфигурации

 

 

Работа с AI чат - помощником

  1. Открываем нужный файл с кодом
  2. Пишем текстом в AI чате, что хотим сделать с кодом/проверить 

 

Пример 1. Рефакторинг к стандартам 1С

Псевдо-код расчета вознаграждения менеджерам

 

Промт-запросы в AI чате:

  1. Добавь комментарии к коду
  2. Сделай рефакторинг, учти стандарты от 1С и алгоритмическую сложность

 

Код до рефакторинга

Перем ТаблицаПродаж;  // Глобальная переменная (риск утечки памяти)

// Рассчитывает вознаграждение менеджеров (плохой пример)
Функция РассчитатьВознаграждения_Плохо(Месяц, Год)
    // Каждый раз загружает все продажи (медленно)
    ТаблицаПродаж = ПолучитьПродажиЗаПериод(Месяц, Год);  // Нет кеширования
    
    // Создаём таблицу для результатов (лишний расход памяти)
    ТаблицаРезультатов = Новый ТаблицаЗначений;
    ТаблицаРезультатов.Колонки.Добавить("Менеджер");
    ТаблицаРезультатов.Колонки.Добавить("Вознаграждение");
    
    // Проходим по всем менеджерам (O(n))
    Для каждого Менеджер Из Справочники.Менеджеры.Выбрать() Цикл
        СуммаПродаж = 0;
        
        // Вложенный цикл по продажам (O(n²)) – медленно!
        Для каждого СтрокаПродажи Из ТаблицаПродаж Цикл
            Если СтрокаПродажи.Менеджер = Менеджер.Ссылка Тогда
                СуммаПродаж = СуммаПродаж + СтрокаПродажи.Сумма;
            КонецЕсли;
        КонецЦикла;
        
        // Жёстко закодированные проценты (негибко)
        Если СуммаПродаж > 1000000 Тогда
            Процент = 0.1;
        ИначеЕсли СуммаПродаж > 500000 Тогда
            Процент = 0.07;
        Иначе
            Процент = 0.05;
        КонецЕсли;
        
        Вознаграждение = СуммаПродаж * Процент;
        
        // Добавляем результат
        НоваяСтрока = ТаблицаРезультатов.Добавить();
        НоваяСтрока.Менеджер = Менеджер.Наименование;
        НоваяСтрока.Вознаграждение = Вознаграждение;
    КонецЦикла;
    
    Возврат ТаблицаРезультатов;   
КонецФункции

 

Код после рефакторинга

// Быстрый расчёт с группировкой и кешированием
Функция РассчитатьВознаграждения_Оптимально(Месяц, Год)
    // Кешируем запрос, если данные уже загружались
    СтатическиеДанные = Неопределено;
    Если СтатическиеДанные = Неопределено Тогда
        СтатическиеДанные = ПолучитьПродажиЗаПериод(Месяц, Год);
    КонецЕсли;
    
    // Группируем продажи по менеджерам (O(n))
    ПродажиПоМенеджерам = Новый Соответствие;
    Для каждого СтрокаПродажи Из СтатическиеДанные Цикл
        Ключ = СтрокаПродажи.Менеджер;
        Если Не ПродажиПоМенеджерам.Получить(Ключ) Тогда
            ПродажиПоМенеджерам.Вставить(Ключ, 0);
        КонецЕсли;
        ПродажиПоМенеджерам[Ключ] = ПродажиПоМенеджерам[Ключ] + СтрокаПродажи.Сумма;
    КонецЦикла;
    
    // Получаем настройки процентов (гибко)
    Настройки = ПолучитьНастройкиВознаграждения();  // Например, из справочника
    
    // Формируем результаты
    ТаблицаРезультатов = Новый ТаблицаЗначений;
    ТаблицаРезультатов.Колонки.Добавить("Менеджер");
    ТаблицаРезультатов.Колонки.Добавить("Вознаграждение");
    
    Для каждого Ключ, Сумма Из ПродажиПоМенеджерам Цикл
        Менеджер = Справочники.Менеджеры.НайтиПоСсылке(Ключ);
        Процент = РассчитатьПроцент(Сумма, Настройки);  // Логика вынесена отдельно
        Вознаграждение = Сумма * Процент;
        
        НоваяСтрока = ТаблицаРезультатов.Добавить();
        НоваяСтрока.Менеджер = Менеджер.Наименование;
        НоваяСтрока.Вознаграждение = Вознаграждение;
    КонецЦикла;
    
    Возврат ТаблицаРезультатов;
КонецФункции

// Определяет процент по настройкам
Функция РассчитатьПроцент(Сумма, Настройки)
    Для каждого СтрокаНастройки Из Настройки Цикл
        Если Сумма >= СтрокаНастройки.Минимум Тогда
            Возврат СтрокаНастройки.Процент;
        КонецЕсли;
    КонецЦикла;
    Возврат 0.05;  // Значение по умолчанию
КонецФункции

 

Пример 2. Более сложный пример рефакторинга логики

Псевдо-код записи нового пользователя ИБ

 

Промт-запросы в AI чате:

  1. Добавь комментарии к коду
  2. Сделай рефакторинг

 

Код до рефакторинга 

Процедура ПередЗаписью(Отказ)
    // Включаем привилегированный режим для операций с пользователями ИБ
    УстановитьПривилегированныйРежим(Истина);  
    
    // Проверяем, является ли текущий пользователь или редактируемый объект администратором
    ТекущийПользовательАдминистратор = ПараметрыСеанса.ТекущийПользователь = Справочники.Пользователи.Администратор; 
    ТекущийОбъектАдминистратор = Ссылка = Справочники.Пользователи.Администратор;
        
    // Проверяем, что для пользователя выбрана хотя бы одна роль
    РезультатПоиска = Роли.НайтиСтроки(Новый Структура("Выбрано", Истина));    
    Если РезультатПоиска.Количество() = 0 Тогда 
        Отказ = Истина;
        Возврат;
    КонецЕсли; 

    // Для нового пользователя
    Если ЭтоНовый() Тогда
        // Проверяем, не существует ли уже пользователь с таким именем
        ТекущийПользователь = ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Наименование));  
        Если ТекущийПользователь <> Неопределено Тогда
            Отказ = Истина;     
            УстановитьПривилегированныйРежим(Ложь);
            Возврат;  
        КонецЕсли;
        
        // Создаем нового пользователя ИБ
        ТекущийИдентификатор = ЗаписатьПользователяИБ(); 
        Если ТекущийИдентификатор = Неопределено Тогда
            Отказ = Истина;      
            УстановитьПривилегированныйРежим(Ложь);
            Возврат;  
        КонецЕсли; 
        
        // Сохраняем идентификатор созданного пользователя
        ИдентификаторПользователяИБ = ТекущийИдентификатор;                                       
    // Для существующего пользователя    
    Иначе    
        // Проверяем, существует ли пользователь ИБ
        ТекущийПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ);  
        Если ТекущийПользователь <> Неопределено Тогда
            Отказ = Истина;     
            УстановитьПривилегированныйРежим(Ложь);
            Возврат;  
        КонецЕсли;
        
        // Обновляем данные пользователя ИБ
        ТекущийИдентификатор = ЗаписатьПользователяИБ(); 
        Если ТекущийИдентификатор = Неопределено Тогда
            Отказ = Истина;      
            УстановитьПривилегированныйРежим(Ложь);
            Возврат;  
        КонецЕсли; 
        
        // Обновляем идентификатор пользователя
        ИдентификаторПользователяИБ = ТекущийИдентификатор; 
                
    КонецЕсли;   
    
    // Очищаем табличную часть с ролями
    Роли.Очистить();
    
    // Отключаем привилегированный режим
    УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

// Создает или обновляет пользователя информационной базы
//
// Возвращает:
//   УникальныйИдентификатор - идентификатор созданного пользователя
//   Неопределено - в случае ошибки
//
Функция ЗаписатьПользователяИБ()  
    Попытка
        // Создаем нового пользователя ИБ
        ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
        
        // Заполняем основные свойства
        ПользовательИБ.Имя = СокрЛП(Наименование);
        ПользовательИБ.ПолноеИмя = СокрЛП(Наименование);
        ПользовательИБ.АутентификацияОС = Ложь;
        ПользовательИБ.АутентификацияOpenID = Ложь;
        ПользовательИБ.АутентификацияСтандартная = Истина;
        ПользовательИБ.ЗапрещеноИзменятьПароль = Ложь;
        ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
        ПользовательИБ.Пароль = "";

        // Добавляем выбранные роли
        Для Каждого Роль Из Роли Цикл 
            // Пропускаем невыбранные роли
            Если Роль.Выбрано = Ложь Тогда
                Продолжить;
            КонецЕсли;   
            
            // Ищем метаданные роли
            РезультатПоиска = Метаданные.Роли.Найти(Роль.Имя);  
            Если РезультатПоиска = Неопределено Тогда
                Продолжить;
            КонецЕсли; 
            
            // Добавляем роль пользователю
            ПользовательИБ.Роли.Добавить(РезультатПоиска);
        КонецЦикла;     
        
        // Сохраняем пользователя
        ПользовательИБ.Записать(); 
        
        // Возвращаем идентификатор созданного пользователя
        Возврат ПользовательИБ.УникальныйИдентификатор;    
    Исключение   
        // В случае ошибки возвращаем Неопределено
        Возврат Неопределено;    
    КонецПопытки;        
КонецФункции;

 

Код после рефакторинга

Процедура ПередЗаписью(Отказ)
    // Включаем привилегированный режим для выполнения административных операций
    УстановитьПривилегированныйРежим(Истина);  
    
    // 1. Проверка наличия выбранных ролей
    Если НЕ ПроверитьРоли(Отказ) Тогда
        Возврат;
    КонецЕсли;

    // 2. Проверка и создание/обновление пользователя ИБ
    Если НЕ ПроверитьИСоздатьПользователя(Отказ) Тогда
        Возврат;
    КонецЕсли;   
    
    // Очищаем табличную часть с ролями
    Роли.Очистить();
    
    // Отключаем привилегированный режим
    УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

// Проверяет, что для пользователя выбрана хотя бы одна роль
//
// Параметры:
//   Отказ - Флаг отказа в записи (выходной параметр)
//
// Возвращает:
//   Булево - Истина, если проверка пройдена успешно
//
Функция ПроверитьРоли(Отказ) Экспорт
    РезультатПоиска = Роли.НайтиСтроки(Новый Структура("Выбрано", Истина));    
    Если РезультатПоиска.Количество() = 0 Тогда 
        Отказ = Истина;
        Возврат Ложь;
    КонецЕсли;
    
    Возврат Истина;
КонецФункции

// Проверяет и создает/обновляет пользователя информационной базы
//
// Параметры:
//   Отказ - Флаг отказа в записи (выходной параметр)
//
// Возвращает:
//   Булево - Истина, если операция выполнена успешно
//
Функция ПроверитьИСоздатьПользователя(Отказ) Экспорт
    // Получаем текущего пользователя (если существует)
    ТекущийПользователь = ПолучитьТекущегоПользователя();
    Если ТекущийПользователь <> Неопределено Тогда
        Отказ = Истина;     
        УстановитьПривилегированныйРежим(Ложь);
        Возврат Ложь;  
    КонецЕсли;
    
    // Создаем/обновляем пользователя ИБ
    ТекущийИдентификатор = ЗаписатьПользователяИБ(); 
    Если ТекущийИдентификатор = Неопределено Тогда
        Отказ = Истина;      
        УстановитьПривилегированныйРежим(Ложь);
        Возврат Ложь;  
    КонецЕсли; 
    
    // Сохраняем идентификатор пользователя ИБ
    ИдентификаторПользователяИБ = ТекущийИдентификатор;
    Возврат Истина;
КонецФункции

// Получает пользователя информационной базы по данным справочника
//
// Возвращает:
//   СправочникСсылка - Найденный пользователь или Неопределено
//
Функция ПолучитьТекущегоПользователя() Экспорт
    Если ЭтоНовый() Тогда
        // Для нового пользователя - поиск по имени
        Возврат ПользователиИнформационнойБазы.НайтиПоИмени(СокрЛП(Наименование));
    Иначе
        // Для существующего - поиск по уникальному идентификатору
        Возврат ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(ИдентификаторПользователяИБ);
    КонецЕсли;
КонецФункции

// Создает или обновляет пользователя информационной базы
//
// Возвращает:
//   УникальныйИдентификатор - Идентификатор созданного пользователя
//   Неопределено - В случае ошибки
//
Функция ЗаписатьПользователяИБ() Экспорт
    Попытка
        // 1. Создание базового объекта пользователя
        ПользовательИБ = СоздатьПользователяИБ();
        
        // 2. Назначение ролей пользователю
        НазначитьРолиПользователю(ПользовательИБ);
        
        // 3. Сохранение пользователя
        ПользовательИБ.Записать(); 
        
        Возврат ПользовательИБ.УникальныйИдентификатор;    
    Исключение   
        // В случае ошибки возвращаем Неопределено
        Возврат Неопределено;    
    КонецПопытки;        
КонецФункции

// Создает объект пользователя информационной базы с базовыми настройками
//
// Возвращает:
//   ПользовательИнформационнойБазы - Созданный объект пользователя
//
Функция СоздатьПользователяИБ() Экспорт
    ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
    
    // Настройка основных параметров пользователя
    ПользовательИБ.Имя = СокрЛП(Наименование);
    ПользовательИБ.ПолноеИмя = СокрЛП(Наименование);
    ПользовательИБ.АутентификацияОС = Ложь;
    ПользовательИБ.АутентификацияOpenID = Ложь;
    ПользовательИБ.АутентификацияСтандартная = Истина;
    ПользовательИБ.ЗапрещеноИзменятьПароль = Ложь;
    ПользовательИБ.ПоказыватьВСпискеВыбора = Истина;
    ПользовательИБ.Пароль = "";
    
    Возврат ПользовательИБ;
КонецФункции

// Назначает роли пользователю информационной базы
//
// Параметры:
//   ПользовательИБ - Объект пользователя информационной базы
//
Процедура НазначитьРолиПользователю(ПользовательИБ) Экспорт
    Для Каждого Роль Из Роли Цикл 
        // Пропускаем невыбранные роли
        Если Роль.Выбрано = Ложь Тогда
            Продолжить;
        КонецЕсли;   
        
        // Ищем метаданные роли
        РезультатПоиска = Метаданные.Роли.Найти(Роль.Имя);  
        Если РезультатПоиска = Неопределено Тогда
            Продолжить;
        КонецЕсли; 
        
        // Добавляем роль пользователю
        ПользовательИБ.Роли.Добавить(РезультатПоиска);
    КонецЦикла;
КонецПроцедуры

 

Итого по результатам

  • бегло узнали возможности Cursor IDE
  • взглянули на свой код со стороны

 

Идеи для автоматизации 

  • Использовать Cursor IDE для написания скриптов автоматизации тестирования, CI/CD
  • Использование для анализа технологического журнала и других логов
  • Поиск циклических зависимостей и т.п.

 

Выводы

  • Cursor IDE не заменит 1С:Конфигуратор
  • Поможет с ревью кода и автоматизацией рутинных операций

 

Спасибо за внимание!

Лайк, подписка, комментарий 😎

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

AI автоматизация кодревью оптимизация разработка скрипты

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

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

См. также

Рефакторинг и качество кода Обновление 1С Программист 1С 8.3 Бесплатно (free)

Обновление ролей в расширении 1С отличается от аналогичного процесса в основной конфигурации. Ситуация осложняется, когда доработки вносятся не в «обычное», а в поставляемое расширение.

26.06.2026    547    1c-izh    3    

5

Рефакторинг и качество кода Программист Россия Бесплатно (free)

Code review в 1С часто превращается в спор вкусов: “мне не нравится”, “переделай”, “так не делают”. В статье разбираю другой подход: проверять не разработчика, а риск для системы. Показываю, как формулировать замечания без токсичности, где заканчивается личное предпочтение и начинается реальная проблема, почему ревью должно развивать разработчика, а не только исправлять код

24.06.2026    616    NikolayMaerov    4    

5

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Показываем, как встроить ИИ-помощника в code review 1С без Git, SonarQube и EDT – только с Конфигуратором, RAG-контекстом и набором MCP-инструментов. Разбираем архитектуру решения на Open Web UI и OpenRouter, методику сравнения моделей по Precision, Recall, BonusRate и PenaltyRate, а также объясняем, почему контекст влияет на качество ревью сильнее, чем выбор самой модели. На реальных примерах показываем, какие ошибки ИИ находит хорошо, где все еще нужен архитектор и почему на старте пилота время ревью может не сократиться, а вырасти. В финале делимся метриками внедрения и выводами для команд, которые хотят повторить такой подход у себя.

17.06.2026    829    NVyunova    1    

3

Нейросети Рефакторинг и качество кода Программист Бесплатно (free)

Кажется, что code-review с помощью искусственного интеллекта устроено просто: достаточно отправить код в LLM, задать промт и получить список замечаний. На практике такой подход быстро упирается в недетерминированность результата, неверную оценку критичности ошибок в 1С-коде и рекомендации, которые сложно отличить от полезных замечаний. Описываем гибридный подход к автокод-ревью: статический анализатор работает вместе с LLM, а база знаний из стандартов 1С превращается в набор машиночитаемых норм. Такая архитектура помогает снизить количество галлюцинаций, точнее определять критичность нарушений и постепенно развивать качество ревью через итеративное пополнение правил.

09.06.2026    1704    Repich    5    

9

Рефакторинг и качество кода Программист Бесплатно (free)

Чем активнее развивается старая система, тем страшнее бывает её менять. Снаружи всё выглядит живым: релизы выходят, бизнес получает новые функции, пользователи работают. Но внутри уже появляются фразы, после которых разговор заканчивается: «это лучше не трогать», «там когда-то всё упало», «давайте сделаем рядом». И в какой-то момент становится непонятно: система ещё развивается — или команда уже просто учится обходить опасные места.

04.06.2026    923    IgorVasilyev    29    

4

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

MetaVision for 1C PRO — профессиональная версия статического анализатора и визуализатора кода. Загружает выгрузки конфигураций, расширения и внешние файлы, за секунды строит графы функций, находит уязвимости безопасности и подсвечивает проблемы производительности. В арсенале: визуализация логики в виде графов условий, циклов, транзакций и вызовов, статический аудит безопасности с поиском RCE, SSRF, COM-инъекций и паролей в коде, выявление запросов в циклах и вложенных блокировок, полнотекстовый поиск по всем модулям, встроенный редактор с конвертером запросов и автоформатированием, а также честная статистика по объектам и функциям. Главное новшество PRO — до пяти конфигураций одновременно с мгновенным переключением, наложение до пяти расширений как в конфигураторе, анализ внешних файлов в единой связке с основной конфигурацией и пять тем оформления. Инструмент для тех, кто ведёт несколько проектов параллельно и хочет видеть полную картину в одном окне — быстро, наглядно и безопасно.

7 стартмани

19.05.2026    3271    35    KHoroshulinAV    7    

13

Запросы Рефакторинг и качество кода Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Есть запросы, которые сразу вызывают подозрение: десятки соединений, множество временных таблиц, объединения, группировки и длинный список условий. Но чаще проблемы прячутся в другом месте — в запросах, которые выглядят вполне приемлемо. Пара обращений через точку, отбор после виртуальной таблицы, РАЗЛИЧНЫЕ «чтобы убрать дубли», большой список в параметре, реквизит регистратора через составной тип — и вот уже на тестовой базе все летает, а в рабочей базе отчет открывается минуту. Разберу такие случаи из практики: не синтаксические ошибки, а именно запросы, которые формально нормальные, но на больших данных начинают вести себя плохо.

04.05.2026    2324    YA_2060655612    11    

9

Рефакторинг и качество кода Программист Бесплатно (free)

Почему рефакторинг, призванный улучшать код, иногда приводит к сбоям, потерям времени и новым ошибкам? Показываем типичные ситуации, когда рефакторинг становится токсичным: работа с legacy-кодом, изменения перед релизом, рефакторинг про запас и без тестирования. Объясняем, как универсальные мегаметоды, преждевременные абстракции и отсутствие понимания бизнес-логики ухудшают систему. А также рассказываем, когда рефакторинг действительно нужен, и какие принципы помогают делать его безопасно и осознанно.

29.04.2026    1216    _apelsin4ik    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. amiralnar 9 22.04.25 08:36 Сейчас в теме
Можно свести статью к одному предложению: "Установим Cursor и чат AI будет нам что-то делать с нашим кодом."
Ни реальных сценариев, ни сравнения с разными моделями, ни капли совести у автора.
ArsenProg; Avosya21; foximale; SagittariusA; m.korkushko; DenisDV; gsnsergey; vvh74; Const1C; paybaseme; Itilive.ru; amoarok; itmind; KroVladS; bayselonarrend; kirillkr; +16 7 Ответить
2. dimzfresh 99 22.04.25 08:59 Сейчас в теме
(1) По поводу глубины обзора - нет и не планировалось.
Первым же предложением в статье написано, что это краткий обзор ⚠

Cursor IDE - может анализировать исходники в директории.
Другие AI чаты про другое.

В примерах «до» и «после» изменения происходили по текстовому запросу в чате.
В рамках псевдо кода результат с комментариями явно дает понять, что изменилось.

Мне нравится ваша цитата про то, что «AI будет что-то нам делать..»!
Подход верный, доверяй, но проверяй результат👍
foximale; 1cad_omsk; Olenevod; SirAlex; d4rkmesa; +5 Ответить
49. Xershi 1475 20.03.26 10:38 Сейчас в теме
(2) скачать без регистрации вышло, установить нет, я что-то делаю не так? Или за год политика курсора поменялась? Попросил еще "про" подписку, но это уже можно пропустить!
Вот тарифы платной подписки, старт от 20 зеленых, но если пропустить бесплатно.
Сделайте переход по ссылке через открытие нового окна, есть галочка в редакторе публикации в каждой ссылке!
Пытаюсь поставить плагины на мак, но пишет что вскода нету, а ИИ говорит что курсор это переработанный вскод. Кому верить и как поставить?
Второй плагин за год похоже был удален из доступа.
Прикрепленные файлы:
51. Xershi 1475 20.03.26 11:16 Сейчас в теме
(49) похоже начинаю вникать в то как это работает, на маркетплейсе куда вели плагины авторизовался через скайп, но это не помогло!
Тогда я начал иследовать интерфейс приложения, можно в верхнем левом углу на маке в приложении нажать на кнопку или горячая клавиша command+B (Команд+И), русскую клавиатуру не наклеивал, но пишу то вслепую по русски, поэтому дублирую. Там набрал 1С и все скачал без проблем теперь нужно в этом разобраться!
В целом понятно блокнот с подтасовкой метаданных для обучения ИИ.
Прикрепленные файлы:
3. wonderboy 710 22.04.25 09:43 Сейчас в теме
Результаты могут сильно отличаться в зависимости от выбранной модельки.

Если кому-то интересно подробнее о Cursor для 1С, с кейсами, можете посмотреть мои обзоры:
https://vk.com/video-219359576_456239021

https://vk.com/video-219359576_456239022

Вот еще на aider:

https://vk.com/video-219359576_456239019
LiebeMein; Teplotrassamen; almierm; MaiorovYury; ado163; user750992; Steffan; d4rkmesa; Prepod2003; AlexanderEkb; Krotov_Valery; Legin; klaus38; friskdb; +14 Ответить
4. dimzfresh 99 22.04.25 10:01 Сейчас в теме
5. NikitaIvanchenko 340 22.04.25 10:06 Сейчас в теме
Я просто оставлю это на всякий случай =)
https://github.com/yeongpin/cursor-free-vip
SagittariusA; leyburg; SergMuravev; user750992; artbear; user1811009; wonderboy; dimzfresh; +8 Ответить
52. Неопределено 111 21.04.26 07:44 Сейчас в теме
6. o.nikolaev 217 22.04.25 10:20 Сейчас в теме
Выглядит интересно.

Но для таких "рефакторингов" нужно обвешивать функциональность тестами, как минимум юнитами.

Т.е., чтобы "рефакторинг" не повлиял на результат.

Ха-ха, в этом случае задача разработчика станет - разработка тестов, а не программирование :) Что-то в котелке кипит, что-то АИ шебуршит - правильно? - катим в прод. Будущее уже наступило. Устаревших программистов (это я про себя, прежде всего) - на удобрения!
SirAlex; frkbvfnjh; zqzq; dimzfresh; +4 Ответить
13. zqzq 25 22.04.25 14:13 Сейчас в теме
(6) Сейчас уже и тесты тоже ИИ пишет. Разработчик превращается в тимлида Искуственных Интеллектов :)

Т.е. начальные программисты становятся менее востребованными, а опытные -- наоборот, так что всё нормально, кому-то нужно будет code review делать.

P.S. Навайбкодил сегодня алгоритм 1С с помощью о3-mini из https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=1
klaus38; d4rkmesa; +2 Ответить
7. Serg O. 324 22.04.25 11:02 Сейчас в теме
повсеместное использование ИИ
уже превращается в ИТ-юмор про ИИ

ручками надо уметь писать, а не на ИИ расчитывать
и так уже IDE (даже Конфигуратор) помогают
и помнят все функции/типы/переменные за нас
8. o.nikolaev 217 22.04.25 11:10 Сейчас в теме
(7) Мое мнение другое. ИИ сейчас только в самом начале. Идея изначально сильная - потому что она основана на языке, на работе с языком, по обнаружение таких свойств и особенностей языка - которые раньше невозможно было увидеть, "потрогать", понять. Мир разработки не будет прежним, он изменится. Пока не знаю как. Но уверен в том что не исчезнет человек, а у него появится еще более мощный инструмент, еще более мощный помощник. Это надо осваивать, этому надо учиться, надо привыкать.
SagittariusA; makfromkz; elena_klytchenko; klaus38; wonderboy; Serg O.; +6 Ответить
31. Ndochp 104 25.04.25 16:38 Сейчас в теме
(8) В 1998 я так думал про рациональную розу, Together и прочие визуальные фишки разработки. А теперь если только ER диаграмма ERP из СППР в кошмарном сне приснится.
32. o.nikolaev 217 27.04.25 08:45 Сейчас в теме
(31) В 1998-то и я так думал про Розу. Да и у всех, кратковременно, было такое воодушевление. Сейчас, конечно, смешно. С учетом печального опыта Розы ИИ-ху, полагаю, не считаю прям "заменой", написал "Помощник".
19. dreamadv 158 22.04.25 19:32 Сейчас в теме
(7) У вас есть машина ? А зачем ? Можно же на лошади ездить, топить дровами использовать масленые лампы для света ). Это все сопротивление прогрессу...
29. Serg O. 324 24.04.25 13:33 Сейчас в теме
(19) объясните это тем, кто на до сих пор на 7.7 сидит

я про то, что не всё и не всегда можно на ИИ переложить.
Как помощника использовать - возможно да,
но под жёстким контролем Человека.

Тут уже написали, что варианты, которые предлагает ИИ не совсем
или совсем не соответствуют тому, что ты хотел получить.

ИИ ещё в зачаточном состоянии, давно уже есть и были шаблоны кода
можно свои шаблоны делать и так же легко их использовать

Crtl + Q и Ctrl + Пробел очень помогают в работе, что-то подобное и надо от ИИ
но только по "нажатию" а не постоянно
30. dreamadv 158 25.04.25 02:30 Сейчас в теме
(29) У нас есть 7.7. у одного из клиентов и вы не поверите но claude 3.7 с ней прекрасно справляется если еще пихнуть примеров своих же исходников.
Вы как в той фразе "Не пробовал но осуждаю" курсор который тут в статье прежде чем вы нажмете ОК делает сравнение было стало и вы визуально видите что какие строки удалены какие добавлены. Можете частично принять изменение. Что-то типо сравнение конфигурации при обновленении.
27. s22 23 24.04.25 13:03 Сейчас в теме
(7) а чтосто последние годы вы пишете ручками?
я например ручку держать разучился
28. Serg O. 324 24.04.25 13:28 Сейчас в теме
(27) ручками - я имел ввиду - своими руками

писать ручкой на бумаге - это прошлый век
9. quazare 4009 22.04.25 11:15 Сейчас в теме
Мне нравится, когда в статье много кода, а не белиберды «по улучшению личностного уровня»… поэтому, оцениваю эту статью положительно!
ardn; dimzfresh; +2 Ответить
10. ixijixi 2156 22.04.25 12:21 Сейчас в теме
(9) Вот только код после рефакторинга ИИ придётся переписать по новой. Пока очень сыро. Может, для комментирования кода и сгодится.
Прикрепленные файлы:
wing; improg; zigrein63; sats2003; maksa2005; MrFlanker; Serg O.; quazare; dimzfresh; +9 Ответить
11. Turgor 22.04.25 12:57 Сейчас в теме
Кэширование тоже вызывает вопросики :)

Функция РассчитатьВознаграждения_Оптимально(Месяц, Год)
    // Кешируем запрос, если данные уже загружались
    СтатическиеДанные = Неопределено;
    Если СтатическиеДанные = Неопределено Тогда
        СтатическиеДанные = ПолучитьПродажиЗаПериод(Месяц, Год);
    КонецЕсли;
Xershi; wing; vvh74; fancy; zqzq; MrFlanker; stopa85; +7 Ответить
14. ixijixi 2156 22.04.25 14:21 Сейчас в теме
(11) Даааа, кэширование огонь!
dimzfresh; +1 Ответить
15. dimzfresh 99 22.04.25 14:28 Сейчас в теме
(11) специально оставил «как есть» то, что нагенерил AI :)

AI идеи предложил годные, но не без косяков в синтаксисе
18. dreamadv 158 22.04.25 19:30 Сейчас в теме
(15) Claude 3.7 был выбран как Agent, Ask? Еще не плохо 1С переваривает Gemini 2.5 и DeepSeek (в режиме агента не работает) Gemini с его контекстным окном может в себя принять оооочень много правил :) например документацию по программированию в 1С
dimzfresh; +1 Ответить
47. wing 29 23.02.26 14:58 Сейчас в теме
(15) В итоге на поиск и исправление ошибок уйдет больше времени, чем на самостоятельный рефакторинг... по сути, статья - это антиреклама описываемому методу...
12. quazare 4009 22.04.25 13:21 Сейчас в теме
К ии отношусь с иронией, но это только пока… никакого дельного результата на данный момент не видел, чтобы оценить это все
tsmult; DmitryKSL; +2 Ответить
16. Diversus 2340 22.04.25 16:35 Сейчас в теме
(12) Язык 1С AI-модели знают плохо, т.к. обучались на этом мало, а вот с другими языками ситуация иная. Использовал Cursor AI для backend приложения и API на golang, вполне годно пишет код. Поэтому я тут иронии не вижу, вижу, что обучалось это все по весьма слабой кодовой базе :)
В остальном соглашусь, это самое начало пути, дальше будет гораздо лучше.

Отдельно отмечу, что общение с моделями - это целое искусство.
Alexandr III; d4rkmesa; zqzq; dimzfresh; +4 Ответить
17. quazare 4009 22.04.25 17:16 Сейчас в теме
(16) ну так все правильно - настоящий 1с-ник должен быть тупой и жадный, соответсвенно ии модели, обучаясь по канонам, должны становиться такими же.
KroVladS; +1 Ответить
20. dimzfresh 99 22.04.25 19:54 Сейчас в теме
(17) ребят, вы правы!

Но повторюсь, цель была - заинтересовать и бегло показать инструмент)

Не все коллеги еще так прокачались и в теме AI инструментов.

Меня обрадовало, что несколько бывших коллег заинтересовались темой AI, хотя до этого ничего не использовали 😎

П.С. Как составлять эффективно промт запросы и обучать модели, это достойно отдельного внимания.

П.С. В одном из комментариев выше есть видео разборы моделей и сценариев
22. dreamadv 158 22.04.25 23:18 Сейчас в теме
(20) Попробуйте ) писать рыбу документации по 1С коду и скриншотам. Очень не плохо справляется.
klaus38; dimzfresh; +2 Ответить
21. Peltik2 22.04.25 23:00 Сейчас в теме
Да, всё же в 1С он ещё пока слаб, видимо действительно датасет был маленький для обучения, потому что на Python вполне сносно кодит.
Пробовал небольшой эксперимент провести. Засунул в Cursor пустой проект и небольшую документацию с примерами на VBA, попросил его изучить и написать аналог. Если он начинал прям с чистого листа, то полная фигня получалась, у него проблемы с созданием объектов типа справочников и доков. Тогда использовал другой подход, попросил для начала создать план со структурой, руками создал объекты и пустые формы по его плану и дал ему возможность кодить. Ну, у него даже что-то получилось, даже элементы на форму смог допилить (правда всё в столбик, хотя на PyQt вполне сносно дизайн и формы, а там сложнее чем в 1С), качество кода конечно такое себе, но сам факт, что может хоть что-то приятно удивил. Пробовал на Claude 3.7, надо на 3.5 попробовать, говорят он пока лучше чем 3.7 в кодинге, типа новый ещё недоученый :)
23. wonderboy 710 23.04.25 11:36 Сейчас в теме
(21)
Пробовал на Claude 3.7, надо на 3.5 попробовать, говорят он пока лучше чем 3.7 в кодинге, типа новый ещё недоученый


Да я бы не сказал. 3.5 уже не включаю, только на 3.7 сижу в thinking режиме. Все у него нормально, не хуже 3.5 точно работает.
24. Peltik2 23.04.25 12:28 Сейчас в теме
(23) ну, я пробовал когда только 3.7 появилась, тогда 3.7 мне показалась хуже, да и во всяких сравнительных тестах она была хуже. Теперь да, 3.7 норм, по крайней мере в Python, а на 1С надо пробовать, надо ещё для разврата на других моделях попробовать, сравнить результат :)
wonderboy; +1 Ответить
25. wonderboy 710 23.04.25 12:59 Сейчас в теме
(24) на других хуже гораздо. Если кода в контексте много - ещё могут ничего так результат выдать, просто по аналогии с существующим кодом. Но без кода в контексте сочиняют..
Хотя вот у OpenAI новые модели 4.1 вышли, говорят заточены на код. Вот их не пробовал ещё, может лучше..
26. dreamadv 158 23.04.25 17:27 Сейчас в теме
(25) попробуйте Gemini 2.5 flash в Google AI Studio да и в курсоре она есть.
wonderboy; +1 Ответить
33. user700522_lerner584 06.05.25 09:11 Сейчас в теме
А это что?
Для каждого Ключ, Сумма Из ПродажиПоМенеджерам Цикл

Получается, я использую инструмент, который из рабочего кода, пускай и менее качественного, делает нерабочий? (сколько она ещё подобных и, возможно, менее очевидных косяков в него заложит). Т.е. бизнес-процесс, если я правильно понял, получается такой:
1. Пишем код;
2. Рефакторим его с помощью данного инструмента;
3. Теперь сами рефакторим то, что нарефакторил ИИ;
Далее вдруг мы что-то в п.3 опять не по "фен-шуй" написали, переходим к п.2 и так пока не надоест -).
Тут, скорее основной сценарий использования - это просто посмотреть на замечания ИИ, отдельно принять решение о необходимости внесения правки по каждому из них и уже самостоятельно внести в исходный код.
40. webester 26 28.05.25 10:56 Сейчас в теме
(33)
Получается, я использую инструмент, который из рабочего кода, пускай и менее качественного, делает нерабочий?

Прям сейчас происходит именно так. Никто не предлагает вам готовый инструмент. Если вы где-то прочитали в статье утверждение: "Теперь нейросеть будет писать код за вас" предлагаю перечитать. Наверняка вы, что-то не так поняли.
34. gaysinbh 21.05.25 09:36 Сейчас в теме
Спасибо за материал! Пытаюсь сделать чтобы по ТЗ cursor сам добавил справочники с нужными реквизитами. В структуре проекта в cursor он это все добавляет но есть проблема что по команде в 1с "Загрузить конфигурацию из файлов..." эти справочники не появляются. Никто с такой проблемой не сталкивался и как ее решал?
41. BladeWorld 29 01.07.25 08:56 Сейчас в теме
(34) Для добавления нового справочника в структуру выгрузки файлов конфигурации 1С, нужно создать и/или изменить следующие файлы и папки:
1. В каталоге Catalogs:
XML-файл метаданных справочника
Пример: Catalogs/НовыйСправочник.xml
Этот файл содержит описание структуры справочника, его реквизитов, табличных частей, ссылок и уникальных идентификаторов.
Папка с именем справочника
Пример: Catalogs/НовыйСправочник/
В ней размещаются дополнительные файлы, связанные с этим справочником.
2. Внутри папки справочника (Catalogs/НовыйСправочник/):
Ext/
ObjectModule.bsl — модуль объекта справочника (обработка событий объекта)
ManagerModule.bsl — модуль менеджера справочника (обработка событий менеджера)
Forms/
ФормаСписка.xml — форма списка элементов справочника
ФормаЭлемента.xml — форма элемента справочника
ФормаВыбора.xml — форма выбора элемента справочника
(опционально) папки ФормаСписка/, ФормаЭлемента/, ФормаВыбора/ — для вложенных файлов форм
3. В корне выгрузки:
Configuration.xml
В этот файл добавляется информация о новом справочнике (обычно автоматически при выгрузке из конфигуратора 1С).
ConfigDumpInfo.xml
Здесь также может появиться информация о новом объекте (автоматически).
4. (Опционально) В других каталогах:
Если справочник связан с ролями, общими модулями, командами, шаблонами, картинками и т.д., могут понадобиться изменения или добавления в соответствующих папках (Roles, CommonModules, CommonCommands, CommonPictures и др.).
Итоговый список для нового справочника:
Catalogs/НовыйСправочник.xml
Catalogs/НовыйСправочник/Ext/ObjectModule.bsl
Catalogs/НовыйСправочник/Ext/ManagerModule.bsl
Catalogs/НовыйСправочник/Forms/ФормаСписка.xml
Catalogs/НовыйСправочник/Forms/ФормаЭлемента.xml
Catalogs/НовыйСправочник/Forms/ФормаВыбора.xml
(опционально) вложенные папки для форм
(автоматически) изменения в Configuration.xml и ConfigDumpInfo.xml
klaus38; gaysinbh; +2 Ответить
35. frkbvfnjh 822 22.05.25 11:41 Сейчас в теме
А как отдельный код обмусоливать, а не каталог выбирать?
36. frkbvfnjh 822 22.05.25 11:46 Сейчас в теме
Фиг пойми как всем этим пользоваться. Плагин для удобства навигации по метаданным 1С вообще для VSCode. Или Cursor IDE и VSCode это одно и тоже?
G_100247859596955053668; +1 Ответить
37. frkbvfnjh 822 22.05.25 11:54 Сейчас в теме
Лучше бы 10 минутное видео записали, ей богу. На VSCode все село отлично, фиг понять как это прикрутить к Cursor IDE .
G_100247859596955053668; ixijixi; apic; +3 Ответить
38. frkbvfnjh 822 22.05.25 12:14 Сейчас в теме
Вроде разобрался. Пояснения для ламеров как я. Cursor IDE построен на базе VSCode. Что бы поставить перечисленные в статье плагины нужно запустить Cursor IDE и нажать Ctrl+Shift+X, затем в поиске найти эти плагины по наименованию, понажимать на кнопочку Install, затем создать новый документ, потом в правом нижнем углу выбрать язык подсветки 1CLang (bsl), вставить в новый документ кусок кода 1С и поставить курсор в конце или начале кода, потом нажать Ctrl+K и писать промты ИИшке. Если нищеброды, то выбирать нужно ИИшку GPT, по другим потребует заплатить.
klaus38; Iotsuba; G_100247859596955053668; v8devops; ISStill; ixijixi; krlexa; apic; +8 Ответить
42. TariK 19.08.25 10:10 Сейчас в теме
(38)
Позволю вставить свои 5 копеек)))
Для удобства навигации по метаданным 1С ставим плагин
это - "Language 1C (BSL)" Картинка прилагается.

Еще желательно поставить плагин - "Russian - Code Spell Checker"
Прикрепленные файлы:
39. frkbvfnjh 822 22.05.25 12:19 Сейчас в теме
Статья полезная, но только для тек кто и так умеет пользоваться Cursor IDE, но в целом дает направление куда смотреть если ты 1Сник. Автору спасибо!
43. fixin 4340 03.09.25 09:15 Сейчас в теме
А сколько стоит все это счастье?
Ведь запросы к ИИ не бесплатны?
44. MaxS 3126 17.11.25 04:39 Сейчас в теме
Полезная статья, но не всё на данный момент совпадает с действительностью.
Подготовка Cursor IDE
1. Скачиваем и устанавливаем Cursor IDE с сайта (без VPN и регистрации 🙃)
Установлена версия 2.0.77.

Для удобства навигации по метаданным 1С ставим плагин
Плагин "1C Metadata Viewer" недоступен в Cursor.
В VS Code версии: 1.106.0 он доступен и работает.
Плагины из VS Code в Cursor перенёс, некоторые заработали. а этот - нет.
45. SergMuravev 906 11.12.25 10:19 Сейчас в теме
Cursor установил, на начальном экране предлагает залогиниться. Учетку Google подключил, перекинуло на сайт с надписью Loging in... и ничего не происходит
Прикрепленные файлы:
46. SergMuravev 906 11.12.25 12:30 Сейчас в теме
(45) Подсказали, что это давний баг, и нужно запустить Cursor от имени администратора.
50. Xershi 1475 20.03.26 10:58 Сейчас в теме
(46) на мак тоже тупил, но с какой-то попытки регистрация пошла, код прислали по почте!
48. Yashazz 4927 16.03.26 16:49 Сейчас в теме
А на винде Сервер2012 он, в смысле Курсор, вообще отказался устанавливаться... вот и всё.
Есть версии под такую винду?
53. akkvamarin 120 29.05.26 17:24 Сейчас в теме
"Для подсветки синтаксиса 1С как вариант ставим плагин"
Пункт 3 не могу установить
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация