Имя: Пароль:
1C
1С v8
Внешняя печатная форма Маршрутного листа Ут 11
0 Lessberg
 
07.08.16
17:41
Добрый день! Делаю ВПФ для маршрутного листа без использования запросов.

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

В макет полностью используется реквизиты документа и реквизиты табличной части "Маршрут".

Застрял на том, что в документе несколько табличных частей. При выводе строк таблицы "Маршрут" мне надо так же выводить документ основание. Он находится в другой табличной части "РаспоряжениЯ", под реквизитом РаяпоряжениЕ.

В табличной части "Маршрут" есть реквизит "КлючСвязи". Он выдает информацию следующего рода "c656f00d-71b1-44da-ae21-73f223446100". Пробовал преобразовывать его в ГУИД и искать документ по гуид, но не находит объекты такие.

В общем помогите пожалуйста разобраться, как в одной строке вывести данные из двух табличных частей одного документа. Спасибо!
1 Lessberg
 
07.08.16
17:43
Функция СформироватьПечатнуюФорму(СсылкаНаДокумент, ОбъектыПечати)
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Макет";
    
    Макет = ПолучитьМакет("Макет");    
    
    Заголовок = Макет.ПолучитьОбласть("Заголовок");
    Шапка = Макет.ПолучитьОбласть("Шапка");
    Строка = Макет.ПолучитьОбласть("Строка");

    
    //ЗАГОЛОВОК ДОКУМЕНТА
    ЯЗД = Заголовок.Параметры;    
    ЯЗД.Заголовок = СсылкаНаДокумент;
    ТабличныйДокумент.Вывести(Заголовок);
    
    //ШАПКА ДОКУМЕНТА
    ЯШ = Шапка.Параметры;
    ЯШ.ТранспортноеСредство = СсылкаНаДокумент.ТранспортноеСредство;
    ЯШ.Водитель = СсылкаНаДокумент.Водитель;
    ЯШ.Склад = СсылкаНаДокумент.Склад;
    ЯШ.Приоритет = СсылкаНаДокумент.Приоритет;
    ЯШ.Экспедитор = СсылкаНаДокумент.КурьерЭкспедитор;
    ЯШ.НачалоРейсаПлан = СсылкаНаДокумент.ДатаВремяРейсаПланС;
    ЯШ.КонецРейсаПлан = СсылкаНаДокумент.ДатаВремяРейсаПланПо;
    ЯШ.НачалоРейсаФакт = СсылкаНаДокумент.ДатаВремяРейсаФактС;
    ЯШ.КонецРейсаФакт = СсылкаНаДокумент.ДатаВремяРейсаФактПо;
    ТабличныйДокумент.Вывести(Шапка);
    
    //СТРОКИ ТАБЛИЦЫ
    ЯС = Строка.Параметры;
    Для Каждого СтрокаТЧ Из СсылкаНаДокумент.Маршрут Цикл
            ЯС.Номер = СтрокаТч.НомерСтроки;
            ЯС.Адрес = СтрокаТЧ.Адрес;
            ЯС.Зона = СтрокаТЧ.Зона;
            ЯС.ВремяС = СтрокаТЧ.ВремяС;
            ЯС.ВремяПо = СтрокаТЧ.ВремяПо;
            ЯС.ДополнительнаяИнформация = СтрокаТЧ.ДополнительнаяИнформация;
            ТабличныйДокумент.Вывести(Строка);
    КонецЦикла;
    
    Возврат ТабличныйДокумент;    
    
КонецФункции



Вот как сейчас реализовано. Пока без вывода документа основания.
2 Звездец
 
07.08.16
17:54
сформировать строку и вывести, можно прямо в макете, не понятно в чем проблема. Запросы не используешь по религиозным соображениям что ли?
3 Lessberg
 
07.08.16
18:02
https://pp.vk.me/c630027/v630027375/46b0c/Qj0lXD5HOIE.jpg

Колонки №,АДрес,Зона, ВРемяС,ВремяПО,ДопИнформация - Это табличная часть "Маршрут", документа "ЗаданиеНаПеревозку"

Другие колонки - это ТабЧасть "Распоряжения".

Я не пойму как мне в одной строке вывести данные из двух разных Таблиц документа. И более того, данные взаимосвязаны.
4 Lessberg
 
07.08.16
18:03
Пример на изображении, это стандартная печатная форма.

Запросы не использую, потому что хочу без него сделать.
5 Звездец
 
07.08.16
18:03
получай данные, склеивай в строку и выводи

или циклы ты еще не освоил так же как и запросы?
6 Звездец
 
07.08.16
18:04
(4) когда захочешь с крыши прыгать мы это тоже должны оценить? методологически правильно получать данные запросом
7 Chameleon1980
 
07.08.16
18:04
само название реквизита ни о чем не подсказывает "КлючСвязи" ? вероятно это и есть связь между строками разных ТЧ.
Запросами их тащие
8 Lessberg
 
07.08.16
18:13
(7) Так я пытался этот реквизит раскрутить. Значения выше приводил, которое реквизит дает. 36 символов. Пробовал получать ссылки по этик GUID. Но не находил объекты.

ЯС = Строка.Параметры;
    Для Каждого СтрокаТЧ Из СсылкаНаДокумент.Маршрут Цикл
            ЯС.Номер = СтрокаТч.НомерСтроки;
            ЯС.Адрес = СтрокаТЧ.Адрес;
            ЯС.Зона = СтрокаТЧ.Зона;
            ЯС.ВремяС = СтрокаТЧ.ВремяС;
            ЯС.ВремяПо = СтрокаТЧ.ВремяПо;
            ЯС.ДополнительнаяИнформация = СтрокаТЧ.ДополнительнаяИнформация;
            НовыйGUID = Новый УникальныйИдентификатор(СтрокаТЧ.КлючСвязи);
            ЯС.Заказ = Документы.ЗаказКлиента.ПолучитьСсылку(НовыйGUID);
            ЯС.Реализация = СтрокаТЧ.КлючСвязи;
            ТабличныйДокумент.Вывести(Строка);
        КонецЦикла;
9 Chameleon1980
 
07.08.16
18:42
(8) а в запросе можно было соединение двух таблиц по этому реквизиту забабахать и получить по реквизиту этому из первой и второй таблицы нужные строки
10 Chameleon1980
 
07.08.16
18:55
(0) что-то я не нашел ни в ут 11.1 ни в ут 11.2 такого дока.
для интереса посмотреть хотел
11 Lessberg
 
07.08.16
18:59
(10) Документ "ЗаданиеНаПеревозку" Есть как в Ут11.1 так и в 11.2


Да еще бы знать как там таблицы в запросе соединять. Одно дело простой запрос, а другое уже более сложный. Не вникал в суть пока. Первые шаги делаю, так то.
12 Chameleon1980
 
07.08.16
19:00
(11) почитайте Е.А. Хрусталеву "Язык запросов".

на просторах есть немало видео по запросам.
13 Chameleon1980
 
07.08.16
19:03
+(12) запросы вам все-равно на будущее нужны будут. Есть моменты где без них никак. И возьмите для себя (для изучения и отладок запросов) консоли запросов.
14 Chameleon1980
 
07.08.16
19:12
можно для начала так:


ВЫБРАТЬ
    ЗаданиеНаПеревозкуМаршрут.Ссылка КАК Ссылка,
    ЗаданиеНаПеревозкуМаршрут.Адрес КАК Адрес,
    ЗаданиеНаПеревозкуМаршрут.Зона КАК Зона,
    ЗаданиеНаПеревозкуМаршрут.ВремяС КАК ВремяС,
    ЗаданиеНаПеревозкуМаршрут.ВремяПо КАК ВремяПо,
    ЗаданиеНаПеревозкуРаспоряжения.Распоряжение КАК Распоряжение,
    ЗаданиеНаПеревозкуРаспоряжения.ПолучательОтправитель КАК ПолучательОтправитель,
    ЗаданиеНаПеревозкуРаспоряжения.Перевозчик КАК Перевозчик
ИЗ
    Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаПеревозку.Маршрут КАК ЗаданиеНаПеревозкуМаршрут
        ПО (ЗаданиеНаПеревозкуРаспоряжения.Ссылка = ЗаданиеНаПеревозкуМаршрут.Ссылка)
            И (ЗаданиеНаПеревозкуРаспоряжения.КлючСвязи = ЗаданиеНаПеревозкуМаршрут.КлючСвязи)
ГДЕ
    ЗаданиеНаПеревозкуМаршрут.Ссылка = &Ссылка
15 Lessberg
 
07.08.16
19:16
Спасибо за литературу, лишнем не будет! Понятно дело, что с запросами проще, тем более когда конструктор есть, которые и макет сразу сделает (параметры как минимум накидает).


В общем я бросил это дело и сделал иначе. Создал ВПФ на основе типовой печатной формы, разобрался что к чему. Так к слову заказ уже выводился. Мне всего то надо было приделать документ реализации, у которого основние заказ.

Вот немного кода такого добавил и все заработало, осталось ток макет подправить.
                        Реализация = Документы.РеализацияТоваровУслуг.НайтиПоРеквизиту("ЗаказКлиента",Выборка.Распоряжение);
                        ЗаполняемаяОбласть.Параметры.Реализация = Реализация;

Изначально почему с нуля решил все делать.. Думал проще с нуля все написать, чем разобраться в типовом коде( что и куда там), но оказалось иначе.

Надо изучать запросы, чтобы с нуля делать самому :)
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс