Имя: Пароль:
1C
1С v8
Вытащить даты приема и увольнения при перегрузке сотрудников с помощью OLE
0 Дмитрий_71
 
26.12.11
14:00
Добрый день! Подскажите как вытащить даты приема и увольнения, я перегружаю обработкой в восьмерку.. В семерке не разбираюсь...
1 Amra
 
26.12.11
14:04
Еще один... Если не разбираешься, накуя полез? Решил бабла перед НГ срубить по легкому?
2 BuHu
 
26.12.11
14:10
(1) ну а чо бы и нет , щас придет Vladal  и все напишет за него )))
3 Дмитрий_71
 
26.12.11
14:13
вообще то мне не во что семерка не упиралась я работаю с восьмеркой, а нужно перегрузить данные из семерки..
4 BuHu
 
26.12.11
14:19
(3) судя по всему всетаки уперлась ) . показывай как делаешь , что не получается
5 Дмитрий_71
 
26.12.11
14:25
ну вот я подключчаюсь к семерке


СпрСотрудники77 = V7.CreateObject("Справочник.Сотрудники");
   //Проверка на наличие элементов в справочнике "Сотрудники" v7
   Если СпрСотрудники77.ВыбратьЭлементы() = 0 Тогда
       Сообщить("Ошибка выбора элементов");
       Возврат;
   КонецЕсли;
   //Запускаем цикл по элементам справочника "Сотрудники" v7    
   Пока СпрСотрудники77.ПолучитьЭлемент()=1 Цикл
       ОбработкаПрерыванияПользователя();
       //Пропускаем группы справочников V7
       Если СпрСотрудники77.ЭтоГруппа() = 1 Тогда
           Продолжить;    
       КонецЕсли;
6 Дмитрий_71
 
26.12.11
14:26
получаю справочник сотрудники..как я понял даты нельзя вытащить из сотрудников...надо как то обратиться к документу ПриемНаРаботу..
7 Дмитрий_71
 
26.12.11
14:29
все остальное я возьму из справочника сотрудники..мне только даты приема и увольнения как то вытащить..
8 BuHu
 
26.12.11
14:37
(7) это ЗиК ?, у меня нет его под рукой , посмотри может есть все таки в справочнике такие реквизиты
9 BuHu
 
26.12.11
14:38
если нету то запрос\выборка к документам с условием по сотруднику
10 Amra
 
26.12.11
14:39
+(8) Но они там периодические, получать их типа СпрСотрудники77.ДатаПриема.Получить(ДатаОтчета)
11 BuHu
 
26.12.11
14:41
+(10) или СпрСотрудники77.ИспользоватьДату(Дата)
12 Дмитрий_71
 
26.12.11
14:47
да дело в том что их там совсем нету(( да это ЗиК, с периодическими реквизитами я разобрался, если бы они были бы, то без проблем...
13 BuHu
 
26.12.11
14:53
(12) ну пиши тогда запрос к документам с условием по сотруднику
14 Дмитрий_71
 
26.12.11
14:53
вот есть функция которая в форме списка справочника сотрудники показывается состояние с датой
15 Дмитрий_71
 
26.12.11
14:53
Функция СостояниеСотрудника()
   Перем ОписаниеСостояния;

   Если (ПустоеЗначение(ТекущийЭлемент())=1)или(ЭтоГруппа()=1) Тогда
       Возврат ""
   КонецЕсли;
   ДатаПриема = Дата(0);
   ДатаУвольнения = Дата(0);
   ДатаАктуальности = ИспользоватьДату();
   Периодический.ИспользоватьОбъект("СостояниеФизлица",ТекущийЭлемент());
   СостояниеФЗ = Периодический.ЗначениеНаДату(ДатаАктуальности);
   Если ПустоеЗначение(СостояниеФЗ)=0 Тогда
       Если Периодический.НайтиЗначение(ДатаАктуальности,-1)=1 Тогда
           ДатаПриема = Периодический.ДатаЗнач
       КонецЕсли;
       Если Периодический.НайтиЗначение(ДатаАктуальности+1,1)=1 Тогда
           ДатаУвольнения = Периодический.ДатаЗнач-1
       КонецЕсли;
       Если ТекущийЭлемент().ОсновнойЭлемент<>ТекущийЭлемент() Тогда
           ОписаниеСостояния = "Внутреннее совместительство";
           Если СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда
               ОписаниеСостояния = "Внутреннее совмест-во, временно не работает";
           КонецЕсли;
       ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникОсновной Тогда
           ОписаниеСостояния = "Штатный сотрудник";
       //************ нмк  показывать правильную дату приема ********************* //
           ПриказОПриеме=глПриказПоСотруднику(ТекущийЭлемент(),ДатаАктуальности,"ПриказОПриемеНаРаботу");
           Если (ПустоеЗначение(ПриказОПриеме)=0) Тогда
                  ДатаПриема=ПриказОПриеме.ДатаПриема;            
           КонецЕсли;
       //*******************************************************    
       ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.СотрудникНеосновной Тогда
           ОписаниеСостояния = "Внешний совместитель";
       ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.Госслужащий Тогда
           ОписаниеСостояния = "Государственный служащий";
       ИначеЕсли СостояниеФЗ=Перечисление.СостояниеФизлица.ВременноНеРаботает Тогда
           ОписаниеСостояния = "Временно не работает";
       Иначе
           ОписаниеСостояния = "Военнослужащий";
       КонецЕсли;
       Возврат ОписаниеСостояния+" с "+ДатаПриема+?(ПустоеЗначение(ДатаУвольнения)=1,""," по "+ДатаУвольнения)
   Иначе
       Периодический.ОбратныйПорядок();
       Периодический.ВыбратьЗначения(,ДатаАктуальности);
       Пока Периодический.ПолучитьЗначение()=1 Цикл
           Если ПустоеЗначение(Периодический.Значение)=1 Тогда
               Возврат "Сотрудник уволен "+(Периодический.ДатаЗнач-1)
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   Если ОсновнойЭлемент=ТекущийЭлемент() Тогда
       Если глВидРасчетаДействует(ОсновнойЭлемент,,ДатаАктуальности,ДатаАктуальности)=1 Тогда
           Возврат "Физическое лицо, получающее доход на предприятии (договорник)";
       Иначе
           Возврат "Физическое лицо"
       КонецЕсли;
   Иначе
       Возврат "Не принят на внутреннее совместительство"
   КонецЕсли;

КонецФункции    // СостояниеСотрудника
16 Дмитрий_71
 
26.12.11
14:54
только до конца не пойму как берутся даты
17 Amra
 
26.12.11
14:55
(16) ДатаАктуальности = ИспользоватьДату(); А потом все на эту дату актуальности и получают. Что непонятно?
18 Дмитрий_71
 
26.12.11
14:57
мне не понятен объект "периодический":
Если Периодический.НайтиЗначение(ДатаАктуальности,-1)=1 Тогда
           ДатаПриема = Периодический.ДатаЗнач
       КонецЕсли;
       Если Периодический.НайтиЗначение(ДатаАктуальности+1,1)=1 Тогда
           ДатаУвольнения = Периодический.ДатаЗнач-1
       КонецЕсли;
19 BuHu
 
26.12.11
14:57
(18) попробуй V7.Периодический
20 Дмитрий_71
 
26.12.11
15:00
Вот получилось его создать
V7.CreateObject("Периодический")
21 Дмитрий_71
 
26.12.11
15:00
Периодический77 = V7.CreateObject("Периодический");
22 Дмитрий_71
 
26.12.11
15:11
уррра! всё получилось)) спасибо за помощь!
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.