При организации хранения нормативных документов, таких как приказы, инструкции и политики, в системе 1С, часто возникает вопрос о выборе наиболее подходящего механизма. Рассмотрим различные варианты и их комбинации, а также разберем, как реализовать дополнительные требования, такие как версионирование, подтверждение ознакомления и классификация документов.
Первоначальный выбор объекта метаданных критически важен, так как он определяет базовые возможности системы по работе с нашими нормативными документами. Рассмотрим каждый из вариантов и выясним, когда какой из них предпочтительнее.
Хранение в Справочнике (каждый документ – отдельный элемент)
Если мы выбираем подход, при котором каждый приказ, инструкция или политика становится отдельным элементом справочника, мы получаем следующие преимущества и особенности:
Когда это подходит: Этот вариант удобен, когда каждый нормативный документ воспринимается как самостоятельный, уникальный объект, на который нужно ссылаться. Например, для списка всех действующих инструкций или приказов.
Хранение в Регистре сведений
Рассмотрим возможность хранения информации о нормативных документах в регистре сведений. Этот вариант особенно актуален, если мы хотим хранить данные, которые часто меняются во времени или зависят от различных факторов.
Когда это подходит: Регистры сведений полезны, когда акцент делается на изменение данных во времени и их историю, а не на сам объект документа как таковой. Например, для хранения актуальных версий документов или истории их изменения. Часто регистры используются в связке с документами.
Пример структуры регистра сведений:
РегистрСведений.НормативныеДокументыСведения (Периодический, Зависимый/Независимый)
Измерения:
ДокументСсылка (Тип: СправочникСсылка.НормативныеДокументы)
ДатаРедакции (Тип: Дата)
Ресурсы:
НомерДокумента (Тип: Строка)
Наименование (Тип: Строка)
СодержаниеТекст (Тип: Строка, НеограниченнойДлины)
Ответственный (Тип: СправочникСсылка.Пользователи)
Статус (Тип: ПеречислениеСсылка.СтатусыДокументов)
Хранение с помощью Документа (и, возможно, Регистр сведений)
Использование документов в 1С предполагает фиксацию некоего события. Создание, утверждение, изменение или отмена нормативного документа – это все события, которые могут быть отражены соответствующими документами.
Когда это подходит: Этот вариант – один из самых гибких и мощных. Он позволяет нам не только хранить информацию о документах, но и управлять их жизненным циклом через события (документы) и отслеживать историю (регистры).
Пример:
НормативныеДокументы для хранения списка всех документов (Приказ №1, Инструкция по ОТ и т.п.). Элементы этого справочника являются уникальными "шапками" документов.УтверждениеРедакцииНормативногоДокумента. В этом документе мы указываем ссылку на элемент справочника НормативныеДокументы, а также прикрепляем саму редакцию (например, как текст в реквизите или как присоединенный файл).УтверждениеРедакцииНормативногоДокумента, он делает движения в регистре сведений АктуальныеРедакцииНормативныхДокументов, записывая, какая редакция документа является актуальной на дату утверждения, и сохраняет метаданные о ней (номер, дата, текст, ответственный).После выбора основного механизма хранения, давайте разберем, как мы можем реализовать дополнительные требования, озвученные в задаче.
Потребность в хранении истории изменений нормативных документов – это стандартное требование. В 1С существует встроенный механизм версионирования, который значительно упрощает эту задачу.
Встроенный механизм "История данных" (Версионирование)
Платформа 1С предлагает готовый инструмент для версионирования объектов конфигурации. Этот механизм позволяет нам хранить все изменения объекта, упорядоченные по шкале времени.
Как это использовать: Если мы используем справочник или документ для хранения наших нормативных документов, просто активируем для них версионирование. Платформа сама будет отслеживать и сохранять изменения. Это самый простой и эффективный способ получить историю версий без дополнительного программирования.
Ручное версионирование через регистры сведений
Если требуется более тонкий контроль над версиями или специфическая логика, можно реализовать версионирование вручную через регистры сведений, как было описано выше в пункте про связку "Документ + Регистр сведений".
Например, при изменении документа, мы создаем новый документ УтверждениеНовойРедакции, который фиксирует новую редакцию и дату ее вступления в силу, а затем записывает новую запись в периодический регистр сведений.
Требование о подтверждении ознакомления с документом, включая хранение даты, сотрудника и возможность запроса, является ключевым для нормативных документов.
Использование бизнес-процессов
Наиболее мощный и гибкий способ реализации ознакомления – это использование бизнес-процессов 1С. В типовых конфигурациях, таких как 1С:Документооборот, уже реализован готовый механизм "Ознакомление".
РегистрСведений.ОзнакомлениеСДокументами) или быть частью механизма бизнес-процессов.1С:Документооборот такие отчеты доступны, например, в карточке документа на закладке "Обработка - Результаты обработки".Пример архитектуры:
// Предположим, что у нас есть Справочник.НормативныеДокументы
// и Документ.УтверждениеРедакцииНормативногоДокумента.
// Регистр сведений для хранения информации об ознакомлении
РегистрСведений.ОзнакомлениеСНормативнымиДокументами (Независимый, Непериодический)
Измерения:
ДокументОснование (Тип: ДокументСсылка.УтверждениеРедакцииНормативногоДокумента)
Сотрудник (Тип: СправочникСсылка.Сотрудники)
Ресурсы:
ДатаОзнакомления (Тип: Дата)
Подтверждено (Тип: Булево)
Комментарий (Тип: Строка)
Реквизиты:
ДатаЗапросаНаОзнакомление (Тип: Дата)
// Кнопка на форме документа/справочника "Запросить ознакомление"
// Действия при нажатии кнопки:
// 1. Создание задачи бизнес-процесса "Ознакомление" для выбранных сотрудников.
// 2. В задаче сотрудник нажимает "Ознакомлен".
// 3. Обработчик выполнения задачи записывает данные в РегистрСведений.ОзнакомлениеСНормативнымиДокументами.
// Пример кода для записи в регистр при подтверждении ознакомления:
Процедура ЗаписатьФактОзнакомления(ДокументОснование, Сотрудник, Комментарий)
НаборЗаписей = РегистрыСведений.ОзнакомлениеСНормативнымиДокументами.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ДокументОснование.Установить(ДокументОснование);
НаборЗаписей.Отбор.Сотрудник.Установить(Сотрудник);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
Запись = НаборЗаписей.Добавить();
Иначе
Запись = НаборЗаписей[0];
КонецЕсли;
Запись.ДокументОснование = ДокументОснование;
Запись.Сотрудник = Сотрудник;
Запись.ДатаОзнакомления = ТекущаяДата();
Запись.Подтверждено = Истина;
Запись.Комментарий = Комментарий;
НаборЗаписей.Записать();
КонецПроцедуры
Для удобства работы с нормативными документами и их дальнейшей обработки важно иметь возможность их классифицировать, например, на внутренние и внешние.
Использование реквизитов или видов документов
Самый простой способ – добавить реквизит ВидДокумента (тип Перечисление или Справочник) в наш справочник НормативныеДокументы или документ УтверждениеРедакцииНормативногоДокумента.
// В Справочник.НормативныеДокументы добавляем реквизит:
Реквизит: ВидДокумента (Тип: ПеречислениеСсылка.ВидыНормативныхДокументов)
// Перечисление.ВидыНормативныхДокументов может содержать значения:
// - ВнутреннийПриказ
// - ВнутренняяИнструкция
// - ВнешнееПисьмо
// - НормативныйАкт
Если типов документов много и для каждого требуются свои настройки (например, срок исполнения, набор дополнительных реквизитов), то лучше создать отдельный справочник ВидыНормативныхДокументов. Каждый элемент этого справочника будет содержать название вида (Приказ, Инструкция, Политика) и дополнительные свойства, присущие этому виду. В этом случае, реквизит ВидДокумента будет иметь тип СправочникСсылка.ВидыНормативныхДокументов.
Делопроизводственная практика предлагает более детальную классификацию внутренних документов на категории: организационно-правовые, распорядительные, информационно-справочные, договоры, документы по основной деятельности, финансово-бухгалтерские документы, документация по трудовым отношениям, личные документы. Создание групп в справочнике ВидыНормативныхДокументов или использование иерархии элементов поможет упорядочить хранение и обработку.
При проектировании системы хранения важно помнить об общих принципах архитектуры 1С.
Выбор типа объекта метаданных
Хранение самих файлов
Важно различать хранение метаданных о документе (номер, дата, ответственный, статус) и хранение самого электронного файла документа (например, .doc, .pdf). По своему опыту, рекомендуется хранить сами файлы не в базе данных 1С, а в директории на сервере или в специализированном файловом хранилище.
Поиск и отчетность
Для эффективного поиска документов, отслеживания их статуса и изменений, мы можем использовать стандартные инструменты 1С: "Общий журнал документов" (если используем документы), "История изменений документа/справочника" (для версионирования) и, конечно же, строить собственные отчеты на базе регистров сведений, где аккумулируются все необходимые данные.
Таким образом, для хранения нормативных документов в 1С наиболее универсальным и мощным решением часто является комбинация Справочника (для самих документов как объектов), Документов (для фиксации событий жизненного цикла, например, утверждения редакций) и Регистров сведений (для хранения истории изменений, актуальных версий и фактов ознакомления). Дополнительно используем встроенное версионирование и механизмы БСП для работы с присоединенными файлами и бизнес-процессами.