При разработке крупного функционала или подсистем в 1С (например, обменов данными или сложных механизмов проведения) разработчики часто сталкиваются с ситуацией, когда первоначальные требования меняются прямо в процессе работы. Спроектировать всё наперед до мельчайших деталей бывает сложно или даже невозможно. В этой статье мы проанализируем проверенные подходы и практические методы, которые применяют разработчики 1С для проектирования алгоритмов, их поэтапной реализации и безопасного отката изменений.
Один из самых эффективных способов разработки сложных функций в 1С — это нисходящее программирование с использованием псевдокода на естественном языке. Рассмотрим, как выглядит этот процесс по шагам:
Посмотрим на пример оформления первичного каркаса алгоритма:
// Сначала заполним ТЗ текущими данными из файла
// Потом проверим строки на ошибки
// Далее связываем аналитики
// В конце записываем результат
После составления такой структуры логика детализируется. Программист переходит от крупных блоков к более мелким процедурам или конкретным операторам платформы 1С. Когда все комментарии заменены кодом или превращены в понятные заголовки блоков, алгоритм считается завершенным.
Другой практичный подход — проектирование логики «от пользователя». В платформе 1С формы накидываются достаточно быстро, что позволяет сразу визуализировать сценарий взаимодействия:
Частая проблема при доработке критически важной бизнес-логики — необходимость срочно откатить изменения или протестировать новый алгоритм без проведения экстренных обновлений всей базы.
Для решения этой задачи применяется версионирование процедур и алгоритмов. Рассмотрим, как это организуется в коде:
Разберем пример реализации версионирования в процедуре списания или проведения документа:
Процедура СписаниеГТД()
Если ИспользоватьНовыйАлгоритм() Тогда
СписаниеГТД_НоваяВерсия();
Иначе
СписаниеГТД_СтараяВерсия();
КонецЕсли;
КонецПроцедуры
Процедура СписаниеГТД_НоваяВерсия()
// Новый алгоритм списания
КонецПроцедуры
Процедура СписаниеГТД_СтараяВерсия()
// Проверенный старый алгоритм
КонецПроцедуры
Такой подход (концепция Feature Toggles или флагов возможностей) позволяет моментально переключить алгоритм на старую версию в случае обнаружения ошибок, не останавливая работу пользователей и не требуя срочной загрузки конфигурации cf.
Для повышения гибкости кода и предотвращения ситуации, когда изменения в одном месте ломают смежные функции, рекомендуется использовать проверенные паттерны проектирования:
Сочетание пошагового планирования через псевдокод, версионирования критичных процедур и разделения ответственности позволяет разрабатывать устойчивые алгоритмы в 1С любой сложности.