Имя: Пароль:
1C
 
Ошибка во внешней печатной форме
0 Katerina30
 
12.08.24
09:26
Во Внешней Печатной форме Дополнительное соглашения Кадрового перевода Списком ,дублируются дополнительные соглашения на сотрудниковю.Прошу помощи

какая-то портянка программного кода

СформироватьТабличныйДокумент_Макет = Новый Соответствие;
    
    Если Не ЗначениеЗаполнено(МассивОбъектов) Тогда
        Возврат СформироватьТабличныйДокумент_Макет;
    КонецЕсли;

    
     ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("ПФ_MXL_ИзменениеДолжности");
    //ПервыйПриказ = Истина;
    
    Для Каждого ТекДокумент Из МассивОбъектов Цикл
        
        Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
            ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        КонецЕсли;
        
        
        //Если ТабличныйДокумент.ВысотаТаблицы > 0 Тогда
        //    ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
        //КонецЕсли;
        
        Запрос = Новый Запрос;
        Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
        Запрос.Текст =
        "ВЫБРАТЬ
        |    КадровыйПеревод.Дата КАК ДатаДокумента,
        |    КадровыйПеревод.Организация КАК Организация,
        |    КадровыйПеревод.Должность КАК Должность,
        |    КадровыйПеревод.КоличествоСтавок КАК КоличествоСтавок,
        |    КадровыйПеревод.ДатаНачала КАК ДатаНачала,
        |    КадровыйПеревод.ДатаОкончания КАК ДатаОкончания,
        |    КадровыйПеревод.Сотрудник КАК Сотрудник,
        |    КадровыйПеревод.ИзменитьПодразделениеИДолжность КАК ИзменитьПодразделениеИДолжность,
        |    КадровыйПеревод.Подразделение КАК Подразделение,
        |    КадровыйПеревод.РазрядКатегория КАК РазрядКатегория,
        |    КадровыйПеревод.ИзменитьНачисления КАК ИзменитьНачисления,
        |    КадровыйПеревод.ИзменитьГрафикРаботы КАК ИзменитьГрафикРаботы,
        |    ВЫБОР
        |        КОГДА КадровыйПеревод.Организация.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ КАК Поле1,
        |    NULL КАК Поле2
        |ПОМЕСТИТЬ ВТДанныеДокумента
        |ИЗ
        |    Документ.КадровыйПеревод КАК КадровыйПеревод
        |ГДЕ
        |    КадровыйПеревод.Ссылка = &Ссылка
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    КадровыйПереводСпискомСотрудники.Ссылка.Дата,
        |    КадровыйПереводСпискомСотрудники.Ссылка.Организация,
        |    КадровыйПереводСпискомСотрудники.Должность,
        |    КадровыйПереводСпискомСотрудники.КоличествоСтавок,
        |    КадровыйПереводСпискомСотрудники.ДатаНачала,
        |    КадровыйПереводСпискомСотрудники.ДатаОкончания,
        |    КадровыйПереводСпискомСотрудники.Сотрудник,
        |    КадровыйПереводСпискомСотрудники.ИзменитьПодразделениеИДолжность,
        |    КадровыйПереводСпискомСотрудники.Подразделение,
        |    КадровыйПереводСпискомСотрудники.РазрядКатегория,
        |    КадровыйПереводСпискомСотрудники.ИзменитьНачисления,
        |    КадровыйПереводСпискомСотрудники.ИзменитьГрафикРаботы,
        |    NULL,
        |    ВЫБОР
        |        КОГДА КадровыйПереводСпискомСотрудники.Ссылка.Организация.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ
        |ИЗ
        |    Документ.КадровыйПереводСписком.Сотрудники КАК КадровыйПереводСпискомСотрудники
        |ГДЕ
        |    КадровыйПереводСпискомСотрудники.Ссылка = &Ссылка
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТДанныеДокумента.Сотрудник КАК Сотрудник,
        |    ДОБАВИТЬКДАТЕ(ВТДанныеДокумента.ДатаНачала, СЕКУНДА, -1) КАК Период
        |ПОМЕСТИТЬ ВТСотрудникиПериоды
        |ИЗ
        |    ВТДанныеДокумента КАК ВТДанныеДокумента
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    СУММА(ВЫБОР
        |            КОГДА КадровыйПереводПоказатели.Показатель В (&СписокПоказателейОклад)
        |                ТОГДА КадровыйПереводПоказатели.Значение
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК СуммаОклад,
        |    СУММА(ВЫБОР
        |            КОГДА КадровыйПереводПоказатели.Показатель В (&СписокПоказателейНадбавка)
        |                ТОГДА КадровыйПереводПоказатели.Значение
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК СуммаНадбавки
        |ПОМЕСТИТЬ ВТНачисленияПоказатели
        |ИЗ
        |    Документ.КадровыйПеревод.Показатели КАК КадровыйПереводПоказатели
        |ГДЕ
        |    КадровыйПереводПоказатели.Ссылка = &Ссылка
        |
        |ОБЪЕДИНИТЬ ВСЕ
        |
        |ВЫБРАТЬ
        |    ВЫБОР
        |        КОГДА КадровыйПереводСпискомПоказатели.Показатель В (&СписокПоказателейОклад)
        |            ТОГДА КадровыйПереводСпискомПоказатели.Значение
        |        ИНАЧЕ 0
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА КадровыйПереводСпискомПоказатели.Показатель В (&СписокПоказателейНадбавка)
        |            ТОГДА КадровыйПереводСпискомПоказатели.Значение
        |        ИНАЧЕ 0
        |    КОНЕЦ
        |ИЗ
        |    Документ.КадровыйПереводСписком.Показатели КАК КадровыйПереводСпискомПоказатели
        |ГДЕ
        |    КадровыйПереводСпискомПоказатели.Ссылка = &Ссылка";
        
        Запрос.УстановитьПараметр("Ссылка",ТекДокумент);
        Запрос.УстановитьПараметр("ДатаДокумента",ТекДокумент.Дата);
        СписокПоказателейОклад = Новый СписокЗначений;
        Попытка СписокПоказателейОклад.Добавить(Справочники.ПоказателиРасчетаЗарплаты.Оклад); Исключение КонецПопытки;
        Попытка СписокПоказателейОклад.Добавить(Справочники.ПоказателиРасчетаЗарплаты.ОкладЗаКлассныйЧин); Исключение КонецПопытки;
        Попытка СписокПоказателейОклад.Добавить(Справочники.ПоказателиРасчетаЗарплаты.ОкладПоДолжности); Исключение КонецПопытки;

        Запрос.УстановитьПараметр("СписокПоказателейОклад",СписокПоказателейОклад);
        СписокПоказателейНадбавка = Новый СписокЗначений;
        Попытка СписокПоказателейНадбавка.Добавить(Справочники.ПоказателиРасчетаЗарплаты.ПроцентНадбавкиЗаВредность); Исключение КонецПопытки;
        Запрос.УстановитьПараметр("СписокПоказателейНадбавка",СписокПоказателейНадбавка);
        РезультатЗапроса = Запрос.Выполнить();
        
        // Получение кадровых данных сотрудника.
        ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
            Запрос.МенеджерВременныхТаблиц,
            "ВТСотрудникиПериоды");
        КадровыеДанные = "ФИОПолные,ФамилияИО,
            |АдресПоПропискеПредставление,АдресМестаПроживанияПредставление,ТелефонМобильныйПредставление,
            |ДокументПредставление,Пол,Должность,ДатаРождения,Подразделение,ДатаРождения,ИНН,СтраховойНомерПФР";
        КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, КадровыеДанные);
    
    
        
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ДанныеДокумента.ДатаДокумента КАК ДатаДокумента,
        |    ДанныеДокумента.Организация КАК Организация,
        |    ДанныеДокумента.Должность КАК СотрудникДолжность,
        |    ДанныеДокумента.ИзменитьПодразделениеИДолжность КАК ИзменитьПодразделениеИДолжность,
        |    ДанныеДокумента.Подразделение КАК СотрудникПодразделение,
        |    ДанныеДокумента.РазрядКатегория КАК РазрядКатегория,
        |    ДанныеДокумента.КоличествоСтавок КАК КоличествоСтавок,
        |    ДанныеДокумента.ДатаНачала КАК ДатаНачала,
        |    ДанныеДокумента.ДатаОкончания КАК ДатаОкончания,
        |    КадровыеДанныеСотрудников.ФамилияИО КАК СотрудникФамилияИО,
        |    КадровыеДанныеСотрудников.Пол КАК СотрудникПол,
        |    КадровыеДанныеСотрудников.АдресПоПропискеПредставление КАК СотрудникАдресПоПропискеПредставление,
        |    КадровыеДанныеСотрудников.АдресМестаПроживанияПредставление КАК СотрудникАдресМестаПроживанияПредставление,
        |    КадровыеДанныеСотрудников.ТелефонМобильныйПредставление КАК ТелефонМобильный,
        |    КадровыеДанныеСотрудников.ДокументПредставление КАК СотрудникДокументПредставление,
        |    КадровыеДанныеСотрудников.ДатаРождения КАК СотрудникДатаРождения,
        |    КадровыеДанныеСотрудников.ИНН КАК СотрудникИНН,
        |    КадровыеДанныеСотрудников.Подразделение КАК СотрудникПодразделениеСтарое,
        |    КадровыеДанныеСотрудников.Должность КАК СотрудникДолжностьСтарая,
        |    КадровыеДанныеСотрудников.СтраховойНомерПФР КАК СотрудникСтраховойНомерПФР,
        |    КадровыеДанныеСотрудников.ФИОПолные КАК СотрудникФИОПолные,
        |    ЕСТЬNULL(ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.НомерДоговораКонтракта, ПриемНаРаботу.ТрудовойДоговорНомер) КАК НомерДоговораКонтракта,
        |    ЕСТЬNULL(ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.ДатаДоговораКонтракта, ПриемНаРаботу.ТрудовойДоговорДата) КАК ДатаДоговораКонтракта,
        |    ДанныеДокумента.ИзменитьНачисления КАК ИзменитьНачисления,
        |    ДанныеДокумента.ИзменитьГрафикРаботы КАК ИзменитьГрафикРаботы,
        |    ЕСТЬNULL(НачисленияПоказатели.СуммаОклад, 0) КАК СуммаОклад,
        |    ЕСТЬNULL(НачисленияПоказатели.СуммаНадбавки, 0) КАК СуммаНадбавки,
        |    ПодразделенияОрганизацийДополнительныеРеквизиты.Значение КАК ГородПодразделения,
        |    ОрганизацииДополнительныеРеквизиты.Значение КАК ОснованиеДляРуководителя
        |ИЗ
        |    ВТДанныеДокумента КАК ДанныеДокумента
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
        |        ПО ДанныеДокумента.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОсновныеДанныеКонтрактаДоговораСотрудника.СрезПоследних(&ДатаДокумента, ) КАК ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних
        |        ПО ДанныеДокумента.Сотрудник = ОсновныеДанныеКонтрактаДоговораСотрудникаСрезПоследних.Сотрудник
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриемНаРаботу КАК ПриемНаРаботу
        |        ПО ДанныеДокумента.Сотрудник = ПриемНаРаботу.Сотрудник
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК ПодразделенияОрганизацийДополнительныеРеквизиты
        |        ПО ДанныеДокумента.Подразделение = ПодразделенияОрганизацийДополнительныеРеквизиты.Ссылка
        |            И (ПодразделенияОрганизацийДополнительныеРеквизиты.Свойство = &СвойствоГород)
        |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации.ДополнительныеРеквизиты КАК ОрганизацииДополнительныеРеквизиты
        |        ПО ДанныеДокумента.Организация = ОрганизацииДополнительныеРеквизиты.Ссылка
        |            И (ОрганизацииДополнительныеРеквизиты.Свойство = &СвойствоОснованиеДляРуководителя),
        |    ВТНачисленияПоказатели КАК НачисленияПоказатели";
        
        Запрос.УстановитьПараметр("СвойствоГород", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Город"));
        Запрос.УстановитьПараметр("СвойствоОснованиеДляРуководителя", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Основание для руководителя"));

        РезультатЗапроса = Запрос.Выполнить();
        ВыборкаЗапроса = РезультатЗапроса.Выбрать();
        
        Пока ВыборкаЗапроса.Следующий()Цикл
        
            
            //Сведения об организации
            СписокПоказателей = Новый Массив;
            СписокПоказателей.Добавить("НаимЮЛПол");
            СписокПоказателей.Добавить("ИННЮЛ");
            СписокПоказателей.Добавить("КППЮЛ");
            СписокПоказателей.Добавить("ФИОРук");
            СписокПоказателей.Добавить("ДолжнРук");
            СписокПоказателей.Добавить("ПолРук");
            СписокПоказателей.Добавить("ТелОрганизации");
            СтруктураСведенийОбОрганизации = ЗарплатаКадрыБазовый.ПолучитьСведенияОбОрганизации(ВыборкаЗапроса.Организация,ВыборкаЗапроса.ДатаДокумента,СписокПоказателей);
            АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(ВыборкаЗапроса.Организация);
            ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(
                АдресаОрганизаций,
                ВыборкаЗапроса.Организация,
                Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);                
            ОписаниеФактическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(
                АдресаОрганизаций,
                ВыборкаЗапроса.Организация,
                Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации);
                
        
            //Выводим шапку
            Область = Макет.ПолучитьОбласть("Шапка");
            Область.Параметры.ДатаНачала = Формат(ВыборкаЗапроса.ДатаНачала,"ДФ='dd ММММ yyyy ''г.'''");
            Область.Параметры.НомерДоговораКонтракта = ВыборкаЗапроса.НомерДоговораКонтракта;
            Область.Параметры.ДатаДоговораКонтракта = Формат(ВыборкаЗапроса.ДатаДоговораКонтракта,"ДФ='dd ММММ yyyy ''г.'''");
            Область.Параметры.ОрганизацияНаименованиеПолное = СтруктураСведенийОбОрганизации.НаимЮЛПол;
            Область.Параметры.СотрудникФИОПолные = ВыборкаЗапроса.СотрудникФИОПолные;
        ТабличныйДокумент.Вывести(Область);
                    
            // Руководитель
            РезультатСклонения = "";
            Если ФизическиеЛицаЗарплатаКадры.Просклонять(Строка(СтруктураСведенийОбОрганизации.ФИОРук), 2, РезультатСклонения, СтруктураСведенийОбОрганизации.ПолРук) Тогда
                РуководительФИОПолныеВПадежеР = РезультатСклонения;
            КонецЕсли;
            РезультатСклонения = "";
            Если ФизическиеЛицаЗарплатаКадры.Просклонять(Строка(СтруктураСведенийОбОрганизации.ФИОРук), 3, РезультатСклонения, СтруктураСведенийОбОрганизации.ПолРук) Тогда
                РуководительФИОПолныеВПадежеД = РезультатСклонения;
            КонецЕсли;         
            РуководительДолжностьВПадежеР = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Нрег(СтруктураСведенийОбОрганизации.ДолжнРук.Наименование), 2);
            РуководительДолжностьВПадежеД = СклонениеПредставленийОбъектов.ПросклонятьПредставление(Нрег(СтруктураСведенийОбОрганизации.ДолжнРук.Наименование), 3);
            РуководительДолжностьВПадежеД = ВРег(Лев(РуководительДолжностьВПадежеД,1)) + НРег(Сред(РуководительДолжностьВПадежеД,2));
            
            НомерПункта = 0;
            
            //Изменение должности или подразделения
                        
                Область = Макет.ПолучитьОбласть("СменаДолжности");
                Область.Параметры.НомерПункта = НомерПункта + 1;
                Область.Параметры.НомерПункта1 = НомерПункта +2;
            
                            
                Область.Параметры.СотрудникДолжность = ВыборкаЗапроса.СотрудникДолжность;
                Область.Параметры.СуммаОклад = ВыборкаЗапроса.СуммаОклад;
            

                Валюта = Справочники.Валюты.НайтиПоКоду("643");
                Если Валюта = Неопределено ИЛИ Валюта = Справочники.Валюты.ПустаяСсылка() Тогда
                    Сообщить("Не найдена валюта по коду: ""643""");
                КонецЕсли;
                Область.Параметры.СуммаОкладПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ВыборкаЗапроса.СуммаОклад, Валюта, Ложь);
                Если ВыборкаЗапроса.СуммаНадбавки > 0 Тогда
                Область.Параметры.СуммаНадбавки = ВыборкаЗапроса.СуммаНадбавки;
                Иначе Область.Параметры.СуммаНадбавки = 0;
                КонецЕсли;
                Область.Параметры.НомерДоговораКонтракта = ВыборкаЗапроса.НомерДоговораКонтракта;
                Область.Параметры.ДатаДоговораКонтракта = Формат(ВыборкаЗапроса.ДатаДоговораКонтракта,"ДФ='dd ММММ yyyy ''г.'''");
                ТабличныйДокумент.Вывести(Область);
                            
            //Выводим подвал
            
            //Если  ВыборкаЗапроса.ИзменитьНачисления Тогда
            Область = Макет.ПолучитьОбласть("Подвал");
            ЗаполнитьЗначенияСвойств(Область.Параметры,ВыборкаЗапроса);
            Область.Параметры.НомерПункта = НомерПункта + 3;
            Область.Параметры.НомерПункта1 = НомерПункта + 4;
            Область.Параметры.ДатаДоговораКонтракта = Формат(ВыборкаЗапроса.ДатаДоговораКонтракта,"ДФ='dd ММММ yyyy ''г.'''");
            Область.Параметры.СотрудникДатаРождения = Формат(ВыборкаЗапроса.СотрудникДатаРождения,"ДФ='dd ММММ yyyy ''г.'''");
            Область.Параметры.ДатаНачала = Формат(ВыборкаЗапроса.ДатаНачала,"ДФ='dd ММММ yyyy ''г.'''");
            Область.Параметры.ОрганизацияНаименованиеПолное = СтруктураСведенийОбОрганизации.НаимЮЛПол;
            Область.Параметры.ИНН = СтруктураСведенийОбОрганизации.ИННЮЛ;
            Область.Параметры.КПП = СтруктураСведенийОбОрганизации.КППЮЛ;
            АдресаОрганизаций = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресаОрганизаций(ВыборкаЗапроса.Организация);
            ОписаниеЮридическогоАдреса = УправлениеКонтактнойИнформациейЗарплатаКадры.АдресОрганизации(
                АдресаОрганизаций,
                ВыборкаЗапроса.Организация,
                Справочники.ВидыКонтактнойИнформации.ЮрАдресОрганизации);
            Область.Параметры.ОрганизацияАдресЮридический = ОписаниеЮридическогоАдреса.Представление;                
        
            ТабличныйДокумент.Вывести(Область);
                    
    КонецЦикла;    
    КонецЦикла;    
    
    Возврат ТабличныйДокумент;
1 Волшебник
 
12.08.24
09:26
(0) У Вас совесть есть?