|
БП 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) В типовой обработке он не вызывается
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |