Ведение адресного склада с ордерной схемой в конфигурации 1С:Управление торговлей 11 требует жесткой синхронизации между физическими складскими операциями и отражением документов в информационной базе. Когда на складе внедрена автоматическая обработка сотен заказов в день (например, из EDI-систем), любое ручное вмешательство, отмена проведения или параллельная обработка данных могут привести к появлению минусов в складских ячейках (в регистре накопления Товары в ячейках).
Разберем детально, почему возникают отрицательные остатки, какими стандартными документами их правильно выравнивать и какие технические и организационные меры необходимо принять для защиты системы.
Проанализируем ключевые факторы, из-за которых в ячейках появляются отрицательные показатели:
Расходный ордер на товары или Отбор (размещение) товаров после того, как по ячейке уже зафиксированы последующие перемещения или списания, баланс регистра становится отрицательным.БлокировкаДанных оба документа успешно запишутся, уведя итоговый остаток в минус.Для исправления накопленных ошибок необходимо привести учетные данные к фактическому состоянию. В типовом функционале адресного склада инвентаризация выполняется через специализированный механизм пересчета.
Разберем процедуру выравнивания по шагам:
Пересчет товаров с указанием конкретного склада, помещения и проблемных ячеек (или секций склада).Товары в ячейках.Пересчет товаров в статус Выполнен.Ордер на отражение недостач товаров (при нехватке) или Ордер на отражение излишков товаров (при выявлении неучтенного товара).Важно: Именно указанные складские ордера корректируют регистр Товары в ячейках. После этого финансовые документы (списания и оприходования) оформляются отдельно в рамках регламентной инвентаризации склада, не нарушая работу адресного пространства.
Рассмотрим, как должен строиться процесс, если сборщик физически не обнаружил заявленное количество товара в ячейке:
Отбор (размещение) товаров переводится оператором в статус Выполнен с ошибками.Чтобы исключить влияние человеческого фактора и программных сбоев, реализуем комплекс технических доработок.
Во-первых, закроем редактирование документов складского контура задним числом. Для документов со статусами Отгружен (в расходных ордерах) и Выполнен без ошибок (в отборах) необходимо программно блокировать интерактивную отмену проведения и перезапись.
Во-вторых, при программном создании документов цепочки из EDI внедряем управляемые транзакционные блокировки. Посмотрим на пример установки блокировки перед распределением ячеек:
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ТоварыВЯчейках");
ЭлементБлокировки.Область = "Остатки";
ЭлементБлокировки.УстановитьЗначение("СкладскаяЯчейка", СсылкаНаЯчейку);
ЭлементБлокировки.УстановитьЗначение("Номенклатура", СсылкаНаНоменклатуру);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
НачатьТранзакцию();
Попытка
Блокировка.Заблокировать();
// Проверка свободного остатка с учетом резервов
// Формирование и проведение документа "Отбор (размещение) товаров"
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
В-третьих, если требуется оперативно выявлять пользователей, редактирующих документы задним числом, создадим отдельный регистр сведений для аудита (своеобразный журнал изменений складских документов). В процедуре ПриЗаписи или в подписке на событие фиксируем автора, документ и параметры модификации:
Процедура ЗафиксироватьИзменениеСкладскогоДокумента(Источник, Отказ) Экспорт
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
ЗаписьЖурнала = РегистрыСведений.АудитСкладскихОпераций.СоздатьМенеджерЗаписи();
ЗаписьЖурнала.Период = ТекущаяДатаСеанса();
ЗаписьЖурнала.Документ = Источник.Ссылка;
ЗаписьЖурнала.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
ЗаписьЖурнала.Событие = ?(Источник.Проведен, "Проведение/Перепроведение", "Отмена проведения");
ЗаписьЖурнала.Записать();
КонецПроцедуры
Комбинация организационных правил (запрет самоуправства сборщиков, использование статуса «Выполнен с ошибками»), регулярных точечных пересчетов ячеек и блокировки изменения документов закрытых периодов позволяет полностью ликвидировать отрицательные остатки в ячейках и обеспечить стабильную работу адресного склада.