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

Повторяющиеся значения в отчете

Автор stelgi, 04 мая 2018, 15:43

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

stelgi

Учусь работать в 1с 8.2. Пишу базу по заданию. Вот есть задание сделать отчет, данные беру из регистра накопления. Но в результате выдает повторяющиеся значения, хотя их быть не должно.Ткань1 и Ткань3 были проведены через документ только 1 раз


KOI8-R

Накосячили с соединениями.
Текст запроса мы должны угадать или все таки может покажете?

stelgi

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

alex0402

Цитата: stelgi от 04 мая 2018, 16:14|ИЗ
| РегистрНакопления.РегистрВыпускаПродукции КАК РегистрВыпускаПродукции

Цитата: stelgi от 04 мая 2018, 16:14|ИТОГИ
| СУММА(Расход_Красителя)
из этого делаю вывод, что нужен приход. Для этого существует виртуальная таблица Обороты
Спасибо за Сказать спасибо

KOI8-R

А зачем вам вообще соединение? Вы же в любом случае все данные из виртуальных таблиц тащите?
Почему просто вот так не устроило?
"ВЫБРАТЬ РАЗЛИЧНЫЕ | РегистрВыпускаПродукцииОбороты.ВыработкаТканиПриход КАК Выработка, | РегистрВыпускаПродукцииОбороты.Код.РасходКрасителя КАК Расход_Красителя, | РегистрВыпускаПродукцииОбороты.Код.Наименование КАК Наименование |ИЗ | РегистрНакопления.РегистрВыпускаПродукции.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК РегистрВыпускаПродукцииОбороты "

stelgi

Спасибо большое за помощь всем. Я разобрался.

Теги:

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

Рейтинг@Mail.ru

Поиск