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

как вытащить живые данные

Автор sali, 04 ноя 2025, 13:13

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

Максим75

Цитата: sali от 05 ноя 2025, 10:07Максим75, так все заполняется
компоновщик настроек заполненный, параметры отбора стоят (если был назначен отбор), макет компоновки тоже заполнен, что хочу выгрузить все есть. а в таблице пусто. ну как так?
 я не знаю уже где смотреть и что
смотреть туда, где таблица заполняется. значит у Вас запрос скд ничего не возвращает. ищите почему. возможно с параметрами беда, они не попадают в компоновщик.

sali

Цитата: Максим75 от 05 ноя 2025, 10:34они не попадают в компоновщик.
все попадает
но как только идет возврат и строки запрос.выполнить().выгрузить() - пустая ТЗ, нет параметров, а до этого есть. хотя все происходит в одном общем модуле

Максим75

Цитата: sali от 05 ноя 2025, 11:03
Цитата: Максим75 от 05 ноя 2025, 10:34они не попадают в компоновщик.
все попадает
но как только идет возврат и строки запрос.выполнить().выгрузить() - пустая ТЗ, нет параметров, а до этого есть. хотя все происходит в одном общем модуле
ну раз это не скд, то станьте точкой и посмотрите, какие параметры в запрос прилетают и почему запрос возвращает пустоту.
в конце концов сделайте внешнюю обработку с этим таким же текстом запроса, параметрами, отборами и посмотрите, что вернет.

sali

Максим75, смотрите, по другому покажу
// здесь мы обращаемся к процедуре чтобы получить какой-то ответ, а конкретно получить ТЗ с параметрами отбора
Запрос = ПолучитьЗапросДляВыгрузкиДанных(ПараметрыОбмена, Операция, ПараметрыОбмена.СтруктураСхемКомпоновки.Контрагенты, ПараметрыОбмена.НастройкиКомпоновкиДанныхКонтрагентов);

//вот моя функция для ее получения
Функция ПолучитьЗапросДляВыгрузкиДанных(ПараметрыОбмена, Операция, СхемаВыгрузки, НастройкиКомпоновщикаИзНастройкиОбмена) Экспорт   

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;     
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаВыгрузки));
Если ЗначениеЗаполнено(НастройкиКомпоновщикаИзНастройкиОбмена) Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновщикаИзНастройкиОбмена);
КомпоновщикНастроек.Восстановить(СпособВосстановленияНастроекКомпоновкиДанных.ПроверятьДоступность);
Иначе
КомпоновщикНастроек.ЗагрузитьНастройки(СхемаВыгрузки.НастройкиПоУмолчанию);
КонецЕсли;

// прошли компоновщик. у нас в отборе стоят значения которые мы поставили - отбирать данные по федору и николя, в параметрыДанных стоят наши параметры условные (&выгружатьконтрагентов = ложь, &выгружатьскладыконтрагентов = ложь)


ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВыгружатьКонтрагентов");
ПараметрСКД.Значение = ПараметрыОбмена.ОбменКонтрагентами;
ПараметрСКД.Использование = Истина;

ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("ВыгружатьСкладыКонтрагентов");
ПараметрСКД.Значение = ПараметрыОбмена.ОбменКонтрагентами;
ПараметрСКД.Использование = Истина;

// дальше мы устанавливаем их значения и получаем - &выгружатьконтрагентов = истина, &выгружатьскладыконтрагентов = истина
// последним делом нужно это все соединить, запрос + отбор

Запрос = Новый Запрос;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();

Если  Операция = "ОбщаяИнформация" тогда
//МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаВыгрузки, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанных"));
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаВыгрузки, ПолучитьОтборыОбщейИнформацииДляФормированияПакетаДанных(КомпоновщикНастроек.ПолучитьНастройки()),,,Тип("ГенераторМакетаКомпоновкиДанных"));
Иначе
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаВыгрузки, КомпоновщикНастроек.ПолучитьНастройки(),,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
КонецЕсли;

Запрос.Текст = МакетКомпоновкиДанных.НаборыДанных.ОсновнойНаборДанных.Запрос;

Для каждого Параметр Из МакетКомпоновкиДанных.ЗначенияПараметров Цикл
Запрос.Параметры.Вставить(Параметр.Имя, Параметр.Значение);
КонецЦикла;

Возврат Запрос;
// в переменной Запрос мы получаем ТЗ с нашими колонками, с нашими параметрами - все тип топ
конецфункции


//теперь мы возвращаемся в процедуру откуда обращались к функции

Запрос = ПолучитьЗапросДляВыгрузкиДанных(ПараметрыОбмена, Операция, ПараметрыОбмена.СтруктураСхемКомпоновки.Контрагенты, ПараметрыОбмена.НастройкиКомпоновкиДанныхКонтрагентов);
// и теперь чтобы записать результат и работать с ним дальше определяем его в новую переменную
ТаблицаОбъектовОбменаВыгрузки = запрос.Выполнить().Выгрузить();   
// но результат почему то в этот момент выдает нам - пустое значение в параметрах



antoneus

Цитата: sali от 05 ноя 2025, 11:50// в переменной Запрос мы получаем ТЗ с нашими колонками, с нашими параметрами - все тип топ

Врешь ведь. Там запрос, не может там быть ТЗ.

Максим75

sali, Возврат Запрос;  - вот это возвращает ЗАПРОС, а не таблицу значений.
Это запрос, с текстом.

а вот ТаблицаОбъектовОбменаВыгрузки = запрос.Выполнить().Выгрузить();  как раз и получает таблицу значений.
и там что, пусто?
если пусто, то в запросе проблема.

станьте точкой вот после этого Запрос.Текст и посмотрите, что там. Может в тексте запроса пусто.

antoneus

Цитата: Максим75 от 05 ноя 2025, 12:34Может в тексте запроса пусто

Тогда валилось бы с ошибкой "ожидается выражение выбрать". Ставлю на косяк в параметрах.

Максим75

sali, вот здесь посмотрите

 Для каждого Параметр Из МакетКомпоновкиДанных.ЗначенияПараметров Цикл
        Запрос.Параметры.Вставить(Параметр.Имя, Параметр.Значение);
    КонецЦикла;

что в параметры пихается.

sali

Цитата: Максим75 от 05 ноя 2025, 14:14что в параметры пихается.
параметры. перепробовал разное , менял , скорее дело было в запросе

Теги:

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

Рейтинг@Mail.ru

Поиск