Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Янв 2018, 08:51
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа со справочником  (Прочитано 3915 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Wert12

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-13
  • Сайт: 
Здравствуйте!

Подскажите,пожалуйста, есть справочник Сотрудники, реквизит СостояниеСотрудника меняется с помощью функции СостояниеЛица()
уволен сотрудник, принят, временно принят

мне надо сделать перенос уволенных сотрудников в группу уволенные в этом справочнике, можно конечно в ручную перенести, но мне так не надо?


Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Здравствуйте!

Подскажите,пожалуйста, есть справочник Сотрудники, реквизит СостояниеСотрудника меняется с помощью функции СостояниеЛица()
уволен сотрудник, принят, временно принят

мне надо сделать перенос уволенных сотрудников в группу уволенные в этом справочнике, можно конечно в ручную перенести, но мне так не надо?

За вас сделать или подсказать как обработку написать?

Оффлайн Wert12

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-13
  • Сайт: 
Подсказать как обработку сделать

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Подсказать как обработку сделать

Сформировать список сотрудников со статусом "уволен":
Посмотрите как определяется этот статус в функции СостояниеЛица() и произведите отбор сотрудника по этим условиям. Ну а далее, у всех сотрудников со статусом уволен меняете родителя на нужный.

PS: Начните писать код, и выкладывайте его в этой теме. Если что-то будет не так - подскажу где поправить.

Оффлайн Wert12

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-11-13
  • Сайт: 
//   Возвращаемое значение:
//      Строковое значение, состояние сотрудника (физлица) на рабочую дату
//
//   Описание:
//      Обрабатывает реквизит СостояниеФизлица и возвращает соответствующее значение
//
Функция СостояниеСотрудника()
   Перем ОписаниеСостояния;

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

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


//моя процедура



Процедура Перенос()

Спр = СоздатьОбъект("Справочник.Сотрудники");
  Дат = РабочаяДата();
    Спр.ВыбратьЭлементы();
   
   Пока Спр.ПолучитьЭлемент()=1 Цикл 
      
              

   Спр.ИспользоватьРодителя(Спр);
     со = Спр.СостояниеФизлица.Получить(Дат);
   
      не знаю как использовать функцию СостояниеСотрудника()   
    
    
    
     //Если (СокрЛП(со) = "Уволен") тогда
      
          
                  
         
     //           КонецЕсли;
                                 
                
            
   
   КонецЦикла

КонецПроцедуры   

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
не знаю как использовать функцию СостояниеСотрудника()   

функция СостояниеСотрудника() в принципе не очень легка для понимания. Почему в перечисление "СостояниеФизлица" не добавить значение "Уволен" и уже от него отталкиваться? Можно даже просто отдельный признак(реквизит) "Уволен" прикрутить. А то получается очень наворочено с определением состояния "Уволен".

В общем если функция СостояниеСотрудника() написана правильно и она правильно работает, то вы определяете значение которое возвратила вам эта функция и в этом значении пытаетесь найти текст "Уволен". Если текст найден, значит переносите, иначе ничего не делаете
    Состояние = нРег(СостояниеСотрудника());
    Если Найти(Состояние, "уволен") > 0 Тогда
        // уволен, переносим
    Иначе
        // не уволен, не переносим
    КонецЕсли;



Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
102 Сообщений
AIFrame
86 Сообщений
alex0402
34 Сообщений
pavl_vs
23 Сообщений
kiksi
19 Сообщений
alexandr_ll
17 Сообщений
andron81_81
16 Сообщений
Norfolk
15 Сообщений
LexaK
13 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 571
  • Точка Скрытых: 0
  • Точка Пользователей: 11
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal