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 автоматизация кодревью оптимизация разработка скрипты

См. также

Рефакторинг и качество кода Инструментарий разработчика Программист Платформа 1С v8.3 Абонемент ($m)

Обработка позволяет анализировать структуру методов в модуле и легко составлять её структуру, канонизировать, используя стандарты 1С.

3 стартмани

20.06.2025    366    6    MikeLetto    2    

5

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

Тестовая база обновлена через все ключевые релизы, всё протестировано, остатки сведены, вы готовы обновить «боевую» базу, но…по замерам для этого потребуется целая неделя, а у вас есть всего пара выходных. Знакомая ситуация? Расскажем, как увеличить скорость отработки промежуточных конфигураций!

18.06.2025    816    1c-izh    12    

6

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

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

03.06.2025    906    MC4RT    5    

12

Рефакторинг и качество кода Программист Платформа 1С v8.3 Абонемент ($m)

Конфигурация для хранения стандартов и сохранения их в формате PDF.

2 стартмани

05.05.2025    3430    comptr    7    

15

Рефакторинг и качество кода Платформа 1С v8.3 Абонемент ($m)

Методический материал для собеседования. Помогает облегчить общение между кандидатом и работодателем.

5 стартмани

05.05.2025    3980    vasilev2015    108    

25

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

Разбираем принципы SOLID в контексте 1С: как укротить хаос в коде, сделать его гибким, расширяемым и предсказуемым. Практические примеры, механизмы платформы помогающие в этом и шаги к чистой разработке для новичков и профи.

21.04.2025    9169    RPGrigorev    31    

54

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

Методика, описанная в статье, выработана при переезде с 1С:ДО 2.1 на 1С:ДО 3.0. Может также применяться при переходе с 1С:УПП на 1C:ERP, 1C:ERP на 1C:ERP УХ и т. п. Учтены все необходимые доработки при переезде на новую конфигурацию и предупреждены возможные ошибки.

21.04.2025    2218    PROSTO-1C    4    

4

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

Диалог "Вопрос" использовался очень интенсивно в старых версиях кода и также его используют в УФ довольно часто. Иногда очень неудобно использовать рефакторинг через асинхронные вызовы ПоказатьВопрос и ВопросАсинх по разным причинам. Есть ещё одно решение, как избежать больших переделок кода, когда Вы не планируете его использовать где-то на других платформах и Веб-клиентах.

26.03.2025    1786    ksuman    7    

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

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

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

Мне нравится ваша цитата про то, что «AI будет что-то нам делать..»!
Подход верный, доверяй, но проверяй результат👍
SirAlex; d4rkmesa; +2 Ответить
3. wonderboy 565 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
user750992; Steffan; d4rkmesa; Prepod2003; AlexanderEkb; Krotov_Valery; Legin; klaus38; friskdb; +9 Ответить
4. dimzfresh 87 22.04.25 10:01 Сейчас в теме
5. NikitaIvanchenko 285 22.04.25 10:06 Сейчас в теме
Я просто оставлю это на всякий случай =)
https://github.com/yeongpin/cursor-free-vip
user750992; artbear; user1811009; wonderboy; dimzfresh; +5 Ответить
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
d4rkmesa; +1 Ответить
7. Serg O. 307 22.04.25 11:02 Сейчас в теме
повсеместное использование ИИ
уже превращается в ИТ-юмор про ИИ

ручками надо уметь писать, а не на ИИ расчитывать
и так уже IDE (даже Конфигуратор) помогают
и помнят все функции/типы/переменные за нас
8. o.nikolaev 217 22.04.25 11:10 Сейчас в теме
(7) Мое мнение другое. ИИ сейчас только в самом начале. Идея изначально сильная - потому что она основана на языке, на работе с языком, по обнаружение таких свойств и особенностей языка - которые раньше невозможно было увидеть, "потрогать", понять. Мир разработки не будет прежним, он изменится. Пока не знаю как. Но уверен в том что не исчезнет человек, а у него появится еще более мощный инструмент, еще более мощный помощник. Это надо осваивать, этому надо учиться, надо привыкать.
klaus38; wonderboy; Serg O.; +3 Ответить
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. 307 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. 307 24.04.25 13:28 Сейчас в теме
(27) ручками - я имел ввиду - своими руками

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

Функция РассчитатьВознаграждения_Оптимально(Месяц, Год)
    // Кешируем запрос, если данные уже загружались
    СтатическиеДанные = Неопределено;
    Если СтатическиеДанные = Неопределено Тогда
        СтатическиеДанные = ПолучитьПродажиЗаПериод(Месяц, Год);
    КонецЕсли;
fancy; zqzq; MrFlanker; stopa85; +4 Ответить
14. ixijixi 2030 22.04.25 14:21 Сейчас в теме
(11) Даааа, кэширование огонь!
dimzfresh; +1 Ответить
15. dimzfresh 87 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 Ответить
12. quazare 3939 22.04.25 13:21 Сейчас в теме
К ии отношусь с иронией, но это только пока… никакого дельного результата на данный момент не видел, чтобы оценить это все
tsmult; DmitryKSL; +2 Ответить
16. Diversus 2336 22.04.25 16:35 Сейчас в теме
(12) Язык 1С AI-модели знают плохо, т.к. обучались на этом мало, а вот с другими языками ситуация иная. Использовал Cursor AI для backend приложения и API на golang, вполне годно пишет код. Поэтому я тут иронии не вижу, вижу, что обучалось это все по весьма слабой кодовой базе :)
В остальном соглашусь, это самое начало пути, дальше будет гораздо лучше.

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

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

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

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

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

П.С. В одном из комментариев выше есть видео разборы моделей и сценариев
22. dreamadv 158 22.04.25 23:18 Сейчас в теме
(20) Попробуйте ) писать рыбу документации по 1С коду и скриншотам. Очень не плохо справляется.
dimzfresh; +1 Ответить
21. Peltik2 22.04.25 23:00 Сейчас в теме
Да, всё же в 1С он ещё пока слаб, видимо действительно датасет был маленький для обучения, потому что на Python вполне сносно кодит.
Пробовал небольшой эксперимент провести. Засунул в Cursor пустой проект и небольшую документацию с примерами на VBA, попросил его изучить и написать аналог. Если он начинал прям с чистого листа, то полная фигня получалась, у него проблемы с созданием объектов типа справочников и доков. Тогда использовал другой подход, попросил для начала создать план со структурой, руками создал объекты и пустые формы по его плану и дал ему возможность кодить. Ну, у него даже что-то получилось, даже элементы на форму смог допилить (правда всё в столбик, хотя на PyQt вполне сносно дизайн и формы, а там сложнее чем в 1С), качество кода конечно такое себе, но сам факт, что может хоть что-то приятно удивил. Пробовал на Claude 3.7, надо на 3.5 попробовать, говорят он пока лучше чем 3.7 в кодинге, типа новый ещё недоученый :)
23. wonderboy 565 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 565 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с "Загрузить конфигурацию из файлов..." эти справочники не появляются. Никто с такой проблемой не сталкивался и как ее решал?
35. frkbvfnjh 813 22.05.25 11:41 Сейчас в теме
А как отдельный код обмусоливать, а не каталог выбирать?
36. frkbvfnjh 813 22.05.25 11:46 Сейчас в теме
Фиг пойми как всем этим пользоваться. Плагин для удобства навигации по метаданным 1С вообще для VSCode. Или Cursor IDE и VSCode это одно и тоже?
37. frkbvfnjh 813 22.05.25 11:54 Сейчас в теме
Лучше бы 10 минутное видео записали, ей богу. На VSCode все село отлично, фиг понять как это прикрутить к Cursor IDE .
ixijixi; apic; +2 Ответить
38. frkbvfnjh 813 22.05.25 12:14 Сейчас в теме
Вроде разобрался. Пояснения для ламеров как я. Cursor IDE построен на базе VSCode. Что бы поставить перечисленные в статье плагины нужно запустить Cursor IDE и нажать Ctrl+Shift+X, затем в поиске найти эти плагины по наименованию, понажимать на кнопочку Install, затем создать новый документ, потом в правом нижнем углу выбрать язык подсветки 1CLang (bsl), вставить в новый документ кусок кода 1С и поставить курсор в конце или начале кода, потом нажать Ctrl+K и писать промты ИИшке. Если нищеброды, то выбирать нужно ИИшку GPT, по другим потребует заплатить.
v8devops; ISStill; ixijixi; krlexa; apic; +5 Ответить
39. frkbvfnjh 813 22.05.25 12:19 Сейчас в теме
Статья полезная, но только для тек кто и так умеет пользоваться Cursor IDE, но в целом дает направление куда смотреть если ты 1Сник. Автору спасибо!
Оставьте свое сообщение