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