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