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

Дублирование записей в отчете

Автор ZhenyaMono, 19 мар 2024, 06:38

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

ZhenyaMono

У меня в документе есть 3 табличные части ДокументЗаказПокупателя, ЗаказПокупателяДопРасходы, ЗаказПокупателяДоставка, когда добавляешь строку в ЗаказПокупателяДопРасходы, то в отчете СКД дублируются записи в таблице ДокументЗаказПокупателя. Красным ДокументЗаказПокупателя, синим ЗаказПокупателяДопРасходы. То есть когда добавляешь в тч ЗаказПокупателяДопРасходы запись, она начинает относится к каждой номенклатуре тч ДокументЗаказПокупателя и из-за этого они начинаются дублироваться, то есть например записей в тч ДокументЗаказПокупателя 5, а в тч ЗаказПокупателяДопРасходы 3, то в отчете выдаст 15 номенклатуры (ДокументЗаказПокупателя). Это разные тч документа и не должны быть связаны между собой, но почему-то связаны.С чем это может быть связано?

Максим75

ZhenyaMono, в отчете видимо связи есть. там надо смотреть, что и с чем связывается. короче говоря без текста запроса никак не разобраться.

LexaK

если доп расходы являются общими к документу, их надо отдельно агрегировать,  складывать и в отчете использовать как данные шапки документа
если помогло нажмите: Спасибо!

ZhenyaMono

Максим75, ВЫБРАТЬ
   ДокументЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
   ДокументЗаказПокупателя.Ссылка.ПометкаУдаления КАК ПометкаУдаления,
   ДокументЗаказПокупателя.Ссылка.Номер КАК Номер,
   ДокументЗаказПокупателя.Ссылка.Дата КАК Дата,
   ДокументЗаказПокупателя.Ссылка.Проведен КАК Проведен,
   ДокументЗаказПокупателя.Ссылка.ДатаОтгрузки КАК ДатаОтгрузки,
   ДокументЗаказПокупателя.Ссылка.Контрагент КАК Контрагент,
   ДокументЗаказПокупателя.Ссылка.Ответственный КАК Ответственный,
   ДокументЗаказПокупателя.Ссылка.СостояниеЗаказа КАК СостояниеЗаказа,
   ДокументЗаказПокупателя.Ссылка.СуммаДокумента КАК СуммаДокумента,
   ДокументЗаказПокупателя.Ссылка.ЖелтушникВОфисе КАК ЖелтушникВОфисе,
   ДокументЗаказПокупателя.Ссылка.СуммаДоставки КАК СтоимостьДоставки,
   ДокументЗаказПокупателя.Номенклатура КАК Номенклатура,
   ЗаказПокупателяДоставка.Объем КАК Объем,
   ЗаказПокупателяДоставка.Цена КАК Цена,
   ЗаказПокупателяДоставка.Перевозка КАК Перевозка,
   ЗаказПокупателяДоставка.КоличествоРейсов КАК КоличествоРейсов,
   ЗаказПокупателя.Процент.Процент КАК Процент,
   ЗаказПокупателя.Ссылка КАК Ссылка,
   ДокументЗаказПокупателя.Всего КАК Всего,
   ЗаказПокупателя.Контрагент КАК Контрагент1,
   ЗаказПокупателя.Ответственный КАК Ответственный1,
   ЗаказПокупателяДопРасходы.Ссылка КАК Ссылка1,
   ЗаказПокупателяДопРасходы.Заказ.Ссылка КАК ЗаказСсылка,
   ЗаказПокупателяДопРасходы.Заказ.СуммаДокумента КАК ЗаказСуммаДокумента
ПОМЕСТИТЬ ВР
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Запасы КАК ДокументЗаказПокупателя
         ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Доставка КАК ЗаказПокупателяДоставка
         ПО ДокументЗаказПокупателя.Ссылка = ЗаказПокупателяДоставка.Ссылка
            И ДокументЗаказПокупателя.Ид = ЗаказПокупателяДоставка.Ид
      ПО ЗаказПокупателя.Ссылка = ДокументЗаказПокупателя.Ссылка
      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ДопРасходы КАК ЗаказПокупателяДопРасходы
      ПО ЗаказПокупателя.Ссылка = ЗаказПокупателяДопРасходы.Ссылка
