Добрый день.
Подскажите, пожалуйста.
У меня есть ТЗ, в ней ищу строку в нужном столбце, но строка имеет не полное вхождение.
Т.е. в ТЗ есть "Иванов", мне надо найти эту строку по условию "Иван".
Можно ли использовать команду "НайтиСтроки"? Или она ищет только все строки с "Иван"?
Если это не верно, то как правильно написать?
+ см.скрин
Подскажите, пожалуйста.
У меня есть ТЗ, в ней ищу строку в нужном столбце, но строка имеет не полное вхождение.
Т.е. в ТЗ есть "Иванов", мне надо найти эту строку по условию "Иван".
Можно ли использовать команду "НайтиСтроки"? Или она ищет только все строки с "Иван"?
Отбор = Новый Структура();
Отбор.Вставить("Наименование_Комплектующее",TextПоиска);
Строки = ТЗ_AxСпецификаций.НайтиСтроки(Отбор);
Если Строки.Количество() = 0 Тогда
Сообщить("в т-це ТЗ_AxСпецификаций не найдено комплектующее: " + TextПоиска);
Иначе
AxCode = Строки[0].AxCode_Комплектующее;
КонецЕсли;
ПоказатьЕсли это не верно, то как правильно написать?
+ см.скрин
Прикрепленные файлы:

