Имя: Пароль:
1C
1C 7.7
v7: обход периодических реквизитов
,
0 perkos
 
23.05.12
06:59
СпрСотрудники = СоздатьОбъект("Справочник.Сотрудники");
       СпрСотрудники.ВыбратьЭлементы();
       Пока СпрСотрудники.ПолучитьЭлемент() = 1 Цикл
           Если СпрСотрудники.ЭтоГруппа() = 1 Тогда
               Продолжить;
           КонецЕсли;
           
           Сотрудник    = СпрСотрудники.ТекущийЭлемент();

....

           ПерРеквизит = СоздатьОбъект("Периодический");
           ПерРеквизит.ИспользоватьОбъект("", Сотрудник);
           ПерРеквизит.ВыбратьЗначения(, ДатаОкончания);
           Пока ПерРеквизит.ПолучитьЗначение() > 0 Цикл
....

не заходит в цикл обхода периодических реквизитов сотрудников... не понимаю почему так.. конфа ЗИК, код из правила обмена кадровыми документами... есть советы? ТИИ провел. ДатаОкончания - пустая
1 miki
 
23.05.12
07:06
ПерРеквизит.ИспользоватьОбъект("", Сотрудник)
>>""
2 perkos
 
23.05.12
07:09
из хелпа ИспользоватьОбъект(<ИмяРеквизита>,<Объект>)
Замечание:
Если наименование реквизита пустая строка и передан объект справочника, то выборка будет осуществляться по всем реквизитам справочника.



иногда в цикл код заходит но видит 1-2 реквизита ито не типовые в обмене не учавствуют
3 perkos
 
23.05.12
07:09
код типового обмена....)=
4 miki
 
23.05.12
07:12
С Сотрудником в
>>....
ничего не делаешь?
5 forforumandspam
 
23.05.12
07:13
Попробуй вообще убрать ДатаОкончания.

ПерРеквизит.ВыбратьЗначения();
6 forforumandspam
 
23.05.12
07:16
Насколько я помню, при любых выборках и пустых датах, лучше переменные опускать. Типа того:

   Если ПустоеЗначение(ДатаОкончания) = 1 Тогда
       ПерРеквизит.ВыбратьЗначения();
   Иначе
       ПерРеквизит.ВыбратьЗначения(, ДатаОкончания);
   КонецЕсли;
7 perkos
 
23.05.12
07:17
(4) неа)=

Пока СпрСотрудники.ПолучитьЭлемент() = 1 Цикл
           Если СпрСотрудники.ЭтоГруппа() = 1 Тогда
               Продолжить;
           КонецЕсли;
           
           Сотрудник    = СпрСотрудники.ТекущийЭлемент();
           
           Если (ПустоеЗначение(Параметры.ФизическоеЛицоДляОтладкиВыгрузки) = 0) И (Параметры.ФизическоеЛицоДляОтладкиВыгрузки <> Сотрудник) Тогда
               Продолжить;
           КонецЕсли;
           
           Если ПустоеЗначение(глРаботалСотрудник(Сотрудник, ДатаНачала, ДатаОкончания)) = 1 Тогда
               Продолжить;
           КонецЕсли;
           
           Состояние("Кадровые данные: " + Сотрудник);
           
           РаботникиОрганизаций = СоздатьТЗРаботникиОрганизаций( ИсходящиеДанные,,,,,,,, ВыборкаДанных,,,, ИмяПКО,,,, Правило,,,,,,,,,,,,,,,,, Отказ);
           РаботникиОрганизаций.НоваяКолонка("ПодразделениеОрганизацииБыло");
           РаботникиОрганизаций.НоваяКолонка("ДолжностьБыло");
           РаботникиОрганизаций.НоваяКолонка("ЗанимаемыхСтавокБыло");
       
           Если Параметры.РаспределятьПоИсточникамФинансирования = 1 Тогда
               ВоинскиеИСпециальныеЗвания = СоздатьОбъект("ТаблицаЗначений");
               ВоинскиеИСпециальныеЗвания.НоваяКолонка("Период");
               ВоинскиеИСпециальныеЗвания.НоваяКолонка("Физлицо");
               ВоинскиеИСпециальныеЗвания.НоваяКолонка("Звание");
       
               КлассныеЧиныДипломатическиеРангиФизлиц = СоздатьОбъект("ТаблицаЗначений");
               КлассныеЧиныДипломатическиеРангиФизлиц.НоваяКолонка("Период");
               КлассныеЧиныДипломатическиеРангиФизлиц.НоваяКолонка("Физлицо");
               КлассныеЧиныДипломатическиеРангиФизлиц.НоваяКолонка("КлассныйЧин");
           КонецЕсли;
           
           ПерРеквизит = СоздатьОбъект("Периодический");
           ПерРеквизит.ИспользоватьОбъект("", Сотрудник);
           ПерРеквизит.ВыбратьЗначения(, ДатаОкончания);
           Пока ПерРеквизит.ПолучитьЗначение() > 0 Цикл
8 miki
 
23.05.12
07:23
остается глянуть в глРаботалСотрудник(Сотрудник, ДатаНачала, ДатаОкончания)
9 perkos
 
23.05.12
07:23
(6) сработало спасибо, семера....
10 perkos
 
23.05.12
07:25
правила .... до этого отлаживал правило выгрузки физ лиц, так там с этой датой окончания еще тот бред выборка документов происходит с даты окончания и получается что сотр принятый до этой даты остается без документа о приеме на работу и прочих, и если ее оставлять пустой то все ок, а в этом правиле получается ее лучше заполнять или ставить костыли такие везде... )= че за туфту гонят