0
Отвечен

Пустое поле GTIN при тонкой настройке сопоставления товаров

Сергей Генрих 2 года назад обновлен 2 года назад 4

Здравствуйте!

Можно ли с помощью ПМ можно заполнить поле GTIN?

Штрихкод в номенклатуре есть.


Ответ

+1
Ответ
На рассмотрении

можно заполнить при публикации номенклатуры (событие МеркурийЗаполнитьТаблицуПродукцииПроизводителя):

СтрокаТаблицыТоваров.GTIN = НайтиШтрихкод(Новый Структура("Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения",Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения));


а также в событии МеркурийЗаполнитьСтрокуТоваровТранзакции

НоваяСтрока.GTIN = НайтиШтрихкод(Новый Структура("Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения",СтрокаТоваров.Номенклатура,СтрокаТоваров.ХарактеристикаНоменклатуры,СтрокаТоваров.ЕдиницаИзмерения));

сама функция:

Функция НайтиШтрихкод(Параметры)

Штрихкод = Неопределено;

Если Метаданные.РегистрыСведений.Найти("Штрихкоды") <> неопределено Тогда


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

Штрихкод = ОсновнойМодуль.ПолучитьРезультатЗапроса(Запрос, "Штрихкод");

ИначеЕсли Метаданные.РегистрыСведений.Найти("ШтрихкодыНоменклатуры") <> неопределено Тогда

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

Штрихкод = ОсновнойМодуль.ПолучитьРезультатЗапроса(Запрос, "Штрихкод");

КонецЕсли;

Возврат Штрихкод;

КонецФункции


ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от Сергей Генрих 2 года назад
+1
Ответ
На рассмотрении

можно заполнить при публикации номенклатуры (событие МеркурийЗаполнитьТаблицуПродукцииПроизводителя):

СтрокаТаблицыТоваров.GTIN = НайтиШтрихкод(Новый Структура("Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения",Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения));


а также в событии МеркурийЗаполнитьСтрокуТоваровТранзакции

НоваяСтрока.GTIN = НайтиШтрихкод(Новый Структура("Номенклатура,ХарактеристикаНоменклатуры,ЕдиницаИзмерения",СтрокаТоваров.Номенклатура,СтрокаТоваров.ХарактеристикаНоменклатуры,СтрокаТоваров.ЕдиницаИзмерения));

сама функция:

Функция НайтиШтрихкод(Параметры)

Штрихкод = Неопределено;

Если Метаданные.РегистрыСведений.Найти("Штрихкоды") <> неопределено Тогда


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

Штрихкод = ОсновнойМодуль.ПолучитьРезультатЗапроса(Запрос, "Штрихкод");

ИначеЕсли Метаданные.РегистрыСведений.Найти("ШтрихкодыНоменклатуры") <> неопределено Тогда

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

Штрихкод = ОсновнойМодуль.ПолучитьРезультатЗапроса(Запрос, "Штрихкод");

КонецЕсли;

Возврат Штрихкод;

КонецФункции


Спасибо, сейчас так и делаю.

Как я понял, если оно заполнено при тонкой настройке, то дополнительно заполнение не нужно в ПМ прописывать?

Прошу доработать данный функционал.

Сервис поддержки клиентов работает на платформе UserEcho