|
Приказ Т1 | ☑ | ||
---|---|---|---|---|
0
Staler1
27.03.18
✎
08:26
|
Здравствуйте, в приказе у сотрудника не отображается часовая надбавка к тарифной ставке. Самое интересное то что у одних показывает у других нет.
Отладчиком просматривается что данные отображаются в локальных переменных, и потом массив не заносит в тз. фото: у кого не отоброжается http://pixs.ru/showimage/1jpg_1440339_29764731.jpg http://pixs.ru/showimage/2jpg_2280919_29764735.jpg здесь все норм http://pixs.ru/showimage/3jpg_9428602_29764744.jpg http://pixs.ru/showimage/4jpg_9899961_29764749.jpg сам код соотвественно: Функция ПолучитьТаблицуНадбавок(Док) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить("ИдентификаторСтрокиВидаРасчета"); ТЗ.Колонки.Добавить("НадбавкаНаименование"); ТЗ.Колонки.Добавить("ПроцентНадбавки"); ТЗ.Колонки.Добавить("Сумма"); ТЗ.Колонки.Добавить("Номер"); // ДолжностьПоШтатномуРасписанию = Док.ДолжностьПоШтатномуРасписанию; ДатаСобытия = Док.Дата; ДанныеПозиции = УправлениеШтатнымРасписанием.ДанныеПозицииШтатногоРасписания(ДолжностьПоШтатномуРасписанию, ДатаСобытия); ПроцентРК = (ДанныеПозиции.РайонныйКоэффициент - 1)*100; ПредставлениеСН = СотрудникиФормыРасширенный.ПредставлениеПроцентаСевернойНадбавки(Док.ФизическоеЛицо); Если ПредставлениеСН = "Процент северной надбавки не задан." Тогда ПроцентСН = 0; Иначе ПроцентСН = ДанныеПозиции.ПроцентСевернойНадбавки; КонецЕсли; ПроцентНВ = ДанныеПозиции.ПроцентНадбавкиЗаВредность; МассивНачислений = ДанныеПозиции.Начисления; УВЧ = Новый Структура(); УВЧ.Вставить("ГрафикРаботыСотрудников", "Основной"); УВЧ.Вставить("Год", "2017"); Оклад = Оклад(Док); Надбавка = Надбавка(Док); СдельнаяЧасовая = СдельнаяЧасовая(Док); ПроцВредности = ВернутьПроцентВредности(Док); ТарСтавка = ЧасоваяТарифнаяСтавка(Док); НайдСтрЧНТС = НадбавкаЧасоваяТарифнаяСтавка(Док); ЕстьСделка = Ложь; ТарифнаяСтавка = 0; Если МассивНачислений.Количество()<>0 Тогда Для Сч = 0 По МассивНачислений.Количество()-1 Цикл СтрокаМассива = МассивНачислений[Сч]; Если СокрЛП(СтрокаМассива.Начисление.Код) = "ОКЛЧС" Тогда СтрокаМассива.Размер = Оклад; Продолжить; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "СДЛЧС" Тогда СтрокаМассива.Размер = СдельнаяЧасовая; ЕстьСделка = Истина; Продолжить; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "ТРФЧС" Тогда СтрокаМассива.Размер = ТарСтавка; ТарифнаяСтавка = СтрокаМассива.Размер; Продолжить; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "ЧНТС" тогда СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.НадбавкаНаименование = СтрокаМассива.Начисление.Наименование; СтрокаТЗ.ИдентификаторСтрокиВидаРасчета = СтрокаМассива.ИдентификаторСтрокиВидаРасчета; СтрокаТЗ.ПроцентНадбавки = "--"; СтрокаТЗ.Сумма = НайдСтрЧНТС;//СтрокаМассива.Размер; СтрокаТЗ.Номер = 1; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "НДБ" Тогда //Процент = "" ; СтрокаМассива.Размер = Надбавка; СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.НадбавкаНаименование = СтрокаМассива.Начисление.Наименование; СтрокаТЗ.ИдентификаторСтрокиВидаРасчета = СтрокаМассива.ИдентификаторСтрокиВидаРасчета; СтрокаТЗ.ПроцентНадбавки = "--"; СтрокаТЗ.Сумма = СтрокаМассива.Размер; СтрокаТЗ.Номер = 2; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "СН" Тогда //ПолучитьПроцентСН ПредставлениеСН = СотрудникиФормыРасширенный.ПредставлениеПроцентаСевернойНадбавки(Док.ФизическоеЛицо); Если ПредставлениеСН = "Процент северной надбавки не задан." Тогда ПроцентСН = 0; Иначе ПроцентСН = ДанныеПозиции.ПроцентСевернойНадбавки; КонецЕсли; // Если ПроцентСН = 0 Тогда Продолжить; КонецЕсли; СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.НадбавкаНаименование = СтрокаМассива.Начисление.Наименование; СтрокаТЗ.ПроцентНадбавки = Строка(ПроцентСН)+"%"; СтрокаТЗ.Сумма = СтрокаМассива.Размер; СтрокаТЗ.Номер = 3; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "РК" Тогда //ПолучитьПроцентРК СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.НадбавкаНаименование = СтрокаМассива.Начисление.Наименование; СтрокаТЗ.ИдентификаторСтрокиВидаРасчета = СтрокаМассива.ИдентификаторСтрокиВидаРасчета; СтрокаТЗ.ПроцентНадбавки = Строка(ПроцентРК)+"%"; СтрокаТЗ.Сумма = СтрокаМассива.Размер; СтрокаТЗ.Номер = 4; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "НВР" Тогда //ПолучитьПроцентНВР СтрокаТЗ = ТЗ.Добавить(); СтрокаТЗ.НадбавкаНаименование = СтрокаМассива.Начисление.Наименование; СтрокаТЗ.ИдентификаторСтрокиВидаРасчета = СтрокаМассива.ИдентификаторСтрокиВидаРасчета; СтрокаТЗ.ПроцентНадбавки = Строка(ПроцВредности)+"%"; СтрокаТЗ.Сумма = ПроцВредности; СтрокаТЗ.Номер = 5; КонецЕсли; Если СокрЛП(СтрокаМассива.Начисление.Код) = "ПРМ" Тогда Продолжить; КонецЕсли; КонецЦикла; КонецЕсли; ТЗ.Сортировать("Номер Возр"); ПСНП = КадровыйУчетРасширенный.ПроцентСевернойНадбавки(док.Сотрудник.ФизическоеЛицо, ДатаСобытия); ПСН = ?(ПСНП = 0, 1, (100+ПСНП)/100); ПроцВредностиП = ?(ПроцВредности = 0, 1, ПроцВредности/100); Если НайдСтрЧНТС <> 0 ИЛИ ЕстьСделка ИЛИ ТарСтавка <> 0 Тогда СтрРк = ТЗ.Найти("Районный коэффициент"); Если СтрРк <> Неопределено Тогда СтрРк.Сумма = (ТарСтавка + НайдСтрЧНТС)*0.3; КонецЕсли; СтрСН = ТЗ.Найти("Северная надбавка"); Если СтрСН <> Неопределено Тогда СтрСН.ПроцентНадбавки = Строка(ПСНП)+"%"; СтрСН.Сумма = (ТарСтавка + НайдСтрЧНТС)*ПСНП/100; КонецЕсли; СтрНВР = ТЗ.Найти("Надбавка за вредные условия труда"); Если СтрНВР <> Неопределено Тогда СтрНВР.Сумма = (ТарСтавка + НайдСтрЧНТС)*(0.3+ПСН)*ПроцВредностиП; КонецЕсли; КонецЕсли; Если Оклад <> 0 Тогда СтрРк = ТЗ.Найти("Районный коэффициент"); Если СтрРк <> Неопределено Тогда СтрРк.Сумма = (Оклад + Надбавка)*0.3; КонецЕсли; СтрСН = ТЗ.Найти("Северная надбавка"); Если СтрСН <> Неопределено Тогда СтрСН.Сумма = (Оклад + Надбавка)*ПСНП/100; КонецЕсли; СтрНВР = ТЗ.Найти("Надбавка за вредные условия труда"); Если СтрНВР <> Неопределено Тогда СтрНВР.Сумма = (Оклад + Надбавка)*(0.3+ПСН)*ПроцВредностиП; КонецЕсли; КонецЕсли; Если СдельнаяЧасовая <> 0 Тогда СтрРк = ТЗ.Найти("Районный коэффициент"); Если СтрРк <> Неопределено Тогда СтрРк.Сумма = (СдельнаяЧасовая )*0.3; КонецЕсли; СтрСН = ТЗ.Найти("Северная надбавка"); Если СтрСН <> Неопределено Тогда СтрСН.Сумма = (СдельнаяЧасовая )*ПСНП/100; КонецЕсли; СтрНВР = ТЗ.Найти("Надбавка за вредные условия труда"); Если СтрНВР <> Неопределено Тогда СтрНВР.Сумма = (СдельнаяЧасовая )*(0.3+ПСН)*ПроцВредностиП; КонецЕсли; КонецЕсли; Возврат ТЗ; КонецФункции |
|||
1
ПегийЛунь
27.03.18
✎
09:38
|
Такое ощущение, что это разные виды начислений (начисления) (у сотрудников).
(Т.к. должно отрабатывать или здесь Если СокрЛП(СтрокаМассива.Начисление.Код) = "ЧНТС" или здесь Если СокрЛП(СтрокаМассива.Начисление.Код) = "НДБ" Тогда) |
|||
2
ПегийЛунь
27.03.18
✎
09:41
|
Если есть возможность, то надо поставить точку остановки на
Возврат ТЗ; и посмотреть, что в той таблице. |
|||
3
Staler1
27.03.18
✎
09:48
|
(2) если ставить точку остановы, то на сотруднике у которого не показывает в тз пусто,а у другого данные есть.
тз заполняются с помощью массива. в массив данные НайдСтрЧнтс не заносятся как будто мимо проходит... |
|||
4
Staler1
27.03.18
✎
09:53
|
||||
5
ПегийЛунь
27.03.18
✎
10:44
|
МассивНачислений.Количество() ?
|
|||
6
Staler1
27.03.18
✎
10:56
|
(5) получается так, в массиве вот данные
http://pixs.ru/showimage/7jpg_8362484_29766067.jpg |
|||
7
ПегийЛунь
27.03.18
✎
11:15
|
Теперь Вам понятно откуда он данные НЕ берет?
Раскручиваю назад: В массиве всего 3 (три) строки. Откуда он их взял? А вот отсюда: МассивНачислений = ДанныеПозиции.Начисления; Что такое ДанныеПозиции? А вот что ДанныеПозиции = УправлениеШтатнымРасписанием.ДанныеПозицииШтатногоРасписания(ДолжностьПоШтатномуРасписанию, ДатаСобытия); Вопрос: А что там у должности в штатном расписании? Какие есть виды начислений? |
|||
8
Staler1
27.03.18
✎
11:44
|
(7) В данныеПозиции о часовой надбавке не слова
http://pixs.ru/showimage/8jpg_2199400_29766467.jpg в должности по штатному расписанию только чнтс отображается =) |
|||
9
ПегийЛунь
27.03.18
✎
12:02
|
Гхм...
У меня к Вам просьба. Зайдите в режиме предприятия и сравнение в ш_т_а_т_н_о_м р_а_с_п_и_с_а_н_и_и две позиции: "Электромонтер по рем. и обсл. электрооборудования...." и "Водитель кат.С" Какие там есть виды начислений? НайдСтрЧНТС = НадбавкаЧасоваяТарифнаяСтавка(Док); Здесь он находит, что в принципе в док-е приема на работу есть такая строка. Есть ли такой вид начисления в позиции штатного расписания? |
|||
10
Staler1
27.03.18
✎
12:08
|
(9) водитель кат. С /АТЦ/ :
Оплата по часовому тарифу -15.38 часовая надбавка к тарифной ставке - 26.41 электромонтер по рем. и обсл. э/оборудования, 6 разряд (категория) /Краново-ремонтная служба/ Оплата по часовому тарифу -16.94 часовая надбавка к тарифной ставке - 42.52 по начислениям всё... |
|||
11
ПегийЛунь
27.03.18
✎
13:01
|
Не реально. По шагам всю процедуру.
Я бы поставил точки останова: 1) Если МассивНачислений.Количество()<>0 Тогда Попадает ли вообще в цикл? 2) Если СокрЛП(СтрокаМассива.Начисление.Код) = "ЧНТС" Тогда добавляется ли вообще такая строка? 3) ТЗ.Сортировать("Номер Возр"); Что получается после цикла? Как выглядит ТЗ. в скрине (4) нет вида начисления с кодом "ЧНТС", там надбавка за вредность (это другое) |
|||
12
ПегийЛунь
27.03.18
✎
13:02
|
точнее не в (4) а в (6)
|
|||
13
Staler1
29.03.18
✎
07:17
|
(12)Я сделал в обход массива который не заносил данные в ТЗ. Спасибо за советы как устранить проблему!! =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |