|   |   | 
| 
 | БП 3.0 Загрузка отчета о продажах Wildberies. Неправильно связывается номенклатура ↓ (Волшебник 07.02.2025 15:10) | ☑ | ||
|---|---|---|---|---|
| 0
    
        bvb 06.02.25✎ 11:27 | 
        Добрый день
 Что то я не пойму как сопоставления номенклатур в БП конкретно для WB Есть регистр "Номенклатура маркетплейсов" для сопоставления Там есть связка Маркетплейс + Номенклатура -> Иденитификатор товара Гружу отчет о продажах их Эксель. По идее номенклатура 1С должна связываться по значению из столбца "Код номенклатуры" из Эксель Запись сопоставления под этот код в регистре есть. Все равно связывает не с той номенклатурой ЧЯДНТ ? | |||
| 1
    
        Волшебник 06.02.25✎ 11:28 | 
        Скажите как на духу, Вы программировать умеете? Отладчик знаете?     | |||
| 2
    
        Ненавижу 1С гуру 06.02.25✎ 11:29 | 
        Несколько записей имеет место быть для разных номенклатур, например     | |||
| 3
    
        bvb 06.02.25✎ 11:43 | 
        (2) По данному коду номенклатуры WB в регистре есть только одна запись. 
 При этом часть номенклатур обработка сопоставляет верно, а часть нет. Я не могу понять логику разработчиков - если есть регистр, то там должно быть соответствие с данными регистра. Судя по наличию ползунка "Точность поиска в форме" там идет поиск по мнемоническому соответствию. И еще момент: Если записи в регистре нет - сопоставлять абы с чем не нужно. | |||
| 4
    
        bvb 07.02.25✎ 14:56 | 
        Дошли руки разобраться.
 Пишу - может кому пригодится. Штатное сопоставление номенклатуры - бредятина полная Поэтому просто перезаполняем сопоставление по своему алгоритму в расширении сразу в форме СопоставлениеНоменклатурыБЭД  &НаСервере
Процедура ОсуществитьПоискНоменклатур()
	Для Каждого Стр ИЗ Объект.Сопоставление Цикл
		//Предварительно очищаем результат штатного поиска
		Стр.Номенклатура = Справочники.Номенклатура.ПустаяСсылка();  
		//поиск сразу по реквизиту справочника. 
		//Регистр "Номенклатура маркетплейсов" не используем
		Стр.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("STR_АртикулWB",Стр.КодМагазина);  
	КонецЦикла;	
КонецПроцедуры	
&НаКлиенте
Процедура STR_ПриОткрытииПосле(Отказ)
	  ОсуществитьПоискНоменклатур();
КонецПроцедуры | |||
| 5
    
        bvb 07.02.25✎ 14:55 | 
        Ну и кнопку на форму добавляем, чтобы не перезапускать если что-то не сопоставилось и поправили справочник:
 &НаСервере
Процедура STR_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	ПодключаемыеКоманды.ВставитьМалыйЛоготип (ЭтаФорма, ЭтаФорма.Элементы.ГруппаОтбор, ЭтаФорма.Элементы.ВладелецОтбор);
	
	
	//Добавление команды
	НоваяКоманда = ЭтаФорма.Команды.Добавить("СопоставитьНоменклатуру");
	НоваяКоманда.Заголовок = "(STR) Сопоставить номенклатуру";
	НоваяКоманда.Действие = "СопоставитьНоменклатуру"; 
	
	//Добавление кнопки команды
	НоваяКнопка = ЭтаФорма.Элементы.Вставить("КнопкаСопоставитьНоменклатуру", Тип("КнопкаФормы"), ЭтаФорма.Элементы.КомандыГруппаСохранить, );
	НоваяКнопка.ИмяКоманды = "СопоставитьНоменклатуру";
	НоваяКнопка.ЦветТекста = WebЦвета.Синий;
	НоваяКнопка.Картинка = БиблиотекаКартинок.STR_Иконка;
	НоваяКнопка.Отображение = ОтображениеКнопки.КартинкаИТекст;
	
КонецПроцедуры | |||
| 6
    
        Волшебник 07.02.25✎ 14:56 | 
        (4) это не нужно:
 //Предварительно очищаем результат штатного поиска Стр.Номенклатура = Справочники.Номенклатура.ПустаяСсылка(); | |||
| 7
    
        Волшебник 07.02.25✎ 14:57 | 
        (4) мы не используем регистр сопоставления, мы просто тупо ищем по реквизиту STR_АртикулWB в спр. Номенклатура. 
 Это ж конгениально. | |||
| 8
    
        bvb 07.02.25✎ 15:07 | 
        см. " по своему алгоритму "
 Важен подход - далее кастомизировать можно как угодно Я ищи так. Мне так проще. Зачем мне заполнять регистр сопоставления, когда у меня кодВБ сразу в реквизите справочника в реквизите расширения ? Кто хочет пусть делает отбор по регистру сведений | |||
| 9
    
        Волшебник 07.02.25✎ 15:11 | 
        (8) У Вас подход неправильный и всё сломается. Реквизит Ваш отвалится, все коды похерятся. Потом не жалуйтесь.     | |||
| 10
    
        d4rkmesa 07.02.25✎ 15:24 | 
        (4) Там действительно идиотский поиск (думаю, я могу так писать не нарушая правила, т.к. 1С ЭДО и БЭД разрабатывали не 1С Софт вроде). Нормально работает только если номенклатуру создавать при первом сопоставлении, по идентификатору. Я переписывал какую-то процедуру, точнее не скажу, под рукой нет, еще в 2018. Воз, видимо, и ныне там.     | |||
| 11
    
        bvb 07.02.25✎ 15:30 | 
        (9) Да я люблю расширения.  И люблю добавлять туда реквизиты.
 Если хочется по феншую - тогда так : //Стр.Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("STR_АртикулWB",Стр.КодМагазина); //поиск сразу по реквизиту спраочника. Регистр "Номенклатура маркетплейсов" не используем НаборЗаписей = РегистрыСведений.НоменклатураМаркетплейсов.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.ИдентификаторТовара.Установить(Стр.КодМагазина); НаборЗаписей.Отбор.Маркетплейс.Установить(Перечисления.ВидыМаркетплейсов.Wildberries); НаборЗаписей.прочитать(); Если НаборЗаписей.Количество() = 1 Тогда //однозначное соотвествие Стр.Номенклатура = НаборЗаписей[0].Номенклатура; КонецЕсли; | |||
| 12
    
        bvb 07.02.25✎ 15:34 | 
        Вскользь замечу (без ложной скромности) : 
 я темой МП периодически занимаюсь, но не дока. Больше знаю со стороны бухучета (как что должно закрываться). Проблемой этой занимался 1,5 часа (включая пост на форум) и решил. Франчи из солнечного города на Неве решали ее полгода а воз был и ныне там. | |||
| 13
    
        Волшебник 07.02.25✎ 15:52 | 
        (11) Вам здесь не нужен набор записей. Достаточно запроса к регистру.
 Вы вообще программировать умеете? | |||
| 14
    
        d4rkmesa 08.02.25✎ 23:07 | 
        (11) Посмотрите еще: СопоставлениеНоменклатурыКонтрагентовПереопределяемый.ПриПоискеНоменклатурыПоИдентификатору , если используется в этих обменах.     | |||
| 15
    
        bvb 10.02.25✎ 14:22 | 
        (14) В типовой обработке он не вызывается     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |