![]() |
![]() |
![]() |
|
ЗУП: не вычисляется база по доп.начислениям, хоть плачь. | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
23.04.08
✎
15:13
|
Зарплата и Управление Персоналом, редакция 2.5 (2.5.7.2)
Вот два запроса. Первый по основным начислениям, выдает все ОК: ВЫБРАТЬ Т.ПериодРегистрации, Т.ФизЛицо, Т.Организация, Т.ВидРасчета, Т.Результат ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций.БазаОсновныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , ФизЛицо = &ФЛ) КАК Т Второй - по дополнительным начислениям, пустой собака (даже если убрать отбор по физлицу, нет ни одной записи), почему он пуст: ВЫБРАТЬ Т.ПериодРегистрации, Т.ФизЛицо, Т.Организация, Т.ВидРасчета, Т.Результат ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций.БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , ФизЛицо = &ФЛ) КАК Т В плане видов расчетов для УдержанияРаботниковОрганизаций указаны в качестве базы и основные и дополнительные начисления. Почему же он ничего не выдает, когда мы берем базу дополнительных начислений? Ведь есть виды расчетов в плане расчетов "Удержания работников организаций", которые используют в качестве базовых виды расчетов из дополнительных начислений? |
|||
1
Гений 1С
гуру
23.04.08
✎
15:14
|
Проверял в консоли запросов, параметры устанавливал так:
Измерения = Новый Массив(2); Измерения[0] = "ФизЛицо"; Измерения[1] = "Организация"; // для удержаний сопоставляемые измерения основного и базового регистов разные ОбъектЗапрос.УстановитьПараметр("парамИзмеренияОсновного", Измерения); ОбъектЗапрос.УстановитьПараметр("парамИзмеренияБазового", Измерения); |
|||
2
Гений 1С
гуру
23.04.08
✎
15:23
|
В то же время нижеследующий запрос выдает для видов расчетов по удержаниям базовые виды расчетов из видов расчетов дополнительных начислений. Как быть-то?:
ВЫБРАТЬ Т.ПериодРегистрации, Т.ФизЛицо, Т.Организация, Т.ВидРасчета, Т.Результат ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций.БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, &Разрезы, ФизЛицо = &ФЛ) КАК Т |
|||
3
RomaJ
23.04.08
✎
15:24
|
Может по доп. начислениям ничего не начислялось за определенный период какой-то а только по основным были начисления...
|
|||
4
Гений 1С
гуру
23.04.08
✎
15:29
|
(3) так есть записи в регистре расчета доп.начислений, есть.
|
|||
5
Гений 1С
гуру
23.04.08
✎
15:31
|
(3) т.е. есть записи в регистре расчета "УдержанияРаботниковОрганизаций". И их полно, а в результат запроса в консоли вообще ни одной строки не выдается.
При том что в результат другого запроса по основным начислениям выдается все пучком. |
|||
6
RomaJ
23.04.08
✎
15:49
|
А есть ли записи в регистре расчета доп.начислений, которые входят в базу записей из регистра Удержания.
|
|||
7
Гений 1С
гуру
23.04.08
✎
16:00
|
(6) да, проверил.
В регистре расчета "ДополнительныеНачисленияРаботниковОрганизации" есть записи по виду расчета например "Премия 91 счет". В регистре расчета "УдержанияРаботниковОрганизаций" есть записи по виду расчета "Удержание по исп. листу процентом без учета БЛ" (из плана расчета "УдеражнияРаботниковОрганизаций"). В виде расчета "Удержание по исп. листу процентом без учета БЛ" в качестве базового указано например "Премия 91 счет". То бишь все есть, почему не считает - загадка природы. |
|||
8
Гений 1С
гуру
23.04.08
✎
16:02
|
Кроме того, если написать запрос так, то данные выдаются:
ВЫБРАТЬ База.Результат КАК РезультатБаза, Основной.Регистратор КАК Регистратор, Основной.НомерСтроки КАК НомерСтроки, Основной.ВидРасчета КАК ВидРасчетаУдерж, База.ВидРасчета, Основной.ПериодРегистрации ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций КАК Основной ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.БазовыеВидыРасчета КАК БазовыеВидыРасчета ПО Основной.ВидРасчета = БазовыеВидыРасчета.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК База ПО Основной.ПериодРегистрации = База.ПериодРегистрации И Основной.ФизЛицо = База.ФизЛицо И Основной.Организация = База.Организация И Основной.БазовыйПериодНачало <= База.ПериодДействияНачало И (БазовыеВидыРасчета.ВидРасчета = База.ВидРасчета) ГДЕ Основной.ФизЛицо = &ФизЛицо И База.Результат <> 0 И МЕСЯЦ(Основной.ПериодРегистрации) = 2 И ГОД(Основной.ПериодРегистрации)=2008 Получается что, виртуальная таблица не работает и ее заменять запросом? Но почему???? |
|||
9
Гений 1С
гуру
23.04.08
✎
16:02
|
Пардон, в (8) лажа.
|
|||
10
Гений 1С
гуру
23.04.08
✎
16:04
|
Т.е. если написать такой запрос, то данные есть:
ВЫБРАТЬ База.Результат КАК РезультатБаза, Основной.Регистратор КАК Регистратор, Основной.НомерСтроки КАК НомерСтроки, Основной.ВидРасчета КАК ВидРасчетаУдерж, База.ВидРасчета, Основной.ПериодРегистрации, Основной.ПорядокРасчетаБазы ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций КАК Основной ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.БазовыеВидыРасчета КАК БазовыеВидыРасчета ПО Основной.ВидРасчета = БазовыеВидыРасчета.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК База ПО (Основной.ПериодРегистрации = НАЧАЛОПЕРИОДА(База.ПериодРегистрации, МЕСЯЦ)) И Основной.ФизЛицо = База.ФизЛицо И Основной.Организация = База.Организация И Основной.БазовыйПериодНачало <= База.ПериодРегистрации И (БазовыеВидыРасчета.ВидРасчета = База.ВидРасчета) ГДЕ Основной.ФизЛицо = &ФизЛицо И База.Результат <> 0 И МЕСЯЦ(Основной.ПериодРегистрации) = 2 И ГОД(Основной.ПериодРегистрации) = 2008 Вот эти данные (без цифр): Регистратор НомерСтроки ВидРасчетаУдерж ВидРасчета ПериодРегистрации ПорядокРасчетаБазы Начисление зарплаты работникам организаций 00000000011 от 30.04.2008 23:59:59 1 Удержание по исп. листу процентом без учета БЛ Квартальная премия за факт.время 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000011 от 30.04.2008 23:59:59 1 Удержание по исп. листу процентом без учета БЛ Премия 91 счет 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000011 от 30.04.2008 23:59:59 1 Удержание по исп. листу процентом без учета БЛ Ежемесячная премия (%) 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000011 от 30.04.2008 23:59:59 1 Удержание по исп. листу процентом без учета БЛ По итогам работы за год 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000002 от 29.02.2008 23:59:59 3 Удержание по исп. листу процентом без учета БЛ Квартальная премия за факт.время 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000002 от 29.02.2008 23:59:59 3 Удержание по исп. листу процентом без учета БЛ Премия 91 счет 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000002 от 29.02.2008 23:59:59 3 Удержание по исп. листу процентом без учета БЛ Ежемесячная премия (%) 01.02.2008 0:00:00 За весь период Начисление зарплаты работникам организаций 00000000002 от 29.02.2008 23:59:59 3 Удержание по исп. листу процентом без учета БЛ По итогам работы за год 01.02.2008 0:00:00 За весь период |
|||
11
Гений 1С
гуру
23.04.08
✎
16:05
|
Получается что, виртуальная таблица не работает? И заменить ее запросом? Хотелось бы точно знать, а то блин вдруг я туплю???
|
|||
12
Viktosha
23.04.08
✎
16:16
|
то, что написано в коде типовой и скорее всего работает (может натолкнет на мысль):
Если КомментироватьРасчет Тогда ТекстЗапроса = ТекстЗапроса + " |ЛЕВОЕ СОЕДИНЕНИЕ ( |ВЫБРАТЬ | РезультатБаза КАК РезультатБаза, | ВидРасчетаРазрез КАК ВидРасчетаРазрез, | Регистратор КАК Регистратор, | НомерСтроки КАК НомерСтроки |ИЗ РегистрРасчета." + ИмяРегистра + ".БазаОсновныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, &парамРазрезы, " + Условие + ") Как База1 |ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ | РезультатБаза, | ВидРасчетаРазрез, | Регистратор, | НомерСтроки |ИЗ РегистрРасчета." + ИмяРегистра + ".БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, &парамРазрезы, " + Условие + ") Как База2 |) КАК База |ПО Основной.Регистратор = База.Регистратор И Основной.НомерСтроки = База.НомерСтроки"; Разрезы = Новый Массив; Разрезы.Добавить("ВидРасчета"); Запрос.УстановитьПараметр("парамРазрезы", Разрезы); Иначе ТекстЗапроса = ТекстЗапроса + " |ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета."+ИмяРегистра+".БазаОсновныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , " + Условие + ") Как База1 |ПО База1.Регистратор = Основной.Регистратор И База1.НомерСтроки = Основной.НомерСтроки |ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета."+ИмяРегистра+".БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , " + Условие + ") Как База2 |ПО Основной.Регистратор = База2.Регистратор И Основной.НомерСтроки = База2.НомерСтроки"; КонецЕсли; |
|||
13
Гений 1С
гуру
23.04.08
✎
16:36
|
(12) что-то похожее я и анализировал, в результате упростил условие. Похоже не работает виртуальная таблица База.
В общем написал в 1С, дублирую здесь. Ситуация воспроизводится на демо-базе 1С. Ок, попробуем смоделировать то же самое на демо-базе. Попробовали. И вот что получается. Делаем в демо базе Зарплата и Управление Персоналом, редакция 2.5 (2.5.7.2). Формируем запрос: ВЫБРАТЬ База.Результат КАК РезультатБаза, Основной.ФизЛицо, Основной.Регистратор КАК Регистратор, Основной.НомерСтроки КАК НомерСтроки, База.ВидРасчета, Основной.ВидРасчета КАК ВидРасчета1, Основной.ПериодРегистрации, Основной.ПорядокРасчетаБазы ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций КАК Основной ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.УдержанияОрганизаций.БазовыеВидыРасчета КАК БазовыеВидыРасчета ПО Основной.ВидРасчета = БазовыеВидыРасчета.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК База ПО (Основной.ПериодРегистрации = НАЧАЛОПЕРИОДА(База.ПериодРегистрации, МЕСЯЦ)) И Основной.ФизЛицо = База.ФизЛицо И Основной.Организация = База.Организация И Основной.БазовыйПериодНачало <= База.ПериодРегистрации И (БазовыеВидыРасчета.ВидРасчета = База.ВидРасчета) ГДЕ Основной.ФизЛицо = &ФизЛицо И База.Результат <> 0 И МЕСЯЦ(Основной.ПериодРегистрации) = 4 И ГОД(Основной.ПериодРегистрации) = 2007 ФизЛицо= Сиплатов Владимир Максимович В результате получаем одну строку результата: РезультатБаза ФизЛицо Регистратор НомерСтроки ВидРасчета ВидРасчета1 ПериодРегистрации ПорядокРасчетаБазы 225,99 Сиплатов Владимир Максимович Начисление зарплаты работникам организаций СИ000000008 от 30.04.2007 12:00:00 31 Месячная Удержание по исп. листу процентом до предела 01.04.2007 0:00:00 За весь период Далее, формируем запрос: ВЫБРАТЬ Т.ПериодРегистрации, Т.ФизЛицо, Т.Организация, Т.ВидРасчета, Т.Результат, Т.ВидРасчетаРазрез ИЗ РегистрРасчета.УдержанияРаботниковОрганизаций.БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, &Разрезы, ВидРасчета=&ВР ) КАК Т При этом заполняем параметры виртуальной таблицы так: Измерения = Новый Массив(2); Измерения[0] = "ФизЛицо"; Измерения[1] = "Организация"; // для удержаний сопоставляемые измерения основного и базового регистов разные ОбъектЗапрос.УстановитьПараметр("парамИзмеренияОсновного", Измерения); ОбъектЗапрос.УстановитьПараметр("парамИзмеренияБазового", Измерения); М = Новый Массив(1); М[0] = "ВидРасчета"; ОбъектЗапрос.УстановитьПараметр("Разрезы", М); Не получаем ни одной строки результата. ПОЧЕМУ? Вы можете сказать, что это к разработчикам виртуальной таблицы РегистрРасчета.УдержанияРаботниковОрганизаций.БазаДополнительныеНачисленияРаботниковОрганизаций вопрос. Но ведь вы используете эту виртуальную таблицу в коде в модуле проведение расчетов, вот код: Если НеобходимаБаза Тогда // присоединяем к базе База1Текст = "РегистрРасчета."+ИмяРегистра+".БазаОсновныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , " + Условие + ")"; База2Текст = "РегистрРасчета."+ИмяРегистра+".БазаДополнительныеНачисленияРаботниковОрганизаций(&парамИзмеренияОсновного, &парамИзмеренияБазового, , " + Условие + ")"; Поэтому или я ошибаюсь (скорее всего), или виртуальная таблица действительно не работает и тогда или нужно ее починить или переписать обращения к этой виртуальной таблице. |
|||
14
Гений 1С
гуру
23.04.08
✎
16:38
|
Да, забыл. у нас 1С:Предприятие 8.1 (8.1.9.54)
|
|||
15
Viktosha
23.04.08
✎
16:50
|
У меня платформа 1С:Предприятие 8.1 (8.1.10.50), попробовала сделать удержание по исполнительным листам процентом, куда в базу входит дополнительное начисление, сделала это начисление и расчитала удержание- все правильно работает.
|
|||
16
Гений 1С
гуру
23.04.08
✎
16:56
|
(15) Вы запрос прогоните, запрос по "РегистрРасчета.УдержанияРаботниковОрганизаций.БазаДополнительныеНачисленияРаботниковОрганизаций" ... Он у вас выдаст пустой результат?
|
|||
17
Viktosha
23.04.08
✎
17:36
|
Вообщем через отладчик, все нормально, записи получает, и в итоге правильную базу, через консоль у меня не получается работать с виртуальными таблицами расчета))))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |