Данные в отчете и филиальность

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

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

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

Данные в отчете и филиальность

Сообщение Irina_ »

Здравствуйте.
Используется филиальность. Начинаю писать отчет на vip, в котором должна использоваться и выводится инфо по персоналу и по з/п сразу по обоим филиалам. Ранее с таким не сталкивалась. Может кто-то даст рекомендации как в своих отчетах использовать данные по филиалам одновременно.
И еще. Подозреваю возможную проблему с данными по персоналу, т.к. таблица CATALOGS не настроена как общая, т.е. у каждого ф-ла данные в CATALOGS свои. Я права в своих подозрениях или проблемы не должно быть?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

Irina_ писал(а):Здравствуйте.
Используется филиальность. Начинаю писать отчет на vip, в котором должна использоваться и выводится инфо по персоналу и по з/п сразу по обоим филиалам. Ранее с таким не сталкивалась. Может кто-то даст рекомендации как в своих отчетах использовать данные по филиалам одновременно.
И еще. Подозреваю возможную проблему с данными по персоналу, т.к. таблица CATALOGS не настроена как общая, т.е. у каждого ф-ла данные в CATALOGS свои. Я права в своих подозрениях или проблемы не должно быть?
Catalogs нужно было общим изначально. У себя, изначально делал надстройку для смешанного использования по видам каталогов.
По отчетам больших проблем нет. Filials - справочник филиалов. atl_branch ссылка в разделяемых таблицах.
Есть различные функции для работы с филиальностью.
Нужно больше конкретики в вопросах, для конкретики в ответах. :)
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

Catalogs при внедрении не сделали общей. Это недочет внедренцев. Сейчас изменить проблематично, т.к. сами понимаете – на этой таблице завязано многое.
А более конкретно по отчету: мне нужно выбирать инфо из архивов оплат и удержаний по заданному списку сотрудников, причем часть сотрудников работают или только в одном ф-ле или в обоих одновременно. Написание отчета по одному ф-лу трудности не вызовет. Но необходимость учета инфо по обоим ф-лам одновременно пока вызывает вопросы. Например, в таблицах Persons и Lschet есть поле Atl_Branch, в котором, как Вы пишите, хранится ссылка на ф-л. Но при просмотре индексов по этим таблицам в Support я не вижу использования в индексах этого поля. Означает ли это, что при поиске нужного сотрудника по Nrec я однозначно найду того, который нужен?
А что за ф-ции при работе с филиальностью, о которых Вы пишите? Можно пример?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

Irina_ писал(а):Catalogs при внедрении не сделали общей. Это недочет внедренцев. Сейчас изменить проблематично, т.к. сами понимаете – на этой таблице завязано многое.
Сделать можно, но очень трудоемко. Только при наличии много свободного времени.
Irina_ писал(а):А более конкретно по отчету: мне нужно выбирать инфо из архивов оплат и удержаний по заданному списку сотрудников, причем часть сотрудников работают или только в одном ф-ле или в обоих одновременно. Написание отчета по одному ф-лу трудности не вызовет. Но необходимость учета инфо по обоим ф-лам одновременно пока вызывает вопросы. Например, в таблицах Persons и Lschet есть поле Atl_Branch, в котором, как Вы пишите, хранится ссылка на ф-л. Но при просмотре индексов по этим таблицам в Support я не вижу использования в индексах этого поля. Означает ли это, что при поиске нужного сотрудника по Nrec я однозначно найду того, который нужен?
Nrec уникален всегда. За это можно не волноваться. В случае филиальности atl_branch работает как дополнительный разрез, обрабатываемый на уровне драйвера СУБД.
Irina_ писал(а):А что за ф-ции при работе с филиальностью, о которых Вы пишите? Можно пример?
Большая часть функций описана в VipProg.
Частенько приходится лазать в данные другого филиала из под пользователя, не имеющего на него доступ (или имеющего, но не выбравшего). Тогда выручает такой блок:

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

 Var AllBranches,CurBranches : LongInt; 
 CurBranches := SortedContainer_Init ( '', 8, 100, 10, false );
 SortedContainer_Copy ( CurBranches, GetCurrentBranches ); //Сохраняем список выбраных филиалов
 AllBranches := SortedContainer_Init ( '', 8, 100, 10, false );
 _loop Filials //Набиваем контейнер всеми филиалами
  {
   SortedContainer_Insert ( AllBranches, Filials.atl_nrec );
  }; //loop Filials
 SetBranches ( AllBranches, 0 ); //Устанавливаем видимость по всем филиалам
 .....................
 В данной точке мы имеем програмный доступ на все филиалы
 .....................
 SetBranches ( CurBranches, 0 ); //Устанавливаем изначально выбранные филиалы
 SortedContainer_Done ( CurBranches, '' );
 SortedContainer_Done ( AllBranches, '' );
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

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

