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

Вывод в отчет данных по владельцу

Автор 2С, 10 окт 2014, 09:35

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

Всем доброго утра! Ситуация вот такая: Имеется макет, где основные 2 колонки-"ХранилищеБанк" и "ХранилищеСейф". Эти колонки, в свою очередь, разбиваются ещё на 2 каждая: "ОперацияСум" и "ОперацияВалСум", а также имеется определенные владельцы, кто совершает различные операции по отнесению в Хранилище Банка/Сейфа.
Вопрос в следующем: Как вывести верные значения в колонки ОперацияСум и ОперацияВалСум в каждой основной колонке ХранилищеБанка/Сейфа по определенному Владельцу.


Запрос = Новый Запрос(); Запрос.Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ              | СУММА(ЕСТЬNULL(Производство.ОперацияСум, 0)) КАК СумСум,              | СУММА(ЕСТЬNULL(Производство.ОперацияСум, 0)) КАК СумСум1,              | СУММА(ЕСТЬNULL(Производство.ОперацияВалСум, 0)) КАК СумВал,              | СУММА(ЕСТЬNULL(Производство.ОперацияВалСум, 0)) КАК СумВал1,              | Производство.Владелец,              | Производство.Номер КАК Номер,              | Производство.Валюта КАК Валюта              |ИЗ              | Документ. Производство КАК Производство              | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФКЛ КАК ФКЛ              | ПО Производство.Касса = ФКЛ.Касса              | И ФКЛ.Валюта = Производство.Валюта              |ГДЕ              | Производство.ОперацияВид = &ХранениеБанк              | Производство.ОперацияВид = &ХранениеСейф              |СГРУППИРОВАТЬ ПО              | Производство.Владелец,              | Производство.Номер,              | Производство.Валюта              |              |УПОРЯДОЧИТЬ ПО              | Номер";     Запрос.УстановитьПараметр("ОперацияВалСум",СумВал); Запрос.УстановитьПараметр("ОперацияСум", СумСум); Запрос.УстановитьПараметр("ОперацияВалСум", СумВал1); Запрос.УстановитьПараметр("ОперацияСум", СумСум1); Запрос.УстановитьПараметр("ХранениеБанк",ОперацияВид); Запрос.УстановитьПараметр("ХранениеСейф",ОперВид); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.ВалИн = Выборка.Валюта; ОбластьМакета.Параметры.СумСум    = Выборка. СумСум; ОбластьМакета.Параметры. СумСум1    = Выборка. СумСум1; ОбластьМакета.Параметры. СумВал    = Выборка. СумВал; ОбластьМакета.Параметры. СумВал1    = Выборка. СумВал1; Областьмакета.Параметры.ИнфСтрока  = Выборка.Владелец; ОбластьМакета.Параметры.Номер    = Выборка.Номер; ТабДокумент.Вывести(ОбластьМакета); КонецЦикла;

У меня получается вывести корректные данные только либо по ХранилищеСейфа, либо по ХранилищеБанка. Заранее благодарен за любую помощь.
З.Ы.: cska-fanat-kz, сорри за СумСум )

cska-fanat-kz

|    Производство.ОперацияВид = &ХранениеБанк
|    Производство.ОперацияВид = &ХранениеСейф

не должно быть?

|    Производство.ОперацияВид = &ХранениеБанк
|    ИЛИ Производство.ОперацияВид = &ХранениеСейф
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Цитата: 2С от 10 окт 2014, 09:35cska-fanat-kz, сорри за СумСум )

надо же, меня уже троллить начали... ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Мысли вслух
1. Зачем нужно соединение с регистром ФКЛ если с него все равно никакие поля не берутся?
2. Какой сакральный смысл дважды получать одно и тоже суммовое поле?
3. Какой сакральный смысл в установке вот этих параметров запроса:
    Запрос.УстановитьПараметр("ОперацияВалСум",СумВал);
    Запрос.УстановитьПараметр("ОперацияСум", СумСум);
    Запрос.УстановитьПараметр("ОперацияВалСум", СумВал1);
    Запрос.УстановитьПараметр("ОперацияСум", СумСум1);
