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