Re: Данные в отчете и филиальность

Сообщение Irina_ »

Столкнулась с 1-ой проблемой. В своих отчетах по з/п часто работаю с настройкой отчетного периода з/п. Использую для разных целей: для контроля дат в интерфейсе ввода параметров, для проверки необходимости работать с архивом оплат и/или начислениями отчетного периода з/п, и др. Использую sGetTune('UP.DATOTCH'). Для получения нового отчета при входе в Галактику выбрала 2 филиала. Указанная ф-ция вернула период 12.2012, хотя сейчас на обоих филиала период в з/п 06.2015. Соответственно сейчас не могу проконтролировать ввод дат в интерфейсе. Как сейчас это сделать? Возможно, мне надо входить в Галактику с одиночным выбором филиала, а потом воспользоваться Вашим примером? Или есть другой вариант?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

В данном случае настройку нужно брать соответствующего филиала.

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

coGetTuneEx ( 'MYORG', OfficeFilialTune ( GetCurrOffice, FilialNo ( Persons.Atl_Branch )), 0 )
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

Отчетный период з/п мне надо вытащить в интерфейсе ввода параметров формирования отчета, т.е. на этот момент можно оттолкнуться только от перечня выбранных филиалов. Получается, что мне надо приспособить Ваш кусок кода, пройти по перечню выбранных филиалов (или всем, если выбран один), найти для каждого отчетный период з/п и выбрать максимальный. Я права?
Может еще подскажите, как вытащить настройку отчетного периода з/п по nrec филиала?
В sGetTuneEx('UP.DATOTCH', ???, ???) какие значения передать в качестве 2 и 3 параметров?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

Какую дату брать максимальную/минимальную или еще какую зависит от задачи. :)
Выбрать максимальный из перечня доступных можно так:

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

Function GetDatOtchMax : date;
{
 var DatOtch : date;
 var Branches : LongInt;
 Branches := GetCurrentBranches;
 var iBranch : word;
 var cBranch : comp;
 For ( iBranch := 1; iBranch <= Container_GetCount ( Branches ); iBranch++ )
  {
   cBranch := Container_AtC ( Branches, iBranch - 1 );
   DatOtch := dGetTuneEx ( 'UP.DATOTCH', OfficeFilialTune ( GetCurrOffice, FilialNo(cBranch)), 0 );
   If Result < DatOtch 
     Result := DatOtch;
  };
};
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

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

Re: Данные в отчете и филиальность

Сообщение Den »

Irina_ писал(а):Сергей. По правде говоря не ожидала, что Вы напишите полную процедуру.
Серега, эххх..недооценивают.... )
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

Den писал(а):Серега, эххх..недооценивают.... )
Сам себя не оценишь - никто не оценит! :-)
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

Даже очень ценю. Знаю, что у каждого есть своя работа, возможно и срочная. Поэтому и времени может иногда не быть не только ответить, но и прочитать. А есть и такие, кто не окажет никакую помощь из принципа. Поэтому всегда благодарна тем, кто откликается.
Irina_
Местный житель
Сообщения: 554
Зарегистрирован: 17 июл 2012, 11:56
Откуда: Республика Беларусь, г.Могилев

Re: Данные в отчете и филиальность

Сообщение Irina_ »

Здравствуйте. Все получилось! В т.ч. и с выборкой з/п.
Нашла максимальную дату среди дат отчетного периода для филиалов, но только для того, чтобы проконтролировать дату окончания периода (в интерфейсе ввода параметров формирования отчета), за который надо формировать отчет. Потом заполнила таблицу в памяти с перечнем филиалов, там же заполнила отчетные периоды для каждого. А потом для каждой карточки из выборки по Persons.Atl_Branch из таблицы брала отчетный период там, где надо было проанализировать необходимость работы с SumvidOp и/или с Nachisl. Т.о. если сотрудник работает в обоих филиалах и отчетные периоды з/п по филиалам разные (может такое быть), то суммы по обоим ф-лам выбираются и/или из архива/начислений отчетного периода.
И теперь необязательно помечать при входе в Галактику нужные филиалы, т.к. устанавливаю видимость по всем филиалам программно.
Еще раз большое спасибо m0p3e.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Данные в отчете и филиальность

Сообщение m0p3e »

Незачто. Обращайтесь.
У меня этих филиалов 11 штук. :)
Ответить