В задаче импорта праса поставщика требовалось находить и нашу номенклатуру, содержащую артикулы в названии, с товарами поставщика, чьи артикулы имеют префикс.
В результате консультаций с Евгением был разработан алгоритм, осуществляющий поиск подстроки полученной из артикула поставщика в названии номенклатуры из группы, заданной как группа в которой создается номенклатура поставщика по умолчанию.
ТЕКСТ АЛГОРИТМА
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ПустаяСсылка);
ПараметрыОтбора.Вставить("ЭтоГруппа", Ложь);
ДанныеПоиска = ТабличнаяЧасть.Выгрузить(ПараметрыОтбора,"НомерСтроки,Номенклатура,Поле_Артикул,Поле_Производитель");
ПриоритетПоиска = ПараметрыОбработки.ПриоритетПоиска;
ТектЗапроса =
"ВЫБРАТЬ
| ВременнаяДанныеПоиска.НомерСтроки КАК НомерСтроки,
| ПОДСТРОКА(ВременнаяДанныеПоиска.Поле_Артикул, 4, 50) КАК Поле_Артикул
|ПОМЕСТИТЬ ВременнаяДанныеПоиска
|ИЗ
| &ДанныеПоиска КАК ВременнаяДанныеПоиска
|ГДЕ
| ВременнаяДанныеПоиска.Номенклатура = &ПустаяСсылка
| И ВременнаяДанныеПоиска.Поле_Артикул <> """"
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяДанныеПоиска.НомерСтроки КАК НомерСтроки,
| СпрНоменклатура.Ссылка КАК Номенклатура
|ИЗ
| ВременнаяДанныеПоиска КАК ВременнаяДанныеПоиска
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО (СпрНоменклатура.Наименование ПОДОБНО ""%"" + ВременнаяДанныеПоиска.Поле_Артикул + ""%"")
| И (СпрНоменклатура.ПометкаУдаления = ЛОЖЬ)
|ГДЕ
| СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатурыПоУмолчанию)";
Запрос = Новый Запрос();
Запрос.Текст = ТектЗапроса;
Запрос.УстановитьПараметр("ДанныеПоиска", ДанныеПоиска);
Запрос.УстановитьПараметр("ПустаяСсылка", ПустаяСсылка);
Запрос.УстановитьПараметр("ГруппаНоменклатурыПоУмолчанию", ГруппаНоменклатурыПоУмолчанию);
РезультатЗапроса = Запрос.Выполнить();
КолСовпадений = 0;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
КолСовпадений = КолСовпадений + 1;
Если НЕ ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
Продолжить;
КонецЕсли;
СтрТаблицыСинхронизации = ТабличнаяЧасть[Выборка.НомерСтроки-1];
ЗаполнитьЗначенияСвойств(СтрТаблицыСинхронизации, Выборка, "Номенклатура");
СтрТаблицыСинхронизации.КлючПоиска = ПриоритетПоиска;
КонецЦикла
В результате консультаций с Евгением был разработан алгоритм, осуществляющий поиск подстроки полученной из артикула поставщика в названии номенклатуры из группы, заданной как группа в которой создается номенклатура поставщика по умолчанию.
ТЕКСТ АЛГОРИТМА
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ПустаяСсылка);
ПараметрыОтбора.Вставить("ЭтоГруппа", Ложь);
ДанныеПоиска = ТабличнаяЧасть.Выгрузить(ПараметрыОтбора,"НомерСтроки,Номенклатура,Поле_Артикул,Поле_Производитель");
ПриоритетПоиска = ПараметрыОбработки.ПриоритетПоиска;
ТектЗапроса =
"ВЫБРАТЬ
| ВременнаяДанныеПоиска.НомерСтроки КАК НомерСтроки,
| ПОДСТРОКА(ВременнаяДанныеПоиска.Поле_Артикул, 4, 50) КАК Поле_Артикул
|ПОМЕСТИТЬ ВременнаяДанныеПоиска
|ИЗ
| &ДанныеПоиска КАК ВременнаяДанныеПоиска
|ГДЕ
| ВременнаяДанныеПоиска.Номенклатура = &ПустаяСсылка
| И ВременнаяДанныеПоиска.Поле_Артикул <> """"
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВременнаяДанныеПоиска.НомерСтроки КАК НомерСтроки,
| СпрНоменклатура.Ссылка КАК Номенклатура
|ИЗ
| ВременнаяДанныеПоиска КАК ВременнаяДанныеПоиска
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО (СпрНоменклатура.Наименование ПОДОБНО ""%"" + ВременнаяДанныеПоиска.Поле_Артикул + ""%"")
| И (СпрНоменклатура.ПометкаУдаления = ЛОЖЬ)
|ГДЕ
| СпрНоменклатура.Ссылка В ИЕРАРХИИ(&ГруппаНоменклатурыПоУмолчанию)";
Запрос = Новый Запрос();
Запрос.Текст = ТектЗапроса;
Запрос.УстановитьПараметр("ДанныеПоиска", ДанныеПоиска);
Запрос.УстановитьПараметр("ПустаяСсылка", ПустаяСсылка);
Запрос.УстановитьПараметр("ГруппаНоменклатурыПоУмолчанию", ГруппаНоменклатурыПоУмолчанию);
РезультатЗапроса = Запрос.Выполнить();
КолСовпадений = 0;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
КолСовпадений = КолСовпадений + 1;
Если НЕ ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
Продолжить;
КонецЕсли;
СтрТаблицыСинхронизации = ТабличнаяЧасть[Выборка.НомерСтроки-1];
ЗаполнитьЗначенияСвойств(СтрТаблицыСинхронизации, Выборка, "Номенклатура");
СтрТаблицыСинхронизации.КлючПоиска = ПриоритетПоиска;
КонецЦикла