|
Корректный запрос параметров из запроса. | ☑ | ||
---|---|---|---|---|
0
EtoNeTochno
14.12.22
✎
17:49
|
Дано: макет отчета, с комментариями какие показатели должны быть в какой строке. Запрос подготовила. А в параметры вывести не могу. Зеленая и глупая видимо совсем, но сдаваться не хочется. Вариантов использовала массу, в сообщения он выводит эти суммы, а в отчете не показывает.
Макет = ПолучитьМакет("ФинансовыеПоказатели"); ТабДок.Очистить(); ОбластьШапка = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьВыручка = Макет.ПолучитьОбласть("ВыручкаТаблицы"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(Номенклатура.бит_стр_НазначениеПомещения, """""""") КАК НазначениеПомещения, | СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма, | ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК Номенклатура |ИЗ | РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО (ХозрасчетныйДвиженияССубконто.СубконтоКт3 = Номенклатура.Ссылка) |ГДЕ | ХозрасчетныйДвиженияССубконто.Активность = ИСТИНА | И ХозрасчетныйДвиженияССубконто.СчетДт В ИЕРАРХИИ(&СчетДт) | И ХозрасчетныйДвиженияССубконто.СчетКт = &СчетКт | И ХозрасчетныйДвиженияССубконто.Организация = &Организация | |СГРУППИРОВАТЬ ПО | ХозрасчетныйДвиженияССубконто.СубконтоКт3, | Номенклатура.бит_стр_НазначениеПомещения |ИТОГИ ПО | НазначениеПомещения"; Запрос.УстановитьПараметр("СчетДт", ПланыСчетов.Хозрасчетный.НайтиПоКоду("62")); Запрос.УстановитьПараметр("СчетКт", ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1")); Запрос.УстановитьПараметр("Организация", Организация); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ОбластьШапка.Параметры.Дата = Формат(ТекущаяДата(),"ДФ=dd.MM.yyyy"); ТабДок.Вывести(ОбластьШапка); //ВыборкаВыручка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НазначениеПомещения"); ДКПЖилая = 0; ДКПмашиноместо = 0; Пока Выборка.Следующий() Цикл Если Выборка.НазначениеПомещения = "Жилая недвижимость" Тогда ДКПЖилая = Выборка.Сумма; ИначеЕсли Выборка.НазначениеПомещения = "Машиноместо (паркинг)" Тогда ДКПмашиноместо = Выборка.Сумма; КонецЕсли; //обращение к полям Сообщить(Выборка.НазначениеПомещения); Сообщить(Выборка.Сумма); Сообщить(Выборка.Номенклатура); КонецЦикла; ОбластьВыручка.Параметры.ВыручкаДКПЖилая = (ДКПЖилая/1000); ОбластьВыручка.Параметры.ВыручкаДКПмашиноместо = ДКПмашиноместо/1000; ТабДок.Вывести(ОбластьВыручка); Проблема именно с параметрами ВыручкаДКПЖилая и ВыручкаДКПмашиноместо |
|||
1
Йохохо
14.12.22
✎
18:00
|
Если Выборка.НазначениеПомещения = "Жилая недвижимость" Тогда
и Выборка.НазначениеПомещения = "Машиноместо (паркинг)" тут ошибка, это никогда не истина |
|||
2
EtoNeTochno
14.12.22
✎
18:20
|
(1) Мое НИКОГДА измеряется нескольким месяцами. Подскажите, пожалуйста, как корректно можно сформулировать?
|
|||
3
Said_We
14.12.22
✎
18:35
|
(0) А чего строки ниже не внутри цикла?
ОбластьВыручка.Параметры.ВыручкаДКПЖилая = (ДКПЖилая/1000); ОбластьВыручка.Параметры.ВыручкаДКПмашиноместо = ДКПмашиноместо/1000; ТабДок.Вывести(ОбластьВыручка); Сообщить же там. ДКПЖилая = 0; ДКПмашиноместо = 0; один раз только обнуляем, а потом можно использовать значения предыдущей итерации? |
|||
4
Said_We
14.12.22
✎
18:45
|
(0) Номенклатура не используется. Чего её тянуть?
Если нужно выводить одновременно разные НазначениеПомещения в одной строке, то тут надо либо честно дополнять данные нулями и в правильном порядке сортировать данные, либо сразу в запросе эти две колонки в виде разных полей подготовить. Либо засунуть в СКД и пусть оно думает как там что выводить и группировать. |
|||
5
EtoNeTochno
14.12.22
✎
20:44
|
(4) решила. Из запроса в тз а из тз в параметр :)
|
|||
6
mikecool
14.12.22
✎
20:55
|
это точно не твоя профессия...
|
|||
7
FirstLine Support
14.12.22
✎
23:01
|
(6) почему? Она нашла оригинальное решение, я бы вот ни за что не догадался "из запроса в те, а из тз в параметр". Может это новый гений 1С подрастает..
|
|||
8
Said_We
15.12.22
✎
01:45
|
(7) "из запроса в ТЗ, а из ТЗ в параметр" - такое иногда применяется.
Например, когда данные тянутся из внешних источников в непонятных форматах. Сначала создается контейнер для приема в виде ТЗ путем выполнения запроса к структуре приёмника с условием "ГДЕ ЛОЖЬ". То есть пустая ТЗ, но с колонками. Что бы типы колонок не прописывать. Так быстрее и если тип поля немного поменяется (размерность числа, например), то код не придется переписывать с большой долей вероятности. Далее из внешнего источника заполняется ТЗ. Далее ТЗ предаётся как параметр в запрос. Далее в запросе сразу для всех данных ссылочного типа осуществляется поиск ссылок в приемнике. Что бы мазохизмом не заниматься и не искать в цикле для каждой строки для каждой колонки. Собственно далее создание по порядку объектов, которые не найдены и при необходимости обновление существующих. Тут уже от логики задачи зависит. Не всегда данные прилетают в виде каких-то XML или JSON. Бывает всё что угодно. И синхронизация тоже бывает очень разная. Источником данных для 1С может быть и XLS и текстовый файл и готовые запросы к БД и что попало. Поэтому описанный вариант "из запроса в ТЗ, а из ТЗ в параметр" - имеет место быть, но справедливости ради, совсем в других задачах. Уж точно не при формировании печатной формы. |
|||
9
EtoNeTochno
15.12.22
✎
08:19
|
(8) Благодарю за ответ. Я только учусь и стараюсь реализовывать поставленные передо мной задачи полностью. Я уверенна, что всё что я сделала на данный момент - можно оптимизировать и улучшить. Но также я знаю насколько мне важно создавать работоспособные вещи, даже если это пока несколько нелепо и зачастую нелогично сделано. Тут я искала помощи, думала что люди раз компетентные и на форуме свободное время проводят, то смогут подсказать в какую сторону искать ответы.
|
|||
10
FirstLine Support
15.12.22
✎
08:55
|
(9) Да ничего страшного, я так же начинал после революции (интернета тогда не было, а эвм стоила как подводная лодка). Ну и лет через десять начало приходить понимание, как вот это вот всё устроено. А сейчас опять начал параметры через тз заполнять.
|
|||
11
Said_We
15.12.22
✎
10:27
|
(9) Фотку свою добавь в аккаунт. Помогать будут с большим желанием. И выпендриваться меньше будут. :-) Проверено временем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |