Новая реализация механизма Интеркампани появилась в типовых конфигурациях УТ 11.4, КА 2.4, ЕРП 2.4 в начале 2018 года. Теория и общие принципы ее реализации можно посмотреть в этой статье.
Но теория – есть теория, на практике обычно получается не все также радужно и красиво. Вот, довелось проверить работу данного механизма на реальной задаче по исправлению отрицательных остатков по организациям. Пришлось покопаться в модулях, кое-что исправить и доработать.
Центральным элементом подсистемы Интеркампани, является механизм формирования резервов (создание записей в регистре накопления «Резервы товаров организаций»). И главное, что вводит в ступор, это не обычное использование этого регистра. Нельзя, как все мы привыкли, отменить проведение документов и начать все заново. Любые действия, как проведение, так и отмена проведения ведут к расчетам результирующих резервов, к тому же используются данные регистра до начала выполнения этих действия. Это не удобно и не очевидно. Требуется вспомогательные обработки для принудительного удаления записей регистра, отслеживание состояния регистра и прочие ухищрения.
Ниже, привожу описание двух способов исправления отрицательных остатков, с использованием подсистемы Интеркампани, и без. Доработки, которые потребовалось сделать. Общее описание процесса формирования резервов на уровне процедур общего модуля «Запасы сервер», с коротким описанием. Будет полезно, для тех, кто планирует разобраться как это все работает «внутри» или найти ошибку не потратив уйму времени на разбор что и где формируется. Сразу говорю, механизм совсем не простой, как и многие другие в современных конфигурациях, к сожалению.
Ну что же, ближе к делу…
Содержание
- Термины, используемые в статье для сокращения
- Кейс по исправлению отрицательных остатков по организациям
- Начальные условия
- Необходимый результат
- Решение поставленной задачи
- Исправление отрицательных остатков без использования механизма Интеркампани
- Исправление отрицательных остатков с использованием механизма Интеркампани
- Исправление обработки «Помощник формирования передач и выкупов товаров»
- Исправление даты анализа и контроля остатков для формирования резервов и передач товаров
- Реализация порядка организаций для подбора доступных запасов
- Исправление ошибки создания лишнего сторно
Термины, используемые в статье для сокращения
РТО – регистр накопления «Резервы товаров организаций», в котором содержатся записи о сформированных резервах.
ТО - регистр накопления «Товары организаций».
Отборы аналитик – отборы измерений, которые используются в запросах для расчета резервов и формирования записей по регистру «РТО»:
- Вид запасов
- Аналитика учета номенклатуры
- Организация
- Номер ГТД
Документы передачи – документы «Передача товаров между организациями».
Документы списания – документы, формирующие списание товаров: «Реализация товаров и услуг», «Отчет о розничных продажах», «Возврат товаров поставщику», «Перемещение товаров», «Сборка товаров», «Списание недостач товаров», «Порча товаров», «Внутреннее потребление товаров», «Пересортица товаров».
Документы поступления – документы, формирующие поступление товаров: «Приобретение товаров и услуг», «Возврат товаров от покупателей», «Перемещение товаров», «Сборка товаров», «Оприходование излишков товаров», «Пересортица товаров».
Сложный учет по видам запасов - ведется учет по ГТД, сложный учет НДС или используется продажа товаров, принятых на комиссию (виды запасов могут измениться при перепроведении документов списания).
Настройки передач – настройки возможных передач товаров между организациями «Финансовый результат и контроллинг >> См. также >> Настройки передачи товаров между организациями»
Кейс по исправлению отрицательных остатков по организациям
Учет ведется с применением большого количества организаций. Контроль остатков по организациям отключен. Произвольные поступления и списания товаров по организациям. Может применяться сложный учет по видам запасов. Количество документов списания в месяц – более 1000. Произвольным образом заполнены настройки передач. Сформировано некоторое количество документов передачи. Закрытие месяца не выполняется из-за ошибок, связанных с наличием отрицательных остатков по организациям.
Сформировать корректные передачи товаров между организациями. Закрыть период, и рассчитать себестоимость. Выполнить эти операции за каждый месяц, последовательно, с начала ведения учета.
Первое, что необходимо сделать – это удалить все существующие настройки передач и отменить проведение всех существующих документов передачи.
По ходу выполнения, можно столкнуться с проблемой, что не все документы передачи будут распроводиться. Несмотря на то, что контроль остатков по организациям отключен, некоторые документы могут выдавать ошибки следующего вида «…обнаружен лишний резерв по измерениям…». Дело в том, что если при отмене проведения документа изменяются записи в регистре «РТО», будет выполняться контроль на наличие лишних резервов по тем же отборам аналитик. Это будет происходить даже в том случае, если контроль остатков по организациям отключен.
Для решения проблемы, необходимо предварительно удалить все записей из регистра «РТО». Это можно сделать внешней обработкой, используя следующий программный код:
При удалении движений, следует обязательно установить параметр набора записей «НеПроверятьЛишнееСторно». Если параметр не будет установлен, при удалении записей будет возникать следующее сообщение «Ошибка в алгоритмах при записи … в регистр РезервыТоваровОрганизаций: образуется сторно, которое не нужно для покрытия резервов по изменениям…»:

