Имя: Пароль:
1C
 
ЗУП: не вычисляется база по доп.начислениям, хоть плачь.
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
Вообщем через отладчик, все нормально, записи получает, и в итоге правильную базу, через консоль у меня не получается работать с виртуальными таблицами расчета))))