Получить стаж в саппорте
Модераторы: m0p3e, edward_K, Модераторы
Получить стаж в саппорте
Добрый день!
Клиент интересуется - можно ли запросом в саппорте дотянуться до стажа в больничном:
По факту там работает функция iRunStaj.RunStrStajBoln, но, может, общий стаж можно получить еще как-то?
Клиент интересуется - можно ли запросом в саппорте дотянуться до стажа в больничном:
По факту там работает функция iRunStaj.RunStrStajBoln, но, может, общий стаж можно получить еще как-то?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Получить стаж в саппорте
Варианты
1.хранимка
2.запрос, в принципе там одна таблица.
Обычно в таких случаях запрашивают в тп исходник, и тп редко отказывает
1.хранимка
2.запрос, в принципе там одна таблица.
Обычно в таких случаях запрашивают в тп исходник, и тп редко отказывает
-
- Местный житель
- Сообщения: 554
- Зарегистрирован: 17 июл 2012, 11:56
- Откуда: Республика Беларусь, г.Могилев
Re: Получить стаж в саппорте
Здравствуйте.
В интерфейсе расчета б/л видим стаж из настройки
"Настройки Галактики \ Управление персоналом \ Общие настройки \ Больничные, отпуска, расчеты по среднему \ Больничные, расчеты по среднему \ Страховой стаж для расчета пособий".
По всем стажам инфо хранится в таблице 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;
Приведенный Вами метод возвращает просто строку )))
В интерфейсе расчета б/л видим стаж из настройки
"Настройки Галактики \ Управление персоналом \ Общие настройки \ Больничные, отпуска, расчеты по среднему \ Больничные, расчеты по среднему \ Страховой стаж для расчета пособий".
По всем стажам инфо хранится в таблице 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;
Приведенный Вами метод возвращает просто строку )))
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Получить стаж в саппорте
Вообщем, непосредственно в support/sql методы объектных фейсов не дернуть
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Получить стаж в саппорте
В сапорте мож и нет, но если поставить приблуду, то галку можно использовать как сервис - а там уже можно все.
Это есть уже лет 15 на DCOM доступно, юзал галку напрямую из Directum например, но вчера капнуло письмо об расширении сего в сторону web сервисов. У одного клиента активно используется уже год, про Транснефт вообще молчу - подозреваю . что все это для них делается.
вот вам для затравки
Это собственно все,, что мне пришло. Будет интересно обращайтесь в ТП.
Регите нечто(раньше можно было саму галку зарегить, но начиная с какого то времени не получчалось).. В коде у себя инициалируете приложение и вперед.
Что касается стажей, то построить все на одном запросе тяжко, но наверное можно - на DSQL OUTER APPLY вам в помощь, но можно перенести код из интерфейса в хранимку и использовать ее в запросах в сапорте.
Это есть уже лет 15 на DCOM доступно, юзал галку напрямую из Directum например, но вчера капнуло письмо об расширении сего в сторону web сервисов. У одного клиента активно используется уже год, про Транснефт вообще молчу - подозреваю . что все это для них делается.
вот вам для затравки
Код: Выделить всё
Информирую о выходе очередной версии решения для получения данных системы «Галактика ERP» по протоколу HTTP.
Идеологически решение построено на принципах микросервисной архитектуры, т.е. «Галактика ERP» с запущенной компонентой по сути и есть микросервис
.................................
Теперь «Галактика ERP» может выступать в роли не только пассивного, но и активного сервиса, т.е. появилась возможность автоматической регистрации в Discovery-сервисе, в том числе и регистрация функции автоматической проверки работоспособности. Во-вторых, разработано собственное решение, в котором есть функциональность Discovery-сервиса, балансировщика нагрузки и proxy-сервера.
......................................
Решение доступно в виде отдельного инсталлятора, в дальнейшем планируется поставка в Галактике ERP.
В случае интереса партнеров или заказчиков к выполнению оптимизации бизнес-процессов или выполнении доработок с помощью описанных выше технологий, корпорация «Галактика» готова адаптировать решение к задачам конкретного проекта.
Регите нечто(раньше можно было саму галку зарегить, но начиная с какого то времени не получчалось).. В коде у себя инициалируете приложение и вперед.
Что касается стажей, то построить все на одном запросе тяжко, но наверное можно - на DSQL OUTER APPLY вам в помощь, но можно перенести код из интерфейса в хранимку и использовать ее в запросах в сапорте.
Re: Получить стаж в саппорте
Увы, DSQL у клиента нет. Pervasive.
Да, тоже вчера такое получили.Информирую о выходе очередной версии решения для получения данных системы «Галактика ERP» по протоколу HTTP.
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Получить стаж в саппорте
Pervacive DSQL поддерживает. Надо просто с бубном потанцевать по созданию ODBC.
Как только вы по настроенному ODBC сможете получать данные в Excel, значит можно и галку подстраивать.
Есть еще вариант
Объявить функции из объекта как Static(в своем объекте - у вас должен быть пример как все коректно сделать).
Тогда их можно будет юзать без проблем в любом месте. А дальше вопрос как динамически выполнить запрос.
И самое главное - куда.
Можно так
Ну или что то более современное - типа V4Script.
Если получится прикрутить свой рес и рес с этим объектом к сапорту, то может и в сапорте прокатить.
Как только вы по настроенному 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')
Если получится прикрутить свой рес и рес с этим объектом к сапорту, то может и в сапорте прокатить.
Re: Получить стаж в саппорте
Сделал в итоге так (на основе текста функции 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 общего стажа.
));
Всем спасибо за предложенные идеи.