Заметил, что в документе "Кадровое перемещение" при подборе сотрудников не всегда во вкладку
"Начисления" попадают все начисления сотрудника. Начал ковырять сначала пользовательские настройки
и последовательность заполнения всех документов, параметров учёта и т.д...
Выяснил, что эта фигня наблюдается только при наличии штатного расписания
Причём, если штатное расписание по должности нужного сотрудника заполнено ПОСЛЕ даты документа
"Кадровое перемещение организации", всё работает отлично. Если же штатное расписание заполнено в
тот же день или ранее, начинаются глюки. Стало интересно... оказалось, что не только в этом документе
наблюдается данный глюк.
После этого пошли ковыряния в конфигураторе... Нашёл )))) Оказывается в одни и те же поля в разных кусках запроса
запихивается то 0, то NULL, а потом по этим полям идёт объединение. После чего в 14-м вложенном запросе и далее
нужные данные просто отсекаются.
Общий модуль "ЗаполнениеДокументовЗК". Там есть такая функция:
Функция ПолучитьТаблицуДействийСНачислениями(ДанныеДокумента, ДокументСсылка, ДокументДата, Организация, ИмяДатыДействия, КоэффициентИндексацииЗаработка = 1, ПоДаннымТрудовогоДоговора = Ложь, ПолучатьПлановыеНачисления = Истина, ОбособленноеПодразделение = Неопределено) Экспорт
Нужно найти все вхождения запроса где происходит "ВНУТРЕННЕЕ СОЕДИНЕНИЕ" по полям "Показатель1", "Показатель2",... "Показатель6".
И добавить в сравнение проверку на NULL: ПоказательN -> ЕстьNULL(ПоказательN, 0)
Получается вот такое сравнение:
|ПОМЕСТИТЬ Начисления
|ИЗ
| НачисленияСтаройПозицииСрезПоследних КАК НачисленияСтаройПозицииСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НачисленияНовойПозицииСрезПоследних КАК НачисленияНовойПозицииСрезПоследних
| ПО НачисленияСтаройПозицииСрезПоследних.ВидНадбавки = НачисленияНовойПозицииСрезПоследних.ВидНадбавки
///<+ Автор='Токарев Виталий'; 28.10.2011 18:31:11; Текст='';
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель1, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель1, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель2, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель2, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель3, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель3, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель4, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель4, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель5, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель5, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель6, 0) = ЕСТЬNULL(НачисленияНовойПозицииСрезПоследних.Показатель6, 0)
| И НачисленияСтаройПозицииСрезПоследних.Сотрудник = НачисленияНовойПозицииСрезПоследних.Сотрудник
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ НачисленияСотрудника КАК НачисленияСотрудника
| ПО НачисленияСтаройПозицииСрезПоследних.ВидНадбавки = НачисленияСотрудника.ВидРасчета
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель1, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель1, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель2, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель2, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель3, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель3, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель4, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель4, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель5, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель5, 0)
| И ЕСТЬNULL(НачисленияСтаройПозицииСрезПоследних.Показатель6, 0) = ЕСТЬNULL(НачисленияСотрудника.Показатель6, 0)
// TVA/>
| И НачисленияСтаройПозицииСрезПоследних.Сотрудник = НачисленияСотрудника.Сотрудник
|
|ОБЪЕДИНИТЬ
Вуаля! Всё работает... Ну, соответственно, где есть неравенство "<>", тоже добавляем...