7.7 Логическая ошибка по состоянию сотрудника.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Aptemii, 2 дек 2009.

  1. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26
    В справочнике Сотрудники есть (что это точно не понимаю, ибо в реквизитах нет) графа "Состояние", где показано нынешнее трудовое положение сотрудника("штатный сотрудник..", "уволен.." и т.п.).
    Ошибка происходит при следующих действиях:
    1. Создаем "приказ на работу №001" со сроком действия(Принять с ... по...).
    2. Создаем "приказ об увольнении №001" с датой которая раньше, чем окончание "приказ на работу №001"
    3. Создаем "приказ на работу №002" с датой принятия, которая попадает в промежуток между началом действия "приказ об увольнении №001" и окончанием действия "приказ на работу №001".

    Итог в графе Состояние "Сотрудник уволен с...." хотя по приказам он "штатный сотрудник с...".
    А если Принимать на работу после завершения 1-го договора, то все ок.

    Нужен весь этот геморрой из за наших товарисчей из СНГ с их разрешением на работу, которое постоянно продлевать надо.

    Подскажите откуда ноги растут и как их вправлять!!?? :unsure:

    Есть код, но я не программер, а сис.админ и для меня это дебри. Отцы ПЛИЗ ХЕЛП=(

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

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нужно просто зайти в документ "приказ на работу №001" и поменять срок окончания действия... (предложит начислить/выплатить - отказаться)
  3. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26

    Нельзя так сделать, потому что когда приедет проверка ФМС, то будут различаться данные в 1С, т.е. у нас и поданные в ФМС. Там сцуко нелогичная система, при заключении договора.
    Надо дописать какую нибудь проверку, если одно из принятий на работу по срокам больше увольнения, то отображать дату окончания приема на работу конечную.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    как тогда быть с этим - сами себе противоречите.
    Значит в приказе об увольнении поставьте правильную дату реквизита "Прекратить действия договора с"
  5. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26

    Я понимаю это противоречие, но его нельзя убирать=(
    Вся картина выглядит след.образом:
    1) Приходит к нам труженик из наших любимых стран СНГ с разрешением на работу до определенной даты, с ним заключается договор до окончания разрешения на работу. Далее когда подходит срок окончания разрешения на работу, что бы работа не вставала, за небольшое время ему делается новое разрешение на работу, но уже с новыми реквизитами и приходится заключать новый договор с новыми реквизитами, прям со дня его получения и увольнять его по старому договору. По причине сдачи старого разрешения на работу в ФМС. Но 1С не воспринимает новую дату окончания его работы в компании, потому что новый договор заключен раньше окончания предыдущего=(((

    =((
    Завтра попробую с "Прекратить действия договора с". Если подскажите откуда взять "Прекратить действия договора с", буду копать дальше, ибо в приказе на увольнение такого реквизита нет=(((
  6. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Как это "нету"????? Вот.
    Правда все равно придется переписывать модуль проведения.
    А именно воз сдесь:

    Код:
    Если ТабРеквизитов.Документ.Вид() = "НачислениеОтпуска" Тогда
    УстановитьРеквизитСправочника(Сотрудник,"СостояниеФизлица",ПолучитьПустоеЗначение("Перечисление.СостояниеФизлица"),ТабРеквизитов.Дата);
    КонецЕсли;
    
    

    Вложения:

  7. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26

    У меня другая форма приказа об увольнении.... прикрепляю фаил.
    Посмотреть вложение 3044
    это не стандартные реквизит может быть?

    Вложения:

  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Опс.... сорри! Вы правы. Я глянул ДОРАБОТАННУЮ конфу. Ваша - страндартная. Как я и говорил в посте выше нужно внести изменения в обработке проведения
  9. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26
    Обработки проводок для меня дикий лес. Можно немного поподробнее... от чего отталкиваться...
  10. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26
    не могу разобраться!=( Хелп!=( :unsure:
  11. Ivan1c
    Offline

    Ivan1c

    Регистрация:
    16 дек 2009
    Сообщения:
    4
    Симпатии:
    0
    Баллы:
    1
    Вам написали, что необходимо дописывать модуль проведения. Если есть необходимость могу помочь.
  12. TopicStarter Overlay
    Aptemii
    Offline

    Aptemii Опытный в 1С

    Регистрация:
    11 июн 2009
    Сообщения:
    125
    Симпатии:
    0
    Баллы:
    26
    :unsure: если поможете буду при много благодарен. Ибо в кодах 0 в 1С. Из за сокращения расходов в кризис уволили 1С-ника и повесили ее администрирование на меня(сис.админа).
  13. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Боюсь имелась в виду платная помощь....
    Если сократили единицу в штате, значит надо пользоваться услугами сторонних лиц.

    А объединять 1Сника и сисадмина всеравно что объединить Юриста и Бухгалтера.... вроде оба работают с бумажками, а результат будет прикольный....

Поделиться этой страницей