Имя: Пароль:
1C
 
Печатная форма договора
, ,
0 Ychenik1c
 
20.07.16
11:31
Здравствуйте форумчани. Делаю печатную форму доп  соглашения к договору. Он выходит на печать с документа «Кадровые перемещения организации» в зуп 2.5. В одном документе может быть несколько сотрудников. Моя печатная форма выводит договор только для первого сотрудника в списке. Подскажите как можно напечатать для любого сотрудника из списка или для всех?

[spoiler]    Функция Печать() Экспорт
    
    ладОтчет = Новый ТабличныйДокумент;
    ладОтчет.Очистить();
    спМакеты = Новый СписокЗначений;
    спМакеты.Добавить("Договор");
    спМакеты.Добавить("Договор1");

    выб = спМакеты.ВыбратьЭлемент();
    Если выб=неопределено Тогда
        возврат неопределено;
    КонецЕсли;
    лаМакет = ПолучитьМакет(выб.Значение);

    ТабДокумент = Новый ТабличныйДокумент;
    Макет       = ПолучитьМакет(выб.Значение);
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.Номер = Строка(Формат(Число(СсылкаНаОбъект.Номер),"ЧГ=0"));
    ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
    ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
    Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл
        ОбластьМакета.Параметры.ФИОСотрудника = ФизЛица.Сотрудник;
        ТабДокумент.Вывести(ОбластьМакета);
        ОбластьМакета = Макет.ПолучитьОбласть("Имена");
        ТабДокумент.Вывести(ОбластьМакета);
        ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
        ОбластьМакета.Параметры.ФИО = ФизЛица.Сотрудник;
        ОбластьМакета.Параметры.ДатаРождения = Формат(ФизЛица.Сотрудник.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
        ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(ФизЛица.Сотрудник.Физлицо);
        ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника();    
        //ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(ФизЛица.Сотрудник.Физлицо);
        ОбластьМакета.Параметры.ИНН = ФизЛица.Физлицо.ИНН;
        ОбластьМакета.Параметры.СНИЛС = ФизЛица.Физлицо.СтраховойНомерПФР;
        ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(ФизЛица.Физлицо);
        ОбластьМакета.Параметры.Дата = Формат(ФизЛица.ДатаНачала, "ДЛФ=ДД");
        
        ТабДокумент.Вывести(ОбластьМакета);
        Возврат ТабДокумент;
    КонецЦикла;
    
КонецФункции [/spoiler]
1 butterbean
 
20.07.16
11:33
убери
ТабДокумент.Вывести(ОбластьМакета);
        Возврат ТабДокумент;
из цикла
2 Ychenik1c
 
20.07.16
11:46
Ни чего не поменялось. Печатается только для первого сотрудника.
3 Nuobu
 
20.07.16
11:51
(2) Сохрани, и переподключи печатную форму.
4 Ychenik1c
 
20.07.16
11:54
(3) Так и делал.
5 Nuobu
 
20.07.16
11:55
(2) Значит у тебя один сотрудник в документе.
6 В тылу врага
 
20.07.16
11:55
ТабДокумент.Вывести(ОбластьМакета);

    КонецЦикла;
        Возврат ТабДокумент;
7 Ychenik1c
 
20.07.16
11:57
(6) И так пробовал.
8 Nuobu
 
20.07.16
11:58
(7) Сотрудников сколько в договоре?
9 Nuobu
 
20.07.16
11:58
(7) +
Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл

Для Каждого ФизЛица Из ЭтотОбъект.РаботникиОрганизации Цикл
10 Ychenik1c
 
20.07.16
12:01
(9) Сотрудников от 5 до 40.
11 Nuobu
 
20.07.16
12:03
(10) Отладчиком бежал?
12 del123
 
20.07.16
12:04
Добавь
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
в цикл, либо обзови области по разному
13 Ychenik1c
 
20.07.16
12:06
(11) Отладчик при входе в цикл:
{ВнешняяОбработка.ДополнительноеСоглашение.МодульОбъекта(89)}: Поле объекта не обнаружено (РаботникиОрганизации)
    Для Каждого ФизЛица Из ЭтотОбъект.РаботникиОрганизации Цикл
14 Nuobu
 
20.07.16
12:11
(13) извини за мою глупость. поставь как было и опять пройдись отладчиком.
15 Ychenik1c
 
20.07.16
12:16
(14) Ничего страшного. Я поменял на Для Каждого ФизЛица Из ЭтотОбъект.ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл.   Первый круг проходит без ошибок, а при входе на второй круг: {ВнешняяОбработка.ДополнительноеСоглашение.МодульОбъекта(90)}: Поле объекта не обнаружено (ФИОСотрудника)
        ОбластьМакета.Параметры.ФИОСотрудника = ФизЛица.Сотрудник;
16 Ychenik1c
 
20.07.16
12:17
Он получается видит только одного первого сотрудина. Я менял код цикл ставил выше - тогда выводил последнего сотрудника из документа.
17 Mankubus
 
20.07.16
12:17
(15) надо больше ЭтотОбъект.ЭтотОбъект.ЭтотОбъект.ЭтотОбъект.ЭтотОбъект
18 Nuobu
 
20.07.16
12:19
(16) ОбластьМакета = Макет.ПолучитьОбласть("Договор");

Внеси в цикл.
19 Ychenik1c
 
20.07.16
12:19
(17) Спасибо за подсказку))) Поправил, убрал лишнее.
20 Ychenik1c
 
20.07.16
12:26
(18) Теперь в отладке без ошибки и конце на "Возврат ТабДокумент;" на одним списком выходят все договоры для всех сотрудниках. Но без отладчика в 1с выходит только для первого сотррудника договор.
21 Ychenik1c
 
20.07.16
12:32
Цикл перенес выше иначе у второго и последующих договоров нет шапки.

[spoiler]    лаМакет = ПолучитьМакет(выб.Значение);

    ТабДокумент = Новый ТабличныйДокумент;
    Макет       = ПолучитьМакет(выб.Значение);
    Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл

    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
    ОбластьМакета.Параметры.Номер = Строка(Формат(Число(СсылкаНаОбъект.Номер),"ЧГ=0"));
    ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
    ТабДокумент.Вывести(ОбластьМакета);
    //Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл

    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
[/spoiler]
22 Ychenik1c
 
21.07.16
04:35
Так пока не удается решить проблему. В отладчике выводит печатные формы для всех сотрудников в договоре. Без отладчика только для последнего. Необходимо печатать либо для всех либо для выделенныз (любой из вариантов). Лучше конечно для выделенного сотрудника из списка.
23 Ychenik1c
 
21.07.16
05:06
И плюс как сделать чтобы при печати следующего договора начиналось с нового листа, а не все договора слитно?
24 Karlay
 
21.07.16
05:11
(23) ВставитьГоризонтальныйРазделительСтраниц
25 Karlay
 
21.07.16
05:13
(23) ВывестиГоризонтальныйРазделительСтраниц
26 Ychenik1c
 
21.07.16
06:58
(25) Спасибо большое, работает. Теперь только не пойму почему в отладчике печатаются правильно все договоры, а в 1с только либо первый либо последни?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший