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