В типовой конфигурации Кортес: Адресный склад при заполнении инвентаризации по проблемным ячейкам нередко можно наблюдать задвоение строк. Кроме того, в инвентаризацию попадает товар, не являющийся проблемным.
Версия Кортес:Адресный склад, на которой наблюдалась описанная проблема: 1.5.9.299
Причина: в модуле документа "Инвентаризация" в процедуре "ЗаполнитьДокумент" в варианте запроса, заполняющего остатками по проблемным ячейкам. выглядит так:
"ВЫБРАТЬ
...
ИЗ
РегистрСведений.ЗаблокированныеЯчейки.СрезПоследних(, "
+Сред(ТекстУсловияОтбор,3)+") КАК ЗаблокированныеЯчейкиСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаполненностьЯчеек.Остатки(, КодЗаполненности = ЗНАЧЕНИЕ(Перечисление.КодыЗаполненностиЯчеек.Остаток) И ВладелецТовара = &ВладелецТовара "
+ТекстУсловия+") КАК ЗаполненностьЯчеекОстатки
ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка
ГДЕ
...
Как видим, связь осуществляется только по полю "Ячейка". Если же в регистре сведений "Заблокированные ячейки" присутствует запись, где заблокирован конкретная номенклатура, то в инвентаризацию попадет весь товар из ячейки. Кроме того, если в ячейке лежит несколько проблемных номенклатур, то по такой связи с остатками свяжется каждая запись регистра сведений, что и приводит к задвоению. Для того, чтобы избежать этого, перед строкой
ИначеЕсли СпособИнвентаризации = Перечисления.СпособыИнвентаризации.ПустыеЯчейки Тогда
пишем:
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВЫБРАТЬ", "ВЫБРАТЬ РАЗЛИЧНЫЕ");
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка",
"ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка
| И (ЗаблокированныеЯчейкиСрезПоследних.Номенклатура = &ПустаяНоменклатура
| ИЛИ ЗаблокированныеЯчейкиСрезПоследних.Номенклатура = ЗаполненностьЯчеекОстатки.Номенклатура)");
Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());
После этого задвоений не будет.
< Предыдущая |
---|