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

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

Автор 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

Поиск