Имя: Пароль:
1C
1С v8
УПП. При расчете ЗП подставляется старый оклад/тариф
0 егаис
 
05.10.23
20:26
Доброго дня.
Релиз 1.3.212.2
В начале года был перенос данных в базу УПП.
Данные занесены через документ переноса данных.
Регистры: периоды работы работников по основному месту работы, плановые начисления, кадровая история по юрикам.
В сентябре делается документ кадрового перемещения, где увеличивается оклад сотруднику. При расчете ЗП показатель берется до изменения окладов.
В регистре плановых начислений новый оклад имеется.
При анализе ошибки было выявлено, что подзапрос ниже возвращает 2 строки с показателем ОКЛАД, а не по срезу!

    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    |    ПлановыеНачисленияРаботников.Период,
    |    ПлановыеНачисленияРаботников.Сотрудник КАК Сотрудник,
    |    ПлановыеНачисленияРаботников.Сотрудник.Физлицо КАК ФизЛицо,
        .. далее описаны разные показатели
    |ПОМЕСТИТЬ ЗаписиПлановыхНачислений
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
    |            &парамНачало,
    |            Организация = &Организация
    |                И Сотрудник В
    |                    (ВЫБРАТЬ
    |                        СписокРаботников.Сотрудник
    |                    ИЗ
    |                        ВТСписокРаботников КАК СписокРаботников)) КАК ПлановыеНачисленияРаботников
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников
    |        ПО (СписокРаботников.Сотрудник = ПлановыеНачисленияРаботников.Сотрудник)
    |            И (ВЫБОР
    |                КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                        И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |                    ТОГДА ПлановыеНачисленияРаботников.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
    |                ИНАЧЕ ПлановыеНачисленияРаботников.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
    |            КОНЕЦ)

Не пойму, как срез может вернуть 2 записи
проверял значения по коду, типу, на пустое значение, все идентично.

Там ниже в запросе объекдинения (всего 3), но добавил для проверки в каждый запрос поля от 1 до 3
Дубль тянется именно с первого запроса, что в теме.
Хелп!
1 егаис
 
05.10.23
20:29
записи отличаются только полями "период" и "действие"
01.01.23 начать   Оклад по часам  20 000
01.09.23 изменить Оклад по часам  25 000

все остальное сходится ((
2 егаис
 
05.10.23
20:30
при расчете ЗП показатель ставить 20 000
Не знаю, можно конечно костыль прикрутить и отсортировать по периоду убывания, видимо берет первую запись, но хотелось бы разобраться
3 егаис
 
05.10.23
20:31
в ВТСписокРаботников он один, запрос крутил по всякому
4 Гена
 
06.10.23
06:23
У меня только 200.2
Проверил - всё нормально. Правда, у меня Бендер принят приказом.
Попробуйте всё-таки завести своему плохишу приказ о приёме как положено.
5 DirectorGora
 
06.10.23
07:52
(0) УПП наверное как 7.7 будет жить еще 20 лет))
6 DirectorGora
 
06.10.23
07:54
(0) в объединениях Вы используете "ОБЪЕДИНИТЬ" или "ОБЪЕДИНИТЬ ВСЕ"?
7 егаис
 
06.10.23
07:58
(4) было слияние компаний, движения через регистры
(6) ОБЪЕДИНИТЬ

