Права доступа и RLS для маркировки в 1С: 6 шагов

📅 Опубликовано 18 июля 2026 г.
Коротко: Настройка прав доступа и RLS для маркировки в 1С за 6 шагов включает создание отдельных ролей для операторов маркировки, ограничение видимости складов через RLS, защиту справочника GTIN от изменений, включение журнала регистрации для аудита операций с кодами DataMatrix и настройку автоматических бэкапов базы. На каждый шаг закладывайте время работы специалиста — полный цикл занимает несколько рабочих дней.
- Отдельная роль для оператора маркировки снижает риск случайного изменения GTIN
- RLS по складам ограничивает видимость кодов Честного знака только для ответственного подразделения
- Журнал регистрации фиксирует кто, когда и какой код вывел из оборота — критично при проверках
- Бэкап базы раз в сутки спасает от потери привязки кодов маркировки к остаткам
- Полная настройка занимает 2-3 дня, экономит от 50 000 ₽ штрафов за нарушения оборота кодов
Шаг 1-2: Роль оператора маркировки и защита GTIN
Начните с создания отдельной роли для оператора. Не давайте ему полных прав на конфигурацию — только те объекты, что нужны для работы с кодами. В режиме конфигуратора создайте роль ОператорМаркировки и настройте права на уровне объектов метаданных.
Программно проверить, обладает ли пользователь нужной ролью, можно так:
// Проверка наличия роли перед выполнением операции с кодами
Процедура ПроверитьПраваОператора()
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Если НЕ ТекущийПользователь.Роли.Содержит(Метаданные.Роли.ОператорМаркировки) Тогда
ВызватьИсключение "У пользователя нет прав на работу с кодами маркировки!";
КонецЕсли;
КонецПроцедуры
Для защиты справочника GTIN от случайных изменений используйте подписку на событие ПередЗаписью. Так вы запретите редактирование ключевых реквизитов всем, кроме администратора:
// Обработчик подписки на событие ПередЗаписью справочника GTIN
Процедура ЗапретИзмененияGTIN(Источник, Отказ) Экспорт
// Разрешаем запись только при наличии полных прав
Если НЕ Источник.ЭтоНовый() И НЕ ПравоДоступа("Администрирование", Метаданные) Тогда
СтарыеДанные = Источник.Ссылка.ПолучитьОбъект();
Если СтарыеДанные.Код <> Источник.Код Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Изменение GTIN запрещено. Обратитесь к администратору.";
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Шаг 3-4: Настройка RLS по складам
Row Level Security (RLS) — механизм ограничения записей на уровне строк. Для маркировки это значит, что оператор одного подразделения не увидит коды чужого склада. Настройка выполняется в шаблоне ограничений роли.
Классический шаблон RLS для документа приёмки маркированной продукции выглядит так:
ГДЕ Склад В
(ВЫБРАТЬ
| НастройкиДоступаСклады.Склад
|ИЗ
| РегистрСведений.НастройкиДоступаСклады КАК НастройкиДоступаСклады
|ГДЕ
| НастройкиДоступаСклады.Пользователь = &ТекущийПользователь)
Чтобы наполнить регистр сведений соответствиями «пользователь — склад», используйте запрос при первичной настройке. Ниже пример выборки складов, доступных текущему сотруднику:
// Получение списка доступных складов для оператора
Функция ПолучитьДоступныеСклады(Пользователь)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиДоступаСклады.Склад КАК Склад
|ИЗ
| РегистрСведений.НастройкиДоступаСклады КАК НастройкиДоступаСклады
|ГДЕ
| НастройкиДоступаСклады.Пользователь = &Пользователь
|
|УПОРЯДОЧИТЬ ПО
| Склад.Наименование";
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Результат = Запрос.Выполнить().Выгрузить();
Возврат Результат;
КонецФункции
Важно: после включения RLS обязательно протестируйте работу под каждой ролью. Ошибка в шаблоне может либо полностью заблокировать доступ, либо, наоборот, открыть чужие коды. Проверяйте выборку остатков маркированной продукции — оператор должен видеть только свой склад.
Шаг 5-6: Журнал регистрации и бэкапы
Журнал регистрации — ваш основной инструмент при проверках оператором «Честного знака» или налоговой. Он фиксирует каждую операцию вывода кода из оборота. Убедитесь, что в настройках журнала включён уровень регистрации «Информация» для нужных событий.
Программно записать событие в журнал регистрации при выводе кода из оборота можно так:
// Фиксация операции с кодом маркировки в журнале регистрации
Процедура ЗафиксироватьВыводИзОборота(КодМаркировки, Документ)
ТекстСобытия = "Код " + КодМаркировки
+ " выведен из оборота документом " + Строка(Документ);
ЗаписьЖурналаРегистрации(
"Маркировка.ВыводИзОборота",
УровеньЖурналаРегистрации.Информация,
Метаданные.Документы.ВыводИзОборотаМаркировки,
Документ,
ТекстСобытия);
КонецПроцедуры
Для анализа журнала за период применяйте выгрузку через метод ВыгрузитьЖурналРегистрации. Это удобно для формирования отчёта по операциям с кодами:
// Выгрузка событий маркировки за период
Функция ПолучитьСобытияМаркировки(ДатаНачала, ДатаОкончания)
ОтборСобытий = Новый Структура;
ОтборСобытий.Вставить("События", "Маркировка.ВыводИзОборота");
ОтборСобытий.Вставить("ДатаНачала", ДатаНачала);
ОтборСобытий.Вставить("ДатаОкончания", ДатаОкончания);
ТаблицаСобытий = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(ТаблицаСобытий, ОтборСобытий);
Возврат ТаблицаСобытий;
КонецФункции
Последний шаг — автоматические бэкапы. Потеря базы означает потерю привязки кодов DataMatrix к остаткам, а восстановить это вручную практически невозможно. Настройте регламентное задание для выгрузки данных раз в сутки в нерабочее время.
// Регламентное задание резервного копирования (для файловой базы)
Процедура ВыполнитьРезервноеКопирование() Экспорт
ИмяФайла = "backup_"
+ Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss")
+ ".dt";
ПутьКопии = "D:\Backups\" + ИмяФайла;
// Логируем начало операции
ЗаписьЖурналаРегистрации(
"Обслуживание.РезервноеКопирование",
УровеньЖурналаРегистрации.Информация,
,
,
"Запуск копирования в " + ПутьКопии);
КонецПроцедуры
Совет: для клиент-серверных баз PostgreSQL или MS SQL используйте штатные средства СУБД (pg_dump или планы обслуживания SQL Server), а не выгрузку в .dt — это надёжнее и не требует монопольного доступа.
Типичные ошибки при настройке
- Забыли про роль администратора в RLS. Полные права должны обходить ограничения, иначе даже вы не увидите все коды.
- Не протестировали под каждым пользователем. Всегда проверяйте доступ через сеанс конкретного оператора, а не под администратором.
- Отключён журнал регистрации для экономии места. При проверке отсутствие логов трактуется не в вашу пользу.
- Бэкап не проверяется на восстановление. Копия, которую нельзя развернуть, бесполезна — тестируйте восстановление хотя бы раз в месяц.
Шаг 5. Настройка журнала регистрации для операций с кодами маркировки
Журнал регистрации — ваш главный аргумент при спорах с контролирующими органами. По нему видно, кто, когда и с каким кодом DataMatrix совершал действия: ввод в оборот, вывод, перемаркировку или списание. Чтобы журнал был информативным, недостаточно оставить настройки по умолчанию — нужно явно указать, какие события фиксировать, и добавить собственные записи в ключевых точках обработки маркированной продукции.
Настройте регистрацию событий доступа к данным и добавляйте записи вручную при обработке кодов. Ниже — пример процедуры, которая логирует ввод кода в оборот с указанием пользователя, склада и самого кода маркировки. Уровень «Информация» подходит для штатных операций, а для нарушений (например, попытки правки GTIN) используйте «Предупреждение».
Процедура ЗарегистрироватьВводВОборот(КодМаркировки, Склад) Экспорт
ТекстСобытия = "Пользователь: " + ИмяПользователя()
+ "; Склад: " + Строка(Склад)
+ "; Код DataMatrix: " + КодМаркировки;
ЗаписьЖурналаРегистрации(
"Маркировка.ВводВОборот",
УровеньЖурналаРегистрации.Информация,
,
,
ТекстСобытия);
КонецПроцедуры
Важно: в настройках информационной базы задайте разделение хранения журнала по периодам (например, помесячно) и установите достаточный срок хранения. Для маркировки регуляторы могут запросить историю операций за длительный период, поэтому не удаляйте старые логи без архивирования.
Шаг 6. Регламент резервного копирования базы с данными маркировки
Потеря базы с кодами маркировки означает не только простой в работе, но и риск рассинхронизации с системой «Честный ЗНАК». Восстановить корректное состояние оборота кодов вручную практически невозможно, поэтому регулярный бэкап — обязательный элемент защиты. Настройте автоматическое копирование по расписанию через регламентное задание, чтобы человеческий фактор не влиял на сохранность данных.
Создайте регламентное задание, которое запускает выгрузку в нерабочее время и логирует результат. Обязательно фиксируйте не только запуск, но и завершение операции — так вы будете уверены, что копия создана полностью, а не оборвалась на середине.
Процедура ВыполнитьРезервноеКопирование() Экспорт
Попытка
ИмяФайла = "Marking_" + Формат(ТекущаяДата(), "ДФ=yyyyMMdd_HHmmss")
+ ".dt";
ПутьКопии = "D:\Backups\" + ИмяФайла;
// ... выгрузка данных информационной базы ...
ЗаписьЖурналаРегистрации(
"Обслуживание.РезервноеКопирование",
УровеньЖурналаРегистрации.Информация,
,
,
"Копия успешно создана: " + ПутьКопии);
Исключение
ЗаписьЖурналаРегистрации(
"Обслуживание.РезервноеКопирование",
УровеньЖурналаРегистрации.Ошибка,
,
,
"Ошибка копирования: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Рекомендация: храните копии минимум в двух местах — на локальном сервере и в удалённом хранилище (облако или отдельный физический диск). Следуйте правилу «3-2-1»: три копии, на двух носителях, одна из которых вне офиса. И главное — периодически проверяйте восстановление из бэкапа на тестовом контуре, иначе вы не узнаете о повреждении копии до момента реальной аварии.
Заключение
Настройка прав доступа и RLS для маркировки — не разовая задача, а часть постоянного регламента информационной безопасности. Пройдя эти 6 шагов, вы получаете чёткое разграничение ответственности: оператор работает только со своими складами, GTIN защищён от случайных правок, а каждая операция с кодами DataMatrix фиксируется в журнале.
Полный цикл настройки занимает 2-3 рабочих дня, но окупается многократно: он снижает риск штрафов за нарушение оборота кодов (от 50 000 ₽), защищает от потери данных при сбоях и даёт прозрачную картину действий сотрудников. Начните с ролей и защиты GTIN — это база, на которую надстраиваются остальные механизмы. Регулярно пересматривайте настройки RLS при изменении структуры складов и обязательно тестируйте восстановление из бэкапа.