1С бухгалтерия

В сдельном наряде очень плохо происходит заполнение данных по работникам (в частности тариф и дни), если работник был временно переведен на другой тариф или другой основной вид расчета (например был на окладе и временно перевели на сдельную оплату труда). В таких ситуациях частно заполняет совсем не то, чего ожидаешь.

Необходимо внести изменения в модуль документа "Сдельный наряд". В процедуре Автозаполнение находим первое присвоение переменной ЗапросАвтоЗаполненияТекст текста запроса. На мой взгляд этот запрос должен выглядеть примерно так:

ЗапросАвтоЗаполненияТекст = 
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
|	ВЫБОР
|		КОГДА ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения = ДАТАВРЕМЯ(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)
		ТОГДА ПлановыеНачисленияРаботниковОрганизаций.Период
	ИНАЧЕ ВЫБОР
			КОГДА &ДатаНачалаПериода < ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения
				ТОГДА &ДатаНачалаПериода
			ИНАЧЕ ПлановыеНачисленияРаботниковОрганизаций.ПериодЗавершения
		КОНЕЦ
КОНЕЦ		

Имеется ввиду что замене подверглись и ДействиеЗавершения и ВидРасчетаЗавершения.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <1c7>, <drupal5>, <drupal6>, <javascript>, <php>. Beside the tag style "<foo>" it is also possible to use "[foo]".