Ошибка связана с тем, что система проверяет наличие в регистре «РТО» сторно, по которым отсутствуют сторнируемые записи по тем же отборам аналитик. Установка параметра «НеПроверятьЛишнееСторно» отменяет эту проверку. После удаления всех записей из регистра «РТО», можно отменить проведение всех существующих документов передачи.
Далее, есть несколько способов исправления отрицательных остатков, какие в каких случаях целесообразно применять, смотрите на следующей схеме:

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

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

В процессе создания документов передачи может потребоваться заполнение цен, если есть товары, на которые отсутствуют цены по указанным видам цен передачи.
Если используется сложный учет по видам запасов, после создания документов передачи для каждой организации, необходимо повторно перепроводить все документы списания с принудительным перезаполнением видов запасов. Перепроведение, так же как и до создания документов передачи, должно выполняться в два этапа.
Если все действия выполнены корректно, на первой закладке помощника список организаций-получателей должен быть пустым. Дополнительно, можно проверить данные по отчету «Остатки товаров организаций» на наличие отрицательных остатков. Если отрицательных остатков нет, можно выполнить закрытие месяца и переходить к следующему периоду.
Основной минус данного подхода - это использование видов запасов или ГТД в документах списания, которые поступили позже в течение корректируемого месяца.
Исправление отрицательных остатков с использованием механизма Интеркампани
Первое, что нужно сделать, это определиться с настройками передач. Нужно решить какая будет использоваться схема передачи: продажа или комиссия, какой тип цен будет использоваться для передачи, будут ли использоваться договоры.
Примечание. На этапе исправления остатков имеет смысл указать все возможные передачи между организациями. Для дальнейшего учета я бы посоветовал избегать перекрестных передач, если в этом нет прямой необходимости и четко выделить поставщиков и продавцов товаров. Передачу товаров от покупателя поставщику можно будет сделать при необходимости, но придется это делать вручную. Это будет дисциплинировать сотрудников.
Если требуется настроить определенный порядок организаций для подбора доступных видов запасов, смотрите здесь, как это можно сделать.
Теперь насчет необходимости отменять проведение документов.
Если не используется сложный учет по видам запасов и есть уверенность, что при перепроведении виды запасов не поменяются в документах отгрузки, можно не отменять проведение документов, а использовать выше описанную обработку для перепроведения с принудительным перезаполнением видов запасов. В данном случае, параметр «ПерезаполнитьВидыЗапасов» будет приводить к расчету резервов по документу.
Примечание. Без отмены проведения документов, для корректного формирования документов передачи, необходимо внести изменения в процедурах общего модуля «ЗапасыСервер», которые позволят формировать записи в регистр «РТО» только с учетом остатков на конец корректируемого периода. Также, это может понадобиться в любом другом случае, когда контроль остатков необходимо ограничить (по умолчанию, контроль выполняется на конец всех последующих месяцев после корректируемого периода). Подробнее о необходимых изменениях смотрите здесь.
Если перепроведение будет приводить к изменению видов запасов или ГТД, могут возникать ошибки в документах, формирующих списание и поступление. Ошибка будет возникать в том случае, если при изменении вида запасов или ГТД, по исходным значениям существует отрицательный остаток по сумме регистров «РТО» и «ТО», сформированный более поздними документами текущего месяца. Так что, для корректного формирования резервов требуется предварительная отмена проведения документов.
Перед выполнением операции необходимо отключить контроль остатков по организациям на время сеанса. Также может потребоваться временное отключение контроля остатков по регистру накопления «Обеспечение заказов». В противном случае, если присутствуют документы перемещения или сборки товаров под обособленные заказы покупателей, система не позволит отменить их проведение. Для решения проблемы, необходимо закомментировать строку «Массив.Добавить(Движения.ОбеспечениеЗаказов);» в процедуре «СформироватьСписокРегистровДляКонтроля» модулей документов: «Перемещение товаров», «Сборка товаров».
После отмены проведения документов необходимо с помощью выше описанной внешней обработки удалить все сформированные резервы и сторно резервов. Напомню, движения по регистру «РТО» формируются как при проведении, так и при отмене проведения документов.
Далее, нужно вернуть контроль остатков по организациям, который мы отключали на время сеанса.
Примечание. Вообще, необходимо иметь в виду, что для корректной работы Интеркампани НЕЛЬЗЯ отключать контроль остатков по организациям. Записи в регистре «РТО» будут создаваться в любом случае, если заполнены настройки передач. Однако, если остатков будет недостаточно, документ проведется с созданием не корректных резервов. Исправить ситуацию можно будет только принудительным удалением резервов из внешней обработки, так как любые другие действия с документом будут строиться исходя из уже существующих не корректных записей в регистре «РТО».
Далее, нужно временно отключить контроль остатков по складам, так как могут возникнуть проблемы с доступностью товаров по складам при последовательном проведении (в том случае, если в системе присутствуют заказы покупателей с установленным действием для товаров «Отгрузить»).
Выполнив все выше перечисленные действия, можно последовательно проводить документы. В случае ошибки, нужно останавливаться и разбираться. При необходимости формировать «в ручную» дополнительную передачу, или добавить новую настройку в настройки передач. Возможно, придется оприходовать какой-либо товар.
Для уменьшения количества передач товаров, можно не отменять проведение документов, которые формируют только поступление товаров. Также, в первую очередь выполнить проведение документов, которые формируют списание и поступление, а потом всех остальных. В этом случае документы списания смогут использовать виды запасов и ГТД, которые поступили позже, в течение месяца. Если это не допустимо, необходимо проводить все документы последовательно.
После корректного проведения всех документов, остается создать передачи товаров по данным регистра «РТО». Создавать документы передачи можно отдельно по каждому распоряжению из формы «Передачи к оформлению»:

Также можно использовать обработку «Помощник формирования передач и выкупов товаров». На второй закладке помощника, в данном случае, необходимо указать способ подбора отправителей - «По настройкам передачи»:

Примечание. Если документы формирующие списание и поступление проводятся отдельно, может возникнуть ситуация, когда не будут созданы документы передачи по всем существующим резервам. Это нормально, так как помощник оперирует в первую очередь наличием отрицательных остатков, а не записями в регистре «РТО». Необходимо создать недостающие передачи дополнительно.
После создания всех документов передачи можно принудительно выполнить регламентированные задание «Свертка резервов товаров организаций» и проверить содержимое регистра «РТО». Если все выше описанные операции были выполнены корректно, регистр должен быть пустым. Дальше можно выполнить закрытие месяца и переходить к следующему периоду.
После выполнения всех действий следует не забыть включить контроль остатков по складам и раскомментировать строки в модулях документов: «Перемещение товаров», «Сборка товаров».
Описание механизма формирования резервов
Следующий раздел для тех, кто хочет разобраться глубже в центральном элементе подсистемы Интеркампани. В том, каким образом происходит формирование резервов, или понять, почему система сформировала те или иные записи в регистре «РТО» при проведении, либо отмене проведения документа.
Формирование резервов происходит в два этапа:
- Первый этап – при заполнении или перезаполнении видов запасов в документах списания (выполняется перед записью документов).
- Второй этап – во время проведенения или отмене проведения документов, после записи новых движений в базу.
Соответственно, первый этап выполняется только, если требуется заполнение или перезаполнение видов запасов. При проведении документов, которые формируют только списание товаров, выполняется только первый этап. Ниже таблица для более наглядного представления:
|
Виды документов |
Операция |
Первый этап |
Второй этап |
|
Документы поступления |
Проведение |
|
V |
|
Отмена проведения |
|
V |
|
|
Документы списания
|
Проведение, перепроведение с перезаполнением видов запасов |
V |
|
|
Отмена проведения |
|
V |
|
|
Документы списания и поступления |
Проведение, перепроведение с перезаполнением видов запасов |
V |
V |
|
Отмена проведения |
|
V |
Формирование резервов на первом этапе
ЗаполнитьВидыЗапасов (процедура в модуле документов) – определяется необходимость заполнения / перезаполнения или очистки видов запасов. Заполнение выполняется в следующих случаях:
- Проведения не проведенного документа
- Изменений в табличной части документа
- Изменение реквизитов документа: «Организация», «Дата», «НалогообложениеНДС»
- В случае установки параметра дополнительны свойств «ПерезаполнитьВидыЗапасов»
Дальнейшие операции происходят в общем модуле «ЗапасыСервер».
ЗаполнитьВидыЗапасовПоТоварамОрганизаций - точка входа из модулей документов.
СформироватьВТДоступныеВидыЗапасов
Формируются доступные виды запасов по организации документа и по организациям, которые указаны в настройках передач в качестве поставщиков товаров, с учетом заданных отборов по видам запасов. Формируется ВТ «ДоступныеВидыЗапасов»
СохранитьИсходныеДвиженияТоваровИРезервов
Выбираются исходные движения документа по регистрам «РТО» и «ТО», и помещаются в ВТ: «ДвиженияТоварыОрганизацийПередЗаписью», «ДвиженияРезервыТоварыОрганизацийПередЗаписью».
СформироватьВтОтборыОстатковПоТаблицеТоваров
По данным документа и доступным видам запасов формируются возможные отборы остатков и сохраняются в ВТ "ВтОтборыОстатковОрганизаций".
УстановитьБлокировкуРегистров
Вступайте в нашу телеграмм-группу Инфостарт