Приказ на перевод: номер и дата закл. контракта в прототипе

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Irina_
Местный житель
Сообщения: 545
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Приказ на перевод: номер и дата закл. контракта в прототипе

Сообщение Irina_ »

Здравствуйте. Надеюсь на консультацию.
Надо в присоединенную форму на основе прототипа Nfrmt5A_2004 (приказ на перемещение) вывести номер контракта и дату его заключения. Нашла в прототипе 2 поля: contract_date и contract_nmb. Добавила их вывод. Однако при формировании печатной формы приказа указанные поля не вывелись.
1. По какому принципу заполняется инфо о контракте при формировании потока для вывода в отчет.
2. Каким обходным способом можно получить инфо по контракту (SQL запрос и условия на таблицы )?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение m0p3e »

В зависимости от настройки UP.STAFF.RECEPTION.PrintFundation

Код: Выделить всё

  TR.AddTuneS('UP.STAFF.RECEPTION.PrintFundation', 'Выводить в поле "изменение к трудовому договору" приказа:', ftList, '1', '', 'NastrKadrPrikazALL');
    TR.AddList(0, 'Трудовой договор');
    TR.AddList(1, 'Дополнительное соглашение либо новый ТД');
    TR.AddList(2, 'Не выводить информацию');

Код: Выделить всё

           case wGetTune('UP.STAFF.RECEPTION.PrintFundation') of
             0:
             {
               iStrPlus.WriteStringMinus(t5A.handle, NewAppoint.ContractNmb);  // номер контракта
               iStrPlus.WriteDateMinus(t5A.handle, NewAppoint.ContractDate);
             }
             1:
             {
               if WWC.ContractIsNew(NewAppoint.ResComp[1], if(IsValid(#NewAppHist),NewAppHist.NRec,0))
               {
                 if (trim(NewAppoint.ContractNmb) <>'')
                   t5A.write(NewAppoint.ContractNmb);     // номер контракта
                 else
                   t5A.write(' - ');
                 iStrPlus.WriteDateMinus(t5A.handle, NewAppoint.ContractDate);
               }
               else
               {
                 t5A.write(NOAA.GetAgreementNmb(NOAA.GetFirstAgreementByLink(coContDoc, ContDoc.nRec)));     // номер доп соглашения
                 iStrPlus.WriteDateMinus(t5A.handle, NOAA.GetAgreementDate(NOAA.GetFirstAgreementByLink(coContDoc, ContDoc.nRec)));    // дата доп соглашения
               }
             }
             2:
             {
               t5A.write(' - ');
               t5A.write(' - ');
             }
           end;
В прототипе есть поле AppointNrec. Можно по нему принудительно вытянуть информацию.
Irina_
Местный житель
Сообщения: 545
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение Irina_ »

Здравствуйте.
Сергей, большое спасибо за ответ! Сама пробовала найти нужную инфо и нашла в нескольких таблицах:
- Appointments
- частично в Apphist
- в SpAllStaff.
Когда-то сталкивалась с тем, что инфо о контракте хранилась в Catarch, а в какой-то момент разработчик перенес ее в SpAllStaff. Правда не могу сказать, было ли это сделано по настройке на РБ или для других стран тоже.
Плюс еще есть приказы по РПД=65 Заключение/ продление контракта.
Т.о., сохраняя одну инфо в разных таблицах, на мой взгляд, разработчик только путает пользователей. А по поводу инфо о контракте в Appointments. Насколько я понимаю, здесь будет инфо о последнем контракте по назначению. В РБ контракт заключается на срок 1-5 лет. Если сначала контракт заключен на срок менее 5 лет, то может продлеваться до 5 лет. А после истечения 5 лет заключается новый контракт. Т.о., если перевод сотрудника сделан более 5 лет назад, в назначении будет инфо о последнем контракте, а при попытке распечатать сам приказ о переводе, если взять № и дату контракта из назначения, то они будут не такими, как во время перевода.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение m0p3e »

Судя по коду разработчики считают, что правильно брать информацию о контракте из appointments.
Данные по предыдущим контрактам можно получить пробежав по appointments в обратном порядке.
Для получения назначения на конкретную дату (дату приема или предыдущую дату от перевода) проще всего через объект AppointmentsFunctions.

Код: Выделить всё

var iAppFunc : AppointmentsFunctions;
var CurAppNrec : comp;
...........
CurAppNrec := iAppFunc.GetAppNrec_OnDate(PersNrec,<дата>);
PersNrec - есть в прототипе Nfrmt5A_2004.
Irina_
Местный житель
Сообщения: 545
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение Irina_ »

Сергей, я увидела по приведенному Вами коду, что разработчик берет инфо о контракте из Appointments, и тоже взяла оттуда )
Данные по предыдущим контрактам можно получить пробежав по appointments в обратном порядке.
Ранее я написала не об этом. Приведу пример. Сотрудник может быть на назначении по РПД на перевод более 5 лет, пусть 8 лет. Когда его переводили на это назначение, с ним заключили контракт №1 на 2 года. По истечении 2 лет этот контракт могут продлить на 1 год/ 2 года/3 года. По истечении продленного контракта его могут продлить на 2 года / 1 год/ заключить новый контракт №2. Т.е. при назначении длительностью > 5 лет фактически сотрудник может проработать более чем на одном контракте, т. к. продление можно делать только в общей сложности до 5 лет (2 + 2 + 1, или 1 + 3 + 1, или 3 + 2, и т. д.), а после 5 лет заключается новый контракт. И работа по этим обоим контрактам будет в пределах одного назначения. Если мы распечатаем приказ на перевод в таком примере (который был 8 лет назад), то в назначении будет инфо о последнем контракте, а не о том, который был при оформлении приказа на перевод. Хотя кто-то может возразить, что приказы очень задними датами печатать не будут )
Тогда на мой взгляд правильно спуститься в историю назначения на нужную дату, и инфо о контракте взять из связи истории назначения и SpAllStaff.
Конечно мой пример работает, если условия контракта остаются неизменными. Если условия контракта меняются, то изменение могут сделать созданием новой ставки в ШР и приказом на перевод сотрудника на новую ставку. Тогда, конечно, предыдущее назначение будет на период не менее 5 лет и будет действовать один контракт, а после перевода будет действовать другой контракт.
И по поводу приведенного Вами объекта AppointmentsFunctions. Думаю, что его не всегда будет правильно использовать. Приведенный метод работает, если у сотрудника только основное назначение. А, если сотрудник работает под 2 тн (основной и внутреннее совместительство), то контракты заключаются по каждому назначению, а в указанном методе нет параметра со ссылкой на л/сч или тн или вид назначения.
Возможно в РФ контракты заключаются по-другому.
Сергей, еще раз спасибо за Ваш ответ!!! Я очень благодарна за Ваше внимание. Выше я просто привела свои мысли по заключению контрактов.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение m0p3e »

Есть объект для работы с контрактами. WorkWithContract.
Можно попробовать использовать его.
Irina_
Местный житель
Сообщения: 545
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Приказ на перевод: номер и дата закл. контракта в протот

Сообщение Irina_ »

Здравствуйте.
Сергей, большое спасибо! Похоже, что эта библиотека то, что надо.

P.S. Я обратилась в ОТП по проблеме с выводом полей о контракте из прототипа. Разработчик согласился, что при определенных условиях инфо не выводится. Поставлен ПИР.
Ответить