Страница 1 из 1

Попытка вставки недопустимого значения в табл 16057(Nrec=0)

Добавлено: 24 окт 2007, 16:43
Ренат
Здравствуйте. :-)
При выполнении расчета заработной платы выскакивает ошибка
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 17
Попытка записи недопустимого значения
в таблицу N16057.
(NREC = 0).
и так для нескольких записей
--------------------------------------------------------------------------------
Протокол сообщений (среда, 24/10/2007)
--------------------------------------------------------------------------------
-------------------------- ПРЕДВАРИТЕЛЬНАЯ РАЗНОСКА ----------------------------
[!] График за сентябрь 2007 г. для режима работы 11 не сформирован
Фонд рабочего времени по умолчанию: 20 дн., 160 ч.
--------------------------- РАСЧЕТ ЗАРАБОТНОЙ ПЛАТЫ ----------------------------
Начало процесса подготовки данных 12:14:17
Начало расчета заработной платы 12:14:22
[!] График за сентябрь 2007 г. для режима работы 11 не сформирован
Фонд рабочего времени по умолчанию: 20 дн., 160 ч.
Для табельного номера 17 некорректно задан номер алгоритма 0 для оплаты 1(1)
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 17
Попытка записи недопустимого значения
в таблицу N16057.
(NREC = 0).
Операция отменена.
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 17
Для табельного номера 14 некорректно задан номер алгоритма 0 для оплаты 1(1)
Для табельного номера 15 некорректно задан номер алгоритма 0 для оплаты 1(1)
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 15
Попытка записи недопустимого значения
в таблицу N16057.
(NREC = 0).
Операция отменена.
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 15
Для табельного номера 16 некорректно задан номер алгоритма 0 для оплаты 1(1)
Для табельного номера 18 некорректно задан номер алгоритма 0 для оплаты 1(1)
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 18
Попытка записи недопустимого значения
в таблицу N16057.
(NREC = 0).
Операция отменена.
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 18
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 11
Попытка записи недопустимого значения
в таблицу N16057.
(NREC = 0).
Операция отменена.
Ошибка при работе с таблицей "Архив тарифов"(Arxtar) Для табельного номера 11
Окончание расчета заработной платы 12:14:47
-------------------------- ПЕЧАТЬ РАСЧЕТНЫХ ЛИСТКОВ ----------------------------
[!] График за сентябрь 2007 г. для режима работы 11 не сформирован
Фонд рабочего времени по умолчанию: 20 дн., 160 ч.


БД в которой выполняется расчет была созданна на основе другой БД.
В таблице архивов (Arxtar) много записей по различным табельным номерам. Если удалить одну из записей на которую ругается Галактика то при следующем расчете она корректно создает эту запись.

Как мне сказали кадры после создания новой базы они меняли табельные номера у сотрудников.

Почему может так происходить?

Добавлено: 24 окт 2007, 16:51
Ренат
Как я себе это представляю:
В таблице Arxtar есть поля tabN, CLSCH и TPERSON (табельный номер, код работника из лицевого счета, код работника из Физ лиц). Мы создали копию рабочей БД, а потом в кадрах решили поменять табельные номера у сотрудников (чтобы все красиво было 1,2,3 и т.д.). В результате нарушилось соответсвие этих трех полей.
В результате Галактика не находит запись с набором этих полей и пытается создать новую для данного табельного номера, кода из ЛС и кода ФЛ. Выскакивает ошибка что невозможно создать запись

Добавлено: 24 окт 2007, 17:03
edward_K
из сего следует вывод, что нужно сцепить по clsch c lschet.nrec и проапдейтить поля tabn,cex значениями из lschet. в 810 могет быть поле cex необязательно менять, но не факт что это где то в отчетах не вылезет.

Добавлено: 24 окт 2007, 17:11
Ренат
Сейчас попробую :grin:

Добавлено: 24 окт 2007, 17:53
Ренат
Пытаюсь написать запрос котрый вернет записи без соответсвия по табельным номерам и не получается. Вот запрос

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

select arxtar.tabN,lschet.tabN from arxtar, lschet
where((arxtar.clsch==lschet.nrec and (arxtar.tabN<>lschet.TabN) ));
Второй столбец пустой. А по идее должен выводить тех у кого не совпадают табельные номера :-?

Добавлено: 24 окт 2007, 18:59
edward_K
раз второй пустой у вас вообще все плохо. можно попробовать по tperson зацепиться, а табельные вы ужо поменяли
и напишите сначала
select arxtar.tabN,lschet.tabN from arxtar, lschet
where((arxtar.clsch==lschet.nrec ));
а потом
select arxtar.tabN,lschet.tabN from arxtar, lschet
where((arxtar.clsch==lschet.nrec ))
and (arxtar.tabN<>lschet.TabN) ;

Добавлено: 25 окт 2007, 01:35
Screw
Отнюдь! Пустая вторая колонка означает, что лицевых счетов с табельным номером, отличным от того, который значится в arxtar-е, НЕТУ. И, следовательно, всё хорошо.

...если, конечно, в arxtar-е валидная ссылка на лицевой счет...

Добавлено: 25 окт 2007, 10:43
edward_K
вообще начерное самое правильное - грохнуть arxtar и потом выполнить "Расчет коэффицентов" в сервисных функциях. обратите оссобое внимание на тарифников. Arxtar то выправиться, но интересно что вы еще зацепили меняя табельные в кадрах.