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);
конецесли;
если Маркет="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 Тогда
возврат истина;
иначе
возврат ложь;
Возврат Истина;
конецесли;
Возврат Ложь;
КонецФункции
Функция ПривестиСтрокуВПорядок(Строка, СтрокаПоиска)

View File

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