ГДЕ
   ВЫБОР
         КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА ИСТИНА
         ИНАЧЕ &НачалоПериода <= ДокументЗаказПокупателя.Ссылка.Дата
      КОНЕЦ
   И ВЫБОР
         КОГДА &КонецПериода = ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА ИСТИНА
         ИНАЧЕ &КонецПериода >= ДокументЗаказПокупателя.Ссылка.Дата
      КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВР.ЗаказПокупателя КАК ЗаказПокупателя1,
   ВР.ПометкаУдаления КАК ПометкаУдаления,
   ВР.Номер КАК Номер,
   ВР.Дата КАК Дата,
   ВР.Проведен КАК Проведен,
   ВР.ДатаОтгрузки КАК ДатаОтгрузки,
   ВР.Контрагент КАК Контрагент1,
   ВР.Ответственный КАК Ответственный1,
   ВР.СостояниеЗаказа КАК СостояниеЗаказа,
   ВР.СуммаДокумента КАК СуммаДокумента,
   ВР.ЖелтушникВОфисе КАК ЖелтушникВОфисе,
   ВР.СтоимостьДоставки КАК СтоимостьДоставки,
   ВР.Номенклатура КАК Номенклатура,
   ВР.Объем КАК Объем,
   ВР.Цена КАК Цена,
   ВР.Перевозка КАК Перевозка,
   ВР.КоличествоРейсов КАК КоличествоРейсов,
   ВР.Процент КАК Процент,
   ВР.Ссылка КАК ЗаказПокупателя,
   ВР.Всего КАК СуммаНоменклатуры,
   ВР.Контрагент1 КАК Контрагент,
   ВР.Ответственный1 КАК Ответственный,
   ВР.Ссылка1 КАК Ссылка1,
   ВР.ЗаказСсылка КАК ЗаказДополнительныйРасход,
   ВР.ЗаказСуммаДокумента КАК ЗаказСуммаДополнительныйРасход

ИЗ
   ВР КАК ВР

ZhenyaMono


ZhenyaMono

LexaK, в плане, в самом документе сложить и потом этот результат использовать в отчете?

LexaK

ZhenyaMono, нет, в запросе отчета, сложить доп.расходи и использовать одну сумму: ДопРасходы
как эту строчку
ВР.Всего КАК СуммаНоменклатуры,
ТабДоп.ДопРасходы, //общая сумма допрасходов по заказу
если помогло нажмите: Спасибо!

ZhenyaMono

LexaK, у меня проблема происходит, когда в запросе используешь таблицу ДопРасходов, даже если не выводишь в отчет, это может быть связано не с отчетом, а с самим документом?

Максим75

ZhenyaMono, Вы в отчете к каждой записи выборки присоединяете ВСЮ таблицу ДопРасходов, поэтому количество записей увеличивается кратно.
Вам надо сделать временную таблицу по ДопРасходам, свернуть ее, получить что-то, что Вам надо (сумму там или еще что-то) и уже только эту одну запись временной таблицы связывать.
Короче говоря надо полностью переделывать запрос.

LexaK

ZhenyaMono, попробуйте такой запрос (без оптимизации)
Выбрать //расчет доп сумм
    ЗаказПокупателяДопРасходы.Ссылка,
    Сумма(ЗаказПокупателяДопРасходы.Заказ.СуммаДокумента) КАК ДопСуммаДокумента
поместить ТабДопСумма   
Из   
    Документ.ЗаказПокупателя.ДопРасходы КАК ЗаказПокупателяДопРасходы
//Где - здесь можно настроить отбор
Сгруппировать по
    ЗаказПокупателяДопРасходы.Ссылка,
;

ВЫБРАТЬ
   ДокументЗаказПокупателя.Ссылка КАК ЗаказПокупателя,
   ДокументЗаказПокупателя.Ссылка.ПометкаУдаления КАК ПометкаУдаления,
   ДокументЗаказПокупателя.Ссылка.Номер КАК Номер,
   ДокументЗаказПокупателя.Ссылка.Дата КАК Дата,
   ДокументЗаказПокупателя.Ссылка.Проведен КАК Проведен,
   ДокументЗаказПокупателя.Ссылка.ДатаОтгрузки КАК ДатаОтгрузки,
   ДокументЗаказПокупателя.Ссылка.Контрагент КАК Контрагент,
   ДокументЗаказПокупателя.Ссылка.Ответственный КАК Ответственный,
   ДокументЗаказПокупателя.Ссылка.СостояниеЗаказа КАК СостояниеЗаказа,
   ДокументЗаказПокупателя.Ссылка.СуммаДокумента КАК СуммаДокумента,
   ДокументЗаказПокупателя.Ссылка.ЖелтушникВОфисе КАК ЖелтушникВОфисе,
   ДокументЗаказПокупателя.Ссылка.СуммаДоставки КАК СтоимостьДоставки,
   ДокументЗаказПокупателя.Номенклатура КАК Номенклатура,
   ЗаказПокупателяДоставка.Объем КАК Объем,
   ЗаказПокупателяДоставка.Цена КАК Цена,
   ЗаказПокупателяДоставка.Перевозка КАК Перевозка,
   ЗаказПокупателяДоставка.КоличествоРейсов КАК КоличествоРейсов,
   ЗаказПокупателя.Процент.Процент КАК Процент,
   ЗаказПокупателя.Ссылка КАК Ссылка,
   ДокументЗаказПокупателя.Всего КАК Всего,
   ЗаказПокупателя.Контрагент КАК Контрагент1,
   ЗаказПокупателя.Ответственный КАК Ответственный1,
   //ЗаказПокупателяДопРасходы.Ссылка КАК Ссылка1,
   //ЗаказПокупателяДопРасходы.Заказ.Ссылка КАК ЗаказСсылка,
   ЗаказПокупателяДопРасходы.ДопСуммаДокумента КАК ЗаказСуммаДокумента
ПОМЕСТИТЬ ВР
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
      ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Запасы КАК ДокументЗаказПокупателя
         ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Доставка КАК ЗаказПокупателяДоставка
         ПО ДокументЗаказПокупателя.Ссылка = ЗаказПокупателяДоставка.Ссылка
            И ДокументЗаказПокупателя.Ид = ЗаказПокупателяДоставка.Ид
      ПО ЗаказПокупателя.Ссылка = ДокументЗаказПокупателя.Ссылка

      //ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.ДопРасходы КАК ЗаказПокупателяДопРасходы
      ЛЕВОЕ СОЕДИНЕНИЕ ТабДопСумма КАК ЗаказПокупателяДопРасходы
      ПО ЗаказПокупателя.Ссылка = ЗаказПокупателяДопРасходы.Ссылка
ГДЕ
   ВЫБОР
         КОГДА &НачалоПериода = ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА ИСТИНА
         ИНАЧЕ &НачалоПериода <= ДокументЗаказПокупателя.Ссылка.Дата
      КОНЕЦ
   И ВЫБОР
         КОГДА &КонецПериода = ДАТАВРЕМЯ(1, 1, 1)
            ТОГДА ИСТИНА
         ИНАЧЕ &КонецПериода >= ДокументЗаказПокупателя.Ссылка.Дата
      КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВР.ЗаказПокупателя КАК ЗаказПокупателя1,
   ВР.ПометкаУдаления КАК ПометкаУдаления,
   ВР.Номер КАК Номер,
   ВР.Дата КАК Дата,
   ВР.Проведен КАК Проведен,
   ВР.ДатаОтгрузки КАК ДатаОтгрузки,
   ВР.Контрагент КАК Контрагент1,
   ВР.Ответственный КАК Ответственный1,
   ВР.СостояниеЗаказа КАК СостояниеЗаказа,
   ВР.СуммаДокумента КАК СуммаДокумента,
   ВР.ЖелтушникВОфисе КАК ЖелтушникВОфисе,
   ВР.СтоимостьДоставки КАК СтоимостьДоставки,
   ВР.Номенклатура КАК Номенклатура,
   ВР.Объем КАК Объем,
   ВР.Цена КАК Цена,
   ВР.Перевозка КАК Перевозка,
   ВР.КоличествоРейсов КАК КоличествоРейсов,
   ВР.Процент КАК Процент,
   ВР.Ссылка КАК ЗаказПокупателя,
   ВР.Всего КАК СуммаНоменклатуры,
   ВР.Контрагент1 КАК Контрагент,
   ВР.Ответственный1 КАК Ответственный,
   ВР.Ссылка1 КАК Ссылка1,
   ВР.ЗаказСсылка КАК ЗаказДополнительныйРасход,
   ВР.ЗаказСуммаДокумента КАК ЗаказСуммаДополнительныйРасход

ИЗ
   ВР КАК ВР
если помогло нажмите: Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск