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 <cursoragent@cursor.com>
This commit is contained in:
kykaevv 2026-09-01 13:01:23 +03:00
parent 88098aa86f
commit 2879dae761
2 changed files with 38 additions and 25 deletions

View File

@ -90,33 +90,38 @@
//#КонецЕсли //#КонецЕсли
//Сообщить("Не нашли товар в базе"); //Сообщить("Не нашли товар в базе");
конецесли; конецесли;
ИначеЕсли Событие="Штрихкод" И НЕ СтрДлина(Данные)=13 И ЕстьТовар Тогда ИначеЕсли Событие="Штрихкод" И ЕстьТовар И Не ЭтоШтрихкодТовараПодбор(Данные) Тогда
структураПоиска=Новый структура(); структураПоиска=Новый структура();
ПараметрыТов = Новый Структура(); ПараметрыТов = Новый Структура();
если Маркет="OZ" Тогда postingNumber = "";
если Маркет="YA" Тогда
postingNumber=ПривестиСтрокуВПорядок(Данные, "-");
структураПоиска.Вставить("КодМП", postingNumber);
ИначеЕсли Маркет="OZ" Тогда
ДанныеОтвета=СинхронизацияУТ.ЗапросДанныеДляМаркетов(ДокументОснование, Данные); ДанныеОтвета=СинхронизацияУТ.ЗапросДанныеДляМаркетов(ДокументОснование, Данные);
postingNumber=ДанныеОтвета.result.posting_number; postingNumber=ДанныеОтвета.result.posting_number;
структураПоиска.Вставить("КодМП", postingNumber); структураПоиска.Вставить("КодМП", postingNumber);
конецесли; ИначеЕсли Маркет="WB" ИЛИ Маркет="FB" Тогда
если Маркет="WB" ИЛИ Маркет="FB" Тогда
postingNumber=Данные; postingNumber=Данные;
структураПоиска.Вставить("ШтрихкодПоставки", postingNumber); структураПоиска.Вставить("ШтрихкодПоставки", postingNumber);
Иначе
postingNumber=Данные;
структураПоиска.Вставить("КодМП", postingNumber);
конецесли; конецесли;
структураПоиска.Вставить("КарточкаМП", ном); структураПоиска.Вставить("КарточкаМП", ном);
// Если у нас несколько товаров в одинаковым ШК, то смысла в ном нет // Если у нас несколько товаров с одинаковым ШК, уточним карточку по поставке
// Значит найдем товар по ШК поставки НайденнаяКарточка = НайтиНомПоШКПоставки(postingNumber);
ном = НайтиНомПоШКПоставки(postingNumber); Если ЗначениеЗаполнено(НайденнаяКарточка) Тогда
Если ЗначениеЗаполнено(ном) Тогда структураПоиска.КарточкаМП = НайденнаяКарточка;
структураПоиска.КарточкаМП = ном; ном = НайденнаяКарточка;
КонецЕсли; КонецЕсли;
РезПоиска=НайтиТоварВДокеПоШК(структураПоиска); РезПоиска=НайтиТоварВДокеПоШК(структураПоиска);
//если рез=истина тогда
Если РезПоиска=истина Тогда Если РезПоиска=истина Тогда
если НЕ Маркет="WB" ИЛИ НЕ Маркет="FB" Тогда Если Маркет="WB" ИЛИ Маркет="FB" Тогда
ПараметрыТов.Вставить("КодМП", postingNumber);
иначе
ПараметрыТов.Вставить("ШтрихкодПоставки", postingNumber); ПараметрыТов.Вставить("ШтрихкодПоставки", postingNumber);
конецесли; Иначе
ПараметрыТов.Вставить("КодМП", postingNumber);
КонецЕсли;
ПараметрыТов.Вставить("Номенклатура", ном); ПараметрыТов.Вставить("Номенклатура", ном);
Если ЗначениеЗаполнено(КодМаркировки) Тогда Если ЗначениеЗаполнено(КодМаркировки) Тогда
ПараметрыТов.Вставить("КодМаркировки", КодМаркировки); ПараметрыТов.Вставить("КодМаркировки", КодМаркировки);
@ -146,7 +151,7 @@
| ПоставкаМПТовары.Ссылка В (&СписокЗначений)"; | ПоставкаМПТовары.Ссылка В (&СписокЗначений)";
Запрос.УстановитьПараметр("СписокЗначений", СсылкиПоставкиМП); Запрос.УстановитьПараметр("СписокЗначений", СсылкиПоставкиМП);
ТоварыНом = Запрос.Выполнить().Выгрузить(); ТоварыНом = Запрос.Выполнить().Выгрузить();
если НЕ Маркет="WB" Тогда если НЕ (Маркет="WB" ИЛИ Маркет="FB") Тогда
тов=ТоварыНом.НайтиСтроки(Новый Структура("КодМП", НомерПоставки)); тов=ТоварыНом.НайтиСтроки(Новый Структура("КодМП", НомерПоставки));
Иначе Иначе
тов=ТоварыНом.НайтиСтроки(Новый Структура("ШтрихкодПоставки", НомерПоставки)); тов=ТоварыНом.НайтиСтроки(Новый Структура("ШтрихкодПоставки", НомерПоставки));
@ -156,6 +161,11 @@
конецесли; конецесли;
КонецФункции КонецФункции
&НаКлиенте
Функция ЭтоШтрихкодТовараПодбор(Данные)
Возврат СтрДлина(Данные) = 13 И СтрНайти(Данные, "-") = 0;
КонецФункции
&НаКлиенте &НаКлиенте
Функция ЭтоКодМаркировкиПодбор(Знач ДанныеСкана) Функция ЭтоКодМаркировкиПодбор(Знач ДанныеСкана)
@ -258,10 +268,9 @@
ТоварыНом = Запрос.Выполнить().Выгрузить(); ТоварыНом = Запрос.Выполнить().Выгрузить();
тов=ТоварыНом.НайтиСтроки(стрПоиска); тов=ТоварыНом.НайтиСтроки(стрПоиска);
если тов <> неопределено И тов.Количество() > 0 Тогда если тов <> неопределено И тов.Количество() > 0 Тогда
возврат истина; Возврат Истина;
иначе
возврат ложь;
конецесли; конецесли;
Возврат Ложь;
КонецФункции КонецФункции
Функция ПривестиСтрокуВПорядок(Строка, СтрокаПоиска) Функция ПривестиСтрокуВПорядок(Строка, СтрокаПоиска)

