Афанасьев Виталий

личная страничка

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Задвоение строк при заполнении инвентаризации по проблемным ячейкам

В типовой конфигурации Кортес: Адресный склад при заполнении инвентаризации по проблемным ячейкам нередко можно наблюдать задвоение строк. Кроме того, в инвентаризацию попадает товар, не являющийся проблемным.

Версия Кортес:Адресный склад, на которой наблюдалась описанная проблема: 1.5.9.299

Причина: в модуле документа "Инвентаризация" в процедуре "ЗаполнитьДокумент" в варианте запроса, заполняющего остатками по проблемным ячейкам. выглядит так:

"ВЫБРАТЬ
...
ИЗ
РегистрСведений.ЗаблокированныеЯчейки.СрезПоследних(, "
+Сред(ТекстУсловияОтбор,3)+") КАК ЗаблокированныеЯчейкиСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаполненностьЯчеек.Остатки(, КодЗаполненности = ЗНАЧЕНИЕ(Перечисление.КодыЗаполненностиЯчеек.Остаток) И ВладелецТовара = &ВладелецТовара "
+ТекстУсловия+") КАК ЗаполненностьЯчеекОстатки
ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка
ГДЕ
...

Как видим, связь осуществляется только по полю "Ячейка". Если же в регистре сведений "Заблокированные ячейки" присутствует запись, где заблокирован конкретная номенклатура, то в инвентаризацию попадет весь товар из ячейки. Кроме того, если в ячейке лежит несколько проблемных номенклатур, то по такой связи с остатками свяжется каждая запись регистра сведений, что и приводит к задвоению. Для того, чтобы избежать этого, перед строкой

ИначеЕсли СпособИнвентаризации = Перечисления.СпособыИнвентаризации.ПустыеЯчейки Тогда

пишем:

Запрос.Текст = СтрЗаменить(Запрос.Текст, "ВЫБРАТЬ", "ВЫБРАТЬ РАЗЛИЧНЫЕ");
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка",
"ПО ЗаполненностьЯчеекОстатки.Ячейка = ЗаблокированныеЯчейкиСрезПоследних.Ячейка
| И (ЗаблокированныеЯчейкиСрезПоследних.Номенклатура = &ПустаяНоменклатура
| ИЛИ ЗаблокированныеЯчейкиСрезПоследних.Номенклатура = ЗаполненностьЯчеекОстатки.Номенклатура)");
Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка());

После этого задвоений не будет.

Обновлено 31.12.2016 21:13