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