Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:33

Определение справочника в запросе

Автор mahaidor, 16 апр 2014, 16:42

0 Пользователей и 1 гость просматривают эту тему.

mahaidor

Здравствуйте. Платформа 8.3.4.437.  Пытаюсь извлечь из справочника значение и записать его в поел табличной части документа. Если определить справочник в запросе напрямую, то все будет работать без проблем, но дело в том функция, которая содержит запрос должна вызываться неоднократно для разных объектов, поэтому я пытаюсь передать параметр Спр в запрос. Когда я вызываю функцию, я могу передать ей параметр Справочники.Таблица_Рост или Справочники.Таблица_Вес. Так вот чего сообразит не могу как правильно обозначить подобный параметр запроса.
"ВЫБРАТЬ
     
| Спр.Р_1,Спр.Р_2,
| Спр.Р_3, Спр.Р_4,
| Спр.Р_5, Спр.Р_6
| ИЗ Спр
| ГДЕ Спр.Возраст=&Возраст и Спр.Пол=&Пол";
Запрос.УстановитьПараметр("Спр",Спр);
Запрос.УстановитьПараметр("Возраст",Возраст);
Запрос.УстановитьПараметр("Пол",Пол);

СветланаCC

Вы такое можете сделать если у нас названия полей справочников одинаковые...
Тазовод)

СветланаCC

что то вроде
                  |   ЗаказПокупателя.Номенклатура,
                  |   " + СтрокаВыборкиПоляСодержания + " КАК Товар,
                  |   ЗаказПокупателя.Номенклатура.Код,
                  |   ЗаказПокупателя.Номенклатура.Артикул,
                  |   ЗаказПокупателя.Количество,
где
СтрокаВыборкиПоляСодержания - можно задать в процедуре
Тазовод)

mahaidor

Цитата: СветланаCC от 16 апр 2014, 16:56
Вы такое можете сделать если у нас названия полей справочников одинаковые...
Да абсолютно верно, поля справочников у меня одинаковые. У меня несколько одинаковых по составу справочников, но с разным содержанием, и для каждого писать запрос - неоптимально. Проще написать одну функцию и вызывать её когда надо.
Добавлено: 17 апр 2014, 02:57


Цитата: СветланаCC от 16 апр 2014, 16:59
что то вроде
                  |   ЗаказПокупателя.Номенклатура,
                  |   " + СтрокаВыборкиПоляСодержания + " КАК Товар,
                  |   ЗаказПокупателя.Номенклатура.Код,
                  |   ЗаказПокупателя.Номенклатура.Артикул,
                  |   ЗаказПокупателя.Количество,
где
СтрокаВыборкиПоляСодержания - можно задать в процедуре
непонятный код. В нем так я понял выборка идет из ЗаказПокупателя, но СТрокаВыборкиПоляСОдержания как-то не к месту здесь?

СветланаCC

Это был пример! СТрокаВыборкиПоляСОдержания - эта какая либо переменная.
Процедура Выполнить()
ПолучитьДанные("Номенклатура");
КонецПроцедуры

Процедура ПолучитьДанные(СправочникНаименование)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| "+СправочникНаименование+".Код,
| "+СправочникНаименование+".Наименование
|ИЗ
| Справочник."+СправочникНаименование+" КАК Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//все действия
КонецЦикла;
КонецПроцедуры
Тазовод)

cska-fanat-kz

Текст запроса это строка, которую вы можете собирать как угодно.
По возможности посмотрите в типовых решениях.
Строите начальный запрос конструктором и потом правите примерно как в предыдущем посте у Светланы.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

KrivosheevEV

Цитата: mahaidor от 16 апр 2014, 17:01и для каждого писать запрос - неоптимально.

Не оптимально? А вы пробовали потом исправлять, оптимизировать или дорабатывать подобный код? Отвратительное занятие. Препарированные запросы - гадость!
Я бы реализовал через получение текста запроса двумя разными функциями (в зависимости от нужного справочника).

cska-fanat-kz

Цитата: KrivosheevEV от 17 апр 2014, 10:58
Цитата: mahaidor от 16 апр 2014, 17:01и для каждого писать запрос - неоптимально.

Не оптимально? А вы пробовали потом исправлять, оптимизировать или дорабатывать подобный код? Отвратительное занятие. Препарированные запросы - гадость!
Я бы реализовал через получение текста запроса двумя разными функциями (в зависимости от нужного справочника).

В целом - поддерживаю. Отлаживать текст запроса из кусочков - те еще танцы с бубном и консолью запросов )
Но в любом случае надо смотреть на конкретную задачу - что именно лучше.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

mahaidor

Цитата: cska-fanat-kz от 17 апр 2014, 12:29
Цитата: KrivosheevEV от 17 апр 2014, 10:58
Цитата: mahaidor от 16 апр 2014, 17:01и для каждого писать запрос - неоптимально.

Не оптимально? А вы пробовали потом исправлять, оптимизировать или дорабатывать подобный код? Отвратительное занятие. Препарированные запросы - гадость!
Я бы реализовал через получение текста запроса двумя разными функциями (в зависимости от нужного справочника).

В целом - поддерживаю. Отлаживать текст запроса из кусочков - те еще танцы с бубном и консолью запросов )
Но в любом случае надо смотреть на конкретную задачу - что именно лучше.
Да использовал пример Светланы не работает, в общем решил я для каждого справочника по функции сварганить, хот и претит мне так делать, но времени нет диплом пишу. После диплома подумаю ка реализовать одну функцию для справочников. Всем спасибо.

СветланаCC

Цитата: mahaidor от 17 апр 2014, 15:21
Да использовал пример Светланы не работает, в общем решил я для каждого справочника по функции сварганить, хот и претит мне так делать, но времени нет диплом пишу. После диплома подумаю ка реализовать одну функцию для справочников. Всем спасибо.
У меня все работает) проверяла
Тазовод)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск