Страница 1 из 1

Получить стаж в саппорте

Добавлено: 04 фев 2019, 17:17
Buddy
Добрый день!
Клиент интересуется - можно ли запросом в саппорте дотянуться до стажа в больничном:
Изображение
По факту там работает функция iRunStaj.RunStrStajBoln, но, может, общий стаж можно получить еще как-то?

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 08:49
edward_K
Варианты
1.хранимка
2.запрос, в принципе там одна таблица.
Обычно в таких случаях запрашивают в тп исходник, и тп редко отказывает

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 10:26
Irina_
Здравствуйте.
В интерфейсе расчета б/л видим стаж из настройки
"Настройки Галактики \ Управление персоналом \ Общие настройки \ Больничные, отпуска, расчеты по среднему \ Больничные, расчеты по среднему \ Страховой стаж для расчета пособий".
По всем стажам инфо хранится в таблице SERVLEN. Хочу обратить внимание, что по одному сотруднику здесь может быть более одной записи, т. к. могут быть перерывы в стаже. А иногда кадровики могут при приеме на работу руками рассчитать стаж на определенную дату (например на дату приема на работу) и ввести одной записью. Поэтому лучше воспользоваться методами из RanStaj.vih, в частности:
#doc
Количество лет стажа
#end
function NGetStajYears(PsnNRec, StajNrec: comp; RunDate: date): word;
#doc
Количество месяцев стажа
#end
function NGetStajMonths(PsnNRec, StajNrec: comp; RunDate: date): word;
#doc
Количество дней стажа
#end
function NGetStajDays(PsnNRec, StajNrec: comp; RunDate: date): word;

Приведенный Вами метод возвращает просто строку )))

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 11:48
Den
Вообщем, непосредственно в support/sql методы объектных фейсов не дернуть :)

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 12:25
edward_K
В сапорте мож и нет, но если поставить приблуду, то галку можно использовать как сервис - а там уже можно все.
Это есть уже лет 15 на DCOM доступно, юзал галку напрямую из Directum например, но вчера капнуло письмо об расширении сего в сторону web сервисов. У одного клиента активно используется уже год, про Транснефт вообще молчу - подозреваю . что все это для них делается.
вот вам для затравки

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

Информирую о выходе очередной версии решения для получения данных системы «Галактика ERP» по протоколу HTTP.
Идеологически решение построено на принципах микросервисной архитектуры, т.е. «Галактика ERP» с запущенной компонентой по сути и есть микросервис
.................................
Теперь «Галактика ERP» может выступать в роли не только пассивного, но и активного сервиса, т.е. появилась возможность автоматической регистрации в Discovery-сервисе, в том числе и регистрация функции автоматической проверки работоспособности. Во-вторых, разработано собственное решение, в котором есть функциональность Discovery-сервиса, балансировщика нагрузки и proxy-сервера.
......................................
Решение доступно в виде отдельного инсталлятора, в дальнейшем планируется поставка в Галактике ERP.
В случае интереса партнеров или заказчиков к выполнению оптимизации бизнес-процессов или выполнении доработок с помощью описанных выше технологий, корпорация «Галактика» готова адаптировать решение к задачам конкретного проекта.

Это собственно все,, что мне пришло. Будет интересно обращайтесь в ТП.
Регите нечто(раньше можно было саму галку зарегить, но начиная с какого то времени не получчалось).. В коде у себя инициалируете приложение и вперед.
Что касается стажей, то построить все на одном запросе тяжко, но наверное можно - на DSQL OUTER APPLY вам в помощь, но можно перенести код из интерфейса в хранимку и использовать ее в запросах в сапорте.

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 13:01
Buddy
Увы, DSQL у клиента нет. Pervasive.
Информирую о выходе очередной версии решения для получения данных системы «Галактика ERP» по протоколу HTTP.
Да, тоже вчера такое получили.

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 14:12
edward_K
Pervacive DSQL поддерживает. Надо просто с бубном потанцевать по созданию ODBC.
Как только вы по настроенному ODBC сможете получать данные в Excel, значит можно и галку подстраивать.
Есть еще вариант
Объявить функции из объекта как Static(в своем объекте - у вас должен быть пример как все коректно сделать).
Тогда их можно будет юзать без проблем в любом месте. А дальше вопрос как динамически выполнить запрос.
И самое главное - куда.
Можно так

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

  fcompfile.openfile(wfile,stCreate)
  fcompfile.writeln('.Form tmp_from')
  fcompfile.writeln('.ard')
  fcompfile.writeln('.f "NUL"')
  fcompfile.writeln('.hide')
  fcompfile.writeln('.var')
...........................
  fcompfile.close
  if fcomp(wfile,'ARD')
Ну или что то более современное - типа V4Script.
Если получится прикрутить свой рес и рес с этим объектом к сапорту, то может и в сапорте прокатить.

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 16:58
Masygreen
ага отличное письмо без документации...

Re: Получить стаж в саппорте

Добавлено: 05 фев 2019, 17:04
Buddy
Сделал в итоге так (на основе текста функции RunStajAll)

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

select
b.tabn, p.fio, b.datan, b.datok,

// Годы стажа
longint((year(b.datan)-year(sl.fromdate))*360+
        (month(b.datan)-month(sl.fromdate))*30+
        (day(b.datan)-day(sl.fromdate))*sl.rate+
        sl.yearsb*360+
        sl.monthsb*30+
        sl.daysb) div 360(fieldtitle='Годы стажа'),

//  Месяцы стажа
(longint((year(b.datan)-year(sl.fromdate))*360+
         (month(b.datan)-month(sl.fromdate))*30+
         (day(b.datan)-day(sl.fromdate))*sl.rate+
         sl.yearsb*360+
         sl.monthsb*30+
         sl.daysb) mod 360) div 30(fieldtitle='Месяцы стажа'),

// Дни стажа
(longint((year(b.datan)-year(sl.fromdate))*360+
         (month(b.datan)-month(sl.fromdate))*30+
         (day(b.datan)-day(sl.fromdate))*sl.rate+
         sl.yearsb*360+
         sl.monthsb*30+
         sl.daysb) mod 360) mod 30(fieldtitle='Дни стажа')
from
blisnet b,
persons p,
servlen sl
where
((
  b.tperson==p.nrec
  and p.nrec==sl.person
  and 00000000000001F6h==sl.position // Вид стажа - общий; здесь вместо 00000000000001F6h надо подставить Nrec общего стажа.
));
Отправили клиенту, пусть тестирует.

Всем спасибо за предложенные идеи.