|
ЗУП. Новый показатель НормаЧасовЗаПериод. Как всегда плутаю в трёх соснах ТЗ | ☑ | ||||||
|---|---|---|---|---|---|---|---|---|
|
0
Гена
гуру
02.05.26
✎
16:18
|
Задумал разобраться с премиями за период, например, квартальными. Чтобы использовать новые собственные показатели в любых формулах. Например, НормаЧасовЗаПериод
Есть ТЗ СтрокаНачисления (рис.1) В ней есть колонка «Показатели» В цикле перебираю начисления сотрудника и после оклада и РК заходит новое начисление с нужным мне показателем «Норма часов за квартал» (рис. 2) Как мне присвоить, пусть к примеру, число 100 этому значению (понятно, что пока оно нулевое)? Когда я пытаюсь тупо: Если СтрокаНачисления.Показатели[0].Показатель <> Неопределено И СтрокаНачисления.Показатели[0].Показатель = "Норма часов за квартал" Тогда СтрокаНачисления.Показатели[0].Значение = 100; КонецЕсли; то программа слетает на первом же начислении у которого нет показателей ) Да и [0] плохо. Надо как-то найти мне строку эту. Предвосхищая вопросы: да, нет напарника кодера рядом, и давно )
|
|||||||
|
1
Anarki
02.05.26
✎
22:41
|
Ща Гена ответит
|
|||||||
|
2
vicof
02.05.26
✎
22:45
|
Если СтрокаНачисления.Показатели.Количество() > 0 не?
или Для Каждого Показатель из СтрокаНачисления.Показатели Цикл |
|||||||
|
3
Anarki
02.05.26
✎
22:46
|
(0) что значит "программа слетает"?
|
|||||||
|
4
Гена
гуру
03.05.26
✎
07:31
|
Благодарю, коллеги, утро вечера мудренее )
Сработал код: // 1. Обходим таблицу начислений
Для Каждого СтрокаНачисления Из Начисления Цикл // 2. Нам нужна колонка Показатели, но её может и не быть Если СтрокаНачисления.Показатели.Количество() > 0 Тогда Для Каждого Показатель из СтрокаНачисления.Показатели Цикл Если Строка(Показатель.Показатель) = "Норма часов за квартал" Тогда Показатель.Значение = 100; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
|||||||
|
5
2S
03.05.26
✎
17:54
|
>Если СтрокаНачисления.Показатели.Количество()
Вы уверены, что СтрокаНачисления.Показатели это всегда таблица или массив? А если вдруг Неопределено? Имхо, лучше на тип проверить, а не на количество строк. |
|||||||
|
6
Гена
гуру
03.05.26
✎
19:48
|
(5) Вроде работает. Пусть, я уже близок к финишу для создания премий за любой премиальный период по доле отработанного времени в нём. Например, кварталки.
Вот тут не пойму. Табло: СтрокаНачисления[1].ВидыВремени[0].ВидВремени .... Командировка СтрокаНачисления[1].ВидыВремени[1].ВидВремени .... Рабочее время А как пытаюсь выцепить колонку через СтрокаНачисления.ВидыВремени .... Поле объекта не обнаружено |
|||||||
|
7
vicof
04.05.26
✎
09:54
|
(4) "Для Каждого Показатель из СтрокаНачисления.Показатели Цикл"
Лучше Показатель заменить на СтрокаПоказатель. (5) Поддерживаю. (6) Возможно, кривой код. Возможно, не у всех начислений есть поле ВидыВремени |
|||||||
|
8
Гена
гуру
04.05.26
✎
10:13
|
На картинках.
Рис.1 Вот моя здоровенная ТЗ СтрокаНачисления По строке с индексом 1 вижу свою премию. Рис.2 Это я сдвинулся далеко вправо до колонки ВидыВремени Рис.3 Увы, но попасть я могу в эту ячейку только задав индекс (только по строке 1) СтрокаНачисления[1].ВидыВремени Грустно так оставлять, ведь в общем случае может не быть строки 1, либо она ляжет под другим номером. Метод Найти меня посылает в грубой форме )
|
|||||||
|
9
vicof
04.05.26
✎
10:28
|
(8) "Грустно так оставлять, ведь в общем случае может не быть строки 1, либо она ляжет под другим номером."
Как вариант задать приоритет. Сортировать по нему. В видах времени здесь все красиво должно быть, либо кривой код. "Метод Найти меня посылает в грубой форме" Смотря в каком объекте. Как говорит Гена, нужны исходники. Про показатели на картинках ни слова. Судя по картинкам, что-то такое должно получиться: Для Каждого СтрокаВидВремени из СтрокаНачисления.ВидыВремени Цикл Если СтрокаВидВремени.ВидВремени = Перечисления.ВидыРабочегоВремениСотрудников.ОтработанноеВПределахНормы Тогда СтрокаПоказатель.Значение = 100; КонецЕсли; КонецЦикла; |
|||||||
|
10
Гена
гуру
04.05.26
✎
10:40
|
(9) Поле объекта не обнаружено (ВидыВремени)
Я же говорю: не работает СтрокаНачисления.ВидыВремени без индекса в квадратных скобках ( |
|||||||
|
11
Gucci76
04.05.26
✎
10:43
|
А откуда скрины?
Из менеджера расчета ЗП? Не очень понятно как к этому пришли? Доработка в расширении? Если да, то может предопределенный показатель расчета сделать, чтобы не по тексту искать? |
|||||||
|
12
Гена
гуру
04.05.26
✎
10:46
|
А с индексом понятно и ежу, что работает:
Для Каждого СтрокаВидВремени из СтрокаНачисления[1].ВидыВремени Цикл Ну что, оставлять с единичкой? У кого будет расширение вылетать - сам поправит ) |
|||||||
|
13
Гена
гуру
04.05.26
✎
10:54
|
Ладно. Похоже в языке 1С нет перебора по строкам.
Обрамлю попыткой, пожалуй, и все дела. Попытка ..... Исключение ..... КонецПопытки; Так вроде обрамляется код попыткой? |
|||||||
|
14
vicof
04.05.26
✎
11:05
|
(10) Скорей всего ты не у того объекта видывремени смотришь.
Давай базу и говори, где смотреть, посмотрю. |
|||||||
|
15
Гена
гуру
04.05.26
✎
11:10
|
(14) Зачем базу. Сейчас оформлю в расширение и скину.
Только они у меня почему-то потом только через конфигуратор вносятся. В режиме предприятия никак. Ну и шут с ним ) |
|||||||
|
16
Гена
гуру
04.05.26
✎
12:34
|
(14) Послал.
Просто в любой базе ЗУП, КА, ЕРП надо один раз: 1. Рис.1 добавить новый показатель 2. Рис.2 Завести изменение оплаты всем получающим длинные премии Всё. Дальше используйте этот показатель ДоляВЧасахЗаПериод в любых формулах своих начислений. Рис 3-6. Для примера завёл премию за 4 месяца
|
|||||||
|
17
DomenER
04.05.26
✎
13:06
|
(8) Если это таблица значений то "Найти()" должно работать
Если ПланВидовРасчетаТабличнаяЧасть.Начисления.ВидыВремени.Колонки.Найти("ВидВремени") Тогда //КолонкаСуществует КонецЕсли; //поправил код |
|||||||
|
18
Гена
гуру
04.05.26
✎
13:19
|
(17) Переменная не определена (ПланВидовРасчетаТабличнаяЧасть)
|
|||||||
|
19
DomenER
04.05.26
✎
14:03
|
(18) Странно. На 3м скрине в (8) написано "ПланВидовРасчетаТабличнаяЧасть"
|
|||||||
|
20
Гена
гуру
04.05.26
✎
14:05
|
(14) Да, Вы правы. Надо было просто добавить Начисление в промежутке:
СтрокаНачисления.Начисление.ВидыВремени Спасибо. Всех благодарю. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |