|
Печатная форма с информацией из разных документов | ☑ | ||
---|---|---|---|---|
0
keramik
05.02.15
✎
15:52
|
Синуация следующая, создаю форму для печати, основу собрал, но необходимо в ней вывести поля, которые находятся не в текущем документе, а в другом. Дополнил процедуру таким кодом:
Процедура Печать(Элемент) Запрос = НовыйЗапрос; Запрос.Текст = "ВЫБРАТЬ | Автомобили.Ссылка КАК АвтомобилиСсылка, | Автомобили.VIN КАК VINСтрока, | Автомобили.ГосНомер КАК ГосНомер Строка, | Автомобили.Мощность КАК АМощностьСтрока |ИЗ | Справочник.Автомобили КАК Автомобили"; Выборка = Запрос.Выполнить().Выбрать(); //В области "Шапка" выводится информация из запроса Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка); ........ КонецПроцедуры Но поля пустые, информация не выбирается... |
|||
1
Kondarat
05.02.15
✎
15:55
|
Выборка.Следующий()?
|
|||
2
keramik
05.02.15
✎
16:19
|
Я скопировал из автоматически созданного для раздела "Работы" и изменил:
ВыборкаШапка = Выборка.Выбрать(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); Пока ВыборкаШапка.Следующий() Цикл ОбластьШапка.Параметры.Заполнить(ВыборкаШапка); ТабДок.Вывести(ОбластьШапка, ВыборкаШапка.Уровень()); КонецЦикла; |
|||
3
Serg_1960
05.02.15
✎
16:24
|
...ВыборкаШапка.Следующий()...
|
|||
4
keramik
05.02.15
✎
16:26
|
Не понимаю, что там дописывать надо?
|
|||
5
ColonelAp4u
05.02.15
✎
16:33
|
(4) а в результат запроса в отладчике смотрел?
|
|||
6
Serg_1960
05.02.15
✎
16:35
|
Упс, сорри, более полный ответ :)
Запрос возвращает все записи из справочника Автомобили (т.е возможны варианты: нет записей, одна запись, много записей) Вариант алгоритма перебора всех записей: ... Выборка = Запрос.Выполнить().Выбрать(); //В области "Шапка" выводится информация из запроса Пока Выборка.Следующий Цикл Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка); КонецЦикла; ... |
|||
7
Serg_1960
05.02.15
✎
16:36
|
(6) "Выборка.Следующий" --> "Выборка.Следующий()"
|
|||
8
PR
05.02.15
✎
16:39
|
Вангую тысячу постов ветке.
Поскольку соблюдено правило, в (0) ответ, в (2) и (4) игнорирование ответа и непонимание, а че, собсно, нужно сделать. Вообще, странно, когда человек ни книжки читать не хочет, ни типовые смотреть, ни ответы на свои вопросы читать. Ну или не может. Тогда печально. |
|||
9
keramik
05.02.15
✎
16:45
|
Для всех полей есть данные, а для "Шапка" только "ТабличныйДокумент" пишет отладчик.
Значит что-то не выбирается :( |
|||
10
salvator
05.02.15
✎
16:53
|
(6) Получать каждый раз область в цикле? Ммм...
|
|||
11
ColonelAp4u
05.02.15
✎
16:56
|
(9) в цикле данные а шапку потом заполни по этим данным
|
|||
12
anatoly
05.02.15
✎
16:57
|
а в Шапке точно все параметры поименно с полями выборки совпадают?
|
|||
13
salvator
05.02.15
✎
16:59
|
(0) "но необходимо в ней вывести поля, которые находятся не в текущем документе, а в другом"
А где ты выбираешь именно "другой документ", я чет не понял? |
|||
14
keramik
05.02.15
✎
17:02
|
(13) Из документа "Работы" вызываю форму для распечатки заказанных работ. Это работает.
Необходимо добавить в распечатку информацию об автомобиле, которая хранится в справочнике "Автомобили". Пробую селектом выбрать данные из справочника и запихнуть их в форму печати. Это не работает, потому что не знаю как из туда передать. |
|||
15
salvator
05.02.15
✎
17:08
|
(14) "Автомобиль" присутствует в готовом отчете?
|
|||
16
keramik
05.02.15
✎
17:11
|
В документе есть поле, которое выводит информацию о номере, марке и моделе автомобиля. В него информация из справочника "Автомобиль" поступает.
Я вот думаю, что возможно в селекте не указано по какому параметру отбирать этот самый автомобиль. Т.е. как показать, что надо именно ВАЗ, а не МАЗ брать. |
|||
17
salvator
05.02.15
✎
17:15
|
(16) Умеешь ты запутать. Сначала сформулируй четко: что тебе надо. А то начал с печатной формы, закончил отбором данных.
|
|||
18
keramik
05.02.15
✎
17:25
|
(17)
Мне надо следующее: Печатная форма, в которой выводится информация: 1. работы, которые надо провести 2. автомобиль, который будут ремонтировать. Первая часть работает. Информация берётся из документа, к которому печатную форму приделываю. Вторая часть не работает, информация находится в справочнике "Автомобиль", как её оттуда вытащить не знаю. Как вариант - создать в документе несколько скрытых полей, в которые будет переноситься информация из справочника "Автомобиль", и из них уже брать данные для распечатки. Но по-моему это несколько кривой вариант. |
|||
19
salvator
05.02.15
✎
17:29
|
(18) Прикрути к исходному запросу левым соединением справочник и выдерни из него данные.
|
|||
20
salvator
05.02.15
✎
17:29
|
Дай-ка полностью код, который есть сейчас.
|
|||
21
keramik
05.02.15
✎
17:30
|
Через часа два дома буду, скину.
|
|||
22
keramik
06.02.15
✎
00:54
|
Вот процедура, которая выводит печатную форму:
Процедура Print(Элемент) ТабДок = Новый ТабличныйДокумент; Макет = Документы.АС_ЗаказНаряд.ПолучитьМакет("Print"); // Заголовок Область = Макет.ПолучитьОбласть("Заголовок"); Область.Параметры.Заполнить(ЭтотОбъект); ТабДок.Вывести(Область); // Шапка Шапка = Макет.ПолучитьОбласть("Шапка"); Шапка.Параметры.Заполнить(ЭтотОбъект); ТабДок.Вывести(Шапка); //Перевозчик Перевозчик = Макет.ПолучитьОбласть("Перевозчик"); Перевозчик.Параметры.Заполнить(ЭтотОбъект); ТабДок.Вывести(Перевозчик); // Товары Область = Макет.ПолучитьОбласть("ТоварыШапка"); ТабДок.Вывести(Область); ОбластьТовары = Макет.ПолучитьОбласть("Товары"); Для Каждого ТекСтрокаТовары Из Товары Цикл ОбластьТовары.Параметры.Заполнить(ТекСтрокаТовары); ТабДок.Вывести(ОбластьТовары); КонецЦикла; // Работы Область = Макет.ПолучитьОбласть("РаботыШапка"); ТабДок.Вывести(Область); ОбластьРаботы = Макет.ПолучитьОбласть("Работы"); Для Каждого ТекСтрокаРаботы Из Работы Цикл ОбластьРаботы.Параметры.Заполнить(ТекСтрокаРаботы); ТабДок.Вывести(ОбластьРаботы); КонецЦикла; // Подвал Подвал = Макет.ПолучитьОбласть("Подвал"); Подвал.Параметры.Заполнить(ЭтотОбъект); ТабДок.Вывести(Подвал); ТабДок.ОтображатьСетку = Ложь; ТабДок.Защита = Истина; ТабДок.ТолькоПросмотр = Истина; ТабДок.ОтображатьЗаголовки = Ложь; ТабДок.Показать(); КонецПроцедуры Селекта с информацией об автомобиле тут нет. |
|||
23
keramik
06.02.15
✎
00:58
|
Сам селект из справочника "Автомобили" выглядит так:
Запрос = НовыйЗапрос; Запрос.Текст = "ВЫБРАТЬ | Автомобили.Ссылка КАК АвтомобилиСсылка, | Автомобили.VIN КАК VINСтрока, | Автомобили.ГосНомер КАК ГосНомер Строка, | Автомобили.Мощность КАК АМощностьСтрока |ИЗ | Справочник.Автомобили КАК Автомобили"; Выборка = Запрос.Выполнить().Выбрать(); |
|||
24
probably
06.02.15
✎
01:24
|
(23) ты не понимаешь, что этим запросом выбираешь из справочника ВСЕ автомобили?
|
|||
25
probably
06.02.15
✎
01:26
|
по опыту работы с автосервисом предположу, что
Шапка.Параметры.Заполнить(ЭтотОбъект.Автомобиль); |
|||
26
User_Agronom
06.02.15
✎
01:45
|
(18) ...Как вариант - создать в документе несколько скрытых полей, в которые будет переноситься информация из справочника "Автомобиль", и из них уже брать данные для распечатки. Но по-моему это несколько кривой вариант...
Дублирование информации сыграет потом очень злую шутку. Вообще не вариант. Я бы предложил ТС сначала покурить мануал создания печатных форм. Уяснить что такое макет, как работать с областью, как заполнять параметры макета и т.д. Если что продам СП дороже всех)) |
|||
27
keramik
06.02.15
✎
08:43
|
(24) Походу да. Все идут в выборку.
(25) Попробую так, спасибо. |
|||
28
keramik
06.02.15
✎
09:02
|
(25) Хо-хо-хо, уважаемый probably, Ваш опыт подсказал верное решение. Данные выбираются из справочника и переносятся в форму.
Спасибо большое. |
|||
29
keramik
06.02.15
✎
20:04
|
Ещё вопрос, как в печатную форму вывести вверху страницы кнопки "На принтер", "Сохранить PDF" и т.д?
Пока не врубился. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |