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

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

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

Ответить
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение Buddy »

Добрый день!
Клиент интересуется - можно ли запросом в саппорте дотянуться до стажа в больничном:
Изображение
По факту там работает функция iRunStaj.RunStrStajBoln, но, может, общий стаж можно получить еще как-то?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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

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

Сообщение 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;

Приведенный Вами метод возвращает просто строку )))
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение Den »

Вообщем, непосредственно в support/sql методы объектных фейсов не дернуть :)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение edward_K »

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

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

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

Это собственно все,, что мне пришло. Будет интересно обращайтесь в ТП.
Регите нечто(раньше можно было саму галку зарегить, но начиная с какого то времени не получчалось).. В коде у себя инициалируете приложение и вперед.
Что касается стажей, то построить все на одном запросе тяжко, но наверное можно - на DSQL OUTER APPLY вам в помощь, но можно перенести код из интерфейса в хранимку и использовать ее в запросах в сапорте.
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение Buddy »

Увы, DSQL у клиента нет. Pervasive.
Информирую о выходе очередной версии решения для получения данных системы «Галактика ERP» по протоколу HTTP.
Да, тоже вчера такое получили.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

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

Сообщение 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.
Если получится прикрутить свой рес и рес с этим объектом к сапорту, то может и в сапорте прокатить.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

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

Сообщение Masygreen »

ага отличное письмо без документации...
Время ведет!
Buddy
Постоянный обитатель
Сообщения: 119
Зарегистрирован: 02 июн 2016, 15:18
Откуда: Галактика СПб

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

Сообщение 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 общего стажа.
));
Отправили клиенту, пусть тестирует.

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