В среде 1С-разработки часто возникает профессиональная дискуссия: должен ли программист сам догадываться, откуда брать данные, или аналитик обязан разжевывать задачу до уровня имен реквизитов? Ситуация, когда для «примитивной» печатной формы приходится описывать источники каждого поля, может вызвать шок у опытных специалистов старой закалки. Однако современные реалии крупных внедрений диктуют свои правила. Разберем подробно, почему так происходит, и как найти баланс в подготовке технической документации.
Рассмотрим, как изменился рынок за последние годы. Раньше 1С-специалист был «и швец, и жнец»: он сам общался с бухгалтером, сам проектировал архитектуру и сам писал код. В небольших компаниях такая схема работает до сих пор. Но в крупных проектах (уровня 1С:ERP или Комплексная автоматизация) произошло четкое разделение ролей:
Проанализируем ситуацию: если программист получает задачу «сделать печатную форму», он может потратить часы на изучение того, как в конкретной (возможно, кастомизированной) базе связаны Партнеры и Контрагенты. Если аналитик уже проделал эту работу, эффективнее зафиксировать источники данных в ТЗ. Это превращает программиста в «черный ящик», который выдает предсказуемый результат за минимальное время.
Почему «очевидные» вещи перестали быть таковыми? Разберем на примере типовой ERP. Посмотрим на обычное поле «Контрагент». В системе могут сосуществовать справочники Партнеры и Контрагенты. Данные для печати могут извлекаться:
Если в ТЗ не указано конкретное место, программист может выбрать наиболее простой для него путь, который окажется неверным с точки зрения методологии учета. Выясним причину избыточности: детальное ТЗ — это не недоверие к интеллекту разработчика, а способ избежать «самодеятельности», которая может «отвалиться» при следующем обновлении конфигурации.
Рассмотрим психологический аспект. Часто отсутствие деталей в ТЗ приводит к конфликтам. Программист выполняет задачу, исходя из своего понимания, а заказчик (или аналитик) говорит: «Я совсем не это имел в виду». Детальное описание полей — это страховка. Если в ТЗ написано Область.Параметры.Цена = СтрокаТовара.Цена, а нужно было выводить цену с учетом скидки, то ответственность несет составитель ТЗ. Если же описание было общим («вывести цену»), виноватым часто делают программиста.
Для эффективной работы рекомендуется разделять требования на уровни. Проанализируем структуру качественного технического проекта:
Вместо фразы «возьми из документа», профессиональное ТЗ содержит указание конкретных путей. Например, для вывода реквизитов контрагента в печатную форму СчетНаОплату:
// Источник данных: Документ.ЗаказКлиента
// Реквизит "Контрагент" -> Справочник.Контрагенты
// Требуется получить:
// 1. НаименованиеПолное (для шапки)
// 2. ИНН/КПП (через функцию БСП ФормированиеПечатныхФорм.СведенияОЮрФизЛице)
Современная разработка в 1С — это работа с объектами ОбщиеМодули. В ТЗ важно указывать, должен ли программист использовать стандартные функции БСП. Рассмотрим пример:
// Вместо прямого обращения к реквизитам:
Наименование = Объект.Контрагент.Наименование;
// Рекомендуется использовать механизмы БСП для производительности:
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Контрагент, "Наименование, ИНН, КПП");
Преимущества подробного ТЗ:
Недостатки и риски:
Выясним ситуации, когда излишние подробности вредят. Если вы работаете с Senior-разработчиком, который отлично знает предметную область (например, расчет зарплаты в ЗУП или производство в ERP), достаточно описать архитектурную схему и ожидаемый результат. В этом случае программист выступает как соавтор решения, используя свой опыт для оптимизации алгоритмов.
Посмотрим на практические выводы. Выбор уровня детализации зависит от квалификации команды и сложности системы:
Помните: ТЗ — это не способ «нагрузить» аналитика, а инструмент управления качеством и скоростью разработки в долгосрочной перспективе.