From 2879dae7619fe54268d1738bd1df99472e50a2f0 Mon Sep 17 00:00:00 2001 From: kykaevv Date: Tue, 1 Sep 2026 13:01:23 +0300 Subject: [PATCH] Fix matching delivery after marking code scan in StikerovkaMP. Correct marketplace lookup for WB/FB/YA and persist marking codes to the Codes tab. Co-authored-by: Cursor --- .../Forms/ПодборПоставкиТовара/Ext/Form/Module.bsl | 45 +++++++++++-------- .../Forms/ФормаДокумента/Ext/Form/Module.bsl | 18 +++++--- 2 files changed, 38 insertions(+), 25 deletions(-) diff --git a/Documents/СтикеровкаМП/Forms/ПодборПоставкиТовара/Ext/Form/Module.bsl b/Documents/СтикеровкаМП/Forms/ПодборПоставкиТовара/Ext/Form/Module.bsl index f927821..dffbc34 100644 --- a/Documents/СтикеровкаМП/Forms/ПодборПоставкиТовара/Ext/Form/Module.bsl +++ b/Documents/СтикеровкаМП/Forms/ПодборПоставкиТовара/Ext/Form/Module.bsl @@ -90,33 +90,38 @@ //#КонецЕсли //Сообщить("Не нашли товар в базе"); конецесли; - ИначеЕсли Событие="Штрихкод" И НЕ СтрДлина(Данные)=13 И ЕстьТовар Тогда + ИначеЕсли Событие="Штрихкод" И ЕстьТовар И Не ЭтоШтрихкодТовараПодбор(Данные) Тогда структураПоиска=Новый структура(); ПараметрыТов = Новый Структура(); - если Маркет="OZ" Тогда + postingNumber = ""; + если Маркет="YA" Тогда + postingNumber=ПривестиСтрокуВПорядок(Данные, "-"); + структураПоиска.Вставить("КодМП", postingNumber); + ИначеЕсли Маркет="OZ" Тогда ДанныеОтвета=СинхронизацияУТ.ЗапросДанныеДляМаркетов(ДокументОснование, Данные); postingNumber=ДанныеОтвета.result.posting_number; структураПоиска.Вставить("КодМП", postingNumber); - конецесли; - если Маркет="WB" ИЛИ Маркет="FB" Тогда + ИначеЕсли Маркет="WB" ИЛИ Маркет="FB" Тогда postingNumber=Данные; структураПоиска.Вставить("ШтрихкодПоставки", postingNumber); + Иначе + postingNumber=Данные; + структураПоиска.Вставить("КодМП", postingNumber); конецесли; структураПоиска.Вставить("КарточкаМП", ном); - // Если у нас несколько товаров в одинаковым ШК, то смысла в ном нет - // Значит найдем товар по ШК поставки - ном = НайтиНомПоШКПоставки(postingNumber); - Если ЗначениеЗаполнено(ном) Тогда - структураПоиска.КарточкаМП = ном; + // Если у нас несколько товаров с одинаковым ШК, уточним карточку по поставке + НайденнаяКарточка = НайтиНомПоШКПоставки(postingNumber); + Если ЗначениеЗаполнено(НайденнаяКарточка) Тогда + структураПоиска.КарточкаМП = НайденнаяКарточка; + ном = НайденнаяКарточка; КонецЕсли; РезПоиска=НайтиТоварВДокеПоШК(структураПоиска); - //если рез=истина тогда Если РезПоиска=истина Тогда - если НЕ Маркет="WB" ИЛИ НЕ Маркет="FB" Тогда - ПараметрыТов.Вставить("КодМП", postingNumber); - иначе + Если Маркет="WB" ИЛИ Маркет="FB" Тогда ПараметрыТов.Вставить("ШтрихкодПоставки", postingNumber); - конецесли; + Иначе + ПараметрыТов.Вставить("КодМП", postingNumber); + КонецЕсли; ПараметрыТов.Вставить("Номенклатура", ном); Если ЗначениеЗаполнено(КодМаркировки) Тогда ПараметрыТов.Вставить("КодМаркировки", КодМаркировки); @@ -146,7 +151,7 @@ | ПоставкаМПТовары.Ссылка В (&СписокЗначений)"; Запрос.УстановитьПараметр("СписокЗначений", СсылкиПоставкиМП); ТоварыНом = Запрос.Выполнить().Выгрузить(); - если НЕ Маркет="WB" Тогда + если НЕ (Маркет="WB" ИЛИ Маркет="FB") Тогда тов=ТоварыНом.НайтиСтроки(Новый Структура("КодМП", НомерПоставки)); Иначе тов=ТоварыНом.НайтиСтроки(Новый Структура("ШтрихкодПоставки", НомерПоставки)); @@ -156,6 +161,11 @@ конецесли; КонецФункции +&НаКлиенте +Функция ЭтоШтрихкодТовараПодбор(Данные) + Возврат СтрДлина(Данные) = 13 И СтрНайти(Данные, "-") = 0; +КонецФункции + &НаКлиенте Функция ЭтоКодМаркировкиПодбор(Знач ДанныеСкана) @@ -258,10 +268,9 @@ ТоварыНом = Запрос.Выполнить().Выгрузить(); тов=ТоварыНом.НайтиСтроки(стрПоиска); если тов <> неопределено И тов.Количество() > 0 Тогда - возврат истина; - иначе - возврат ложь; + Возврат Истина; конецесли; + Возврат Ложь; КонецФункции Функция ПривестиСтрокуВПорядок(Строка, СтрокаПоиска) diff --git a/Documents/СтикеровкаМП/Forms/ФормаДокумента/Ext/Form/Module.bsl b/Documents/СтикеровкаМП/Forms/ФормаДокумента/Ext/Form/Module.bsl index 798640e..41ae9ee 100644 --- a/Documents/СтикеровкаМП/Forms/ФормаДокумента/Ext/Form/Module.bsl +++ b/Documents/СтикеровкаМП/Forms/ФормаДокумента/Ext/Form/Module.bsl @@ -247,29 +247,33 @@ если ИмяСобытия="НашлиТоварВПоставке" Тогда НеВызыватьВС=истина; структураПоиска=Новый структура(); - если Параметр.Свойство("КодМП") Тогда + если Параметр.Свойство("КодМП") И ЗначениеЗаполнено(Параметр.КодМП) + И Параметр.КодМП <> "Не определен" Тогда структураПоиска.Вставить("КодМП", Параметр.КодМП); КонецЕсли; - если Параметр.Свойство("ШтрихкодПоставки") Тогда + если Параметр.Свойство("ШтрихкодПоставки") И ЗначениеЗаполнено(Параметр.ШтрихкодПоставки) Тогда структураПоиска.Вставить("ШтрихкодПоставки", Параметр.ШтрихкодПоставки); КонецЕсли; структураПоиска.Вставить("КарточкаМП", Параметр.Номенклатура); тов=ТоварыВирт.НайтиСтроки(структураПоиска); Если тов <> неопределено И тов.Количество() > 0 Тогда Для каждого элемент из тов цикл - если элемент.Отсканировано = элемент.количество Тогда Продолжить; КонецЕсли; - тов[0].Отсканировано= тов[0].Отсканировано + 1; + если элемент.Отсканировано >= элемент.Количество Тогда Продолжить; КонецЕсли; + элемент.Отсканировано = элемент.Отсканировано + 1; если Параметр.Свойство("КодМаркировки") И ЗначениеЗаполнено(Параметр.КодМаркировки) И Параметр.КодМаркировки <> "-" Тогда - тов[0].МаркаСтрока = Параметр.КодМаркировки; - тов[0].МаркаПредставление = ПредставлениеКодаМаркировки(Параметр.КодМаркировки); + элемент.МаркаСтрока = Параметр.КодМаркировки; + элемент.МаркаПредставление = ПредставлениеКодаМаркировки(Параметр.КодМаркировки); КонецЕсли; - Элементы.ТоварыВиртНаФорме.ТекущаяСтрока = тов[0].ПолучитьИдентификатор(); + Элементы.ТоварыВиртНаФорме.ТекущаяСтрока = элемент.ПолучитьИдентификатор(); ФайлЗвука = ПолучитьАдресФайла("ок"); #Если МобильноеПриложениеКлиент Тогда СредстваМультимедиа.ВоспроизвестиАудио(ФайлЗвука); #КонецЕсли + Прервать; КонецЦикла; + Иначе + Сообщить("Не удалось обновить строку товара в документе"); КонецЕсли; ИначеЕсли ИмяСобытия="НЕнашлиТоварВПоставке" Тогда Сообщить("Нет соотвествия товара и поставки в данном документе!");