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

Запрос выдает пустые значения

Автор mahaidor, 25 июл 2016, 05:25

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

mahaidor

Здравствуйте. Организовал запрос в 1с 8.3, но он почему то выдает пустые значения.

Суть такая: источник данных табличная часть текущего документа ПрогнозСчетаСистемами_Варианты.
Нужно вычислит среднее значение прогнозируемого счета для каждой системы и вывести каждую систему и ее прогнозируемый средний счет в другую табличную часть.

Пример
исходная таблица
Соккер 2-0
Соккер 1-0
Соккер 2-1
Робобет 1-0
Робобет 0-0

надо получить
Соккер 1,7-0,33
Робобет 0,5-0


Запрос=Новый Запрос;
Запрос.Текст=
  "ВЫБРАТЬ
  | ПрогнозНачальный.Ссылка,
  | ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Система как Система,
  | Среднее(ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Х) как Х,
  | Среднее(ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Г) как Г
  |ИЗ
  | Документ.ПрогнозНачальный КАК ПрогнозНачальный
  |ГДЕ
  | ПрогнозНачальный.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  | ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.(Система)"
  ;
 
//3.1 - устанавливаем параметр, что выборка данных производится из текущего документа
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
//3.2 - создаем таблицу занчений, куда выгрузим результаты запроса
ТбЗн=Новый ТаблицаЗначений;
//3.3 - выгружаем результаты запроса
ТбЗн=Запрос.Выполнить().Выгрузить();
//Сообщить(ТбЗн.Количество());
//4 - заполение табчасти "Средний счет"
Для Каждого ТекСтрока из ТбЗн Цикл
    НоваяСтрока=СреднийСчет.Добавить();
    НоваяСтрока.Система=ТекСтрока.Система;
    НоваяСтрока.Х=ТекСтрока.Х;
    НоваяСтрока.Г=ТекСтрока.Г;
КонецЦикла;

Luzer1C

Зачем так сложно?
Запрос=Новый Запрос;
Запрос.Текст=
  "ВЫБРАТЬ
  |    ПрогнозНачальный.Ссылка,
  |    ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Система как Система,
  |    Среднее(ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Х) как Х,
  | Среднее(ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.Г) как Г
  |ИЗ
  |    Документ.ПрогнозНачальный КАК ПрогнозНачальный
  |ГДЕ
  |    ПрогнозНачальный.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  |    ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты.(Система)"
  ;
 
//3.1 - устанавливаем параметр, что выборка данных производится из текущего документа
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
//3.2 - перебираем результат запроса
Выборка = Запрос.Выполнить()Выбрать();
//4 - заполение табчасти "Средний счет"
Пока Выборка.Следующий() Цикл
    НоваяСтрока = СреднийСчет.Добавить();
    НоваяСтрока.Система=Выборка.Система;
НоваяСтрока.Х=Выборка.Х;
    НоваяСтрока.Г=Выборка.Г;
КонецЦикла;

Так проще?
А где в запросе обращение к ТЧ документа "ПрогнозСчетаСистемами_Варианты"?
Т.е. должно быть так: Документ.ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты КАК ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.
В итоге получаем:
"ВЫБРАТЬ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка,
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.ПрогнозСчетаСистемами_Варианты.Система как Система,
  |    Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.ПрогнозСчетаСистемами_Варианты.Х) как Х,
  | Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.ПрогнозСчетаСистемами_Варианты.Г) как Г
  |ИЗ
  |    Документ.ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты КАК ПрогнозНачальныйПрогнозСчетаСистемами_Варианты
  |ГДЕ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.ПрогнозСчетаСистемами_Варианты.(Система)"
  ;

Добавлено: 25 июл 2016, 06:17


Ё-маё. Так нужно:
"ВЫБРАТЬ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка,
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Система как Система,
  |    Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Х) как Х,
  | Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Г) как Г
  |ИЗ
  |    Документ.ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты КАК ПрогнозНачальныйПрогнозСчетаСистемами_Варианты
  |ГДЕ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Система"
  ;
Халамбалам.

mahaidor

Хм, сделал как вы сказали, но выдается ошибка "Неправильный псевдоним" в 3 строке запроса

Luzer1C

Ну это примерно как должно быть. Можно Вместо "Х" прописать "ХреньЧегоТоТам".
Т.е. Как ХреньЧегоТоТам
Халамбалам.

mahaidor

Дело в том, что надо сделать выборку из табличной части текущего открытого документа. И для того, чтобы запрос так делал, я передаю в него параметром ссылку на открытый документ. Поэтому изначально в тексте запроса я отбираю Документ.Ссылка, чтобы путем сравнения остановиться на текущем документе.

В вашем случае избирается ссылка на табличную часть документа, поэтому надо передавать другой параметр в запрос. Не могу сообразить тогда, в каком виде параметр то передавать.


Luzer1C

Халамбалам.

mahaidor

Спасибо.

Сделал так:
"ВЫБРАТЬ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Система как Система,
  |    Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Х) как Х,
  | Среднее(ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Г) как Г
  |ИЗ
  |    Документ.ПрогнозНачальный.ПрогнозСчетаСистемами_Варианты КАК ПрогнозНачальныйПрогнозСчетаСистемами_Варианты
  |ГДЕ
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  |    ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Система"
   ;


Этот вариант рабочий. не знал, что можно так:  ПрогнозНачальныйПрогнозСчетаСистемами_Варианты.Ссылка.Ссылка

Luzer1C

Халамбалам.

mahaidor


Теги:

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

Рейтинг@Mail.ru

Поиск