|
Запрос данных документа основания | ☑ | ||
---|---|---|---|---|
0
Aftee
26.07.16
✎
11:39
|
Доброго времени суток!
Хочу для ВПФ док-та ПриходныйКассовыйОрдер получить данные док-та основания. Запрос2 = Новый Запрос; Запрос2.Текст = " |ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | СУММА(ДанныеДокумента.Сумма) КАК СуммаСтавка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&МассивОбъектов)"; Запрос2.УстановитьПараметр("МассивОбъектов",ДокументОснование); Рез = Запрос2.Выполнить(); Выборка2 = Рез.Выбрать(); Собственно как получить ссылку на док-т основание? Или можно сделать это напрямую в запросе? |
|||
1
Aftee
26.07.16
✎
13:48
|
Сделал через 2 запрос, прогнал каждый из них в консоли - цепляет нужное. Но на макет не выводит значения параметра. Куда копать?
Запрос2 = Новый Запрос; Запрос2.Текст = " |ВЫБРАТЬ | ДанныеДокумента.Основание КАК СтавкаОснование |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&МассивОбъектов)"; Запрос2.УстановитьПараметр("МассивОбъектов",МассивОбъектов); ДокументОснование = Запрос2.Выполнить().Выгрузить(); Запрос3 = Новый Запрос; Запрос3.Текст = " |ВЫБРАТЬ | СУММА(ДанныеДокумента.Сумма) КАК СуммаСтавка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&ДокументОснование)"; Запрос3.УстановитьПараметр("ДокументОснование", ДокументОснование); Выборка3 = Запрос3.Выполнить().Выбрать(); Пока Выборка3.Следующий() Цикл ОбластьМакета.Параметры.Заполнить(Выборка3); КонецЦикла; |
|||
2
Nuobu
26.07.16
✎
13:50
|
ТабДок = ПолучитьМакет("Макет1");
Пока Выборка3.Следующий() Цикл ОбластьМакета.Параметры.НаименованиеПараметра = Выборка3.СуммаСтавка; ТабДок.Вывести(ОбластьМакета); КонецЦикла; |
|||
3
Zmich
26.07.16
✎
13:54
|
(1). Чтобы использовать Заполнить(Выборка), имя параметра в макете должно быть таким же, как и в запросе. Т.е. СуммаСтавка в твоем случае.
|
|||
4
Aftee
26.07.16
✎
13:56
|
(2) (3) Все равно не выводится.
|
|||
5
_stay true_
26.07.16
✎
13:58
|
(4) Целиком процедуру формирования табдока покажи.
|
|||
6
Aftee
26.07.16
✎
14:00
|
(5)
Функция СформироватьПечатнуюФормуКО1(МассивОбъектов, ОбъектыПечати, КомплектыПечати, ПараметрыПечати) ТабличныйДокумент = Новый ТабличныйДокумент; ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КО1"; Макет = ПолучитьМакет("ПФ_MXL_КО1"); ИспользуетсяРеглУчет = (Метаданные.ПланыСчетов.Найти("Хозрасчетный") <> Неопределено); ТекстЗапроса = "ВЫБРАТЬ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.Дата КАК ДатаДокумента, | ДанныеДокумента.Номер КАК Номер, | ДанныеДокумента.Организация.Наименование КАК НаименованиеОрганизации, | ДанныеДокумента.Организация.НаименованиеСокращенное КАК НаименованиеОрганизацииСокращенное, | ДанныеДокумента.Организация.Префикс КАК Префикс, | ВЫБОР | КОГДА ДанныеДокумента.Валюта = &ВалютаРеглУчета | ТОГДА ""50.01"" | ИНАЧЕ ""50.21"" | КОНЕЦ КАК КодДебета, | ДанныеДокумента.Касса.КассоваяКнига.СтруктурноеПодразделение КАК ПредставлениеПодразделения, | ДанныеДокумента.Контрагент КАК Контрагент, | ДанныеДокумента.Контрагент.Представление КАК КонтрагентПредставление, | ДанныеДокумента.ПринятоОт КАК ПринятоОт, | ДанныеДокумента.Основание КАК Основание, | ДанныеДокумента.Приложение КАК Приложение, | ДанныеДокумента.ВТомЧислеНДС КАК ВТомЧисле, | ДанныеДокумента.СуммаДокумента КАК Сумма, | ДанныеДокумента.Валюта КАК Валюта, | ДанныеДокумента.Валюта.Представление КАК ВалютаПредставление, | ДанныеДокумента.Организация.КодПоОКПО КАК ОрганизацияПоОКПО, | ДанныеДокумента.Кассир.ФизическоеЛицо КАК Кассир, | ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер, | ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация, | ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента | ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица | ПО ДанныеДокумента.Ссылка = ТаблицаОтветственныеЛица.Ссылка |ГДЕ | ДанныеДокумента.Ссылка В(&МассивДокументов) |УПОРЯДОЧИТЬ ПО | Номер |;"; Если Не ИспользуетсяРеглУчет Тогда ТекстЗапроса = ТекстЗапроса + " |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ВложенныйЗапрос.Ссылка, | ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств, | СтатьиДвиженияДенежныхСредств.КорреспондирующийСчет КАК КорСчетКод |ИЗ | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ДанныеДокумента.Ссылка КАК Ссылка, | ДанныеДокумента.СтатьяДвиженияДенежныхСредств КАК СтатьяДвиженияДенежныхСредств | ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента | ГДЕ | ДанныеДокумента.Ссылка В(&МассивДокументов) | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ РАЗЛИЧНЫЕ | РасшифровкаПлатежа.Ссылка, | РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств | ИЗ | Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасшифровкаПлатежа | ГДЕ | РасшифровкаПлатежа.Ссылка В(&МассивДокументов)) КАК ВложенныйЗапрос | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтатьиДвиженияДенежныхСредств КАК СтатьиДвиженияДенежныхСредств | ПО ВложенныйЗапрос.СтатьяДвиженияДенежныхСредств = СтатьиДвиженияДенежныхСредств.Ссылка | |УПОРЯДОЧИТЬ ПО | КорреспондирующийСчет"; КонецЕсли; Запрос = Новый Запрос(ТекстЗапроса); МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц); Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов); Запрос.УстановитьПараметр("ВалютаРеглУчета", Константы.ВалютаРегламентированногоУчета.Получить()); МассивРезультатов = Запрос.ВыполнитьПакет(); Выборка = МассивРезультатов[0].Выбрать(); КорСчета = МассивРезультатов[1].Выгрузить(); Запрос2 = Новый Запрос; Запрос2.Текст = " |ВЫБРАТЬ | ДанныеДокумента.Основание КАК СтавкаОснование |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&МассивОбъектов)"; Запрос2.УстановитьПараметр("МассивОбъектов",МассивОбъектов); ДокументОснование = Запрос2.Выполнить().Выгрузить(); Запрос3 = Новый Запрос; Запрос3.Текст = " |ВЫБРАТЬ | СУММА(ДанныеДокумента.Сумма) КАК СуммаСтавка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&ДокументОснование)"; Запрос3.УстановитьПараметр("ДокументОснование", ДокументОснование); Выборка3 = Запрос3.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); Пока Выборка3.Следующий() Цикл ОбластьМакета.Параметры.СуммаСтавка = Выборка3.СуммаСтавка; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; Пока Выборка.Следующий() Цикл // Для печати комплектов Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено Тогда КомплектПечатиПоСсылке = КомплектыПечати.Найти(Выборка.Ссылка,"Ссылка"); Если КомплектПечатиПоСсылке = Неопределено Тогда КомплектПечатиПоСсылке = КомплектыПечати[0]; КонецЕсли; Если КомплектПечатиПоСсылке.Экземпляров = 0 Тогда Продолжить КонецЕсли; КонецЕсли; НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1; ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, Выборка.Ссылка); ОбластьМакета.Параметры.Заполнить(Выборка); Если Не ПустаяСтрока(Выборка.НаименованиеОрганизацииСокращенное) Тогда ОбластьМакета.Параметры.ПредставлениеОрганизации = Выборка.НаименованиеОрганизацииСокращенное; Иначе ОбластьМакета.Параметры.ПредставлениеОрганизации = Выборка.НаименованиеОрганизации; КонецЕсли; Сумма = Формат(Выборка.Сумма, "ЧЦ=15; ЧДЦ=2"); ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить(); Если ВалютаРегламентированногоУчета <> Выборка.Валюта Тогда Сумма = Сумма + " " + СокрЛП(Выборка.ВалютаПредставление); КонецЕсли; ОбластьМакета.Параметры.Сумма = Сумма; ОбластьМакета.Параметры.СуммаРубКоп = ФормированиеПечатныхФорм.СуммаРубКоп( Выборка.Сумма, Выборка.Валюта, ВалютаРегламентированногоУчета); Если Выборка.Валюта <> ВалютаРегламентированногоУчета Тогда ОбластьМакета.Параметры.СуммаРубКоп = ОбластьМакета.Параметры.СуммаРубКоп + " " + СокрЛП(Выборка.ВалютаПредставление); КонецЕсли; ОбластьМакета.Параметры.СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью( Выборка.Сумма, Выборка.Валюта, Ложь); // ВыводитьСуммуБезКопеек ОбластьМакета.Параметры.НомерДокумента = ПрефиксацияОбъектовКлиентСервер.ПолучитьНомерНаПечать( Выборка.Номер, Ложь, Истина); ОбластьМакета.Параметры.СубСчет = КорреспондирующийСчет(Выборка, КорСчета, ИспользуетсяРеглУчет); Если ПустаяСтрока(Выборка.ВТомЧисле) Тогда ОбластьМакета.Параметры.ВТомЧисле = НСтр("ru='без налога (НДС)'"); Иначе Если Выборка.Валюта = ВалютаРегламентированногоУчета Тогда ОбластьМакета.Параметры.ВТомЧисле = ОбластьМакета.Параметры.ВТомЧисле + " руб."; Иначе ОбластьМакета.Параметры.ВТомЧисле = ОбластьМакета.Параметры.ВТомЧисле + " " + СокрЛП(Выборка.ВалютаПредставление); КонецЕсли; КонецЕсли; ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = Выборка.ГлавныйБухгалтер; ОбластьМакета.Параметры.ФИОКассира = ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(Выборка.Кассир, Выборка.ДатаДокумента); ТабличныйДокумент.Вывести(ОбластьМакета); // Выведем нужное количество экземпляров (при печати комплектов) Если КомплектыПечати <> Неопределено И КомплектыПечати.Колонки.Найти("Ссылка") <> Неопределено И КомплектПечатиПоСсылке.Экземпляров > 1 Тогда ОбластьКопирования = ТабличныйДокумент.ПолучитьОбласть(НомерСтрокиНачало,,ТабличныйДокумент.ВысотаТаблицы); Для Итератор = 2 По КомплектПечатиПоСсылке.Экземпляров Цикл ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); ТабличныйДокумент.Вывести(ОбластьКопирования); КонецЦикла; КонецЕсли; ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); УправлениеПечатью.ЗадатьОбластьПечатиДокумента( ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, Выборка.Ссылка); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции |
|||
7
hhhh
26.07.16
✎
14:06
|
(6) |ГДЕ
| ДанныеДокумента.Ссылка = &ДокументОснование "; |
|||
8
_stay true_
26.07.16
✎
14:06
|
Запрос 3 точно отрабатывает? Ты передаешь таблицу значений туда из Запрос2.Выполнить.Выгрузить(). Точно не помню, но по моему такая конструкция понимает только массив.
попробуй в качестве параметра сразу ссылку передавать, либо объявляй новый массив и загоняй туда ссылки из выборки пореквизитно. Либо запрос 2 и запрос 3 объедини в 1. Там легко: делай запрос сразу к табличной части, и устанвливай параметры. |
|||
9
Aftee
26.07.16
✎
14:26
|
(7) не работает
Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. ДанныеДокумента.Ссылка <<?>>= &ДокументОснование (8) Через Левое соединение или как? |
|||
10
Aftee
26.07.16
✎
15:12
|
С массивом тоже не работает
Запрос2 = Новый Запрос; Запрос2.Текст = " |ВЫБРАТЬ | ДанныеДокумента.Основание КАК СтавкаОснование |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&МассивОбъектов)"; Запрос2.УстановитьПараметр("МассивОбъектов",МассивОбъектов); ДокументОснование = Запрос2.Выполнить().Выгрузить(); Основа = Новый Массив; Основа.Добавить(ДокументОснование); Запрос3 = Новый Запрос; Запрос3.Текст = " |ВЫБРАТЬ | СУММА(ДанныеДокумента.Сумма) КАК СуммаСтавка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&ДокументОснование)"; Запрос3.УстановитьПараметр("ДокументОснование", ДокументОснование); Выборка3 = Запрос3.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); Пока Выборка3.Следующий() Цикл ОбластьМакета.Параметры.СуммаСтавка = Выборка3.СуммаСтавка; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; |
|||
11
Aftee
26.07.16
✎
15:48
|
Действительно обработка результата Запроса2 была неправильная. Переделал так:
Запрос2 = Новый Запрос; Запрос2.Текст = " |ВЫБРАТЬ | ДанныеДокумента.Основание КАК СтавкаОснование |ИЗ | Документ.ПриходныйКассовыйОрдер КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&МассивОбъектов)"; Запрос2.УстановитьПараметр("МассивОбъектов",МассивОбъектов); ДокументОснование = Запрос2.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); Пока ДокументОснование.Следующий() Цикл Временная = ДокументОснование.СтавкаОснование; КонецЦикла; Запрос3 = Новый Запрос; Запрос3.Текст = " |ВЫБРАТЬ | СУММА(ДанныеДокумента.Сумма) КАК СуммаСтавка |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК ДанныеДокумента |ГДЕ | ДанныеДокумента.Ссылка В(&ДокументОснование)"; Запрос3.УстановитьПараметр("ДокументОснование", Временная); Выборка3 = Запрос3.Выполнить().Выбрать(); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); Пока Выборка3.Следующий() Цикл ОбластьМакета.Параметры.СуммаСтавка = Выборка3.СуммаСтавка; ТабличныйДокумент.Вывести(ОбластьМакета); КонецЦикла; Проверил результат Запрос2, вывел его в макет. Получил ссылку на документ основание. Но все равно Запрос3 не выводит ничего. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |