|
v7: Как в запросе объединить два документа? | ☑ | ||
---|---|---|---|---|
0
Ночной Эльф
11.09.12
✎
08:06
|
Всем доброго времени суток.
Вопрос в следующем нужно выводить в отчете документ Заявка покупателя в связке с Заданием на демонтаж делаю условие что |Условие(Контрагент = КонтрагентСчет); и вывожу сначало задание на демонтаж а потом заявку покупателя но у меня выводится пустая страница, как вывести в 7 в связке 2 документа? вот код Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |Контрагент = Документ.ЗаданиеНаДеМонтаж.Контрагент; |ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент; |КонтрагентСчет = Документ.ЗаявкаПокупателя.Контрагент; |НоменклатураСчет = Документ.ЗаявкаПокупателя.Номенклатура; |Номенклатура = Документ.ЗаданиеНаДеМонтаж.Номенклатура; |Группировка ЗаданиеНаДеМонтаж; |Группировка ЗаявкаПокупателя; |Условие(Контрагент = КонтрагентСчет); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей ЗаданиеНаДеМонтаж Таб.ВывестиСекцию("ЗаданиеНаДеМонтаж"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей ЗаявкаПокупателя Таб.ВывестиСекцию("ЗаявкаПокупателя"); КонецЦикла; КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
1
andrewks
11.09.12
✎
08:08
|
|Контрагент = Документ.ЗаявкаПокупателя.Контрагент,Документ.ЗаданиеНаДеМонтаж.Контрагент;
|
|||
2
Rie
11.09.12
✎
08:08
|
(0) Используй прямые запросы.
|
|||
3
Ночной Эльф
11.09.12
✎
08:10
|
(1) и что это строка сделает просто выведет всех контрагентов из двух документов?
|
|||
4
Прохожий
11.09.12
✎
08:10
|
(0) Лучше делать их на основании друг друга. Выбираешь подчиненный документ и связь будет по ДокументОснование.
|
|||
5
andrewks
11.09.12
✎
08:11
|
(3) это "7.7 join"
|
|||
6
Ночной Эльф
11.09.12
✎
08:12
|
(4) ну они и так сделаны на основании на основании заявки покупателя формируется задание на демонтаж
|
|||
7
Ночной Эльф
11.09.12
✎
08:16
|
(1) сделал вот так
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |Контрагент = Документ.ЗаявкаПокупателя.Контрагент,Документ.ЗаданиеНаДеМонтаж.Контрагент; |ЗаявкаПокупателя = Документ.ЗаявкаПокупателя.ТекущийДокумент; |Группировка ЗаданиеНаДеМонтаж; |Группировка ЗаявкаПокупателя; |"//}}ЗАПРОС ; вывел просто подрят все задания на демонтаж |
|||
8
povar
11.09.12
✎
08:20
|
смешал все в кучу
|
|||
9
Ночной Эльф
11.09.12
✎
08:25
|
Ну а как сделать чтобы выводился 1) задание на демонтаж 2) заявка покупателя с таким же контрагентом 3) сам контрагент ?
|
|||
10
andrewks
11.09.12
✎
08:26
|
|ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент;
|Заявка = Документ.ЗаданиеНаДеМонтаж.ЗаявкаОснование; |
|||
11
Ночной Эльф
11.09.12
✎
10:15
|
Спасибо заработало, но теперь проблема в другом не выводится табличная часть как документа задание на демонтаж так и заявки. А вот скажем если вывести Запрос.СтрокаДокумента то выведет номер строки документа почему так почему не выводит реквизиты табличной части?
КОд Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |Контрагент = Документ.ЗаявкаПокупателя.Контрагент, Документ.ЗаданиеНаДеМонтаж.Контрагент; |Номенклатура = Документ.ЗаявкаПокупателя.Номенклатура, Документ.ЗаданиеНаДеМонтаж.Номенклатура; |ДокОснование = Документ.ЗаданиеНаДеМонтаж.ДокОснование; |НачРазмещения = Документ.ЗаявкаПокупателя.НачРазмещения; |КонРазмещения = Документ.ЗаявкаПокупателя.КонРазмещения; |Менеджер = Документ.ЗаявкаПокупателя.Менеджер; |ПричинаДеМонтажа = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа; |Группировка ЗаданиеНаДеМонтаж; |Группировка СтрокаДокумента; |"//}}ЗАПРОС ; //Обрезано //... //Обрезано Пока Запрос.Группировка(1) = 1 Цикл Если ДатаД <> Запрос.ЗначениеУпорядочивания(1,1) Тогда Таб.ВывестиСекцию("Дата"); ДатаД = Запрос.ЗначениеУпорядочивания(1,1); КонецЕсли; // Заполнение полей ЗаданиеНаДеМонтаж Таб.ВывестиСекцию("ЗаданиеНаДеМонтаж"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей СтрокаДокумента Таб.ВывестиСекцию("СтрокаДокумента"); КонецЦикла; КонецЦикла; В таблице выражение Запрос.Номенклатура выводится, также выводится номер строки выражение Запрос.СтрокаДокумента а вот Запрос.СтрокаДокумента.ПричинаДеМонтажа не чего не выводит и также не выводит выражение не чего Запрос.ДокОснование.НачРазмещения как быть? тут ? |
|||
12
Ёпрст
11.09.12
✎
10:21
|
(11)
//Запрос.СтрокаДокумента.ПричинаДеМонтажа вестимо надо: Запрос.ПричинаДеМонтажа |
|||
13
Ночной Эльф
11.09.12
✎
10:22
|
Понять не могу почему выводится выражание Запрос.Номенклатура (типа |Номенклатура = Документ.ЗаявкаПокупателя.Номенклатура, Документ.ЗаданиеНаДеМонтаж.Номенклатура;) и не выводится выражение Запрос.ПричинаДеМонтажа (типа |ПричинаДеМонтажа = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа;) ???
|
|||
14
Ночной Эльф
11.09.12
✎
10:22
|
(12) так тоже не выводит
|
|||
15
Ёпрст
11.09.12
✎
10:23
|
(14) значит, ПричинаДеМонтажа не заполнена.
|
|||
16
Ночной Эльф
11.09.12
✎
10:25
|
(15) вот именно что заполнено
|
|||
17
Ночной Эльф
11.09.12
✎
10:25
|
чудеса прямо какие то
|
|||
18
Ночной Эльф
11.09.12
✎
10:27
|
МОжет быть причина в этом
|Контрагент = Документ.ЗаявкаПокупателя.Контрагент, Документ.ЗаданиеНаДеМонтаж.Контрагент; |Номенклатура = Документ.ЗаявкаПокупателя.Номенклатура, Документ.ЗаданиеНаДеМонтаж.Номенклатура; что по двум полям объеденяется контрагент в шапке а номенклатура в табличной части? |
|||
19
Ёпрст
11.09.12
✎
10:28
|
(18) покажи текст запроса и его вывод.
|
|||
20
GreyK
11.09.12
✎
10:30
|
(0) Примерно так надо:
|ТекДокумент = Документ.ЗаявкаПокупателя.ТекущийДокумент,Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; ..... |Группировка ТекДокумент; |Группировка СтрокаДокумента; |
|||
21
Ночной Эльф
11.09.12
✎
10:35
|
(18) есть же в (11)
короче в отладчике посмотрел у меня всегда Запрос.ЗаданиеНаДеМонтаж.НомерСтроки = 0 Запрос.ДокОснование.НомерСтроки = 0 т.е. не берет первую строку видать че то с выводом строки |
|||
22
Ночной Эльф
11.09.12
✎
10:35
|
(19) есть же в (11)
|
|||
23
Ночной Эльф
11.09.12
✎
10:39
|
Ну а так то если разобраться то 1с то незнает какую строку выводить заявки или демонтажа, вот как вывести в объединении строку одного из документов?
|
|||
24
Ёпрст
11.09.12
✎
10:42
|
(21)
ПричинаДеМонтажа - реквизит чего ? Шапки ? Табличной части ? |
|||
25
Ёпрст
11.09.12
✎
10:43
|
+ в (11) нет объединения документов, там выборка только по одному документу - окумент.ЗаданиеНаДеМонтаж, если что.
|
|||
26
Ночной Эльф
11.09.12
✎
10:57
|
ПричинаДеМонтажа это табличная часть документа ЗаданиеНаДеМонтаж
|
|||
27
Ёпрст
11.09.12
✎
11:00
|
(26) это что ?
Реквизит табличной части ? |
|||
28
Ёпрст
11.09.12
✎
11:01
|
тогда так, наслаждайся :
Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |ПричинаДеМонтажа = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа; |Группировка ЗаданиеНаДеМонтаж; |Группировка СтрокаДокумента; |"//}}ЗАПРОС ; Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Сообщить(Запрос.ПричинаДеМонтажа); КонецЦикла; КонецЦикла; |
|||
29
Ночной Эльф
11.09.12
✎
11:05
|
(28) говорю же чтотак не работает
|
|||
30
Ночной Эльф
11.09.12
✎
11:05
|
вот полностью вся процедура
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |Контрагент = Документ.ЗаявкаПокупателя.Контрагент, Документ.ЗаданиеНаДеМонтаж.Контрагент; |Номенклатура = Документ.ЗаявкаПокупателя.Номенклатура, Документ.ЗаданиеНаДеМонтаж.Номенклатура; |ДокОснование = Документ.ЗаданиеНаДеМонтаж.ДокОснование; |НачРазмещения = Документ.ЗаявкаПокупателя.НачРазмещения; |КонРазмещения = Документ.ЗаявкаПокупателя.КонРазмещения; |ПричинаДеМонтажа = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа; |Группировка ЗаданиеНаДеМонтаж; |Группировка СтрокаДокумента; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; ДатаД = ""; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Если ДатаД <> Запрос.ЗначениеУпорядочивания(1,1) Тогда Таб.ВывестиСекцию("Дата"); ДатаД = Запрос.ЗначениеУпорядочивания(1,1); КонецЕсли; // Заполнение полей ЗаданиеНаДеМонтаж Таб.ВывестиСекцию("ЗаданиеНаДеМонтаж"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей СтрокаДокумента Таб.ВывестиСекцию("СтрокаДокумента"); КонецЦикла; КонецЦикла; // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Таблица", ""); КонецПроцедуры |
|||
31
Ночной Эльф
11.09.12
✎
11:06
|
и вот таблица вывода
ДатаДок Вид деятельности Контрагент ЗаявкаПокупателя Менеджер Начало размещения Конец размещения Комментарий Запрос.ЗначениеУпорядочивания(1,1) Запрос.ТекДокумент Запрос.Номенклатура Запрос.Контрагент Запрос.ДокОснование Запрос.ДокОснование.Менеджер Запрос.ДокОснование.НачРазмещения Запрос.ДокОснование.КонРазмещения Запрос.СтрокаДокумента.ПричинаДеМонтажа |
|||
32
Ночной Эльф
11.09.12
✎
11:07
|
даже если ставлю Запрос.ПричинаДеМонтажа все равноне работает
|
|||
33
Ночной Эльф
11.09.12
✎
11:11
|
(28) так как ты мне написал делал даже в отладчике смотрел всегда номер строки 0 не берет он не хочет первую строку
|
|||
34
Ёпрст
11.09.12
✎
11:23
|
(29) врешь ведь.
|
|||
35
Ёпрст
11.09.12
✎
11:24
|
напиши код как в (28) без всякой отсебятины с нелепыми условиями на даты
|
|||
36
Ёпрст
11.09.12
✎
11:25
|
и уж тем более, выкини из головы слово ЗначениеУпорядочивания и забудь о нём навсегда.
|
|||
37
Ночной Эльф
11.09.12
✎
11:44
|
(35) ха да ты был прав все получилось спасибо =))
Только еще самый последний вопросик. Вот тут вывелось табличная часть документа задание на демонтаж, а как можно вывести табличную часть документа заявка который является основанием для задание на демонтаж? если сделать так же |НачРазмещения = Документ.ЗаявкаПокупателя.НачРазмещения; где начразмещения реквизит табличной части и выводить выражением Запрос.НачРазмещения то не чего не выведится |
|||
38
Ночной Эльф
11.09.12
✎
11:45
|
вот весь получившийся запрос
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ЗаданиеНаДеМонтаж = Документ.ЗаданиеНаДеМонтаж.ТекущийДокумент; |Контрагент = Документ.ЗаявкаПокупателя.Контрагент, Документ.ЗаданиеНаДеМонтаж.Контрагент; |Номенклатура = Документ.ЗаявкаПокупателя.Номенклатура, Документ.ЗаданиеНаДеМонтаж.Номенклатура; |ДокОснование = Документ.ЗаданиеНаДеМонтаж.ДокОснование; |НачРазмещения = Документ.ЗаявкаПокупателя.НачРазмещения; |КонРазмещения = Документ.ЗаявкаПокупателя.КонРазмещения; |ПричинаДеМонтажа = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа; |ПричинаДеМонтажа1 = Документ.ЗаданиеНаДеМонтаж.ПричинаДеМонтажа1; |Группировка ЗаданиеНаДеМонтаж; |Группировка ДокОснование; |Группировка СтрокаДокумента; |"//}}ЗАПРОС ; |
|||
39
Ёпрст
11.09.12
✎
11:50
|
(37) никак. Через реквизит ДокОснование ничего не вытащишь в тексте запроса.
|
|||
40
opus70
11.09.12
✎
13:08
|
Группировка ЗаданиеНаДеМонтаж;
Группировка ДокОснование; // это лишняя групировка так как ДокОснование является ревизитом документа и ты до него доберешься через ЗаданиеНаДеМонтаж.ДокОснование |
|||
41
Voronve
11.09.12
✎
13:17
|
(38) В запрос все одно будут попадать только доки "ЗаданиеНаДеМонтаж" документы "ЗаявкаПокупателя" мимо пролетят
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |