|
как правильно сгруппировать отчет | ☑ | ||
---|---|---|---|---|
0
Irina3gger
03.08.18
✎
08:26
|
доброго времени.
У одного объекта строительства есть несколько документов. Из каждого документа нужно в отчет вытянуть определенную информацию. Информация вытягивается но почему-то дублируется. Как правильно сгруппировать чтоб информация не дублировалась |
|||
1
novichok79
03.08.18
✎
08:27
|
ИринаПереключатель, без конкретики вам не помочь.
|
|||
2
Остап Сулейманович
03.08.18
✎
08:43
|
(1) Не будет конкретики. Фишка в терминологии 1С.
(0) Вместо "СГРУППИРОВАТЬ" в запросе нужно юзать "ИТОГИ ПО". И обходить по группировкам (вот он парадокс). Говорим иметь итоговые записи. Но обходим по группировкам. |
|||
3
Irina3gger
03.08.18
✎
08:47
|
(1) дело в том что я только учусь делать, и поэтому могу не знать точной терминологии
я постараюсь объяснить происходящие и то что мне надо по мере своих знаний и возможностей |
|||
4
Малыш Джон
03.08.18
✎
08:49
|
(3) ну если не получается на словах, некоторые делают скрины "как есть"-"как надо"
|
|||
5
novichok79
03.08.18
✎
08:50
|
(3) запости запрос сюда.
|
|||
6
novichok79
03.08.18
✎
08:50
|
(5) вместо лишних слов...
|
|||
7
Irina3gger
03.08.18
✎
09:01
|
ВЫБРАТЬ
ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод, ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование, ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки, ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица, ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования, ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования, ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния, ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения, ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора, ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору, ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено, ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние, ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1, ДополнительноеСоглашение.Сумма КАК Сумма ИЗ Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование, Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение, Документ.ДоговорСубподряда КАК ДоговорСубподряда |
|||
8
Xapac
03.08.18
✎
09:03
|
а где соединения?
|
|||
9
Irina3gger
03.08.18
✎
09:11
|
https://pastenow.ru/f948ead5eea178b4c199671ff42b8324
вот что получается, правильны только строка 1 и 8. а все остальное это повторы |
|||
10
Малыш Джон
03.08.18
✎
09:12
|
(9) смотрим (8) : где соединения?
|
|||
11
Xapac
03.08.18
✎
09:14
|
на вкладке "Связи" добавьте связи документов по "объектам строительства"
|
|||
12
Irina3gger
03.08.18
✎
09:20
|
(11) сделала, но все еще идет дублирование
https://pastenow.ru/48fe6fe92dd926e2427caa1b4bdd8d5a верные все 4, но 1 и 2 вторая просто одинаковые, так же как 3 и 4 |
|||
13
novichok79
03.08.18
✎
09:28
|
(12) убирай по одной таблице из связей и после каждого удаления смотри ушло ли дублирование. если оно ушло, значит не хватало соединений с только что убранной таблицей.
|
|||
14
Irina3gger
03.08.18
✎
09:36
|
(13) поняла, спасибо все исправила
|
|||
15
Irina3gger
03.08.18
✎
09:39
|
(13) еще вопрос, как сделать чтоб информация в отчете подтягивалась за конкретный период?
|
|||
16
Kolombo82
03.08.18
✎
09:42
|
(15)условие Документ....Дата между ДатаС ДатаПо
|
|||
17
Irina3gger
03.08.18
✎
09:46
|
(16) а можно пример пожалуйста
|
|||
18
novichok79
03.08.18
✎
09:51
|
ВЫБРАТЬ
ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод, ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование, ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки, ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица, ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования, ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования, ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния, ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения, ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора, ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору, ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено, ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние, ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1, ДополнительноеСоглашение.Сумма КАК Сумма ИЗ Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование, Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение, Документ.ДоговорСубподряда КАК ДоговорСубподряда ГДЕ ДоговорНаПроектирование.Дата между &ДатаНачала и &ДатаОкончания |
|||
19
Irina3gger
03.08.18
✎
10:02
|
т.е.
должно быть приблизительно так ГДЕ ДоговорНаПроектирование.ДатаСостояния как &ДатаНачала и ДополнительноеСоглашение.ДатаПолучения1 как &ДатаОкончания |
|||
20
Irina3gger
03.08.18
✎
10:05
|
(18) если так делать то тогда вообще ничего не выводит
ГДЕ ДоговорНаПроектирование.ДатаСостояния = &ДатаНачалаПериода И ДополнительноеСоглашение.ДатаПолучения = &ДатаОкончанияПериода |
|||
21
Chameleon1980
03.08.18
✎
10:09
|
на равно у тебя должно точно попадать в даты
|
|||
22
Chameleon1980
03.08.18
✎
10:09
|
со временем
|
|||
23
Irina3gger
03.08.18
✎
10:21
|
(21) что-то я не понимаю. вот у меня есть дата
ДоговорНаПроектирование.ДатаСостояния мне нужно чтоб перед тем как сформировать отчет, я могла выставить период времени допустим с 01.01.2017 по 01.08.2018 и вместо того чтоб выводить все объекты строительства, он должен вывести те объекты которые попадают в этот промежуток |
|||
24
Cool_Profi
03.08.18
✎
10:28
|
ДоговорНаПроектирование.ДатаСостояния МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)
|
|||
25
Irina3gger
03.08.18
✎
10:47
|
(24) &НачДата &КонДата это устойчивые переменные?
в отчете я создала два реквизита ДатаНачалаПериода и ДатаОкончанияПериода и использовала их в форме отчета дописала в запросе ГДЕ ДоговорНаПроектирование.ДатаСостояния МЕЖДУ &ДатаНачалаПериода и КОНЕЦПЕРИОДА(&ДатаОкончанияПериода, ДЕНЬ) но все равно ни чего не выводит |
|||
26
Cool_Profi
03.08.18
✎
10:50
|
(25) Это параметры запроса, которые задаются через Запрос.УстановитьПараметр("НачДата", ДатаНАчалаПериода)
|
|||
27
Irina3gger
03.08.18
✎
11:45
|
(26) в ФормеОтчета в модуле сделала вот так
Процедура ПриСозданииНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |ДоговорНаПроектирование.Обекты.Код КАК ОбектыКод, |ДоговорНаПроектирование.Обекты.Наименование КАК ОбектыНаименование, |ДоговорНаПроектирование.Обекты.ПроцедурыЗакупки КАК ОбектыПроцедурыЗакупки, |ДоговорНаПроектирование.Обекты.ФизическиеЛица КАК ОбектыФизическиеЛица, |ДоговорНаПроектирование.Обекты.ИсточникиФинансирования КАК ОбектыИсточникиФинансирования, |ДоговорНаПроектирование.Обекты.СтадииПроектирования КАК ОбектыСтадииПроектирования, |ДоговорНаПроектирование.ДатаСостояния КАК ДатаСостояния, |ДоговорНаПроектирование.ДатаПолучения КАК ДатаПолучения, |ДоговорНаПроектирование.СуммаДоговора КАК СуммаДоговора, |ДоговорНаПроектирование.АвансПоДоговору КАК АвансПоДоговору, |ДоговорНаПроектирование.АвансОплачено КАК АвансОплачено, |ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостояние, |ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолучения1, |ДополнительноеСоглашение.Сумма КАК Сумма |ИЗ |Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение |ПО ДоговорНаПроектирование.Обекты.Код = ДополнительноеСоглашение.Объект.Код |И ДоговорНаПроектирование.Обекты.Наименование = ДополнительноеСоглашение.Объект.Наименование |ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ДоговорСубподряда КАК ДоговорСубподряда |ПО ДоговорНаПроектирование.Обекты.Код = ДоговорСубподряда.Объект.Код |И ДоговорНаПроектирование.Обекты.Наименование = ДоговорСубподряда.Объект.Наименование |ГДЕ |ДоговорНаПроектирование.ДатаСостояния МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ)"; Запрос.УстановитьПараметр ("НачДата", ДатаНачалаПериода); Запрос.УстановитьПараметр ("КонДата", ДатаОкончанияПериода); РезультатЗапроса = Запрос.Выполнить(); КонецПроцедуры Пишит что переменная не найдена ДатаНачалаПериода и ДатаОкончанияПериода |
|||
28
novichok79
03.08.18
✎
11:46
|
Объект.ДатаНачалаПериода и Объект.ДатаОкончанияПериода?
|
|||
29
Irina3gger
03.08.18
✎
11:51
|
(28) исправила, ошибки переменной исчезла, но все равно ни чего не выводит(
|
|||
31
Irina3gger
03.08.18
✎
12:08
|
(30) ну я же только учусь, мне простительно тупить
|
|||
32
Vladal
03.08.18
✎
12:11
|
(27) В соединениях сравнивать лучше по ссылке, а не по коду.
Замените вот это: |ПО ДоговорНаПроектирование.Обекты.Код = ДополнительноеСоглашение.Объект.Код |И ДоговорНаПроектирование.Обекты.Наименование = ДополнительноеСоглашение.Объект.Наименование на |ПО ДоговорНаПроектирование.Обекты = ДополнительноеСоглашение.Объект |
|||
33
Vladal
03.08.18
✎
12:13
|
А какая связь между этими документами:
Документ.ДоговорНаПроектирование Документ.ДополнительноеСоглашение Документ.ДоговорСубподряда Может, там связь по объекту строительства или еще как? СЧтобы дать системе команду "свяжи мне эти документы между собой, чтобы они принадлежали одному контрагенту" или еще как-то... |
|||
34
Irina3gger
03.08.18
✎
12:13
|
(32) исправила
|
|||
35
Irina3gger
03.08.18
✎
12:14
|
(33) они связаны по объекту строительсва он один на всех
|
|||
36
Aleksandr N
03.08.18
✎
12:15
|
(8) кросс джоин же :-)
|
|||
37
novichok79
03.08.18
✎
12:16
|
(31) не зрите вы в корень, Ирочка, это метафизическое состояние души 1с разработчика. а если серьезно, то опять же, если с периодом ничего не выводит, а без периода все ок, значит не заполнен период.
|
|||
38
Vladal
03.08.18
✎
12:33
|
(35) Ок. А какой документ "есть всегда для данного объекта", а какие документы "появляются потом, а могут и вовсе отсутствовать"?
Потому что "внутренне соединение" подразумевает наличие всех трех одновременно. Если одного какого-то документа для данного объекта нет, то будет пустая выборка. Рекомендую сделать так: Выбрать Из ОсновнойДокумент Левое соединение ВторостепенныйДокумент по ОсновнойДокумент.Объект = ВторостепенныйДокумент.Объект ЛевоеСоединение ВторостопенныйДокумент2 по ОсновнойДокумент.Объект = ВторостепенныйДокумент2.Объект |
|||
41
Vladal
03.08.18
✎
12:49
|
||||
42
Irina3gger
03.08.18
✎
12:57
|
(38) всегда есть ДоговорНаПроектирование, а остальные документы могут и не появится.
|
|||
43
Irina3gger
03.08.18
✎
13:08
|
(38) вот что я заметила. пытаясь сделать период у меня выводилась пустая форма, убрав все что связано с периодом, не смотря на то что не все документы присутсвуют выводится все верно
|
|||
44
Vladal
03.08.18
✎
17:05
|
(42) Тогда все почти правильно. Надо заменить ВНУТРЕННЕЕ соединение на ЛЕВОЕ
|ИЗ | Документ.ДоговорНаПроектирование КАК ДоговорНаПроектирование | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДополнительноеСоглашение КАК ДополнительноеСоглашение | ПО ДоговорНаПроектирование.Обекты = ДополнительноеСоглашение.Объект | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорСубподряда КАК ДоговорСубподряда | ПО ДоговорНаПроектирование.Обекты = ДоговорСубподряда.Объект |ГДЕ ... (43) Возможно, у документов ДатаСостояния не заполнена (пустая), поэтому выдает пустую выборку. Попробуйте заменить ДатаСостояния на Дата - это стандартный реквизит документа: |ГДЕ | ДоговорНаПроектирование.Дата МЕЖДУ &НачДата и КОНЕЦПЕРИОДА(&КонДата, ДЕНЬ) |
|||
45
Vladal
03.08.18
✎
17:11
|
Ну и фантазируя на тему:
... ДополнительноеСоглашение.ДатаСостояние КАК ДатаСостоянияДопСоглашения, ДополнительноеСоглашение.ДатаПолучения КАК ДатаПолученияДопСоглашения, ... Также нет ни одного поля из документа субподряда, хотя его из базы данных получили ДоговорСубподряда |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |