Как разрешить редактирование единицы измерения в документе "Пересчет товаров" в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Часто при работе с конфигурациями на базе 1С:ERP, Комплексная автоматизация (КА) или Управление торговлей (УТ 11) возникает нестандартная задача: в документе ПересчетТоваров необходимо сделать колонку Ед. изм. (или Упаковка) доступной для редактирования. Разберем типичную ситуацию: вы открываете форму, проверяете свойства элементов, отключаете ТолькоПросмотр, проверяете условное оформление и даже ищете программные блокировки в модулях вроде ЗапретРедактированияРеквизитовОбъектов, но колонка упорно остается неактивной.

Давайте подробно проанализируем ситуацию, выясним причину такого поведения системы и рассмотрим рабочие способы решения этой задачи, начиная от типовых настроек нормативно-справочной информации (НСИ) и заканчивая программными доработками.

Почему 1С жестко блокирует единицу измерения?

Прежде чем пытаться «взломать» форму, посмотрим на архитектуру конфигурации. Система типовыми средствами защищает целостность складского учета. Если склад обычный (не адресный), пересчет ведется строго в базовых единицах хранения. Это сделано намеренно, чтобы избежать ошибок округления и путаницы в складских регистрах при инвентаризации.

Однако, когда включается полноценное адресное (ячеистое) хранение, система начинает оперировать сущностью УпаковкиТоварныхМест. При таком сценарии 1С изначально закладывает возможность того, что в конкретной ячейке может лежать товар в разных упаковках (штуках, коробках, паллетах). Именно поэтому система разрешает их менять в документе пересчета и корректно фиксирует расхождения между учетным и фактическим количеством конкретных упаковок.

Таким образом, доступность колонки Упаковка напрямую привязана к функциональной опции ИспользоватьАдресноеХранение.

Типовое решение: Настройка адресного хранения и ордерной схемы

Рассмотрим по шагам, как легально включить возможность редактирования единиц измерения через пользовательские настройки, не прибегая к программированию.

  1. Проверка общих настроек НСИ. Перейдите в раздел «НСИ и администрирование». Убедитесь, что у вас включена функциональная опция использования нескольких видов упаковок (Наборы упаковок). Без этой базовой настройки, даже если реквизит станет доступен для редактирования, выпадающий список выбора других единиц измерения останется пустым.
  2. Настройка карточки склада. Откройте справочник СкладыИМагазины и выберите нужный склад. Для того чтобы функционал упаковок заработал, склад должен быть ордерным. На вкладке «Ордерная схема и структура» необходимо включить использование ордерной схемы при отражении излишков, недостач и порчи.
  3. Включение ячеек. На той же вкладке найдите настройку использования ячеек. Ее необходимо перевести в статус Использовать для хранения остатков номенклатуры (настройка со статусом «Справочно» не снимет блокировку).

Проанализируем ситуацию, когда на складе выбран вариант Использование определяется в помещениях. В этом случае логика работы переносится на уровень подчиненного справочника Помещения. Чтобы колонка стала доступной в пересчете, вам необходимо:

  1. Открыть карточку конкретного помещения, привязанного к складу.
  2. В карточке помещения установить настройку ячеек в значение Использовать для хранения остатков номенклатуры.
  3. При создании документа ПересчетТоваров обязательно указывать не только склад, но и это помещение.

Последствия включения ордерной схемы

Прежде чем применять описанный выше метод, давайте разберем последствия. Снятие запрета на редактирование единиц измерения через включение ордерного склада может существенно изменить бизнес-процессы компании. Если вы включаете ордерную схему и работу с ячейками только ради упаковок, учтите, что процесс инвентаризации усложнится:

Программный обход с помощью расширений (Нетиповой вариант)

Рассмотрим сценарий, когда полноценное адресное хранение на складе внедрять не планируется (так как это сильно усложнит весь документооборот), но упаковки менять критически необходимо по требованию заказчика. В этом случае программисты обычно используют механизм расширений.

Одной разблокировки элемента формы недостаточно. Если вы просто обойдете проверку видимости и доступности, 1С не пересчитает базовое количество автоматически, что приведет к разъезжанию регистров. В расширении необходимо перехватывать логику пересчета.

Разберем примерный алгоритм действий разработчика:

  1. Перехватить обработчики формы документа ПересчетТоваров, где устанавливается доступность колонки Упаковка, и принудительно установить Доступность = Истина.
  2. Написать обработчик события при изменении упаковки в строке табличной части.
  3. Вызвать типовые методы пересчета, например из общего модуля ОбработкаТабличнойЧастиКлиентСервер.

Пример программного подхода к пересчету количества при смене упаковки можно представить в виде следующей логики (псевдокод для расширения):


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

В этом случае система будет умножать введенное количество на коэффициент выбранной упаковки (отношение выбранной упаковки к базовой единице измерения номенклатуры) и правильно записывать результат в скрытые или служебные колонки базового количества документа.

Подведем итог: если вам потребовалось редактировать колонку с единицей измерения в инвентаризации, оптимальным и архитектурно правильным решением будет настройка адресного хранения (использование ячеек для хранения остатков). Если же изменение бизнес-процессов склада невозможно, задачу придется решать через расширение конфигурации, уделяя особое внимание математике пересчета коэффициентов, чтобы не нарушить целостность количественного учета в регистрах 1С.

← На главную