?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Цитата: cska-fanat-kz от 10 окт 2014, 10:37
Мысли вслух
1. Зачем нужно соединение с регистром ФКЛ если с него все равно никакие поля не берутся?
2. Какой сакральный смысл дважды получать одно и тоже суммовое поле?
3. Какой сакральный смысл в установке вот этих параметров запроса:
    Запрос.УстановитьПараметр("ОперацияВалСум",СумВал);
    Запрос.УстановитьПараметр("ОперацияСум", СумСум);
    Запрос.УстановитьПараметр("ОперацияВалСум", СумВал1);
    Запрос.УстановитьПараметр("ОперацияСум", СумСум1);
?

Приложил огрызок макета, где это показывается. По сути, смысл вывести разные данные в разные колонки.
Добавлено: 10 окт 2014, 10:55


Цитата: cska-fanat-kz от 10 окт 2014, 10:33
|    Производство.ОперацияВид = &ХранениеБанк
|    Производство.ОперацияВид = &ХранениеСейф

не должно быть?

|    Производство.ОперацияВид = &ХранениеБанк
|    ИЛИ Производство.ОперацияВид = &ХранениеСейф


Такое пробовал - выводит только ХранениеСейф. Хотя не, вру, выводит, но все в куче, например: выводится цифры по обоим колонкам (сейф, банк) , хотя владелец использовал только одно хранилище. Как быть в этой ситуации?

cska-fanat-kz

Цитата: 2С от 10 окт 2014, 10:51Такое пробовал - выводит только ХранениеСейф. Хотя не, вру, выводит, но все в куче, например:

я сильно не вчитывался...
на самом деле надо сделать объединение 2-ух запросов:
1. Запрос по банку
2. Запрос по сейфам
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

LexaK

Ну народ вы даете, судя по картинке такой запрос должен быть, в СКД было бы красивее

запрос.текст=

выбрать
//Производство.ОперацияВид,
Производство.Владелец,
Производство.Номер,
Производство.Валюта,
Сумма(
выбор когда Производство.ОперацияВид = Значение(Перечисление.ОперацияВид.ХранениеБанк)
Тогда Производство.ОперацияСум
иначе 0 конец) как СуммаБанк,
Сумма(
выбор когда Производство.ОперацияВид = Значение(Перечисление.ОперацияВид.ХранениеСейф)
Тогда Производство.ОперацияСум
иначе 0 конец) как СуммаСейф
ИЗ
ДОКУМЕНТ.Производство КАК Производство
где
Производство.Проведен //документ может быть не проведен или вообще помечен на удаление
и Производство.Дата между &Дата1 и &Дата2 //наверно надо добавить хотя бы условие по периоду
СГРУППИРОВАТЬ ПО
Производство.ОперацияВид,
Производство.Владелец,
Производство.Номер,
Производство.Валюта

УПОРЯДОЧИТЬ ПО
Номер


вашей базы у меня тет, поэтому запрос проверить не могу, должно все работать
Производство.ОперацияВид наверняка перечисление, если не так, то задайте условие через параметры
если помогло нажмите: Спасибо!

Цитата: LexaK от 10 окт 2014, 11:39
Ну народ вы даете, судя по картинке такой запрос должен быть, в СКД было бы красивее

запрос.текст= выбрать //Производство.ОперацияВид, Производство.Владелец, Производство.Номер, Производство.Валюта, Сумма( выбор когда Производство.ОперацияВид = Значение(Перечисление.ОперацияВид.ХранениеБанк) Тогда Производство.ОперацияСум иначе 0 конец) как СуммаБанк, Сумма( выбор когда Производство.ОперацияВид = Значение(Перечисление.ОперацияВид.ХранениеСейф) Тогда Производство.ОперацияСум иначе 0 конец) как СуммаСейф ИЗ ДОКУМЕНТ.Производство КАК Производство где Производство.Проведен //документ может быть не проведен или вообще помечен на удаление и Производство.Дата между &Дата1 и &Дата2 //наверно надо добавить хотя бы условие по периоду СГРУППИРОВАТЬ ПО Производство.ОперацияВид, Производство.Владелец, Производство.Номер, Производство.Валюта УПОРЯДОЧИТЬ ПО Номер


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


Пустые ячейки выдает. Что-то тут не чисто. Перечисление, конечно, есть - пляшу от него.

LexaK

попробуйте этот запрос в консоли запросов выполнить
если помогло нажмите: Спасибо!

Цитата: LexaK от 10 окт 2014, 13:01
попробуйте этот запрос в консоли запросов выполнить

Дык я так и корректировал. Итог: пусто.

Теги:

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

Рейтинг@Mail.ru

Поиск