PDA

Просмотр полной версии : 1С 8.2 Не срабатывает запрос....



Максимио
21.04.2014, 15:44
Доброго времени суток!
Помогите, пожалуйста, разобраться со следующей проблемой:

Создал справочник "Производители". В справочнике есть таб. часть "ВариантыНазваний" - с 3-мя реквизитами таб.части: "Партнёр" + "НазваниеБрэнда" + "НазваниеДляЗапроса".

Например:
Поставщик№1 | "HYUNDAI/KIA/MOBIS" | "HYUNDAI/KIA"
Поставщик№2 | "KIA/HYUNDAI/MOBIS" | "HYUNDAI/KIA"
Поставщик№3 | "HYUNDAI/KIA"_______| "HYUNDAI/KIA"

Пытаюсь запросом получить нужный мне элемент справочника:


Функция ПолучитьПроизводителяНоме нклатуры(СтрокаПоиска, Партнёр, ВидНоменклатуры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПроизводителиВариантыНазв аний.Ссылка,
| ПроизводителиВариантыНазв аний.Ссылка.ГруппаДляРазме щения,
| ПроизводителиВариантыНазв аний.Ссылка.ВидНоменклатур ы,
| ПроизводителиВариантыНазв аний.Ссылка.ВидЗапчасти,
| ПроизводителиВариантыНазв аний.Партнёр,
| ПроизводителиВариантыНазв аний.НазваниеБрэнда КАК НазваниеБрэнда,
| ПроизводителиВариантыНазв аний.НазваниеДляЗапроса
|ИЗ
| Справочник.Производители.В ариантыНазваний КАК ПроизводителиВариантыНазв аний
|ГДЕ
| ПроизводителиВариантыНазв аний.Ссылка.ВидНоменклатур ы = &ВидНоменклатуры
| И ПроизводителиВариантыНазв аний.Ссылка.ПометкаУдалени я = ЛОЖЬ
| И ПроизводителиВариантыНазв аний.Партнёр = &Партнёр
| И ПроизводителиВариантыНазв аний.НазваниеБрэнда = &НазваниеБрэнда
|
|УПОРЯДОЧИТЬ ПО
| НазваниеБрэнда";
Запрос.УстановитьПараметр("НазваниеБрэнда", СтрокаПоиска);
Запрос.УстановитьПараметр("Партнёр", Партнёр);
Запрос.УстановитьПараметр("ВидНоменклатуры", ВидНоменклатуры);

ТаблицаПроизводителей = Запрос.Выполнить().Выгрузит ь();

Если ТаблицаПроизводителей.Кол� �чество() = 0 Тогда
Сообщить("Не найден производитель номенклатуры - " + СтрокаПоиска, СтатусСообщения.Внимание);
Возврат Справочники.Производители. ПустаяСсылка();
Иначе
Возврат ТаблицаПроизводителей[0].Ссылка;
КонецЕсли;
КонецФункции

Параметры перепроверял по 10 раз. Типы совпадают (везде тип значения строка)!!! Консоль запросов, при проверке, показывает мне нужный результат. А вот в функции запрос почему-то не срабатывает (Результат - пустой)....
Как так может быть? Что неправильно делаю?

arccos6pi
21.04.2014, 17:08
консоль это все классно,а вот отладка что говорит?

---------- Post added at 17:08 ---------- Previous post was at 17:06 ----------

для начала смотрите что у вас в ТаблицаПроизводителей выгружается
если все ок,то смотрите дальше выполняется ли условие

Максимио
21.04.2014, 17:12
Отладка говорит что переменная "ТаблицаПроизводителей " - таблица значений. ТаблицаПроизводителей .Количество() = 0;

СтрокаПоиска = "BMW"
ВидНоменклатуры - Тип "СправочникСсылка.Номенкат� �ра". Значение "Товар".
Партнёр = "ADEO".

Все значения и типы совпадают смотрел ручками ))

По коду программно получал нужный элемент и сравнивал все параметры поиска. Все равны между собой.


Производитель = Справочники.Производители. НайтиПоКоду("000000079");
Если Производитель.ВидНоменкла� �уры = ВидНоменклатуры Тогда
Поиск = Новый Структура;
Поиск.Вставить("Парнёр", Партнёр);
СтрокиПартнёра = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если СтрокиПартнёра.Количество( ) = 0 Тогда
Сообщить("!");
КонецЕсли;
Поиск = Новый Структура;
Поиск.Вставить("НазваниеБрэнда", СтрокаПоиска);
СтрокиПоБрэнду = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если СтрокиПоБрэнду.Количество( ) = 0 Тогда
Сообщить("!");
КонецЕсли;
Поиск = Новый Структура;
Поиск.Вставить("НазваниеБрэнда", СтрокаПоиска);
Поиск.Вставить("Парнёр", Партнёр);
НайденныеСтроки = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если НайденныеСтроки.Количеств� �() = 0 Тогда
Сообщить("!");
КонецЕсли;
КонецЕсли;

Все три условия не выполнились!

arccos6pi
21.04.2014, 17:42
Отладка говорит что переменная "ТаблицаПроизводителей " - таблица значений. ТаблицаПроизводителей .Количество() = 0;

СтрокаПоиска = "BMW"
ВидНоменклатуры - Тип "СправочникСсылка.Номенкат� �ра". Значение "Товар".
Партнёр = "ADEO".

Все значения и типы совпадают смотрел ручками ))

По коду программно получал нужный элемент и сравнивал все параметры поиска. Все равны между собой.


Производитель = Справочники.Производители. НайтиПоКоду("000000079");
Если Производитель.ВидНоменкла� �уры = ВидНоменклатуры Тогда
Поиск = Новый Структура;
Поиск.Вставить("Парнёр", Партнёр);
СтрокиПартнёра = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если СтрокиПартнёра.Количество( ) = 0 Тогда
Сообщить("!");
КонецЕсли;
Поиск = Новый Структура;
Поиск.Вставить("НазваниеБрэнда", СтрокаПоиска);
СтрокиПоБрэнду = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если СтрокиПоБрэнду.Количество( ) = 0 Тогда
Сообщить("!");
КонецЕсли;
Поиск = Новый Структура;
Поиск.Вставить("НазваниеБрэнда", СтрокаПоиска);
Поиск.Вставить("Парнёр", Партнёр);
НайденныеСтроки = Производитель.ВариантыНаз� �аний.НайтиСтроки(Поиск);
Если НайденныеСтроки.Количеств� �() = 0 Тогда
Сообщить("!");
КонецЕсли;
КонецЕсли;

Все три условия не выполнились!если ТаблицаПроизводителей .Количество() = 0 тогда у вас или параметры неверные,или данных по такому запросу просто нет