Вход | Регистрация


1С:Предприятие ::

Метки: 

как правильно сгруппировать отчет

Я
   Irina3gger
 
03.08.18 - 08:26
доброго времени.
У одного объекта строительства есть несколько документов. Из каждого документа нужно  в отчет вытянуть определенную информацию. Информация вытягивается но почему-то дублируется. Как правильно сгруппировать чтоб информация не дублировалась
 
 
   novichok79
 
1 - 03.08.18 - 08:27
ИринаПереключатель, без конкретики вам не помочь.
   Остап Сулейманович
 
2 - 03.08.18 - 08:43
(1) Не будет конкретики. Фишка в терминологии 1С.
(0) Вместо "СГРУППИРОВАТЬ" в запросе нужно юзать "ИТОГИ ПО". И обходить по группировкам (вот он парадокс). Говорим иметь итоговые записи. Но обходим по группировкам.
   Irina3gger
 
3 - 03.08.18 - 08:47
(1) дело в том что я только учусь делать, и поэтому могу не знать точной терминологии
я постараюсь объяснить происходящие и то что мне надо по мере своих знаний и возможностей
   Малыш Джон
 
4 - 03.08.18 - 08:49
(3) ну если не получается на словах, некоторые делают скрины "как есть"-"как надо"
   novichok79
 
5 - 03.08.18 - 08:50
(3) запости запрос сюда.
   novichok79
 
6 - 03.08.18 - 08:50
(5) вместо лишних слов...
   Irina3gger
 
7 - 03.08.18 - 09:01
ВЫБРАТЬ
    ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод,
    ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование,
    ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки,
    ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица,
    ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования,
    ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования,
    ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния,
    ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения,
    ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора,
    ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору,
    ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено,
    ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние,
    ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1,
    ДополнительноеСоглашение.Сумма КАК Сумма
ИЗ
    Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование,
    Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение,
    Документ.ДоговорСубподряда КАК ДоговорСубподряда
   Xapac
 
8 - 03.08.18 - 09:03
а где соединения?
   Irina3gger
 
9 - 03.08.18 - 09:11
https://pastenow.ru/f948ead5eea178b4c199671ff42b8324

вот что получается, правильны только строка 1 и 8. а все остальное это повторы
   Малыш Джон
 
10 - 03.08.18 - 09:12
(9) смотрим (8) : где соединения?
 
  Рекламное место пустует
   Xapac
 
11 - 03.08.18 - 09:14
на вкладке "Связи" добавьте связи документов по "объектам строительства"
   Irina3gger
 
12 - 03.08.18 - 09:20
(11) сделала, но все еще идет дублирование
https://pastenow.ru/48fe6fe92dd926e2427caa1b4bdd8d5a
верные все 4, но 1 и 2 вторая просто одинаковые, так же как 3 и 4
   novichok79
 
13 - 03.08.18 - 09:28
(12) убирай по одной таблице из связей и после каждого удаления смотри ушло ли дублирование. если оно ушло, значит не хватало соединений с только что убранной таблицей.
   Irina3gger
 
14 - 03.08.18 - 09:36
(13) поняла, спасибо все исправила
   Irina3gger
 
15 - 03.08.18 - 09:39
(13) еще вопрос, как сделать чтоб информация в отчете подтягивалась за конкретный период?
   Kolombo82
 
16 - 03.08.18 - 09:42
(15)условие Документ....Дата между ДатаС ДатаПо
   Irina3gger
 
17 - 03.08.18 - 09:46
(16)  а можно пример пожалуйста
   novichok79
 
18 - 03.08.18 - 09:51
ВЫБРАТЬ
    ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод,
    ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование,
    ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки,
    ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица,
    ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования,
    ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования,
    ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния,
    ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения,
    ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора,
    ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору,
    ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено,
    ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние,
    ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1,
    ДополнительноеСоглашение.Сумма КАК Сумма
ИЗ
    Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование,
    Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение,
    Документ.ДоговорСубподряда КАК ДоговорСубподряда
ГДЕ
 ДоговорНаПроектирование.Дата между &ДатаНачала и &ДатаОкончания
   Irina3gger
 
19 - 03.08.18 - 10:02
т.е.
 должно быть приблизительно так

ГДЕ
ДоговорНаПроектирование.ДатаСостояния как &ДатаНачала
и
ДополнительноеСоглашение.ДатаПолучения1 как &ДатаОкончания
   Irina3gger
 
20 - 03.08.18 - 10:05
(18) если так делать то тогда вообще ничего не выводит

ГДЕ
    ДоговорНаПроектирование.ДатаСостояния = &ДатаНачалаПериода 
    И ДополнительноеСоглашение.ДатаПолучения = &ДатаОкончанияПериода
   Chameleon1980
 
21 - 03.08.18 - 10:09
на равно у тебя должно точно попадать в даты
   Chameleon1980
 
22 - 03.08.18 - 10:09
со временем
   Irina3gger
 
23 - 03.08.18 - 10:21
(21) что-то я не понимаю. вот у меня есть дата
ДоговорНаПроектирование.ДатаСостояния
мне нужно чтоб перед тем как сформировать отчет, я могла выставить период времени допустим с 01.01.2017 по 01.08.2018 и вместо того чтоб выводить все объекты строительства, он должен вывести те объекты которые попадают в этот промежуток
   Cool_Profi
 
24 - 03.08.18 - 10:28
ДоговорНаПроектирование.ДатаСостояния  МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)
   Irina3gger
 
25 - 03.08.18 - 10:47
(24) &НачДата  &КонДата это устойчивые переменные?
в отчете я создала два реквизита ДатаНачалаПериода и ДатаОкончанияПериода и использовала их в форме отчета

дописала в запросе 

ГДЕ
    ДоговорНаПроектирование.ДатаСостояния  МЕЖДУ &ДатаНачалаПериода и КОНЕЦПЕРИОДА(&ДатаОкончанияПериода, ДЕНЬ)

но все равно ни чего не выводит
   Cool_Profi
 
26 - 03.08.18 - 10:50
(25) Это параметры запроса, которые задаются через Запрос.УстановитьПараметр("НачДата", ДатаНАчалаПериода)
   Irina3gger
 
27 - 03.08.18 - 11:45
(26) в ФормеОтчета в модуле сделала вот так
Процедура ПриСозданииНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
      |ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод,
      |ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование,
      |ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки,
      |ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица,
      |ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования,
      |ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования,
      |ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния,
      |ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения,
      |ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора,
      |ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору,
      |ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено,
      |ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние,
      |ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1,
      |ДополнительноеСоглашение.Сумма КАК Сумма
    |ИЗ
      |Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование
        |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение
        |ПО ДоговорНаПроектирование.Обекты.Код = ДополнительноеСоглашение.Объект.Код
            |И ДоговорНаПроектирование.Обекты.Наименование = ДополнительноеСоглашение.Объект.Наименование
        |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДоговорСубподряда КАК ДоговорСубподряда
        |ПО ДоговорНаПроектирование.Обекты.Код = ДоговорСубподряда.Объект.Код
            |И ДоговорНаПроектирование.Обекты.Наименование = ДоговорСубподряда.Объект.Наименование        
    |ГДЕ
      |ДоговорНаПроектирование.ДатаСостояния  МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)";
    
    Запрос.УстановитьПараметр ("НачДата", ДатаНачалаПериода);
    Запрос.УстановитьПараметр ("КонДата", ДатаОкончанияПериода);
    
    РезультатЗапроса = Запрос.Выполнить();
КонецПроцедуры


Пишит что переменная не найдена ДатаНачалаПериода и ДатаОкончанияПериода
   novichok79
 
28 - 03.08.18 - 11:46
Объект.ДатаНачалаПериода и Объект.ДатаОкончанияПериода?
   Irina3gger
 
