Имя: Пароль:
1C
1C 7.7
v7: Тип договора из состояния сотрудника
,
0 1С-ница
 
26.07.13
14:58
ЗИК 7.70.338
Для подготовки данных в ПФР нужно получить актуальное на отчетный период состояние физ лица (для корректного проставления Типа договора (Трудовой или Гражданско-правовой)

Функция ВернутьТипДоговора(Сотрудник, ОтчетныйПериод)
    Перем ОписаниеСостояния;

    Если (ПустоеЗначение(Сотрудник)=1)или(Сотрудник.ЭтоГруппа()=1) Тогда
        Возврат ""
    КонецЕсли;
    
    ДатаАктуальности = ОтчетныйПериод;
    Периодический.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
    СостояниеФЗ = Периодический.ЗначениеНаДату(ДатаАктуальности);
    Если ПустоеЗначение(СостояниеФЗ)=0 Тогда //Не пустое значение  
        
        Если Периодический.НайтиЗначение(ДатаАктуальности,90)=1 Тогда
            ДатаПриема = Периодический.ДатаЗнач;
        КонецЕсли;
        
        Если ПустоеЗначение(ДатаПриема) = 0 Тогда        
            
            Возврат Перечисление.ТипДоговораСЗВ63.Трудовой;
        Иначе
            Возврат Перечисление.ТипДоговораСЗВ63.ГражданскоПравовой;
        КонецЕсли;
    Иначе
        Возврат Перечисление.ТипДоговораСЗВ63.ГражданскоПравовой;
    КонецЕсли;

КонецФункции    // СостояниеСотрудника

Функция возвращает что то не то
1 1С-ница
 
26.07.13
15:09
Очень нужно, подскажите!!!
2 dk
 
26.07.13
15:12
пятнично
>Функция возвращает что то не то
3 1С-ница
 
26.07.13
15:14
да, очень пятнично, но тем не менне
4 Бертыш
 
26.07.13
15:14
Э как вы барышня извращаетесь
5 1С-ница
 
26.07.13
15:14
Напишите ваш вариант, буду признательна))
6 Бертыш
 
26.07.13
15:15
Вы объект Периодический почему -то не создаете
7 1С-ница
 
26.07.13
15:15
(6) Создаю, но не в этой функции
8 dk
 
26.07.13
15:16
про отладчик уже было?
9 Бертыш
 
26.07.13
15:16
Объясните для начала что вы хотите получить.
10 Бертыш
 
26.07.13
15:17
Почему Вы не используете Сотрудник.СостояниеФизлица.Получить(ДатаОтчета)
11 Бертыш
 
26.07.13
15:18
Сотрудник.СостояниеФизлица.Получить(ОтчетныйПериод)
Вернет Вам актуальное состояние физлица
12 1С-ница
 
26.07.13
15:18
Сначала я пробовала так:
Функция ВернутьТипДоговора(Сотрудник, ОтчетныйПериод)
    
    СостояниеСотрудника = Сотрудник.СостояниеФизЛица.Получить(ОтчетныйПериод);
    Если СостояниеСотрудника = Перечисление.СостояниеФизЛица.СотрудникОсновной ИЛИ  СостояниеСотрудника = Перечисление.СостояниеФизЛица.СотрудникОсновной Тогда
        Возврат Перечисление.ТипДоговораСЗВ63.Трудовой;
    Иначе
        Возврат Перечисление.ТипДоговораСЗВ63.ГражданскоПравовой;
    КонецЕсли;    
    
КонецФункции
13 1С-ница
 
26.07.13
15:19
Но я не знаю какое состояние у физ лица должно быть, чтобы отнести его к гражданско-правовому договору
14 1С-ница
 
26.07.13
15:19
Может быть пустое значение?
15 Бертыш
 
26.07.13
15:23
(14) А что ты планируешь в случае пустого значения делать?
16 1С-ница
 
26.07.13
15:23
Думаю более правильное будет смотреть на конец отчетного периода?
17 1С-ница
 
26.07.13
15:23
(15) В случае пустого значения буду возвращать Тип договора = гражданско-правовой
18 Gucci76
 
26.07.13
15:27
Периодический.ИспользоватьОбъект("СостояниеФизлица",Сотрудник);
Периодический.ОбратныйПорядок(1); Периодический.ВыбратьЗначения(,ДатаАктуальности);
Пока Периодический.ПолучитьЗначение() = 1 Цикл
Если ПустоеЗначение(Периодический.Значение)=0 Тогда
Возврат Периодический.Значение
КонецЕсли;
Возврат ""
КонецЦикла;
19 Gucci76
 
26.07.13
15:28
Может так?
20 Бертыш
 
26.07.13
15:30
(19) Вопрос чего она хочет. Протелепатировать трудно. Значение актуальное на дату как получить проще всего я ей указал. Но проблемы с методологией это не решит. Она сама себе пытается методологию изобрести для какой-то жутко секретной задачи.
21 Gucci76
 
26.07.13
15:33
Видимо надо вернуть последнее до увольнения состояние ФЛ
22 Бертыш
 
26.07.13
15:34
ПФР помойму и так сам придумывает состояние договора, а она чего то химичит.Чем не устраивает методология отчета "ПодготовкаСведенийДляПФР2010"?
23 Бертыш
 
26.07.13
15:35
Типа методология 1С в корне не верна?
24 1С-ница
 
26.07.13
15:50
(22) Не устраивает вот этим:
//Если ПустоеЗначение(Док.ТипДоговора)=1 Тогда
        //    ТипДоговора = Перечисление.ТипДоговораСЗВ63.Трудовой;
        //Иначе
        //    ТипДоговора = Док.ТипДоговора;
        //КонецЕсли;
25 1С-ница
 
26.07.13
15:52
Пока работает так, на всех сотрах не проверяла
Функция ВернутьТипДоговора(Сотрудник, ОтчетныйПериод)
    
    СостояниеСотрудника = Сотрудник.СостояниеФизЛица.Получить(ДобавитьМесяц(ОтчетныйПериод,3));
    Если ПустоеЗначение(СостояниеСотрудника) = 0 Тогда
        Возврат Перечисление.ТипДоговораСЗВ63.Трудовой;
    Иначе
        Возврат Перечисление.ТипДоговораСЗВ63.ГражданскоПравовой;
    КонецЕсли;    
КонецФункции
26 Gucci76
 
26.07.13
15:54
(25) Если сотрудника уволили, то он из Трудового превратиться в ГПХ
27 Gucci76
 
26.07.13
15:57
Тогда лучше так:

Периодический.ИспользоватьОбъект("СостояниеФизлица",Сотрудник.ОсновнойОбъект);
Периодический.ОбратныйПорядок(1); Периодический.ВыбратьЗначения(,ДатаАктуальности);
Пока Периодический.ПолучитьЗначение() = 1 Цикл
   Если Периодический.Значение = Перечисление.ХХХХ.Основной Тогда
       Возврат Перечисление.ТипДоговораСЗВ63.Трудовой;
   КонецЕсли;
КонецЦикла;
Возврат Перечисление.ТипДоговораСЗВ63.ГражданскоПравовой;

Перечисление.ХХХХ.Основной - правильно написать перечисление
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.