При выполнении процедуры закрытия месяца в программе 1С:Комплексная автоматизация 2 (или 1С:ERP) пользователи часто сталкиваются со стопорящей ошибкой на этапе расчета себестоимости. Текст ошибки обычно выглядит так: «Номенклатура [Название]: передано больше, чем требуется на [N] ед.». Ситуация кажется парадоксальной: по складу остатки верные, а система утверждает, что документов передачи оформлено в избытке.
В этой статье мы подробно разберем, почему возникает этот конфликт, проанализируем механизмы работы схемы Intercompany и научимся находить «виновные» документы с помощью технических запросов.
Для начала выясним причину возникновения такой коллизии. В современных конфигурациях на базе 1С:ERP (включая КА 2) используется механизм «Интеркампани». Он позволяет одной организации продавать товары, которые фактически принадлежат другой организации в рамках одной группы компаний.
Когда вы проводите Реализацию товаров и услуг от имени «Организации А», а товар лежит на остатках «Организации Б», система делает запись в регистр накопления Товары организаций к передаче. Это своего рода «долговая расписка»: Организация А теперь должна оформить документ Передача товаров между организациями, чтобы официально «выкупить» этот товар у Организации Б.
Ошибка «Передано больше, чем требуется» означает следующее: сумма всех оформленных документов Передача товаров превысила объем реальных продаж «чужого» товара. Например, вы продали клиенту 4 штуки, а документ передачи создали на 18 штук. Откуда берутся лишние 14? Чаще всего это происходит из-за корректировок реализации «задним числом» или удаления документов продажи без удаления созданных на их основании передач.
Прежде чем переходить к коду, рассмотрим штатные инструменты. Проанализируем ситуацию через рабочее место «Оформление передач и выкупов» (раздел «Финансовый результат и контроллинг»).
Система не может автоматически «схлопнуть» эти данные при закрытии месяца, так как документ передачи уже проведен и зафиксировал конкретную партию и стоимость.
Если визуальный осмотр не помогает, нам нужно заглянуть «под капот» программы. Проанализируем движения по регистру накопления ТоварыОрганизацийКПередаче. Выясним причину расхождений, используя запрос, который покажет отрицательные конечные остатки в разрезе регистратора.
Рассмотрим пример запроса для консоли запросов:
ВЫБРАТЬ
ТоварыОрганизацийКПередачеОстаткиИОбороты.Период КАК Период,
ТоварыОрганизацийКПередачеОстаткиИОбороты.Регистратор КАК Регистратор,
ТоварыОрганизацийКПередачеОстаткиИОбороты.ОрганизацияВладелец КАК ОрганизацияВладелец,
ТоварыОрганизацийКПередачеОстаткиИОбороты.ВидЗапасовПродавца КАК ВидЗапасовПродавца,
ТоварыОрганизацийКПередачеОстаткиИОбороты.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
ТоварыОрганизацийКПередачеОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыОрганизацийКПередаче.ОстаткиИОбороты(&НачалоПериода, &ОкончаниеПериода, Регистратор, , ) КАК ТоварыОрганизацийКПередачеОстаткиИОбороты
ГДЕ
ТоварыОрганизацийКПередачеОстаткиИОбороты.КоличествоКонечныйОстаток < 0
УПОРЯДОЧИТЬ ПО
Регистратор
Этот запрос выведет список документов, после которых остаток по передачам «ушел в минус». Это те самые документы, которые нужно перепроверить или перезаполнить.
Иногда проблема кроется глубже — в неверных Видах запасов или ошибках партионного учета. В таком случае нам поможет комплексный запрос, который сопоставляет данные регистра Себестоимость товаров, Товары организаций к передаче и фактические движения.
Посмотрим на пример логики, которую можно использовать для локализации ошибки (фрагмент запроса):
ВЫБРАТЬ
"ЛишниеПередачи" КАК ВидПроверки,
Таб.ОрганизацияПолучатель,
Таб.ОрганизацияПродавец,
АналитикаНоменклатуры.Номенклатура,
-СУММА(Таб.Количество) КАК ОшибкаКоличества
ИЗ
(ВЫБРАТЬ
ПроданныеТовары.ОрганизацияВладелец КАК ОрганизацияПродавец,
ВидыЗапасов.Организация КАК ОрганизацияПолучатель,
ПроданныеТовары.АналитикаУчетаНоменклатуры,
СУММА(ПроданныеТовары.КоличествоОстаток) КАК Количество
ИЗ
РегистрНакопления.ТоварыОрганизацийКПередаче.Остатки(&ГраницаКонецПериода) КАК ПроданныеТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВидыЗапасов КАК ВидыЗапасов
ПО ПроданныеТовары.ВидЗапасовПродавца = ВидыЗапасов.Ссылка
СГРУППИРОВАТЬ ПО
ПроданныеТовары.ОрганизацияВладелец, ВидыЗапасов.Организация, ПроданныеТовары.АналитикаУчетаНоменклатуры) КАК Таб
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК АналитикаНоменклатуры
ПО Таб.АналитикаУчетаНоменклатуры = АналитикаНоменклатуры.Ссылка
ГДЕ
Таб.Количество < 0
СГРУППИРОВАТЬ ПО
Таб.ОрганизацияПолучатель, Таб.ОрганизацияПродавец, АналитикаНоменклатуры.Номенклатура
Данный запрос позволяет выявить ситуации, когда по регистру ТоварыОрганизацийКПередаче числится излишек переданного товара, который не подкреплен реализациями.
После того как мы выяснили причину и нашли проблемные документы, выберем один из способов исправления:
Передача товаров между организациями, перепроведите исходную Реализацию товаров и услуг и заново сформируйте передачу через помощник.Корректировка регистров. Нам нужно скорректировать регистр Товары организаций к передаче, чтобы убрать отрицательный остаток. Однако будьте осторожны: это может повлиять на расчет себестоимости в будущем.Проанализируем ситуацию с версиями программы. В версиях КА 2.2.1.хх механизм распределения видов запасов был подвержен программным ошибкам. Если вы используете старую версию, рекомендуется обновиться, так как алгоритмы закрытия месяца в более свежих релизах работают стабильнее.
Подведем итог: ошибка «Передано больше, чем требуется» — это всегда следствие рассинхронизации между Реализацией (потребностью в передаче) и самим документом Передача товаров. Используйте консоль запросов для поиска отрицательных остатков в регистре ТоварыОрганизацийКПередаче и всегда проверяйте Виды запасов в первичных документах.