29 - 03.08.18 - 11:51
(28) исправила, ошибки переменной исчезла, но все равно ни чего не выводит(
   Irina3gger
 
31 - 03.08.18 - 12:08
(30) ну я же только учусь, мне простительно тупить
   Vladal
 
32 - 03.08.18 - 12:11
(27) В соединениях сравнивать лучше по ссылке, а не по коду.

Замените вот это:

|ПО ДоговорНаПроектирование.Обекты.Код = ДополнительноеСоглашение.Объект.Код
|И ДоговорНаПроектирование.Обекты.Наименование = ДополнительноеСоглашение.Объект.Наименование

на


|ПО ДоговорНаПроектирование.Обекты = ДополнительноеСоглашение.Объект
   Vladal
 
33 - 03.08.18 - 12:13
А какая связь между этими документами:

Документ.ДоговорНаПроектирование
Документ.ДополнительноеСоглашение
Документ.ДоговорСубподряда

Может, там связь по объекту строительства или еще как?
СЧтобы дать системе команду "свяжи мне эти документы между собой, чтобы они принадлежали одному контрагенту"
или еще как-то...
 
  Рекламное место пустует
   Irina3gger
 
34 - 03.08.18 - 12:13
(32) исправила
   Irina3gger
 
35 - 03.08.18 - 12:14
(33) они связаны по объекту строительсва он один на всех
   Aleksandr N
 
36 - 03.08.18 - 12:15
(8) кросс джоин же :-)
   novichok79
 
37 - 03.08.18 - 12:16
(31) не зрите вы в корень, Ирочка, это метафизическое состояние души 1с разработчика. а если серьезно, то опять же, если с периодом ничего не выводит, а без периода все ок, значит не заполнен период.
   Vladal
 
38 - 03.08.18 - 12:33
(35) Ок. А какой документ "есть всегда для данного объекта", а какие документы "появляются потом, а могут и вовсе отсутствовать"?

Потому что "внутренне соединение" подразумевает наличие всех трех одновременно.
Если одного какого-то документа для данного объекта нет, то будет пустая выборка.

Рекомендую сделать так:

Выбрать Из ОсновнойДокумент
Левое соединение ВторостепенныйДокумент по ОсновнойДокумент.Объект = ВторостепенныйДокумент.Объект
ЛевоеСоединение ВторостопенныйДокумент2 по ОсновнойДокумент.Объект = ВторостепенныйДокумент2.Объект
   Vladal
 
41 - 03.08.18 - 12:49
https://yadi.sk/i/mpqnUnm83ZrrRF

Что-то не получилось картинку вставить...
   Irina3gger
 
42 - 03.08.18 - 12:57
(38) всегда есть ДоговорНаПроектирование, а остальные документы могут и не появится.
   Irina3gger
 
43 - 03.08.18 - 13:08
(38) вот что я заметила. пытаясь сделать период у меня выводилась пустая форма, убрав все что связано с периодом, не смотря на то что не все документы присутсвуют выводится все верно
   Vladal
 
44 - 03.08.18 - 17:05
(42) Тогда все почти правильно. Надо заменить ВНУТРЕННЕЕ соединение на ЛЕВОЕ

|ИЗ
|    Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование
|    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение
|        ПО ДоговорНаПроектирование.Обекты = ДополнительноеСоглашение.Объект
|    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорСубподряда КАК ДоговорСубподряда
|        ПО ДоговорНаПроектирование.Обекты = ДоговорСубподряда.Объект
|ГДЕ ...

(43) Возможно, у документов ДатаСостояния не заполнена (пустая), поэтому выдает пустую выборку.
Попробуйте заменить ДатаСостояния на Дата - это стандартный реквизит документа:

|ГДЕ
|    ДоговорНаПроектирование.Дата МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)
   Vladal
 
45 - 03.08.18 - 17:11
Ну и фантазируя на тему:

...
ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостоянияДопСоглашения,
ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолученияДопСоглашения,
...

Также нет ни одного поля из документа субподряда, хотя его из базы данных получили
ДоговорСубподряда



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует