Неверные данные для расчета среднего.

1. niko11s 994 06.08.20 23:53 Сейчас в теме
ЗУП 3.1.14.154. В июле начисляется зарплата сотруднику 23000 руб.
По графику у него 22 явки и 1 день ОН (1 июля). В настройках стоит галочка "указ от 1 июля".
Соответственно 1 июля не должно включаться в средний.
В регистр "Данные о начислениях для расчета среднего (общий)" должно попасть:

23 000 руб / 23 * 22 = 22000 руб. А попадает 21083.33 руб.

Какая может быть причина такого поведения? В демо базе смоделировал ситуацию - там все правильно 22000 руб. Уж и базу тестировал - не помогает.
По теме из базы знаний
Найденные решения
9. GSokolov 320 08.08.20 09:12 Сейчас в теме
(8) Эта настройка добавляет отработанные дни (часы) к ЯВКЕ по указанным видам времени. Вы добавили неопл. дни, норма стала не 23, а 24 дня, т.к. это для программы дополнительные к рабочим дни, а отработанными остались те же 22, вот и получилось 21083,33.
niko11s; VAAngelov; +2 Ответить
6. SergVB 21 07.08.20 09:15 Сейчас в теме
(5) Покажите само начисление "Оплата по окладу" и вкладку "Учет времени"
20. SergVB 21 16.08.20 09:47 Сейчас в теме
(13) На багбоарде есть такая ошибка. Скорее всего ваш случай.
Ошибка 10224869

Код ошибки: 10224869
Код(ы) обращения: HL-199078 HL-199811
Статус: Не указан Зарегистрирована: 07.08.2020
Продукт: "1С:Зарплата и Управление Персоналом"
Продукт: "1С:ЗУП 3, 1С:ЗГУ 3"

Описание:
Средний заработок с ОН. Если в начислении выбрано несколько видов времени, сумма избыточно уменьшается.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SergVB 21 07.08.20 05:11 Сейчас в теме
(1) А кроме оклада по дням никаких начислений у сотрудника нет? График стандартный? Покажите расчетный листок
3. niko11s 994 07.08.20 09:01 Сейчас в теме
(2)Я ситуацию максимально упростил. Оставил один оклад.
Прикрепленные файлы:
4. SergVB 21 07.08.20 09:07 Сейчас в теме
(3) А почему Оклад 16640, а итог 23000? Что за формула используется?
5. niko11s 994 07.08.20 09:12 Сейчас в теме
(4)Это я для упрощения ситуации. Я вот сейчас экспериментирую. Принял нового сотрудника с таким же начислением - считает некорректно. Поменял вместо "Оплата по окладу" на "Оплата по окладу (по часам)" - считает корректно. Похоже какая-то проблема именно с начислением, но не пойму какая - формула как и в демо базе, на закладке "Средний заработок" настройки те же.
6. SergVB 21 07.08.20 09:15 Сейчас в теме
(5) Покажите само начисление "Оплата по окладу" и вкладку "Учет времени"
7. niko11s 994 07.08.20 09:19 Сейчас в теме
(6)Да Вы правы на этой закладке отличия. Добавлен дополнительный вид времени.
Прикрепленные файлы:
8. niko11s 994 07.08.20 09:21 Сейчас в теме
Если убираю, то считает корректно. А зачем эта настройка, на что она влияет?
9. GSokolov 320 08.08.20 09:12 Сейчас в теме
(8) Эта настройка добавляет отработанные дни (часы) к ЯВКЕ по указанным видам времени. Вы добавили неопл. дни, норма стала не 23, а 24 дня, т.к. это для программы дополнительные к рабочим дни, а отработанными остались те же 22, вот и получилось 21083,33.
niko11s; VAAngelov; +2 Ответить
10. niko11s 994 08.08.20 10:24 Сейчас в теме
11. niko11s 994 11.08.20 19:19 Сейчас в теме
(9) Как оказалось бухгалтера использовали эту настройку для того, чтобы отгулы не уменьшали оклад сотрудника. Но в данном месяце у сотрудника не было отгулов. Получается, что норма времени увеличилась за счет 24 июня (оплачиваемого нерабочего дня (ОН)). Разве это корректное поведение, ведь для ОН есть свой вид времени - "оплачиваемые нерабочие дни", а не "дополнительные выходные дни (неоплачиваемые)". Или я что - то не понимаю?
12. SergVB 21 11.08.20 19:30 Сейчас в теме
(11) Скажите, отгулы у вас настроены согласно статье на ИТС?
14. niko11s 994 11.08.20 19:38 Сейчас в теме
(12) Да по этой статье. Теперь непонятно что делать. Получается нужно выбирать или неправильно считается средний заработок, или неправильно считается зарплата из-за отгулов.
15. SergVB 21 11.08.20 19:44 Сейчас в теме
(14) Много отгулов в июле? Кроме 1 июля какие еще дни установлены?
16. niko11s 994 11.08.20 19:50 Сейчас в теме
(15) По разному, у кого-то только 1 июля, у кого-то есть еще. А это как-то влияет?
17. SergVB 21 11.08.20 19:52 Сейчас в теме
(16) Ну самое простое можно было попробовать убрать доп.время и пересчитать средний за июль, потом вернуть настройку обратно и ждать исправления. А то может там 1 отгул, его пересчитать вручную проще ведь.
18. niko11s 994 11.08.20 19:56 Сейчас в теме
(17) Понятно, спасибо за совет.
19. SergVB 21 11.08.20 19:57 Сейчас в теме
(18) Либо написать расширение. Типовыми пока в голову ничего хорошего не лезет. Может у кого-нибудь возникнет идея.
13. SergVB 21 11.08.20 19:33 Сейчас в теме
(11) На партнерке вчера подняли эту тему. Последим на ситуацией, похоже ошибка имеет место быть.
20. SergVB 21 16.08.20 09:47 Сейчас в теме
(13) На багбоарде есть такая ошибка. Скорее всего ваш случай.
Ошибка 10224869

Код ошибки: 10224869
Код(ы) обращения: HL-199078 HL-199811
Статус: Не указан Зарегистрирована: 07.08.2020
Продукт: "1С:Зарплата и Управление Персоналом"
Продукт: "1С:ЗУП 3, 1С:ЗГУ 3"

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

Показать
22. ShadoySV 25.08.20 18:15 Сейчас в теме
(21)
После этого потребуется перепровести документы, регистрирующие средний заработок
23. ShadoySV 25.08.20 18:36 Сейчас в теме
(21) Предназначено для версии 3.1.14.183
24. ShadoySV 27.08.20 11:18 Сейчас в теме
(21) Доработанный под большее количество случаев вариант функции "КоэффициентыОплаченногоРабочегоВремениНачислений" в общем модуле "РасчетЗарплатыРасширенный".
Требования: версия 3.1.14.183, перерасчитать сотрудника и/или провести документ начисления
Функция КоэффициентыОплаченногоРабочегоВремениНачислений(МенеджерВременныхТаблиц) Экспорт
	
	Коэффициенты = Новый ТаблицаЗначений;
	Коэффициенты.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
	Коэффициенты.Колонки.Добавить("ВидРасчета", Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления"));
	Коэффициенты.Колонки.Добавить("Месяц", Новый ОписаниеТипов("Дата"));
	Коэффициенты.Колонки.Добавить("Сторно", Новый ОписаниеТипов("Булево"));
	Коэффициенты.Колонки.Добавить("Коэффициент", Новый ОписаниеТипов("Число"));
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ВыделятьНерабочиеДниОтдельнымВидомВремени", УчетРабочегоВремениРасширенный.ВыделятьНерабочиеДниОтдельнымВидомВремени());
	Запрос.УстановитьПараметр("ОплачиваемыеНерабочиеДни", 
		ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ОплачиваемыеНерабочиеДни"));
		
	Запрос.УстановитьПараметр("РабочееВремя",
		ОбщегоНазначения.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.РабочееВремя"));
	
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	НачисленияФактическийПериодДействия.Сотрудник КАК Сотрудник,
		|	НачисленияФактическийПериодДействия.ПериодДействия КАК Месяц,
		|	НачисленияФактическийПериодДействия.ВидРасчета КАК ВидРасчета,
		|	НачисленияФактическийПериодДействия.ПериодДействияНачало КАК ПериодДействияНачало,
		|	НачисленияФактическийПериодДействия.ПериодДействияКонец КАК ПериодДействияКонец,
		|	НачисленияФактическийПериодДействия.ГрафикРаботы КАК ГрафикРаботы,
		|	НачисленияФактическийПериодДействия.ОбщийГрафик КАК ОбщийГрафик,
		|	НачисленияФактическийПериодДействия.ПериодРегистрацииВремени КАК ПериодРегистрацииВремени,
		|	НачисленияФактическийПериодДействия.ВремяВЧасах КАК ВремяВЧасах,
		|	НачисленияФактическийПериодДействия.ПериодРегистрации КАК ПериодРегистрации,
		|	НачисленияФактическийПериодДействия.Сторно КАК Сторно
		|ПОМЕСТИТЬ ВТНачисленияСотрудниковПредварительно
		|ИЗ
		|	РегистрРасчета.Начисления.ФактическийПериодДействия(
		|			(Сотрудник, ПериодДействия) В
		|				(ВЫБРАТЬ
		|					СотрудникиМесяцы.Сотрудник,
		|					СотрудникиМесяцы.Месяц
		|				ИЗ
		|					ВТСотрудникиМесяцы КАК СотрудникиМесяцы)) КАК НачисленияФактическийПериодДействия
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТНачисленияСотрудниковПредварительно.Сотрудник КАК Сотрудник,
		|	ВТНачисленияСотрудниковПредварительно.Месяц КАК Месяц,
		|	ВТНачисленияСотрудниковПредварительно.ВидРасчета КАК ВидРасчета,
		|	ВТНачисленияСотрудниковПредварительно.ПериодДействияНачало КАК ПериодДействияНачало,
		|	ВТНачисленияСотрудниковПредварительно.ПериодДействияКонец КАК ПериодДействияКонец,
		|	ВТНачисленияСотрудниковПредварительно.ГрафикРаботы КАК ГрафикРаботы,
		|	ВТНачисленияСотрудниковПредварительно.ОбщийГрафик КАК ОбщийГрафик,
		|	ВТНачисленияСотрудниковПредварительно.ПериодРегистрацииВремени КАК ПериодРегистрацииВремени,
		|	ВТНачисленияСотрудниковПредварительно.ВремяВЧасах КАК ВремяВЧасах,
		|	ВТНачисленияСотрудниковПредварительно.Сторно КАК Сторно
		|ПОМЕСТИТЬ ВТНачисленияСотрудников
		|ИЗ
		|	ВТНачисленияСотрудниковПредварительно КАК ВТНачисленияСотрудниковПредварительно
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияСотрудниковПредварительно КАК ВТНачисленияСотрудниковПредварительноСторно
		|		ПО ВТНачисленияСотрудниковПредварительно.Сотрудник = ВТНачисленияСотрудниковПредварительноСторно.Сотрудник
		|			И ВТНачисленияСотрудниковПредварительно.Месяц = ВТНачисленияСотрудниковПредварительноСторно.Месяц
		|			И ВТНачисленияСотрудниковПредварительно.ВидРасчета = ВТНачисленияСотрудниковПредварительноСторно.ВидРасчета
		|			И ВТНачисленияСотрудниковПредварительно.ПериодДействияНачало = ВТНачисленияСотрудниковПредварительноСторно.ПериодДействияНачало
		|			И ВТНачисленияСотрудниковПредварительно.ПериодДействияКонец = ВТНачисленияСотрудниковПредварительноСторно.ПериодДействияКонец
		|			И ВТНачисленияСотрудниковПредварительно.ПериодРегистрации < ВТНачисленияСотрудниковПредварительноСторно.ПериодРегистрации
		|			И (ВТНачисленияСотрудниковПредварительноСторно.Сторно)
		|ГДЕ
		|	ВТНачисленияСотрудниковПредварительноСторно.Сотрудник ЕСТЬ NULL
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТНачисленияСотрудников.Сотрудник КАК Сотрудник,
		|	ВТНачисленияСотрудников.ВидРасчета.УчитыватьВесьЗаработок КАК УчитыватьВесьЗаработок,
		|	ВТНачисленияСотрудников.ВремяВЧасах КАК ВремяВЧасах,
		|	ВТНачисленияСотрудников.Месяц КАК Месяц,
		|	ВТНачисленияСотрудников.ВидРасчета КАК ВидРасчета,
		|	ВТНачисленияСотрудников.ПериодДействияНачало КАК ПериодДействияНачало,
		|	ВТНачисленияСотрудников.ПериодДействияКонец КАК ПериодДействияКонец,
		|	ВТНачисленияСотрудников.ГрафикРаботы КАК ГрафикРаботы,
		|	ВТНачисленияСотрудников.Сторно КАК Сторно,
		|	СУММА(ВЫБОР
		|			КОГДА &ВыделятьНерабочиеДниОтдельнымВидомВремени
		|					И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
		|					И НачисленияВидыВремени.ВидВремени = &РабочееВремя
		|				ТОГДА 0
		|			ИНАЧЕ ЕСТЬNULL(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение, 0)
		|		КОНЕЦ) КАК ОтработаноДней,
		|	СУММА(ВЫБОР
		|			КОГДА &ВыделятьНерабочиеДниОтдельнымВидомВремени
		|					И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
		|					И НачисленияВидыВремени.ВидВремени = &РабочееВремя
		|				ТОГДА 0
		|			ИНАЧЕ ЕСТЬNULL(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение, 0)
		|		КОНЕЦ) КАК ОтработаноЧасов,
		|	СУММА(ВЫБОР
		|			КОГДА &ВыделятьНерабочиеДниОтдельнымВидомВремени
		|					И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
		|					И НЕ ПериодыНерабочихДнейКалендаря.НомерПериода ЕСТЬ NULL
		|				ТОГДА ЕСТЬNULL(ГрафикиРаботыПоВидамВремени.ОсновноеЗначение, 0)
		|			ИНАЧЕ 0
		|		КОНЕЦ) КАК Дней,
		|	СУММА(ВЫБОР
		|			КОГДА &ВыделятьНерабочиеДниОтдельнымВидомВремени
		|					И ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни
		|					И НЕ ПериодыНерабочихДнейКалендаря.НомерПериода ЕСТЬ NULL
		|				ТОГДА ЕСТЬNULL(ГрафикиРаботыПоВидамВремени.ДополнительноеЗначение, 0)
		|			ИНАЧЕ 0
		|		КОНЕЦ) КАК Часов
		|ИЗ
		|	ВТНачисленияСотрудников КАК ВТНачисленияСотрудников
		|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.ВидыВремени КАК НачисленияВидыВремени
		|		ПО ВТНачисленияСотрудников.ВидРасчета = НачисленияВидыВремени.Ссылка
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикиРаботыПоВидамВремени КАК ГрафикиРаботыПоВидамВремени
		|		ПО ВТНачисленияСотрудников.ГрафикРаботы = ГрафикиРаботыПоВидамВремени.ГрафикРаботы
		|			И ВТНачисленияСотрудников.Месяц = ГрафикиРаботыПоВидамВремени.Месяц
		|			И ВТНачисленияСотрудников.ПериодРегистрацииВремени = ГрафикиРаботыПоВидамВремени.ПериодРегистрации
		|			И (ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = НачисленияВидыВремени.ВидВремени
		//++ Исправление
		//|				ИЛИ ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни)
		|				ИЛИ (ГрафикиРаботыПоВидамВремени.ВидУчетаВремени = &ОплачиваемыеНерабочиеДни И НачисленияВидыВремени.НомерСтроки = 1))
		//-- Исправление
		|			И (ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ ВТНачисленияСотрудников.ПериодДействияНачало И ВТНачисленияСотрудников.ПериодДействияКонец)
		|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПериодыНерабочихДнейКалендаря КАК ПериодыНерабочихДнейКалендаря
		|		ПО ВТНачисленияСотрудников.ОбщийГрафик.ПроизводственныйКалендарь = ПериодыНерабочихДнейКалендаря.ПроизводственныйКалендарь
		|			И (ГрафикиРаботыПоВидамВремени.Дата МЕЖДУ ПериодыНерабочихДнейКалендаря.ДатаНачала И ПериодыНерабочихДнейКалендаря.ДатаОкончания)
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТНачисленияСотрудников.Сотрудник,
		|	ВТНачисленияСотрудников.ВидРасчета.УчитыватьВесьЗаработок,
		|	ВТНачисленияСотрудников.ВремяВЧасах,
		|	ВТНачисленияСотрудников.Месяц,
		|	ВТНачисленияСотрудников.ВидРасчета,
		|	ВТНачисленияСотрудников.ПериодДействияНачало,
		|	ВТНачисленияСотрудников.ПериодДействияКонец,
		|	ВТНачисленияСотрудников.ГрафикРаботы,
		|	ВТНачисленияСотрудников.Сторно
		|
		|УПОРЯДОЧИТЬ ПО
		|	Сотрудник,
		|	Месяц,
		|	ВидРасчета,
		|	Сторно";
	
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат Коэффициенты;
	КонецЕсли;
	
	Выборка = Результат.Выбрать();
	Пока Выборка.СледующийПоЗначениюПоля("Сотрудник") Цикл
		Пока Выборка.СледующийПоЗначениюПоля("Месяц") Цикл
			Пока Выборка.СледующийПоЗначениюПоля("ВидРасчета") Цикл
				Пока Выборка.СледующийПоЗначениюПоля("Сторно") Цикл
					НоваяСтрока = Коэффициенты.Добавить();
					ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
					
					ОбщееВремя = 0;
					ОплачиваемоеНерабочееВремя = 0;
						
					Пока Выборка.Следующий() Цикл
						ОбщееВремя = ОбщееВремя + 
							?(Выборка.ВремяВЧасах, Выборка.ОтработаноЧасов, Выборка.ОтработаноДней);
								
						ОплачиваемоеНерабочееВремя = ОплачиваемоеНерабочееВремя + 
							?(Выборка.ВремяВЧасах, Выборка.Часов, Выборка.Дней);
					КонецЦикла;
					
					НоваяСтрока.Коэффициент = ?(ОбщееВремя = 0, 1, (ОбщееВремя-ОплачиваемоеНерабочееВремя)/ОбщееВремя);
					Если Выборка.УчитыватьВесьЗаработок 
						И НоваяСтрока.Коэффициент > 0 Тогда
						
						НоваяСтрока.Коэффициент = 1;
					КонецЕсли;
				КонецЦикла;
			КонецЦикла;
		КонецЦикла;
	КонецЦикла;
	
	Возврат Коэффициенты;
	
КонецФункции

Показать
25. SergVB 21 13.09.20 17:19 Сейчас в теме
Ошибка исправлена:

Исправлена: "1С:ЗУП 3, 1С:ЗГУ 3", версия 3.1.10.571
Исправлена: "1С:ЗУП 3, 1С:ЗГУ 3", версия 3.1.14.208
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот