Имя: Пароль:
1C
1С v8
Ответственные лица во внешней печатной форме
0 NovichokAlena
 
28.07.15
06:19
Здравствуйте, есть внешняя печатная форма "Трудовой договор" для справочника "СотрудникиОрганизаций". При выводе на печать выходит должность руководителя и его ФИО. но только почему то не по последней дате, а по первой. в другой базе все работает нормально,а что может быть не так?
1С Предприятие 8, 2ЗУП 2.5 (2.5.93.2)

Функция Печать(КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт
    
    
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТрудовойДоговор_Печать";
    
    // получаем данные для печати
    СотрОбъект = СсылкаНаОбъект.ПолучитьОбъект();
    Выборка = СотрОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
    
    // получаем макет
    Макет = ПолучитьМакет(НаименованиеМакета);
    // выводим данные
        
    Если НЕ НаименованиеМакета = "Макет" тогда
        Если Выборка.Следующий() Тогда
            Макет.Параметры.Заполнить(Выборка);
            Макет.Параметры.ИспытательныйСрокСтрокой = ?(НЕ ЗначениеЗаполнено(Выборка.ИспытательныйСрок),"             месяцев", "" + Выборка.ИспытательныйСрок + " месяца(ев)" );
            
            ВыборкаПерсональныхНадбавок = Выборка.ПерсональныеНадбавки.Выбрать();
            Если ВыборкаПерсональныхНадбавок.Количество()>0 Тогда
                СтрокаНадбавки = "Персональные надбавки: ";
                Пока ВыборкаПерсональныхНадбавок.Следующий() Цикл
                    СтрокаНадбавки = СтрокаНадбавки + ВыборкаПерсональныхНадбавок.Надбавка + "- " + ВыборкаПерсональныхНадбавок.Показатель1 + "; ";
                КонецЦикла;
                Макет.Параметры.Надбавки = СтрокаНадбавки;
            КонецЕсли;
        КонецЕсли;
            
        Макет.Параметры.ДатаРожд = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДФ=dd.MM.yyyy");
        Макет.Параметры.ДатаПриема = Формат(СсылкаНаОбъект.Ссылка.ДатаПриемаНаРаботу, "ДФ=dd.MM.yyyy");
        Если НЕ Строка(СсылкаНаОбъект.ГрафикРаботы) = "совместители" тогда
            Макет.Параметры.ГрафикРаботы = "основному месту работы";
            Макет.Параметры.Оклад = СсылкаНаОбъект.ТарифнаяСтавка;
        Иначе Макет.Параметры.ГрафикРаботы = "совместительству";    
            Макет.Параметры.Оклад = СсылкаНаОбъект.ТарифнаяСтавка;
        КонецЕсли;
        
        //Если НЕ НаименованиеМакета = "УМЗ" И НЕ НаименованиеМакета = "Электрогазосварщик" тогда                            
            Макет.Параметры.ИНН  = СсылкаНаОбъект.Организация.ИНН;
            Макет.Параметры.КПП  = СсылкаНаОбъект.Организация.КПП;
            Макет.Параметры.ОГРН = СсылкаНаОбъект.Организация.ОГРН;
        //КонецЕсли;
            
        // выводим готовый документ
        ТабДокумент.ПолеСнизу = 5;
        ТабДокумент.Вывести(Макет);
        
        Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Трудовой договор");
        
    Иначе
        // выводим данные
        Если Выборка.Следующий() Тогда
            Макет.Параметры.Заполнить(Выборка);
            Макет.Параметры.ИспытательныйСрокСтрокой = ?(НЕ ЗначениеЗаполнено(Выборка.ИспытательныйСрок),"             месяцев", "" + Выборка.ИспытательныйСрок + " месяца(ев)" );
            
            ВыборкаПерсональныхНадбавок = Выборка.ПерсональныеНадбавки.Выбрать();
            Если ВыборкаПерсональныхНадбавок.Количество()>0 Тогда
                СтрокаНадбавки = "Персональные надбавки: ";
                Пока ВыборкаПерсональныхНадбавок.Следующий() Цикл
                    СтрокаНадбавки = СтрокаНадбавки + ВыборкаПерсональныхНадбавок.Надбавка + "- " + ВыборкаПерсональныхНадбавок.Показатель1 + "; ";
                КонецЦикла;
                //Макет.Параметры.Надбавки = СтрокаНадбавки;
            КонецЕсли;
        КонецЕсли;
        
        Макет.Параметры.ДатаРожд = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДФ=dd.MM.yyyy");
        Макет.Параметры.ДатаПриема = Формат(СсылкаНаОбъект.Ссылка.ДатаПриемаНаРаботу, "ДФ=dd.MM.yyyy");
        Если Строка(СсылкаНаОбъект.ГрафикРаботы) = "Основной график" тогда
            Макет.Параметры.ГрафикРаботы = "основному месту работы";
            Макет.Параметры.Оклад = СсылкаНаОбъект.ТарифнаяСтавка;
        Иначе Макет.Параметры.ГрафикРаботы = "совместительству";    
            Макет.Параметры.Оклад = СсылкаНаОбъект.ТарифнаяСтавка;
        КонецЕсли;
        
        // выводим готовый документ
        ТабДокумент.Вывести(Макет);
        
        Возврат ТабДокумент;
        //Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Трудовой договор");
    КонецЕсли;
КонецФункции
1 Otkr
 
28.07.15
06:31
Один я ничего не вижу касаемо должности руководителя и его ФИО?
2 NovichokAlena
 
28.07.15
06:36
(1) ну она же от куда то берется и на  форму выходит
3 NovichokAlena
 
28.07.15
06:36
(1) я тоже в коде ничего не нашла, связанного с этим
4 Альбатрос
 
28.07.15
06:37
СотрОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора() вот эту функцию покажи-ка нам
5 torgm
 
28.07.15
06:38
(3) СформироватьЗапросДляПечатиТрудовогоДоговора
6 NovichokAlena
 
28.07.15
06:43
(4).....ее собственно и нет..
7 Альбатрос
 
28.07.15
06:43
(6) Чо?
8 Альбатрос
 
28.07.15
06:43
курсор на нее поставь и нажми ф12
9 NovichokAlena
 
28.07.15
06:46
Функция СформироватьЗапросДляПечатиТрудовогоДоговора() Экспорт
    
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    // Установим параметры запроса
    Запрос.УстановитьПараметр("СправочникСсылка", Ссылка);
    Запрос.УстановитьПараметр("Физлицо", Физлицо);
    Запрос.УстановитьПараметр("Организация", ОбособленноеПодразделение);
    Запрос.УстановитьПараметр("ДатаДокумента",     ДатаДоговора);
    
    // Выберем (если есть доступ) ответственное физлицо
    Запрос.Текст =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК Физлицо,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.Должность,
    |    ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо.Наименование КАК НаименованиеФизлица,
    |    ФизическиеЛица.Комментарий
    |ПОМЕСТИТЬ ВТОтветственноеЛицо
    |ИЗ
    |    РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
    |            &ДатаДокумента,
    |            ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)
    |                И СтруктурнаяЕдиница = &Организация) КАК ОтветственныеЛицаОрганизацийСрезПоследних
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
    |        ПО ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо = ФизическиеЛица.Ссылка";
    Запрос.Выполнить();
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ОтветственноеЛицоОрганизации.Должность КАК ДолжностьРуководителя,
    |    ТрудовойДоговор.НомерДоговора КАК НомерДок,
    |    ТрудовойДоговор.ДатаДоговора КАК ДатаДок,
    |    ТрудовойДоговор.Организация.НаименованиеПолное КАК ПолноеНазваниеОрганизации,
    |    ЕСТЬNULL(ФИООтветственныхЛиц.Фамилия + "" "" + ФИООтветственныхЛиц.Имя + "" "" + ФИООтветственныхЛиц.Отчество, ОтветственноеЛицоОрганизации.НаименованиеФизлица) КАК ФИОРуководителя,
    |    ЕСТЬNULL(ФИОФизЛиц.Фамилия + "" "" + ФИОФизЛиц.Имя + "" "" + ФИОФизЛиц.Отчество, ТрудовойДоговор.Физлицо.Наименование) КАК ФИОРаботника,
    |    ТрудовойДоговор.ДатаОкончания КАК ДатаУвольнения,
    |    ТрудовойДоговор.ДатаНачала КАК ДатаПриема,
    |    ТрудовойДоговор.Должность.Наименование КАК Должность,
    |    ТрудовойДоговор.ЗанимаемыхСтавок,
    |    ТрудовойДоговор.ИспытательныйСрок,
    |    ТрудовойДоговор.ПодразделениеОрганизации.Наименование КАК Подразделение,
    |    ВЫБОР
    |        КОГДА ТрудовойДоговор.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ОсновноеМестоРаботы)
    |            ТОГДА ""основной работе""
    |        ИНАЧЕ ""совместительству""
    |    КОНЕЦ КАК ВидЗанятости,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер,
    |    ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи,
    |    ВЫРАЗИТЬ(ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК СТРОКА(300)) КАК ДокументКемВыдан,
    |    АдресРегистрации.Представление КАК АдресРегистрации,
    |    ТелефонДомашний.Представление КАК Телефоны,
    |    КонтактнаяИнформация.Представление КАК АдресОрганизации,
    |    ТелефонОрганизации.Представление КАК ТелефоныОрганизации,
    |    ТрудовойДоговор.Организация.Наименование КАК НазваниеОрганизации,
    |    ТрудовойДоговор.Организация.ИНН + ""/"" + ТрудовойДоговор.Организация.КПП КАК ИНН,
    |    ТрудовойДоговор.ГрафикРаботы.ВидГрафика КАК ВидГрафика,
    |    ТрудовойДоговор.ГрафикРаботы.ДлительностьРабочейНедели КАК ДлительностьРабочейНедели,
    |    ТрудовойДоговор.ВидРасчета,
    |    ТрудовойДоговор.ТарифнаяСтавка,
    |    ТрудовойДоговор.ВалютаТарифнойСтавки.Наименование КАК ВалютаТарифнойСтавки,
    |    ТрудовойДоговор.ПерсональныеНадбавки.(
    |        Ссылка,
    |        НомерСтроки,
    |        Надбавка КАК Надбавка,
    |        Показатель1
    |    )
    |ИЗ
    |    Справочник.СотрудникиОрганизаций КАК ТрудовойДоговор
    |        ЛЕВОЕ СОЕДИНЕНИЕ ВТОтветственноеЛицо КАК ОтветственноеЛицоОрганизации
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(
    |                &ДатаДокумента,
    |                Физлицо В
    |                    (ВЫБРАТЬ
    |                        Ответственные.Физлицо
    |                    ИЗ
    |                        ВТОтветственноеЛицо КАК Ответственные)) КАК ФИООтветственныхЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ФИОФизЛиц
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних(&ДатаДокумента, Физлицо = &Физлицо) КАК ПаспортныеДанныеФизЛицСрезПоследних
    |        ПО (ИСТИНА)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК АдресРегистрации
    |        ПО ТрудовойДоговор.Физлицо = АдресРегистрации.Объект
    |            И (АдресРегистрации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонДомашний
    |        ПО ТрудовойДоговор.Физлицо = ТелефонДомашний.Объект
    |            И (ТелефонДомашний.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонФизЛица))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ПО ТрудовойДоговор.Организация = КонтактнаяИнформация.Объект
    |            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресОрганизации))
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК ТелефонОрганизации
    |        ПО ТрудовойДоговор.Организация = ТелефонОрганизации.Объект
    |            И (ТелефонОрганизации.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонОрганизации))
    |ГДЕ
    |    ТрудовойДоговор.Ссылка = &СправочникСсылка";
    
    Возврат Запрос.Выполнить();
    
КонецФункции // СформироватьЗапросДляПечати()
10 Альбатрос
 
28.07.15
06:49
(9) из чего следует, что у тебя ответственные срезаются на дату договора
11 Sergz66
 
28.07.15
07:25
Что в-общем-то логично...
12 SeraFim
 
28.07.15
07:26
Может быть, что-то не так с РегистрСведений.ФИОФизЛиц.
13 NovichokAlena
 
28.07.15
08:03
(10) все правильно...на дату договора срезаются