Добрый день!
Идея - выбирать тип справочника и подставлять его в запрос. Т.е. вместо &ТЗ(ниже) подставить, к примеру, Справочник.СтатьЗатрат.
На форме сделал выбор списка значений с выбором.
Сделал код:
передаю как параметр &ТЗ КАК Статьи
начинает ругаться на
Может по другому как-то сделать?
Идея - выбирать тип справочника и подставлять его в запрос. Т.е. вместо &ТЗ(ниже) подставить, к примеру, Справочник.СтатьЗатрат.
На форме сделал выбор списка значений с выбором.
Сделал код:
СправочникСтруктура = Новый Структура("ПДИР,СДДС,СЗ","Справочник.ПрочиеДоходыИРасходы", "Справочник.СтатьиДвиженияДенежныхСредств", "Справочник.СтатьЗатрат");
ВидСправочника = ЭтаФорма.ВидСправочника;
Для Каждого элем из СправочникСтруктура Цикл
Если элем.Ключ = ВидСправочника Тогда
ПарамВыбора = элем.Значение;
КонецЕсли;
КонецЦикла;
ПарамВыбора1 = Новый ТаблицаЗначений;
ПарамВыбора1.Колонки.Добавить("Свойство");
СтрокаТЧ = ПарамВыбора1.Добавить();
СтрокаТЧ.Свойство = ПарамВыбора;
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ПарамВыбора1);
ПостроительЗапроса.Выполнить();
ТЗ = ПостроительЗапроса.Результат.Выгрузить();
Запрос = Новый запрос;
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Запрос.Текст = "ВЫБРАТЬ
|Статьи.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТС
|ИЗ
| &ТЗ КАК Статьи
|ГДЕ
| (Статьи.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Родитель.Код = ""БП-000001"")
|И Статьи.ЭтоГруппа = ЛОЖЬ
|
|;
|
|ВЫБРАТЬ
| ВТС.Ссылка КАК Ссылка
|ИЗ
| ВТС КАК ВТС";
РезультатВМассив = Запрос.Выполнить().Выгрузить();
Показатьпередаю как параметр &ТЗ КАК Статьи
начинает ругаться на
Поле не найдено "Статьи.Родитель.Код"
(Статьи.<<?>>Родитель.Код = "БП-000001"
Может по другому как-то сделать?
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- 1С + javascript + HTML
- Интеграция 1С и Sentry для мониторинга ошибок и расчета Apdex
- XDTO выгрузка и загрузка справочника с иерархией
- Управляем ботами Telegram из 1С - рассылка отчетов, пошаговое общение с чатами и произвольные скрипты
Найденные решения
Родитель = Справочники[ИмяСправочника].НайтиПоКоду("БП-000001");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Т.Ссылка КАК Ссылка
|ИЗ
| Справочник.СтатьиЗатрат КАК Т
|ГДЕ
| Т.Ссылка В ИЕРАРХИИ(&Родитель)
| И НЕ Т.ЭтоГруппа");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "СтатьиЗатрат", ИмяСправочника);
Запрос.УстановитьПараметр("Родитель", Родитель);
РезультатВМассив = Запрос.Выполнить().Выгрузить();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10) потому что следующий код:
делает неявное соединение источника данных ТЗ с таблицами базы данных. Что делать нельзя.
|ГДЕ
| (Статьи.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Родитель.Код = ""БП-000001"")
| (Статьи.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Код = ""БП-000001""
| ИЛИ Статьи.Родитель.Родитель.Родитель.Родитель.Код = ""БП-000001"")
делает неявное соединение источника данных ТЗ с таблицами базы данных. Что делать нельзя.
Родитель = Справочники[ИмяСправочника].НайтиПоКоду("БП-000001");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Т.Ссылка КАК Ссылка
|ИЗ
| Справочник.СтатьиЗатрат КАК Т
|ГДЕ
| Т.Ссылка В ИЕРАРХИИ(&Родитель)
| И НЕ Т.ЭтоГруппа");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "СтатьиЗатрат", ИмяСправочника);
Запрос.УстановитьПараметр("Родитель", Родитель);
РезультатВМассив = Запрос.Выполнить().Выгрузить();
Показать
(1) Не понятна задача. Для чего вы хотите подставлять тип в запрос? Скажите что хотите сделать, возможно есть более простое решение. Ваш запрос очень не оптимальный по производительности. в плане запроса у вас будет жесть, оптимизатор sql по-любому свалится в table scan
(8) а, понял теперь.
ну тогда вам в (6) ответили уже
На форму вывести текстовый реквизит "ИмяСправочника", режим выбора из списка,
Задать список выбора:
"ПДИР,СДДС,СЗ","Справочник.ПрочиеДоходыИРасходы", "Справочник.СтатьиДвиженияДенежныхСредств", "Справочник.СтатьЗатрат"
а дальше код готов
ну тогда вам в (6) ответили уже
На форму вывести текстовый реквизит "ИмяСправочника", режим выбора из списка,
Задать список выбора:
"ПДИР,СДДС,СЗ","Справочник.ПрочиеДоходыИРасходы", "Справочник.СтатьиДвиженияДенежныхСредств", "Справочник.СтатьЗатрат"
а дальше код готов
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот