Имя: Пароль:
1C
1С v8
V8: Остаток дней отпуска в ЗУП
0 Anton9843
 
01.10.12
13:56
Немогу понять как написать в секцию нужную, кто может перенесите пожалуйста ...

Недавно начал заниматься ЗУП
Конфигурация 2.5.56

Странный глюк если перейти на: рабочий стол - вкладка "Кадровый учет" - Остатки отпусков
То у всех сотрудников остаток будет 0, причем видно что есть просчитанные остатки на даты, но "справка по отпуску" ничего не выдает, только что остаток 0.

в принципе разобрался

ОстаткиОтпусков.ОстаткиОтпусков(ТаблицаДанных) получает таблицу в которой поле "ОтборПоПорядкуРасчетаОтпуска" пустая ссылка
а дальше в запросе идет типа фильтр по этому значению:

ВЫБОР
   КОГДА ТаблицаДанных.ОтборПоПорядкуРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетаОтпуска.ПоКалендарнымДням)
       ТОГДА НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпКалендарныеДни)
   КОГДА ТаблицаДанных.ОтборПоПорядкуРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетаОтпуска.ПоШестидневке)
       ТОГДА НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпШестидневка)
   ИНАЧЕ ЛОЖЬ
КОНЕЦ

а значения поля всегда пустое значение, там выше по пути выполнения кода это видно.
Если кому интересно то функция СправкаПоОтпускамСотрудника в томже модуле

я на скорую руку дописал в начале функции ОстаткиОтпусков

Функция ОстаткиОтпусков(ТаблицаДанных)
   Для Каждого СтрокаТаблицы Из ТаблицаДанных.НайтиСтроки(Новый Структура("ОтборПоПорядкуРасчетаОтпуска", Перечисления.ПорядокРасчетаОтпуска.ПустаяСсылка())) Цикл
       СтрокаТаблицы.ОтборПоПорядкуРасчетаОтпуска = Перечисления.ПорядокРасчетаОтпуска.ПоКалендарнымДням;
   КонецЦикла;

Вопрос вот в чем, я в инете ненашел никакого упоминания об проблеме.
Как так? что никто не считает дни отпуска в ЗУП?
1 Иоканаан
 
01.10.12
15:56
(0)По-видимому, эта проблема есть в конфигурации 2.5.56 (как раз решил сегодня заняться обновлением). У меня 2.5.54.1 - и пока всё нормально.
2 rasswet
 
01.10.12
15:57
2.5.56 есть уже 2.5.56.2 там смотрел?
3 almar
 
01.10.12
16:00
(0) Какая у тебя Сервис - Параметры - Рабочая дата?
4 Anton9843
 
01.10.12
16:14
(2) заметил такое в 2.5.56.1 думал они исправили в 2.5.56.2, недаром так оперативно выложили
фига там, все так и осталось

(3) сервис - параметры - рабочая дата: стоит галочка использовать текущую дату компьютера
ну и в поле соответственно стоит 01.10.2012
5 EvgenPS
 
01.10.12
16:29
рабочий стол - вкладка "Кадровый учет" - Остатки отпусков
То у всех сотрудников остаток будет 0
Ты когда открываеш там текущая дата?
6 Anton9843
 
01.10.12
16:40
(5) да там стоит текущая дата 01.10.2012
7 EvgenPS
 
01.10.12
16:42
справочник-Остатки отпусков прошлых лет, здесь посмотри по сотрам.
8 Anton9843
 
01.10.12
17:00
(7)Какбы немного не так, я в коде поползал, там такое впечатление что 1С делало и недоделало

Вот тыкаем кнопку "Справка по отпуску"

Вызывается КоманднаяПанельОстаткиОтпусковОрганизацийСправкаПоОтпуску() из формы списка справочника. там код:
   
ТабДокумент = ОстаткиОтпусков.СправкаПоОтпускамСотрудника(ДанныеСтроки.Ссылка, ДатаОстаткаОтпусков);

Ползем в функцию ОстаткиОтпусков.СправкаПоОтпускамСотрудника и видим:
   
ТаблицаДанных = ОписаниеТаблицыДанных();
Строка = ТаблицаДанных.Добавить();
Строка.Сотрудник = Сотрудник;
Строка.ДатаОстатков = НачалоДня(ДатаОстатков);
Строка.ЭтоРасчетПриУвольнении = ЭтоРасчетПриУвольнении;
Если ЭтоРасчетПриУвольнении Тогда
   Строка.ОтборПоПорядкуРасчетаОтпуска = ПорядокРасчетаОсновногоОтпуска;
КонецЕсли;
Результат = ОстаткиОтпусков(ТаблицаДанных)[0];

т.к. это не расчет при увольнении то Строка.ОтборПоПорядкуРасчетаОтпуска не заполняется
там лежит пустая ссылка на элемент перечисления.

дальше в функции ОстаткиОтпусков есть мега пакет запросов
второй пакет запросов собирает таблицу ВТТаблицаСотрудников
из разного, в том числе и из ОсновныеНачисленияОрганизаций КАК НачисленияОсновногоОтпуска
и присоединяет их хитро по условию:

ВЫБОР
   КОГДА ТаблицаДанных.ОтборПоПорядкуРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетаОтпуска.ПоКалендарнымДням)
       ТОГДА НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпКалендарныеДни)
   КОГДА ТаблицаДанных.ОтборПоПорядкуРасчетаОтпуска = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетаОтпуска.ПоШестидневке)
       ТОГДА НачисленияОсновногоОтпуска.Ссылка = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПоСреднемуОтпШестидневка)
   ИНАЧЕ ЛОЖЬ
КОНЕЦ

тоесть в нашем случае когда это пустая ссылка, никогда не присоединяет
ну и вид отпуска основного
ЕСТЬNULL(НачисленияОсновногоОтпуска.ВидЕжегодногоОтпуска, ЗНАЧЕНИЕ(Справочник.ВидыЕжегодныхОтпусков.ПустаяСсылка))
всегда пустая ссылка получается

вот тут гдето 1С недоделала
мне так кажется
9 Bell
 
02.10.12
00:51
(0) так я не обновился и оказался прав. У меня работает.
10 Иоканаан
 
09.10.12
16:57
Обновил копию БД до 2.5.56.3 - остатки отпусков показываются верно.
11 Anton9843
 
18.10.12
18:13
Проблема решена, зря ругал 1С, сам виноват.

У ежегодного отпуска значение в реквизите "ИдентификаторЭлемента" оказалось не пустое а "ДляТрудовыхДоговоровНаСрокДоДвухМесяцев".

В эту базу переносили данные из семерочных баз ЗиК из 12 штук. И не разом а по паре/тройке в месяц. Наверно при очередном переносе мне виды отпусков и попортило. А реквизит невидно я и несообразил сразу.

Спасибо Иоканаан, заставил меня поглубже вникнуть чего за фигня именно с нашими базами.