По теме из базы знаний
- Таблица значений. Нюансы
- Поиск по подстроке в таблице значений. По принципу "начинается с"
- Способ программного определения видимых строк пользователю, если пользователь отфильтровал строки таблицы формы, введя текст в строке поиска
- Удаление строк из таблицы значений различными способами с замером производительности
- Раскраска ячейки таблицы значений для управляемых форм
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) NushaN, Метод "НайтиСтроки" ищет только по точному соответствию. Для поиска по вхождению используйте запрос
|ВЫБРАТЬ
| ТЗ_AxСпецификаций.Наименование_Комплектующее,
| ТЗ_AxСпецификаций.AxCode_Комплектующее
|ИЗ
| &ТЗ_AxСпецификаций КАК ТЗ_AxСпецификаций
|ГДЕ
| ТЗ_AxСпецификаций.Наименование_Комплектующее ПОДОБНО &Наименование_Комплектующее
(2) IvanBoychuk123, спасибо.
Попробовала так же:
Но получаю ошибку: "Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу"
Пишу через менеджер Врем.табл.:
Опять ошибка: "Ошибка при вызове метода контекста (Выполнить)
Запрос.Выполнить();
по причине:
{(1, 30)}: Тип не может быть выбран в запросе
Выбрать * ПОМЕСТИТЬ ВТ_Ax Из <<?>>&ТЗ_AxСпецификаций КАК ТЗ_Ax"
:-(
Попробовала так же:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТЗ.Наименование_Комплектующее,
| ТЗ.AxCode_Комплектующее
|ИЗ
| &ТЗ_AxСпецификаций КАК ТЗ
|ГДЕ
| ТЗ.Наименование_Комплектующее ПОДОБНО &TextПоиска";
Запрос.УстановитьПараметр("TextПоиска", TextПоиска);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Количество()>0 Тогда
AxaptaCode = Выборка.AxCode_Комплектующее;
Иначе
Сообщить("в т-це ТЗ_AxСпецификаций не найдено комплектующее: " + TextПоиска);
КонецЕсли;
ПоказатьНо получаю ошибку: "Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
Содержимое объекта данных может быть выбрано только во временную таблицу"
Пишу через менеджер Врем.табл.:
Запрос = Новый Запрос("Выбрать * ПОМЕСТИТЬ ВТ_Ax Из &ТЗ_AxСпецификаций КАК ТЗ_Ax");
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТЗ_AxСпецификаций", ТЗ_AxСпецификаций);
Запрос.Выполнить();
ЗапросAx = Новый Запрос;
ЗапросAx.Текст = "ВЫБРАТЬ
| ВТ_Ax.Наименование_Комплектующее,
| ВТ_Ax.AxCode_Комплектующее
|ИЗ
| ВТ_Ax КАК ВТ_Ax
|ГДЕ
| ВТ_Ax.Наименование_Комплектующее ПОДОБНО &TextПоиска";
ЗапросAx.УстановитьПараметр("TextПоиска", TextПоиска);
ЗапросAx.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
Выборка = ЗапросAx.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
AxaptaCode = Выборка.AxCode_Комплектующее;
Иначе
Сообщить("в т-це ТЗ_AxСпецификаций не найдено комплектующее: " + TextПоиска);
КонецЕсли;
ПоказатьОпять ошибка: "Ошибка при вызове метода контекста (Выполнить)
Запрос.Выполнить();
по причине:
{(1, 30)}: Тип не может быть выбран в запросе
Выбрать * ПОМЕСТИТЬ ВТ_Ax Из <<?>>&ТЗ_AxСпецификаций КАК ТЗ_Ax"
:-(
(5) NushaN, как то так:
Только учтите, что выведет первый попавшийся результат. Для получения всех, нужно выборку в цикле обойти, или в таблицу значений выгрузить.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТЗ.Наименование_Комплектующее,
| ТЗ.AxCode_Комплектующее
|ПОМЕСТИТЬ ВТ
|ИЗ
| &ТЗ_AxСпецификаций КАК ТЗ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Наименование_Комплектующее,
| ВТ.AxCode_Комплектующее
|ИЗ
| ВТ КАК ВТ
|ГДЕ
| ВТ.Наименование_Комплектующее ПОДОБНО &TextПоиска";
Запрос.УстановитьПараметр("TextПоиска", TextПоиска+"%");
Запрос.УстановитьПараметр("ТЗ_AxСпецификаций", ТЗ_AxСпецификаций);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Сообщить("в т-це ТЗ_AxСпецификаций не найдено комплектующее: " + TextПоиска);
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
AxaptaCode = Выборка.AxCode_Комплектующее;
КонецЕсли;
ПоказатьТолько учтите, что выведет первый попавшийся результат. Для получения всех, нужно выборку в цикле обойти, или в таблицу значений выгрузить.
(6) spacecraft, спасибо.
По Вашему коду тоже ошибка:
Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(2, 5)}: Тип не может быть выбран в запросе
<<?>>ТЗ.Наименование_Комплектующее,
Меняю:
Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 5)}: Тип не может быть выбран в запросе
<<?>>&ТЗ_AxСпецификаций КАК ТЗ
ТЗ создается и заполняется стандартно:
Вот ведь.... простая операция, а просто не получается ...
По Вашему коду тоже ошибка:
Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(2, 5)}: Тип не может быть выбран в запросе
<<?>>ТЗ.Наименование_Комплектующее,
Меняю:
"ВЫБРАТЬ *
| // ТЗ.Наименование_Комплектующее,
| // ТЗ.AxCode_Комплектующее
...........
Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(6, 5)}: Тип не может быть выбран в запросе
<<?>>&ТЗ_AxСпецификаций КАК ТЗ
ТЗ создается и заполняется стандартно:
ТЗ_AxСпецификаций = Новый ТаблицаЗначений;
ТЗ_AxСпецификаций.Колонки.Добавить("AxCode_ВыходноеИзделие"); //1
ТЗ_AxСпецификаций.Колонки.Добавить("Наименование_ВыходноеИзделие");//2
ТЗ_AxСпецификаций.Колонки.Добавить("AxCode_Комплектующее"); //3
ТЗ_AxСпецификаций.Колонки.Добавить("Наименование_Комплектующее"); //4
ТЗ_AxСпецификаций.Колонки.Добавить("ЕИ_Комплектующее"); //5
ТЗ_AxСпецификаций.Колонки.Добавить("Количество_Комплектующее"); //6
.............
НоваяСтрока = ТЗ_AxСпецификаций.Добавить();
.............
ПоказатьВот ведь.... простая операция, а просто не получается ...
(7)NushaN,
Да нет, все как раз очень просто. Главное не забывать, что с не типизированными данными такой фокус не пройдет. Поэтому код создания таблицы должен выглядеть примерно вот так:
Вот ведь.... простая операция, а просто не получается ...
Да нет, все как раз очень просто. Главное не забывать, что с не типизированными данными такой фокус не пройдет. Поэтому код создания таблицы должен выглядеть примерно вот так:
Массив = Новый Массив;
Массив.Добавить(Тип("Строка"));
ОписаниеТипаСтрока = Новый ОписаниеТипов(Массив, , Новый КвалификаторыСтроки(50));
Массив.Очистить();
Массив.Добавить(Тип("Число"));
ОписаниеТипаЧисло = Новый ОписаниеТипов(Массив, , Новый КвалификаторыЧисла(15, 3));
Массив.Очистить();
Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));
ОписаниеТипаТовар = Новый ОписаниеТипов(Массив);
Массив.Очистить();
Массив.Добавить(Тип("СправочникСсылка.ЕдиницыИзмерения"));
ОписаниеТипаЕИ = Новый ОписаниеТипов(Массив);
ТЗ_AxСпецификаций = Новый ТаблицаЗначений;
ТЗ_AxСпецификаций.Колонки.Добавить("AxCode_ВыходноеИзделие" , ОписаниеТипаТовар); //1
ТЗ_AxСпецификаций.Колонки.Добавить("Наименование_ВыходноеИзделие" , ОписаниеТипаСтрока);//2
ТЗ_AxСпецификаций.Колонки.Добавить("AxCode_Комплектующее" , ОписаниеТипаТовар); //3
ТЗ_AxСпецификаций.Колонки.Добавить("Наименование_Комплектующее" , ОписаниеТипаСтрока);//4
ТЗ_AxСпецификаций.Колонки.Добавить("ЕИ_Комплектующее" , ОписаниеТипаЕИ); //5
ТЗ_AxСпецификаций.Колонки.Добавить("Количество_Комплектующее" , ОписаниеТипаЧисло); //6
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот