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