View File

@ -247,29 +247,33 @@
если ИмяСобытия="НашлиТоварВПоставке" Тогда если ИмяСобытия="НашлиТоварВПоставке" Тогда
НеВызыватьВС=истина; НеВызыватьВС=истина;
структураПоиска=Новый структура(); структураПоиска=Новый структура();
если Параметр.Свойство("КодМП") Тогда если Параметр.Свойство("КодМП") И ЗначениеЗаполнено(Параметр.КодМП)
И Параметр.КодМП <> "Не определен" Тогда
структураПоиска.Вставить("КодМП", Параметр.КодМП); структураПоиска.Вставить("КодМП", Параметр.КодМП);
КонецЕсли; КонецЕсли;
если Параметр.Свойство("ШтрихкодПоставки") Тогда если Параметр.Свойство("ШтрихкодПоставки") И ЗначениеЗаполнено(Параметр.ШтрихкодПоставки) Тогда
структураПоиска.Вставить("ШтрихкодПоставки", Параметр.ШтрихкодПоставки); структураПоиска.Вставить("ШтрихкодПоставки", Параметр.ШтрихкодПоставки);
КонецЕсли; КонецЕсли;
структураПоиска.Вставить("КарточкаМП", Параметр.Номенклатура); структураПоиска.Вставить("КарточкаМП", Параметр.Номенклатура);
тов=ТоварыВирт.НайтиСтроки(структураПоиска); тов=ТоварыВирт.НайтиСтроки(структураПоиска);
Если тов <> неопределено И тов.Количество() > 0 Тогда Если тов <> неопределено И тов.Количество() > 0 Тогда
Для каждого элемент из тов цикл Для каждого элемент из тов цикл
если элемент.Отсканировано = элемент.количество Тогда Продолжить; КонецЕсли; если элемент.Отсканировано >= элемент.Количество Тогда Продолжить; КонецЕсли;
тов[0].Отсканировано= тов[0].Отсканировано + 1; элемент.Отсканировано = элемент.Отсканировано + 1;
если Параметр.Свойство("КодМаркировки") И ЗначениеЗаполнено(Параметр.КодМаркировки) если Параметр.Свойство("КодМаркировки") И ЗначениеЗаполнено(Параметр.КодМаркировки)
И Параметр.КодМаркировки <> "-" Тогда И Параметр.КодМаркировки <> "-" Тогда
тов[0].МаркаСтрока = Параметр.КодМаркировки; элемент.МаркаСтрока = Параметр.КодМаркировки;
тов[0].МаркаПредставление = ПредставлениеКодаМаркировки(Параметр.КодМаркировки); элемент.МаркаПредставление = ПредставлениеКодаМаркировки(Параметр.КодМаркировки);
КонецЕсли; КонецЕсли;
Элементы.ТоварыВиртНаФорме.ТекущаяСтрока = тов[0].ПолучитьИдентификатор(); Элементы.ТоварыВиртНаФорме.ТекущаяСтрока = элемент.ПолучитьИдентификатор();
ФайлЗвука = ПолучитьАдресФайла("ок"); ФайлЗвука = ПолучитьАдресФайла("ок");
#Если МобильноеПриложениеКлиент Тогда #Если МобильноеПриложениеКлиент Тогда
СредстваМультимедиа.ВоспроизвестиАудио(ФайлЗвука); СредстваМультимедиа.ВоспроизвестиАудио(ФайлЗвука);
#КонецЕсли #КонецЕсли
Прервать;
КонецЦикла; КонецЦикла;
Иначе
Сообщить("Не удалось обновить строку товара в документе");
КонецЕсли; КонецЕсли;
ИначеЕсли ИмяСобытия="НЕнашлиТоварВПоставке" Тогда ИначеЕсли ИмяСобытия="НЕнашлиТоварВПоставке" Тогда
Сообщить("Нет соотвествия товара и поставки в данном документе!"); Сообщить("Нет соотвествия товара и поставки в данном документе!");