Переписывание конфигурации, которая развивалась на протяжении многих лет (так называемый legacy-код), — это одна из самых сложных и ответственных задач для разработчика и архитектора 1С. Со временем любая система «обрастает» костылями, неоптимальными решениями и устаревшими механизмами, которые тормозят развитие бизнеса. Разберем подробно, как подойти к процессу создания новой версии системы, чтобы не повторить старых ошибок.
Прежде чем приступать к написанию первой строчки кода, проанализируем, зачем именно нам нужно переписывание. Как правило, основными причинами становятся невозможность обновления платформы до актуальных версий (например, переход с 8.2 на 8.3), необходимость использования современных механизмов БСП (Библиотеки стандартных подсистем) или критическое замедление работы из-за «раздутого» кода.
Проанализируем текущую ситуацию. Часто бывает так, что конфигурация была построена на базе отраслевого решения (например, 1С:CRM 2.0), которое в процессе эксплуатации было изменено до неузнаваемости. Выясним, используются ли сейчас эти отраслевые функции. Если по факту CRM-функционал не востребован, лучшим решением будет переход на «чистую» БСП версии 3.0 или выше. Это позволит существенно сократить объем кода и упростить дальнейшую поддержку.
Рассмотрим проверенный алгоритм действий, который поможет структурировать процесс:
Расширения для кастомизации, Фоновые задания для тяжелых вычислений и асинхронные вызовы для интерфейса.БСП.Если старая конфигурация базировалась на 8.2 с обычными формами, переход на 8.3 потребует полного пересмотра интерфейсной логики. Рассмотрим использование последней версии БСП. Это даст нам готовые механизмы для:
Важно помнить, что в новых версиях платформы и БСП (начиная с 3.0) реализован отказ от модальности. Это значит, что старые конструкции вроде Вопрос() или ОткрытьФормуМодально() должны быть заменены на асинхронные аналоги. Например:
ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершитьУдалениеЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, "Вы уверены, что хотите удалить объект?", РежимДиалогаВопрос.ДаНет);
Один из самых болезненных моментов — перевод пользователей на новую систему. Рассмотрим два основных сценария:
1. Метод «Большого взрыва» (Big Bang). Разрабатываем всю конфигурацию целиком, пишем правила переноса данных через Конвертацию данных 3.0 и в один день переключаем всех пользователей. Этот метод подходит для небольших и средних баз.
2. Поэтапный ввод в эксплуатацию. Это более безопасный путь. Разберем его по шагам:
HTTP-сервисы).Проанализируем ситуацию, когда старая конфигурация содержит закрытые защищенные модули (например, ключи защиты СЛК). При переходе на 8.3 и 64-битные серверы старые системы защиты часто перестают работать или вызывают падение системы. Выясним, насколько критична логика в этих модулях. Если мы решили отказаться от родительской конфигурации (как в случае с CRM), эти блоки придется переписать самостоятельно, используя открытый код и современные стандарты разработки 1С.
Переписывание — отличный шанс избавиться от избыточности. Практика показывает, что при грамотном подходе объем кода может уменьшиться в несколько раз. Проанализируем типичный пример оптимизации запросов:
Вместо того чтобы обращаться к серверу в цикле (типичная ошибка старого кода):
Для Каждого Строка Из ТаблицаТоваров Цикл
Остаток = ПолучитьОстатокНаСервере(Строка.Номенклатура); // ОШИБКА: Запрос в цикле!
КонецЦикла;
Мы должны подготовить данные заранее и выполнить один пакетный запрос:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Номенклатура, СуммаОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(..., Номенклатура В (&МассивНоменклатуры))";
Запрос.УстановитьПараметр("МассивНоменклатуры", ТаблицаТоваров.ВыгрузитьКолонку("Номенклатура"));
Результат = Запрос.Выполнить().Выгрузить();
Подводя итог, отметим, что переписывание конфигурации — это не просто «кодинг», а в первую очередь работа методолога и архитектора. Основной успех проекта зависит от того, насколько точно вы сможете отделить нужные бизнес-процессы от устаревшего мусора. Используйте БСП как фундамент, пишите код в соответствии со стандартами разработки 1С и внедряйте систему поэтапно — это минимизирует риски и позволит создать современный, масштабируемый продукт.