Вот полный подзапрос
    |ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    |    ""1"" КАК ПроверкаОткудаДанные,
    |    ПлановыеНачисленияРаботников.Период,
    |    ПлановыеНачисленияРаботников.Сотрудник КАК Сотрудник,
    |    ПлановыеНачисленияРаботников.Сотрудник.Физлицо КАК ФизЛицо,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ДействиеЗавершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Действие
    |    КОНЕЦ КАК Действие,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ВидРасчетаЗавершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ВидРасчета
    |    КОНЕЦ КАК ВидРасчета,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель1Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель1
    |    КОНЕЦ КАК Показатель1,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель2Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель2
    |    КОНЕЦ КАК Показатель2,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель3Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель3
    |    КОНЕЦ КАК Показатель3,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель4Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель4
    |    КОНЕЦ КАК Показатель4,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель5Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель5
    |    КОНЕЦ КАК Показатель5,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Показатель6Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Показатель6
    |    КОНЕЦ КАК Показатель6,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта1Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта1
    |    КОНЕЦ КАК Валюта1,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта2Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта2
    |    КОНЕЦ КАК Валюта2,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта3Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта3
    |    КОНЕЦ КАК Валюта3,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта4Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта4
    |    КОНЕЦ КАК Валюта4,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта5Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта5
    |    КОНЕЦ КАК Валюта5,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.Валюта6Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.Валюта6
    |    КОНЕЦ КАК Валюта6,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд1Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд1
    |    КОНЕЦ КАК ТарифныйРазряд1,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд2Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд2
    |    КОНЕЦ КАК ТарифныйРазряд2,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд3Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд3
    |    КОНЕЦ КАК ТарифныйРазряд3,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд4Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд4
    |    КОНЕЦ КАК ТарифныйРазряд4,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд5Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд5
    |    КОНЕЦ КАК ТарифныйРазряд5,
    |    ВЫБОР
    |        КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |            ТОГДА ПлановыеНачисленияРаботников.ТарифныйРазряд6Завершения
    |        ИНАЧЕ ПлановыеНачисленияРаботников.ТарифныйРазряд6
    |    КОНЕЦ КАК ТарифныйРазряд6
    |ПОМЕСТИТЬ ЗаписиПлановыхНачислений
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций.СрезПоследних(
    |            &парамНачало,
    |            Организация = &Организация
    |                И Сотрудник В
    |                    (ВЫБРАТЬ
    |                        СписокРаботников.Сотрудник
    |                    ИЗ
    |                        ВТСписокРаботников КАК СписокРаботников)) КАК ПлановыеНачисленияРаботников
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников
    |        ПО (СписокРаботников.Сотрудник = ПлановыеНачисленияРаботников.Сотрудник)
    |            И (ВЫБОР
    |                КОГДА ПлановыеНачисленияРаботников.ПериодЗавершения <> ДАТАВРЕМЯ(1, 1, 1)
    |                        И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамНачало
    |                    ТОГДА ПлановыеНачисленияРаботников.ДействиеЗавершения <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
    |                ИНАЧЕ ПлановыеНачисленияРаботников.Действие <> ЗНАЧЕНИЕ(Перечисление.ВидыДействияСНачислением.Прекратить)
    |            КОНЕЦ)
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    ""2"",
    |    ПлановыеНачисленияРаботников.Период,
    |    ПлановыеНачисленияРаботников.Сотрудник,
    |    ПлановыеНачисленияРаботников.Сотрудник.Физлицо,
    |    ПлановыеНачисленияРаботников.Действие,
    |    ПлановыеНачисленияРаботников.ВидРасчета,
    |    ПлановыеНачисленияРаботников.Показатель1,
    |    ПлановыеНачисленияРаботников.Показатель2,
    |    ПлановыеНачисленияРаботников.Показатель3,
    |    ПлановыеНачисленияРаботников.Показатель4,
    |    ПлановыеНачисленияРаботников.Показатель5,
    |    ПлановыеНачисленияРаботников.Показатель6,
    |    ПлановыеНачисленияРаботников.Валюта1,
    |    ПлановыеНачисленияРаботников.Валюта2,
    |    ПлановыеНачисленияРаботников.Валюта3,
    |    ПлановыеНачисленияРаботников.Валюта4,
    |    ПлановыеНачисленияРаботников.Валюта5,
    |    ПлановыеНачисленияРаботников.Валюта6,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд1,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд2,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд3,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд4,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд5,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд6
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботников
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников
    |        ПО (СписокРаботников.Сотрудник = ПлановыеНачисленияРаботников.Сотрудник)
    |            И (ПлановыеНачисленияРаботников.Организация = &Организация)
    |            И (ПлановыеНачисленияРаботников.Период > &парамНачало)
    |            И (ПлановыеНачисленияРаботников.Период <= &парамКонец)
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ
    |    ""3"",
    |    ПлановыеНачисленияРаботников.ПериодЗавершения,
    |    ПлановыеНачисленияРаботников.Сотрудник,
    |    ПлановыеНачисленияРаботников.Сотрудник.Физлицо,
    |    ПлановыеНачисленияРаботников.ДействиеЗавершения,
    |    ПлановыеНачисленияРаботников.ВидРасчетаЗавершения,
    |    ПлановыеНачисленияРаботников.Показатель1Завершения,
    |    ПлановыеНачисленияРаботников.Показатель2Завершения,
    |    ПлановыеНачисленияРаботников.Показатель3Завершения,
    |    ПлановыеНачисленияРаботников.Показатель4Завершения,
    |    ПлановыеНачисленияРаботников.Показатель5Завершения,
    |    ПлановыеНачисленияРаботников.Показатель6Завершения,
    |    ПлановыеНачисленияРаботников.Валюта1Завершения,
    |    ПлановыеНачисленияРаботников.Валюта2Завершения,
    |    ПлановыеНачисленияРаботников.Валюта3Завершения,
    |    ПлановыеНачисленияРаботников.Валюта4Завершения,
    |    ПлановыеНачисленияРаботников.Валюта5Завершения,
    |    ПлановыеНачисленияРаботников.Валюта6Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд1Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд2Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд3Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд4Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд5Завершения,
    |    ПлановыеНачисленияРаботников.ТарифныйРазряд6Завершения
    |ИЗ
    |    РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ПлановыеНачисленияРаботников
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСписокРаботников КАК СписокРаботников
    |        ПО (СписокРаботников.Сотрудник = ПлановыеНачисленияРаботников.Сотрудник)
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисленияРаботниковОрганизаций КАК ВременныеПлановыеНачисленияРаботников
    |        ПО ПлановыеНачисленияРаботников.Организация = ВременныеПлановыеНачисленияРаботников.Организация
    |            И ПлановыеНачисленияРаботников.Сотрудник = ВременныеПлановыеНачисленияРаботников.Сотрудник
    |            И ПлановыеНачисленияРаботников.ВидРасчетаИзмерение = ВременныеПлановыеНачисленияРаботников.ВидРасчетаИзмерение
    |            И ПлановыеНачисленияРаботников.Период < ВременныеПлановыеНачисленияРаботников.Период
    |            И ПлановыеНачисленияРаботников.ПериодЗавершения >= ВременныеПлановыеНачисленияРаботников.Период
    |ГДЕ
    |    ПлановыеНачисленияРаботников.Организация = &Организация
    |    И ПлановыеНачисленияРаботников.ПериодЗавершения >= &парамНачало
    |    И ПлановыеНачисленияРаботников.ПериодЗавершения <= &парамКонец
    |    И ВременныеПлановыеНачисленияРаботников.Сотрудник ЕСТЬ NULL
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    Сотрудник,
    |    ВидРасчета,
    |    ТарифныйРазряд1,
    |    ТарифныйРазряд2,
    |    ТарифныйРазряд3,
    |    ТарифныйРазряд4,
    |    ТарифныйРазряд5,
    |    ТарифныйРазряд6



ПроверкаОткудаДанные во всех строках "1"
8 DirectorGora
 
06.10.23
08:11
(7) Попробуйте все показатели в первом запросе сделать через ВЫРАЗИТЬ.
9 егаис
 
06.10.23
08:11
хм
для примера ввел по одному сотруднику документ "Ввод сведений о плановых начислениях", убрав его в переносе.
Все заработало как надо.
При этом записи в регистре плановых начислений идентичны тем, что были в переносе.
Но есть нюанс, стал заполнен реквизит (не измерение, и не рерсус) "Первичный документ". Но не факт что в этом причина.
В общем направление понятно, всех перекину в документ.
10 егаис
 
06.10.23
08:12
(8) да, возможно и в типизации проблема, но блин ,срез, Карл!. Срез возвращает 2 записи!

Спасибо за участие, перенесу всех через документ
11 DirectorGora
 
06.10.23
08:13
(8) Причет ВЫРАЗИТЬ надо сделать для всех итоговых показателей, а не внутренне-промежуточных
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.