Филиальность: общие таблицы

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

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

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

Re: Филиальность: общие таблицы

Сообщение edward_K »

Это в ТП регьте обращение.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Филиальность: копирование настроек

Сообщение 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- процедура создания переменных для заполнения служебных полей, если надо- выложу.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Филиальность: общие таблицы

Сообщение zna »

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

Re: Филиальность: общие таблицы

Сообщение edward_K »

Некоторые включаются при установке других настроек. Вам ещё что то нужно тащить. Код Настройки по алт 1 скажите
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Филиальность: общие таблицы

Сообщение zna »

edward_K писал(а):Некоторые включаются при установке других настроек. Вам ещё что то нужно тащить. Код Настройки по алт 1 скажите
Например, заблокирована системная настройка "Фонд для взносов на Пенсионное страхование", №15427, код UP.ZAR.FOT.TAXES.FONDPENSSTR
Но в другом филиале, откуда копировалась- эта запись открыта для редактирования. Вроде не должна от других настроек зависеть..
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Филиальность: общие таблицы

Сообщение 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));
Чтобы закрыть соответственно добавить нужные записи. Раз вы уже пошли писать не в галактике, то вам нужно сравнить эту таблицу между филиалами.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Филиальность: общие таблицы

Сообщение zna »

Благодарю, получилось. Проще оказалось удалить все записи из TuneRgh с кодом второго филиала и добавить копии записей из первого филиала. Сделал в Ms Sql, настройки открылись на редактирование. :smile:
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Филиальность: ошибка прав доступа

Сообщение zna »

После включения филиальности (на тестовой базе) перестало работать разграничение прав доступа в модуле "Управление производственной логистикой"Изображение
Ошибка в обоих филиалах, а до добавления филиала было нормально. Что может быть?
Последний раз редактировалось zna 27 дек 2020, 20:06, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Филиальность: общие таблицы

Сообщение edward_K »

Если кадры у вас общие, то и сделайте таблицу с правами также общей.
Попробуйте включить логирование и посмотреть протокол по таблице с правами.
Для точности я бы начал с пустой галактики в снабжении.
Вы увидите запрос, его параметры, и удалось ли что то вытащить.
Также вы увидите там текст сообщения, и можно будет попробовать увидеть что там было выше.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Ошибка в правах пользователей УПЛ

Сообщение zna »

Ошибка возникает в _Streams.dll
Изображение
Последний раз редактировалось zna 27 дек 2020, 21:10, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Филиальность: общие таблицы

Сообщение 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 +
'системы разграничения прав доступа отсутствует'
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Re: Филиальность: общие таблицы

Сообщение 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 в общие- не влияет на поведение ошибки
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Филиальность: общие таблицы

Сообщение edward_K »

Проверка настроек и не должна их затрагивать. Надо проверить - не сделали ли вы их филиальными. И также tuneVal + tunedef. Если какому то филиалу нужно задавать свои настройки, вы в администраторе настроек должны поменять тип настройки на филиальную.
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Ошибка в правах пользователей УПЛ

Сообщение zna »

Решено. Проблема была в в некорректной инициализации функции M_MNPLAN::IRARSDISP::function InitInter() при смене филиала. Если переходить в другой филиал в модуле УПЛ, то инициализация с ошибкой. Если переходить в другой филиал в любом (проверено на 4-х) другом модуле, а потом вернуться в модуль УПЛ- ошибки нет. Отключение/ подключение всех наших ресурсов картину не меняет.
Теперь понятно «лечение» пересчётом настроек. И не надо было ничего пересчитывать, достаточно было сходить с модуль «Настройка», вернуться в УПЛ - и всё ок.
Огромная благодарность Эдварду за помощь. Всех коллег этого замечательного форума с наступающими праздниками! :-)
zna
Местный житель
Сообщения: 552
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Челябинск
Контактная информация:

Филиальность: Переход на новый месяц в Зпл

Сообщение zna »

В двух филиалах сделан расчёт зарплаты, переходим на новый месяц. В том филиале, где запускается функция перехода, архивы начислений и удержаний формируются нормально. В другом филиале формируется только архив удержаний, архива начислений нет.
Делал по руководству "Филиальность. Прикладные решения", сделаны корпоративными
♦ Настройки Галактики ⇒ Управление персоналом ⇒ Отчетный период;
♦ Настройки Галактики ⇒ Управление персоналом ⇒ День окончания отчетного периода.
Таблицы lschet и связанные с ними сделаны общими,- persons- настраиваемая, разграничение доступа к филиалам на уровне"обособленных подразделений"
Делали и с выделением "головного" филиала, и в линейной структуре филиалов. Что не так? :eek:
Ответить