Страница 3 из 4
Re: Филиальность: общие таблицы
Добавлено: 25 ноя 2020, 17:59
edward_K
Это в ТП регьте обращение.
Re: Филиальность: копирование настроек
Добавлено: 27 ноя 2020, 10:03
zna
zna писал(а):Вопрос по копированию настроек пользователей из одного филиала в другой. При сохранении настройки в файл в одном филиале и восстановлении из файла в другом филиале не копируются настройки с типом "системная - филиальная". Копируются только "пользовательская - филиальная". А нам надо и системные копировать..
Сделал процедуру копирования системных настроек:
Код: Выделить всё
declare curMain cursor local for
-- Копирование системных настроек из одного филиала в другой
select tm.f$ctune, tm.f$longval, tm.f$doubleval, tm.f$dateval, tm.f$compval, tm.f$strval, tm.f$isempty, tm.f$strempty
from t$tuneval tm where tm.f$cuser = 0x8000000000000000 and tm.f$obj = 1000000
and (select f$nrec from t$tuneval te where te.f$cuser = tm.f$cuser and te.f$ctune = tm.f$ctune and te.f$obj = 2000000) is null
declare @Obj int,
--Параметры курсоров
@ctune binary(8), @longval int, @doubleval decimal(31,15), @dateval int, @compval binary(8), @strval varchar(max),
@isempty int, @strempty varchar(max),
--Переменные для заполнения служебных полей в новых записях
@newNrec binary(8),
@newAtl_LastDate int,
@newAtl_LastTime int,
@newAtl_LastUser binary(8),
@newAtl_OriginOffice int
set @Obj = 2000000 /*Ekb*/
open curMain;
print 'Всего записей в курсоре = '+cast(@@CURSOR_ROWS as varchar);
fetch next from curMain into @ctune, @longval, @doubleval, @dateval, @compval, @strval, @isempty, @strempty
if (@@FETCH_STATUS < 0) print 'The cursor "curMain" is empty..';
while (@@FETCH_STATUS = 0)
begin
exec dbo.getRecordInitData 30502/*tuneval*/, @newNrec out, @newAtl_LastDate out, @newAtl_LastTime out,
@newAtl_LastUser out, @newAtl_OriginOffice out;
insert into T$tuneval (F$NREC, F$ATL_LASTDATE, F$ATL_LASTTIME, F$ATL_LASTUSER, F$ATL_ORIGINOFFICE, F$ATL_OWNER,
F$Ctune, F$obj, F$cuser, F$longval, F$doubleval, F$dateval, F$Timeval, F$compval, F$strval, F$isempty, F$Strempty,
F$coffice, F$typeoffice)
values(
/*Nrec */ @newNrec,
/*Atl_LastDate */ @newAtl_LastDate,
/*Atl_LastTime */ @newAtl_LastTime,
/*Atl_LastUser */ @newAtl_LastUser,
/*Atl_OriginOffice*/ @newAtl_OriginOffice,
/*Atl_Owner */ @newAtl_LastUser,
/*F$Ctune */ ISNULL(@ctune, 0x8000000000000000),
/*F$obj */ @obj,
/*F$Cuser */ 0x8000000000000000,
/*F$longval */ @longval,
/*F$Doubleval */ @doubleval,
/*F$dateval */ @dateval,
/*F$TImeval */ 0,
/*F$compval */ ISNULL(@compval, 0x8000000000000000),
/*F$strval */ @strval,
/*F$isempty */ @isempty,
/*F$strempty */ @strempty,
/*F$coffice */ 0x8000000000000000,
/*F$typeoffice */ 0
);
fetch next from curMain into @ctune, @longval, @doubleval, @dateval, @compval, @strval, @isempty, @strempty
end
close curMain; deallocate curMain;
Здесь getRecordInitData- процедура создания переменных для заполнения служебных полей, если надо- выложу.
Re: Филиальность: общие таблицы
Добавлено: 27 ноя 2020, 13:18
zna
Не все системный настройки, однако, корректно встали. Некоторые заблокированы для редактирования, как-то можно исправить? Пересчёт настроек не помог.
Re: Филиальность: общие таблицы
Добавлено: 27 ноя 2020, 14:12
edward_K
Некоторые включаются при установке других настроек. Вам ещё что то нужно тащить. Код Настройки по алт 1 скажите
Re: Филиальность: общие таблицы
Добавлено: 27 ноя 2020, 19:19
zna
edward_K писал(а):Некоторые включаются при установке других настроек. Вам ещё что то нужно тащить. Код Настройки по алт 1 скажите
Например, заблокирована системная настройка "Фонд для взносов на Пенсионное страхование", №15427, код UP.ZAR.FOT.TAXES.FONDPENSSTR
Но в другом филиале, откуда копировалась- эта запись открыта для редактирования. Вроде не должна от других настроек зависеть..
Re: Филиальность: общие таблицы
Добавлено: 28 ноя 2020, 00:46
edward_K
Эта настройка закрыта для значения настройки 'country' ( поиск по alt+2) = Россия и открыта для "Белоруссия".
Чтобы открыть настройку надо удалить права в таблице TuneRgh
Для групповой
Код: Выделить всё
result := Delete TuneRgh where ((ttTmpUser == TuneRgh.TypeRgh
and ttConstTypeOfficeGroup == TuneRgh.TypeOffice
and _cUser == TuneRgh.cOffice
and 0 == TuneRgh.cRec
and _cTune == TuneRgh.cTune
and 0 == TuneRgh.cUser));
Иначе
Код: Выделить всё
result := Delete TuneRgh where ((ttTmpUser == TuneRgh.TypeRgh
and _Obj == TuneRgh.Obj
and _cUser == TuneRgh.cRec
and _cTune == TuneRgh.cTune));
Чтобы закрыть соответственно добавить нужные записи. Раз вы уже пошли писать не в галактике, то вам нужно сравнить эту таблицу между филиалами.
Re: Филиальность: общие таблицы
Добавлено: 02 дек 2020, 16:48
zna
Благодарю, получилось. Проще оказалось удалить все записи из TuneRgh с кодом второго филиала и добавить копии записей из первого филиала. Сделал в Ms Sql, настройки открылись на редактирование.
Филиальность: ошибка прав доступа
Добавлено: 21 дек 2020, 16:59
zna
После включения филиальности (на тестовой базе) перестало работать разграничение прав доступа в модуле "Управление производственной логистикой"
Ошибка в обоих филиалах, а до добавления филиала было нормально. Что может быть?
Re: Филиальность: общие таблицы
Добавлено: 22 дек 2020, 09:43
edward_K
Если кадры у вас общие, то и сделайте таблицу с правами также общей.
Попробуйте включить логирование и посмотреть протокол по таблице с правами.
Для точности я бы начал с пустой галактики в снабжении.
Вы увидите запрос, его параметры, и удалось ли что то вытащить.
Также вы увидите там текст сообщения, и можно будет попробовать увидеть что там было выше.
Ошибка в правах пользователей УПЛ
Добавлено: 25 дек 2020, 18:00
zna
Ошибка возникает в _Streams.dll
Re: Филиальность: общие таблицы
Добавлено: 27 дек 2020, 01:37
edward_K
Ну это немного не тот протокол. Я имел ввиду для SmartInspector (файлы с раcширением sil)
Тем не менее, тут видно что ошибка где то здесь
M_MNPLAN::IR_ROLE_USERS.BR_R_USERS on IR_ROLE_USERS.R_USERS
R_DISP.VIP (429, 6)
Это фейс iRARSDisp. Сообщение выдала
Function InitInter( p_wModule:Word ) : Boolean;
Как видите на вход идет word.
Я нашел как вызывается в одном из мест
Код: Выделить всё
case LNT_ItemName of
'MANUFPLAN' : vwModule := rars_Module_MnfPlan;
'SALEPLAN' : vwModule := rars_Module_UprZakaz;
'SUPPLYPLAN' : vwModule := rars_Module_MTO;
'MANUFACTURE' : vwModule := rars_Module_UMP;
'COPLAN' : vwModule := rars_Module_CorpoPlan;
'MENUAVT' : vwModule := rars_Module_Transp;
else
vwModule := rars_Module_BOM;
end; //case
voRARSDisp.InitInter(vwModule);
Но вот LNT_ItemName не нашел пока что(может быть даже есть в vipprogr.chm).
Попробуйте ее повызывать по Ctrl+F4 на филиальной базе и нет в нужном модуле. Ну а дальше нужно искать по вашему логу, обращение к каким таблицам не выдали данных. R_Role выдала. Возможно проблема в какой то системной, хотя вроде они не должны быть филиальными.
Как минимум нужно проверить
R_ROLE(11273)
R_ROLERIGHTS(11275)
R_MODROLE(11274) - может эта?
R_USERS(11276)
R_WORKPLACE(11281)
Вообще нужно брать действительно полный лог и искать в каком файле и в какой строке вызвалось
IRARSDISP::function InitInter()
В R_RUsers не подойдет - там с 0.
Код: Выделить всё
if (Not iRARS.InitInter(0))
Message('Ошибка при инициализации системы разграничения прав доступа', Error);
странно , что это выдается при закрытии интерфейса.
Есть еще одна проверка в этом же фейсе
if not iRARS.IsAdminFunc - но вы бы тогда получили сообщение
'Разрешение на администрирование'#13 +
'системы разграничения прав доступа отсутствует'
Re: Филиальность: общие таблицы
Добавлено: 27 дек 2020, 19:55
zna
Благодарю за подсказку направления поиска и вообще за внимание к моей проблеме, Эдвард.
Вот что скажете за следующие исследования:
1. Ошибка устойчиво уходит при пересчёте в данном филиале настроек так:
, но при этом восстанавливается ошибка в другом филиале
2. Пересчёт настроек не затрагивает записи таблиц
Код: Выделить всё
R_ROLE(11273)
R_ROLERIGHTS(11275)
R_MODROLE(11274)
R_USERS(11276)
R_WORKPLACE(11281)
- они какие были, такие и остались, а ошибка уходит
3. Даже если в логе найдём место возникновения ошибки, то оно вероятнее всего связано с чтением настройки. Какой?
4. При включении записи статистики обращения к настройкам вижу, что при открытии интерфейса M_MNPLAN::IR_RUSERS происходит обращение только к одной настройке- Собственная организация. В каждом филиале установлена своя организация
Поэтому непонятно взаимедействие с настройками. Пробовал убирать/ добавлять таблицы по п.2 в общие- не влияет на поведение ошибки
Re: Филиальность: общие таблицы
Добавлено: 27 дек 2020, 20:39
edward_K
Проверка настроек и не должна их затрагивать. Надо проверить - не сделали ли вы их филиальными. И также tuneVal + tunedef. Если какому то филиалу нужно задавать свои настройки, вы в администраторе настроек должны поменять тип настройки на филиальную.
Ошибка в правах пользователей УПЛ
Добавлено: 29 дек 2020, 11:45
zna
Решено. Проблема была в в некорректной инициализации функции M_MNPLAN::IRARSDISP::function InitInter() при смене филиала. Если переходить в другой филиал в модуле УПЛ, то инициализация с ошибкой. Если переходить в другой филиал в любом (проверено на 4-х) другом модуле, а потом вернуться в модуль УПЛ- ошибки нет. Отключение/ подключение всех наших ресурсов картину не меняет.
Теперь понятно «лечение» пересчётом настроек. И не надо было ничего пересчитывать, достаточно было сходить с модуль «Настройка», вернуться в УПЛ - и всё ок.
Огромная благодарность Эдварду за помощь. Всех коллег этого замечательного форума с наступающими праздниками!
Филиальность: Переход на новый месяц в Зпл
Добавлено: 10 янв 2021, 18:53
zna
В двух филиалах сделан расчёт зарплаты, переходим на новый месяц. В том филиале, где запускается функция перехода, архивы начислений и удержаний формируются нормально. В другом филиале формируется только архив удержаний, архива начислений нет.
Делал по руководству "Филиальность. Прикладные решения", сделаны корпоративными
♦ Настройки Галактики ⇒ Управление персоналом ⇒ Отчетный период;
♦ Настройки Галактики ⇒ Управление персоналом ⇒ День окончания отчетного периода.
Таблицы lschet и связанные с ними сделаны общими,- persons- настраиваемая, разграничение доступа к филиалам на уровне"обособленных подразделений"
Делали и с выделением "головного" филиала, и в линейной структуре филиалов. Что не так?