Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Не работает процедура обработкаВыбора

Не работает процедура обработкаВыбора
Я
   skupidom
 
30.10.18 - 18:49
Процедура ДопДниБольничныхОтпусковСотрудниковОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

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

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

            |ВЫБРАТЬ
            |    ВТФЛ.ДатаНачалаРаботыВКорпорации КАК ДатаНачРаботыКорп,
            |    ВТФЛ.Объект
            |ИЗ
            |    ВТФЛ КАК ВТФЛ
            |
            |УПОРЯДОЧИТЬ ПО
            |    ВТФЛ.Объект.Наименование";    
            ЗапросТЧ.УстановитьПараметр("перемСвойство",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000108"));
            ЗапросТЧ.УстановитьПараметр("СЗНоминалы",СписокЗнНоминалы);
            ЗапросТЧ.УстановитьПараметр("ФизЛицоНаименование",ФизЛицоНаименование);
            Выборка = ЗапросТЧ.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                // больничный

                ДопДнейОплаты = 0;
                // к ежегодному оплачиваемому отпуску за стаж работы в Корпорации по семейным обстоятельствам

                ОтпускДопДнейОплатыСО  = 0;
                ОтпускДопДнейОплатыРР  = 0;
                ОтпускДопДнейОплатыЮ   = 0;
                ОтпускДопДнейОплатыСБР = 0;
                // 

                ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 0;
                // к ежегодному оплачиваемому отпуску за стаж работы в Корпорации

                ОтпускДопДнейОплатыСтажРаботы = 0;
                //

                ЗначВозврат = ОбщегоНазначения.ВозвратРазностьДат(Выборка.Объект);
                
                Сообщить("Физлицо " + Выборка.Объект + " Лет " + ЗначВозврат.Лет + " Месяцев " + ЗначВозврат.Месяцев + " Дней " + ЗначВозврат.Дней);
                
                // Для вида расчета = больничный:

                Если (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда
                    ДопДнейОплаты = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда 
                    ДопДнейОплаты = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда 
                    ДопДнейОплаты = 3;
                ИначеЕсли (ЗначВозврат.Лет = 4) Тогда
                    ДопДнейОплаты = 3;
                ИначеЕсли (ЗначВозврат.Лет >= 5) Тогда
                    ДопДнейОплаты = 4;
                КонецЕсли;
                
                //Если ДопДнейОплаты > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная доплата по больничному листу");
                НоваяСтрТЧ.КоличесвоДопДней             = ДопДнейОплаты;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
                // Для вида расчета = отпуск по семейным обстоятельствам:

                // № 1 Бракосочетание работника

                Если (ЗначВозврат.Лет = 1) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда
                    ОтпускДопДнейОплатыСО = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыСО = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда    
                    ОтпускДопДнейОплатыСО = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыСО = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И (ЗначВозврат.Месяцев > 0 ИЛИ ЗначВозврат.Дней > 0) Тогда    
                    ОтпускДопДнейОплатыСО = 3;
                ИначеЕсли (ЗначВозврат.Лет > 3) Тогда
                    ОтпускДопДнейОплатыСО = 3;
                КонецЕсли;
                
                //Если ОтпускДопДнейОплатыСО > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная оплата отпуска");
                НоваяСтрТЧ.СобытиеОтпуска               = Перечисления.СостоянияРаботникаОрганизации.БракосочетаниеРаботника;
                НоваяСтрТЧ.КоличесвоДопДней             = ОтпускДопДнейОплатыСО;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
                // № 2 Рождение ребенка

                Если (ЗначВозврат.Лет = 1) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда
                    ОтпускДопДнейОплатыРР = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыРР = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда    
                    ОтпускДопДнейОплатыРР = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыРР = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И (ЗначВозврат.Месяцев > 0 ИЛИ ЗначВозврат.Дней > 0) Тогда    
                    ОтпускДопДнейОплатыРР = 3;
                ИначеЕсли (ЗначВозврат.Лет > 3) Тогда
                    ОтпускДопДнейОплатыРР = 3;
                КонецЕсли;
                
                //Если ОтпускДопДнейОплатыРР > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная оплата отпуска");
                НоваяСтрТЧ.СобытиеОтпуска               = Перечисления.СостоянияРаботникаОрганизации.РождениеРебенка;
                НоваяСтрТЧ.КоличесвоДопДней             = ОтпускДопДнейОплатыРР;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
                // № 3 Юбилей (дата,кратная 10)

                Если (ЗначВозврат.Лет = 1) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда
                    ОтпускДопДнейОплатыЮ = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) Тогда    
                    ОтпускДопДнейОплатыЮ = 1;            
                ИначеЕсли (ЗначВозврат.Лет = 3) И (ЗначВозврат.Месяцев = 0) И (ЗначВозврат.Дней = 0) Тогда    
                    ОтпускДопДнейОплатыЮ = 1;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда    
                    ОтпускДопДнейОплатыЮ = 2;
                ИначеЕсли (ЗначВозврат.Лет > 3) Тогда    
                    ОтпускДопДнейОплатыЮ = 2;
                КонецЕсли;
                //Если ОтпускДопДнейОплатыЮ > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная оплата отпуска");
                НоваяСтрТЧ.СобытиеОтпуска               = Перечисления.СостоянияРаботникаОрганизации.ЮбилейДатаКратная10;
                НоваяСтрТЧ.КоличесвоДопДней             = ОтпускДопДнейОплатыЮ;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
                // № 4 Смерть близкого родственника

                Если (ЗначВозврат.Лет = 1) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда
                    ОтпускДопДнейОплатыСБР = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыСБР = 1;
                ИначеЕсли (ЗначВозврат.Лет = 2) И ((ЗначВозврат.Месяцев > 0) ИЛИ (ЗначВозврат.Дней > 0)) Тогда    
                    ОтпускДопДнейОплатыСБР = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И ((ЗначВозврат.Месяцев = 0) ИЛИ (ЗначВозврат.Дней = 0)) Тогда
                    ОтпускДопДнейОплатыСБР = 2;
                ИначеЕсли (ЗначВозврат.Лет = 3) И (ЗначВозврат.Месяцев > 0 ИЛИ ЗначВозврат.Дней > 0) ИЛИ (ЗначВозврат.Лет > 3) Тогда    
                    ОтпускДопДнейОплатыСБР = 3;
                ИначеЕсли (ЗначВозврат.Лет > 3) Тогда    
                    ОтпускДопДнейОплатыСБР = 3;
                КонецЕсли;
                //Если ОтпускДопДнейОплатыСБР > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная оплата отпуска");
                НоваяСтрТЧ.СобытиеОтпуска               = Перечисления.СостоянияРаботникаОрганизации.СмертьБлизкогоРодственника;
                НоваяСтрТЧ.КоличесвоДопДней             = ОтпускДопДнейОплатыСБР;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
                // № 5 Доп.дни к ежегодному оплачиваемому отпуску за стаж работы в Корпо-рации

                Если (ЗначВозврат.Лет = 2) Тогда
                    Если (ЗначВозврат.Месяцев > 0) или (ЗначВозврат.Дней > 0) Тогда
                        ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 1;
                    КонецЕсли;
                ИначеЕсли (ЗначВозврат.Лет = 3) и (ЗначВозврат.Месяцев = 0) и (ЗначВозврат.Дней = 0) Тогда    
                    ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 1;            
                ИначеЕсли (ЗначВозврат.Лет = 3) Тогда
                    Если (ЗначВозврат.Месяцев > 0) или (ЗначВозврат.Дней > 0) Тогда
                        ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 2;
                    КонецЕсли;
                ИначеЕсли (ЗначВозврат.Лет = 4) Тогда
                    ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 2;
                ИначеЕсли (ЗначВозврат.Лет >= 5) Тогда
                    ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации = 3;
                КонецЕсли;  
                //Если ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации > 0 Тогда

                НоваяСтрТЧ                                 = ДопДниБольничныхОтпусковСотрудников.Добавить();
                НоваяСтрТЧ.ФизЛицо                         = Выборка.Объект;
                НоваяСтрТЧ.ДатаНачалаРаботыВКорпорации  = Выборка.ДатаНачРаботыКорп;
                НоваяСтрТЧ.ВидРасчета                     = ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоНаименованию("Корпоративная оплата отпуска");
                НоваяСтрТЧ.СобытиеОтпуска               = Перечисления.СостоянияРаботникаОрганизации.ДопДниЗаСтажРаботыВКорпорации;
                НоваяСтрТЧ.КоличесвоДопДней             = ОтпускДопДнейОплатыЗаСтажРаботыВКорпорации;
                Если Год(Выборка.ДатаНачРаботыКорп) < Год(Дата) Тогда
                    НоваяСтрТЧ.Год                      = Год(Дата);
                Иначе 
                    НоваяСтрТЧ.Год                      = Год(Выборка.ДатаНачРаботыКорп);
                КонецЕсли;
                //КонецЕсли;

                
            КонецЦикла;
            
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

Процедура КоманднаяПанель1ОчиститьТП(Кнопка)
    
     ДопДниБольничныхОтпусковСотрудников.Очистить();
    
КонецПроцедуры

Процедура ОткрытьФормуВыбораФЛ(Владелец, Ключ, ЗакрыватьПриВыборе) Экспорт
    
    СтандартнаяОбработка = Ложь;
    ЗакрыватьПриВыборе   = Ложь;
    
    Форма = Справочники.ФизическиеЛица.ПолучитьФормуВыбора(,,);
    Форма.ЗакрыватьПриВыборе = ЗакрыватьПриВыборе;
    Форма.Заголовок = "Выберите Физических лиц: ";
    Форма.Открыть();
    
КонецПроцедуры      

Процедура КоманднаяПанельПодбор(Кнопка)
    //ОткрытьФормуВыбораФЛ(ЭлементыФормы.ДопДниБольничныхОтпусковСотрудников,ЭтотОбъект,Ложь);

    ОткрытьФормуВыбораФЛ(ЭлементыФормы.ДопДниБольничныхОтпусковСотрудников,ЭтотОбъект,Ложь);
КонецПроцедуры
 
 
   skupidom
 
1 - 30.10.18 - 18:50
из документа подбор множественный в таб. часть из справочника физ. лиц
   skupidom
 
2 - 30.10.18 - 18:50
УПП 1.3
   hhhh
 
3 - 30.10.18 - 19:24
(1) ПолучитьФормуВыбора(,,)

где тут владелец? одни запятые
   skupidom
 
4 - 30.10.18 - 21:36
не зависимо
   ДНН
 
5 - 30.10.18 - 21:39
(4) чтобы автоматически отрабатывала обработка выбора должен быть указан владелец, иначе нужно "оповестить о выборе"
   skupidom
 
6 - 30.10.18 - 22:38
спасибо

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует