Переход на новый месяц

Контур "Управление персоналом"

Модератор: Sparrow

Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Сообщение Evchic »

Я думаю что всеже вот эта штука неработает

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

#Del(SUMULTEC) 
В таблице было 1580 записей
еслибы он очистилась то осталась 1526
и затем былабы попытка вставить туда

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

insert SUMULTEC select * from SUMULBUD
но так как вставка не прошла то должно было бы остатся в таблице 1526 записе но их там 1580 как это понимать?
Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Сообщение Evchic »

vadim писал(а):а где и как у вас описан макрос #del?
У вас он описан в Archive.vip

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

//------------------------------------------------------------------------------
// Макрос для очистки содержимого таблицы
//------------------------------------------------------------------------------
#declare Del(Tbl)
  if not TruncateCurrentPeriodData and ForJournal(co#Tbl)
    DeletionResult := LogTableError((delete all #Tbl), co#Tbl);
  else
  {
    DeletionResult := DelFil(co#Tbl, '#Tbl');
    if DeletionResult <> tsOk
      LogTableError((delete all #Tbl), co#Tbl);
  }
#end
Аватара пользователя
Screw
топ-софт
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Переход на новый месяц

Сообщение Screw »

Удаление и копирование выполняется внутри транзакции. Этим объясняется результирующее количество записей в таблице.

Мелькнула дикая догадка: что, если удаление записей идет в рамках текущего филиала, а вставка с помощью insert..select пытается закачать данные по всем филиалам?

Хорошо бы собрать код по зачистке/копированию данных в отдельный интерфейс и пронаблюдать проблему в динамике.
Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Re: Переход на новый месяц

Сообщение Evchic »

ну вот что удалось выяснить
проблемма именно в insert ... select * from ...

Ситуация следуюшая!
вот запрос без учета филиальности!

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

select SUMULSOC.Nrec,SUMULSOC.ATL_BRANCH,SUMUPSOC.Nrec,SUMUPSOC.ATL_BRANCH from SUMULSOC,SUMUPSOC where ((SUMULSOC.Nrec == SUMUPSOC.Nrec)) and SUMULSOC.ATL_BRANCH<>SUMUPSOC.ATL_BRANCH;
Вот результат

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

┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐
 │ Номер записи         │ Филиал               │ Номер записи         │ Филиал               │ 
 ├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤
 │    012C000000000019h │    0001000000000012h │    012C000000000019h │    0001000000000002h │ 
 │    012C00000000001Ah │    0001000000000012h │    012C00000000001Ah │    0001000000000002h │ 
 │    012C00000000001Bh │    0001000000000012h │    012C00000000001Bh │    0001000000000002h │ 
 │    012C00000000001Ch │    0001000000000012h │    012C00000000001Ch │    0001000000000002h │ 
 │    012C00000000001Dh │    0001000000000012h │    012C00000000001Dh │    0001000000000002h │ 
 │    012C00000000001Eh │    0001000000000012h │    012C00000000001Eh │    0001000000000002h │ 
 │    012C000000000024h │    0001000000000011h │    012C000000000024h │    0001000000000012h │ 
 │    012C000000000025h │    0001000000000011h │    012C000000000025h │    0001000000000012h │ 
 │    012C000000000026h │    0001000000000011h │    012C000000000026h │    0001000000000012h │   
И видем что если запускались сервисные функции в филиале то создавались записи в SUMUPSOC с Nrec
а при выполнении insert SUMUPSOC select * from SUMULSOC;
соответственно будет ошибка так как NREC одинаковый а филиал разный.
а когда Вами была исправленна ошибка
* ПРОБЛЕМА В ПИР: 101.39759
* ПЕРВОЕ РЕШЕНИЕ: 5.4.14.0
* КРАТКОЕ ОПИСАНИЕ: Удаляются налоги на ФОТ в другом филиале
* ПРОЕКТ: Заработная плата
* ДЕТАЛИЗАЦИЯ: Переход к новому периоду
# ЧТО ИЗМЕНЕНО: Галактика 8.10. Платформа MS SQL. Подключена филиальность.
Разграничение доступа в зарплате произведено на уровне
таблиц. Таблицы sumupsoc и perevodtek являются
филиальными.
Настройки "Отчетный период" и "Расчетный перниод" - филиальные.
Переходим на следующий месяц в головном филиале. Переход производится корректно
для головного филиала..
При этом в подчиненном филиале из результатов расчета сотрудников удаляются
рассчитанные налоги на ФОТ.
Также налоги на ФОТ удаляются во вкладках "Налоги на ФОТ до расчета зарплаты".
Если нужна база, то её можно переслать.

# КАК ИЗМЕНЕНО: Усечение филиальных таблиц теперь выполняется с учетом
наложенных филиальных фильтров.
то и натыкаемся на эту ошибку так как идет удаление с учетом филиала Del(Tbl)
Аватара пользователя
Screw
топ-софт
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Переход на новый месяц

Сообщение Screw »

Верно ли я понял, что моя догадка верна, и insert..select пытается втащить все записи из исходной таблицы в целевую?

А усечение в условиях филиальности работает как и задумано, т.е., сводится у далению всех записей, относящихся к текущему филиалу.
Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Re: Переход на новый месяц

Сообщение Evchic »

Screw писал(а):Верно ли я понял, что моя догадка верна, и insert..select пытается втащить все записи из исходной таблицы в целевую?

А усечение в условиях филиальности работает как и задумано, т.е., сводится у далению всех записей, относящихся к текущему филиалу.
не все а только филиала в котором работаем
а так как в SUMUPSOC.ATL_BRANCH= 0001000000000012h Nrec=012C000000000024h
то он не может вставитьв нее из SUMULSOC.ATL_BRANCH= 0001000000000011h Nrec=012C000000000024h
Аватара пользователя
Screw
топ-софт
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Переход на новый месяц

Сообщение Screw »

О том ведь и речь: сначала из SUMUPSOC удаляются записи текущего филиала (при этом остаются записи, относящиеся к другим филиалам), а затем из SUMULSOC закачиваются данные по всему предприятию в целом! Неудивительно, что при этом дублируются NREC-и.

Если изложено верно, то этой проблеме прямая дорога в ПИР.
Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Re: Переход на новый месяц

Сообщение Evchic »

Screw писал(а):О том ведь и речь: сначала из SUMUPSOC удаляются записи текущего филиала (при этом остаются записи, относящиеся к другим филиалам), а затем из SUMULSOC закачиваются данные по всему предприятию в целом! Неудивительно, что при этом дублируются NREC-и.

Если изложено верно, то этой проблеме прямая дорога в ПИР.
Да верно! Вами занесете в ПИР или описать нам?
Аватара пользователя
Screw
топ-софт
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Переход на новый месяц

Сообщение Screw »

Лучше, если ошибка придет "извне": это обеспечит объективность в выборе степени критичности.
Аватара пользователя
Evchic
партнер
Сообщения: 88
Зарегистрирован: Пн, 17/09/2007 07:57
Имя Фамилия: Евгений Ильин
Откуда: Галактика ЮГ г.Ростов-на-Дону
Контактная информация:

Re: Переход на новый месяц

Сообщение Evchic »

ПИР 101.43806
Аватара пользователя
Screw
топ-софт
Сообщения: 73
Зарегистрирован: Пт, 14/09/2007 22:54
Имя Фамилия: Виталий Корзюк
Откуда: ТопСофт
Контактная информация:

Re: Переход на новый месяц

Сообщение Screw »

Всё-таки я не совсем верно сформулировал суть проблемы. Предварительная чистка и выборка идут правильно, с учетом филиального фильтра, а причина сбоя в том, что производится попытка вставки в целевую таблицу данных с ненулевыми nrec-ами, то есть, без учета того, что в целевой таблице уже могут быть данные, относящиеся к другим филиалам, с такими же nrec-ами.

Я передал информацию исполнителю.
Ответить