Нужно ли детально прописывать каждое поле в ТЗ для 1С-программиста?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

В среде 1С-разработки часто возникает профессиональная дискуссия: должен ли программист сам догадываться, откуда брать данные, или аналитик обязан разжевывать задачу до уровня имен реквизитов? Ситуация, когда для «примитивной» печатной формы приходится описывать источники каждого поля, может вызвать шок у опытных специалистов старой закалки. Однако современные реалии крупных внедрений диктуют свои правила. Разберем подробно, почему так происходит, и как найти баланс в подготовке технической документации.

Эволюция ролей: от универсала к узкому специалисту

Рассмотрим, как изменился рынок за последние годы. Раньше 1С-специалист был «и швец, и жнец»: он сам общался с бухгалтером, сам проектировал архитектуру и сам писал код. В небольших компаниях такая схема работает до сих пор. Но в крупных проектах (уровня 1С:ERP или Комплексная автоматизация) произошло четкое разделение ролей:

  1. Бизнес-аналитик: Формулирует бизнес-цели и функциональные требования.
  2. Архитектор: Проектирует структуру метаданных и взаимосвязи объектов.
  3. Программист (кодер): Реализует логику строго по заданию.

Проанализируем ситуацию: если программист получает задачу «сделать печатную форму», он может потратить часы на изучение того, как в конкретной (возможно, кастомизированной) базе связаны Партнеры и Контрагенты. Если аналитик уже проделал эту работу, эффективнее зафиксировать источники данных в ТЗ. Это превращает программиста в «черный ящик», который выдает предсказуемый результат за минимальное время.

Сложность современных конфигураций и БСП

Почему «очевидные» вещи перестали быть таковыми? Разберем на примере типовой ERP. Посмотрим на обычное поле «Контрагент». В системе могут сосуществовать справочники Партнеры и Контрагенты. Данные для печати могут извлекаться:

Если в ТЗ не указано конкретное место, программист может выбрать наиболее простой для него путь, который окажется неверным с точки зрения методологии учета. Выясним причину избыточности: детальное ТЗ — это не недоверие к интеллекту разработчика, а способ избежать «самодеятельности», которая может «отвалиться» при следующем обновлении конфигурации.

Проблема интерпретации: «Я думал, вы хотели иначе»

Рассмотрим психологический аспект. Часто отсутствие деталей в ТЗ приводит к конфликтам. Программист выполняет задачу, исходя из своего понимания, а заказчик (или аналитик) говорит: «Я совсем не это имел в виду». Детальное описание полей — это страховка. Если в ТЗ написано Область.Параметры.Цена = СтрокаТовара.Цена, а нужно было выводить цену с учетом скидки, то ответственность несет составитель ТЗ. Если же описание было общим («вывести цену»), виноватым часто делают программиста.

Технические стандарты написания ТЗ

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

1. Источники данных (Query Data)

Вместо фразы «возьми из документа», профессиональное ТЗ содержит указание конкретных путей. Например, для вывода реквизитов контрагента в печатную форму СчетНаОплату:


// Источник данных: Документ.ЗаказКлиента
// Реквизит "Контрагент" -> Справочник.Контрагенты
// Требуется получить: 
// 1. НаименованиеПолное (для шапки)
// 2. ИНН/КПП (через функцию БСП ФормированиеПечатныхФорм.СведенияОЮрФизЛице)

2. Использование типовых механизмов

Современная разработка в 1С — это работа с объектами ОбщиеМодули. В ТЗ важно указывать, должен ли программист использовать стандартные функции БСП. Рассмотрим пример:


// Вместо прямого обращения к реквизитам:
Наименование = Объект.Контрагент.Наименование; 

// Рекомендуется использовать механизмы БСП для производительности:
ЗначенияРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Контрагент, "Наименование, ИНН, КПП");

Плюсы и минусы гипердетализации

Преимущества подробного ТЗ:

Недостатки и риски:

Когда можно не детализировать?

Выясним ситуации, когда излишние подробности вредят. Если вы работаете с Senior-разработчиком, который отлично знает предметную область (например, расчет зарплаты в ЗУП или производство в ERP), достаточно описать архитектурную схему и ожидаемый результат. В этом случае программист выступает как соавтор решения, используя свой опыт для оптимизации алгоритмов.

Итоговые рекомендации

Посмотрим на практические выводы. Выбор уровня детализации зависит от квалификации команды и сложности системы:

  1. Для типовых конфигураций на поддержке (БП, УТ) и при наличии опытного прогера — пишите функциональное задание (что сделать, а не как).
  2. Для ERP-систем и при работе с аутсорсом или джунами — пишите детальный технический проект с указанием всех реквизитов и методов.
  3. Всегда фиксируйте неочевидные вещи: формулы расчета сумм (с НДС или без), выбор конкретного типа адреса (фактический/юридический) и правила работы с незаполненными данными.

Помните: ТЗ — это не способ «нагрузить» аналитика, а инструмент управления качеством и скоростью разработки в долгосрочной перспективе.

← На главную