поиск и выбор групп в запросе с кавычками и без.
Доброго времени суток! Есть обработка которая забирает из почты заказы и поступления. Проблема в том что у нам группы половина в кавычках. При поиске групп обработка не видит тех которые в кавычках и создает дубли только без "". Вопрос в том, как сделать так чтобы он при поиске не видел эти "" и выбирал именно те группы а не создавал новые.
Функция НайтиСоздатьГруппуТовара(Знач СоздаваемаяПодгруппа,Знач ГлавнаяГруппа = неопределено) Экспорт
//найдем каталоги
Если ЗначениеЗаполнено(СоздаваемаяПодгруппа) тогда
Если ГлавнаяГруппа = неопределено тогда
ЗапросКаталогНоменклатуры = новый запрос("ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = Истина
| И Номенклатура.Наименование = &Наименование");
ТекГлавнаяГруппа = неопределено;
иначе
Если ТипЗнч(ГлавнаяГруппа) <> Тип("СправочникСсылка.Номенклатура") тогда
ТекГлавнаяГруппа = НайтиСоздатьГруппуТовара(ГлавнаяГруппа);
Иначе
ТекГлавнаяГруппа = ГлавнаяГруппа;
КонецЕсли;
ЗапросКаталогНоменклатуры = новый запрос("ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа = ИСТИНА
| И Номенклатура.Наименование = &Наименование
| И Номенклатура.Родитель = &ГлавнаяГруппа");
ЗапросКаталогНоменклатуры.УстановитьПараметр("ГлавнаяГруппа", ТекГлавнаяГруппа);
КонецЕсли;
ЗапросКаталогНоменклатуры.УстановитьПараметр("Наименование", СоздаваемаяПодгруппа);
ВыборкаКаталога = ЗапросКаталогНоменклатуры.Выполнить().Выбрать();
Если ВыборкаКаталога.Следующий() тогда
//КаталогБезКовычек = СтрЗаменить(ВыборкаКаталога.Ссылка,"""","");
//КаталогНоменклатуры = КаталогБезКовычек;
КаталогНоменклатуры = ВыборкаКаталога.ссылка;
иначе
КаталогНоменклатурыОбъект = Справочники.Номенклатура.СоздатьГруппу();
Если ЗначениеЗаполнено(ТекГлавнаяГруппа) тогда
КаталогНоменклатурыОбъект.Родитель = ТекГлавнаяГруппа;
КонецЕсли;
КаталогНоменклатурыОбъект.Наименование = СоздаваемаяПодгруппа;
КаталогНоменклатурыОбъект.Записать();
КаталогНоменклатуры =КаталогНоменклатурыОбъект.Ссылка;
Сообщить("Создана группа "+СоздаваемаяПодгруппа);
КонецЕсли;
Возврат КаталогНоменклатуры;
Иначе
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
КонецФункции
ПоказатьПо теме из базы знаний
- Универсальный конструктор отчетов (Новейший отчет) для 1C 7.7
- Быстрый поиск дублей в 1С с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)
- Программные перечисления, ч.2: приемы кэширования при разработке
- Код для поиска номенклатуры в конфигурациях 1С. Использование мнемоники по первым буквам как вариант применения
- Полнотекстовый поиск в 1С. №2 Самое основное для разработчика
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Либо использовать конструкцию
Либо использовать конструкцию
Либо использовать конструкцию
Подобно &Наименование и Запрос.УстановитьПараметр("Наименование", "%" + Наименование + "%")
Либо использовать конструкцию
Номенклатура.Наименование В (&Наименование, """" + &Наименование + """") и Запрос.УстановитьПараметр("Наименование", Наименование)
(9)
Поэтому и не ищет, у вас в условии запроса ищет по наименованию
а в параметр вы передаете
Измените в запросе поиск на ПОДОБНО.
Но в таком случае для строки "Группа" данный запрос найдет все группы в которых есть слово "Группа"
Поэтому и не ищет, у вас в условии запроса ищет по наименованию
Номенклатура.Наименование = &Наименование
а в параметр вы передаете
"%"+СоздаваемаяПодгруппа+"%"
Измените в запросе поиск на ПОДОБНО.
Но в таком случае для строки "Группа" данный запрос найдет все группы в которых есть слово "Группа"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот