Технологии, которые меняют нас: История одной 1С-команды

Технологии, которые меняют нас: История одной 1С-команды
View on original source
Category: SciTech
Share
Archive
Like
«Чтобы оставаться на месте, нужно бежать со всех ног. А чтобы куда-то попасть, надо бежать как минимум вдвое быстрее» - Льюис Кэрролл Это было очередное утро после вечернего обновления релиза. В рабочей базе уже несколько часов валилась какая-то ошибка. Пользователи писали в поддержку, поддержка — нам. В чем оказалась причина? Всего одна строчка кода - мы потеряли ее во время ручного переноса из дева в релизное хранилище. Далее последовал примерно следующий диалог: Руководство: «А откуда ошибка? Разве мы вчера всё не протестировали?».Мы: «Протестировали, но ошибку довнесли позже».Руководство: «А как нам этого избежать в будущем? Может автотесты какие добавить или ИИ привлечь? Что нужно сделать?».Мы: (короткое молчание) «Пока точно не знаем, подумаем..». И в этот раз не покидала мысль: если ничего не изменим, то следующая ошибка уже может стоить не трёх часов, а трёх дней. И большего негатива пользователей или не дай бог убытков компании. В тот вечер в поисковиках у команды начали появляться следующие запросы: «Как перейти с конфигуратора 1С на EDT», «Git для 1С», «ИИ в 1С-разработке» и пр. И пока мы даже не задумывались, что запущен самый сложный, дорогой и одновременно очень нужный проект в нашей команде. Мы - довольно большая компания. То, как мы работаем с 1С, должно быть многим будет знакомо. Есть два хранилища — dev и release. Разработчик делает правки, потом вручную, через "сравнение и объединение", переносит их в релизную базу. Получается, наш merge — это частый копипаст из окна в окно, либо сравнение/объединение, и постоянный риск забыть что-то или перенести не так и не туда. Code review? Формально он есть. Но найти и посмотреть изменения разработчика в Конфигураторе — довольно муторное занятие. Даже настроен SonarQube, но полностью ему на откуп проверку кода не отдаем, он как дополнительный информатор. На практике ревью сводилось к фразе «Ты посмотрел задачу? Сейчас гляну». Про CI/CD слышали, что-то даже есть. Настроен скрипт, который периодически выгружает хранилище в Git. Без веток задач, только теги на них в коммитах. По сути Git используется просто как архив, а не как основной инструмент, и использовать его для развертывания систем не можем. И знаете, что здесь самое опасное? Все к такой работе привыкли и всех всё устраивало. Зачем что-то менять, если «и так работает». Да и времени особо на нововведения нет, поток новых задач идет постоянно. «Если ты не идёшь вперёд, ты откатываешься назад. В стоячей воде неизбежно начинается гниение» - Лао Цзы Казалось, мы стоим в этой самой воде и она начинает понемногу пахнуть. После исследования чужого опыта и погружения в тему, твердо решили: движемся в сторону перехода на EDT. Он хранит конфигурацию в отдельных файлах на диске, а это открывает дверь к Git с отдельными ветками задач, Merge-requestами и полноценным code-review. Есть какие-то альтернативные варианты по синхронизации конфигуратора с Git, но скорее всего это было бы промежуточным переходом, надо сразу ставить разработку на правильные рельсы. Мы представляли, что наши разработчики, как в Google: пишут код, делают коммиты, еще и ИИ используют на каждом шагу. Наши надежды были наивными и прекрасными. Реальность же оказалась жёстче. Конфигуратор работает на любом «калькуляторе», а EDT — это тяжелая IDE на Eclipse. На обычном ноутбуке с 8-16 ГБ ОЗУ она грузится и подключает базу неприлично долго. Работать на «стандартном железе» было бы невозможно. «Гладкая дорога никогда не делает умелого водителя» - Латинская пословица Мы собрали основные требования: 32 ГБ ОЗУ, быстрый SSD, современный производительный процессор. Для всей команды надо закупить хорошие рабочие станции, а лучше ноутбуки. А ведь это заранее незапланированный бюджет . Как заставить сторонних подрядчиков, которые работают с нами давно, перейти на EDT? Пока это вопрос открытый. Они просто могут не потянуть такое оборудование, скажут «дорого» или «не умеем». Решение ещё ищем, и то что сейчас прорабатываем - не такое красивое: синхронизация через файлы *.cf. Те, кто в EDT, работают в Git. Для внешних разработчиков выгружаем cf-файл с изменениями. Схема сложная, но кажется позволяет начать двигаться вперед. Люди боятся нового и не хотят ничего менять, это не новость. «Зачем мне EDT? У меня куча задач и в Конфигураторе я всё успеваю» — высказались некоторые разработчики. «Это всё сложно, долго и не работает» — вторили им другие. И люди боятся не самой EDT, а неизвестности. Угрозы своей компетентности. Новых привычек, манипуляций и дополнительной рутины, по началу возможно отнимающих еще больше времени. Понятно, что людям потребуется время на привыкание и наработку новых навыков. Здесь можно начать продвижение новинки с пилотной группы из нескольких энтузиастов - выдать им новые ноутбуки, чтобы настроили EDT, вникли в преимущества Git. Скорее всего через месяц многие уже не захотят возвращаться к старому, а остальные увидят их результат и будут подтягиваться. «Трудности — это не преграды на пути, они и есть путь» - Райан Холидей Главный вывод этой части: EDT при серьезной разработке в 1С — это уже не дань моде, а необходимость. Но этот путь требует мощных компьютеров, терпения и готовности от всех меняться. Здесь еще раз проговорим, зачем нам все это? Когда мы освоим EDT и Git, перед нами откроются горизонты, о которых мы раньше даже не мечтали: Повторюсь, раньше у нас был SonarQube, который вроде и проверял код, но мы всё равно искали и смотрели изменения в Конфигураторе — неудобно, медленно, часто без контекста. В нашем светлом будущем нас ждет merge-request. Каждая ветка-задача проходит ревью. Мы сразу видим строки, которые изменились, всё в одном месте. А ещё можно начать использовать Git-хуки. Подключить скрипты, которые автоматически проверяют код перед коммитом или пушем, с помощью различных сервисов, в том числе на основе ИИ. Отдельная история — тестирование. Раньше мы тестировали основной функционал вручную перед каждым релизом. Долго, скучно, и потом часто всплывал баг, хотя «вчера все работало». Сейчас активно развиваем Vanessa Automation — полноценный фреймворк для автоматизированного тестирования в 1С. А тут еще в последних версиях у нее появилась поддержка ИИ и MCP-серверов, что кажется может дать огромную выгоду в генерацию тестовых данных. Vanessa сможет сама подготовить данные для теста: создать документы, заполнить справочники. ИИ поможет написать и сами тесты. С этими новыми возможностями еще только предстоит разобраться. Но основная цель - чтобы автотесты выявили ошибку до того, как это сделает пользователь - уже не кажется такой уж недостижимой. И конечно основное преимущество - это единое окно внесения изменений в релиз и его последующая автоматическая сборка. Никаких больше тебе ручных, муторных и не внимательных переносов из хранилища в хранилище. Еще в начале нашего пути по освоению EDT мы знали: ИИ сейчас — практически везде. Коллеги из других команд уже активно используют его для написания тестов, рефакторинга и пр. К тому же наша компания активно продвигает его использование на всех уровнях и помогает в освоении. И после этого задаешься вопросом: «Почему у нас этого нет?». Ответ обычно таков: потому что Конфигуратор, а совместное использование ИИ с ним трудно совместимо. Решим проблему с Конфигуратором - решим проблему с полноценным внедрением и использованием ИИ. А сейчас, когда в процессе тестирования EDT уже удалось воспользоваться им в разных аспектах нашей работы - становится ясно, что этот инструмент обязательно будет неотъемлемой частью будущей разработки. И значит, сопутствующие с ним проблемы также предстоит решать. ИИ вполне себе знает синтаксис 1С и даже может написать красивый код. Но он не знает про ваш справочник «Номенклатура» или «Товары», не знает реквизиты ваших документов и т.п.. Пытается что-то «правдоподобно угадать» и как результат - генерирует мёртвый код. Ему нужен ваш контекст! Решение: MCP (Model Context Protocol) — «USB-порт» для нейросети. Стандарт, который позволяет ИИ подключиться к вашей конфигурации и «увидеть» её. Сейчас активно тестируем некоторые из них, благо подобные инструменты для 1С начали активно появляться. Будем тестировать их как в отдельных средах так и внутри EDT, посмотрим что понравится больше. О конечных результатах пока говорить рано, и кажется это отдельная тема для новой статьи. Здесь можно еще отметить отдельный вопрос поддержания актуальности этого контекста, возможность разворачивания его в виде RAG или других индексируемых сущностей. Но и эти моменты здесь уже широко раскрыть не успеем. Сейчас нам доступно 3 инструмента для работы: Ассистент Яндекса на базе модели Qwen. Работа строится через Visual Studio, т.е. сбоку от EDT, конечно это не плюс. Зато обладает множеством дополнительных настроек (MCP, навыки, плагины и пр.), что может повышать качество работы и результата. Говорит по-русски — это тоже важно. Без дополнительных знаний в языке 1С еще многое додумывает. Результат: Код пишет качественно. Учитывает много нюансов. На вопросы отвечает полнее и зависаний практически нет. Вердикт: Неплох, особенно для отдельных небольших алгоритмов или задач. Раз есть EDT, значит есть и официальный ИИ-помощник от 1С, который пока бесплатен. Сразу видно: он знает платформу, код пишет хорошо, а комментарии к нему еще лучше. Результат: простейший алгоритм пишет быстро и качественно. Даже более сложную задачу, с учетом структуры данных, может сделать. Но не понравилось, что на некоторых сложных вопросах может уйти в бесконечный анализ и зависнуть, как так? А один раз даже умудрился так отредактировать модуль, что сломал его и сам попросил восстановить его из бекапа. Вердикт: для чего-то не сложного, разработки с нуля, шаблонов и комментариев — очень даже. Если нужно большее — кажется пока слабоват, но будем пробовать. Сам по себе Claude Code — мощный агент. Хорошо анализирует конфигурацию и код, удачно предлагает и принимает решения. НО! Стоит больших денег( Непонятна его дальнейшая судьба в РФ и нашей компании в частности. Пока пользуемся им осторожно) Результат: Код пишет красиво (правда, пока не идеально), с учётом нашей структуры и стандартов. Ещё и объясняет, почему сделал так, а не иначе. С каждым обновлением про 1С знает все больше. Вердикт: для сложного рефакторинга легаси, тестирования и анализа — кажется лучший. Но дорогой, зараза. Еще в начале работы удалось устроить короткое сравнение между всеми тремя. Задача была сделать одну и ту же, срочную и не сложную задачку. Промт звучал примерно так: "Нужен пример кода для базы УХ: сначала запросом отобрать документы ВерсияСоглашенияКоммерческийДоговор с Номером ПОДОБНО "%-%-%"; потом обойти эту выборку и изменить номер на "000071959" увеличивая на единицу. Документы записывать в режиме загрузка. Добавить комментарии у процедуры и основных действий" Вот что из этого получилось: Yandex Code Assist Написал работоспособную процедуру на 55 строк с обширным комментарием к процедуре. Комментарии к основным действиям добавил где надо и не надо, визуально они заняли места больше самого кода. Про режим загрузки ничего не понял и придумал такую конструкцию: «ДокументОбъект.Записать(РежимЗаписиДокумента.Загрузка)» В конце выдал некие рекомендации, по мне — не особо полезные. 1С-Напарник Написал работоспособную процедуру на 57 строк с адекватными комментариями к процедуре и основным действиям. Оказался единственным, кто еще при рассуждении понял про 'ДокументОбъект.ОбменДанными.Загрузка = Истина' и указал это в коде. Выдал добротные и полезные рекомендации для запуска. Claude Code Написал аж две процедуры на 128 строк: основную + вспомогательную для ее клиентского вызова. Показалось, что кода даже слишком много для такой задачи. Даже использовал блоки Попытка-Исключение, а также Сообщить для вывода информации пользователю. Все комментарии разумных размеров. Тоже ничего не понял про загрузку и откуда-то придумал метод 'УстановитьРежимЗагрузкиДанных(Истина)'. Итоговый вывод: пока мы еще в поисках нашего идеального инструмента. Каждый чем-то хорош и удобен. Отдельные инструменты еще требуют донастройки. Пользуемся всеми тремя для наработки опыта. Мы только в самом начале нашего пути. EDT в процессе освоения: разработчики привыкают к новым процессам работы, а некоторые коллеги даже еще не перешли. Но выбор сделан и свернуть назад не получится. Теперь у нас впереди освоение: полноценного Git-инструментария, для проверки кода и развертывания приложений; полные автотесты с выявлением багов до релиза; ИИ, который не заменяет программиста, но реально помогает и ускоряет его работу. «Идти вперёд — значит прорываться через стены, которые кажутся непреодолимыми, с верой, что за ними — свет» - Нельсон Мандела «Есть только путь» — не просто громкая фраза, а правда. Да, путь труден. Да, он требует денег на железо, времени на настройку и смелости, чтобы сказать коллегам: «Мы это сделаем. Идёте с нами?». Но каждый пройденный километр этого тернистого пути даёт нам новый опыт. Опыт, который закаляет команду. Опыт, который подготовит нас к следующим вызовам. А они обязательно будут. Мы движемся вперед. Медленно, с матами и перезагрузками. Но движемся - и это радует!

(0)Comments

 

A note on cookies

Newshunt uses essential cookies to keep you signed in and to remember your language and country, so the site works the way you expect. With your permission, we'd also like to use analytics cookies to understand how people use Newshunt and improve it over time.

Accepting only affects analytics. To learn more, view our Privacy Policy or Terms & Conditions.