|
ЗУП. Новый показатель НормаЧасовЗаПериод. Как всегда плутаю в трёх соснах ТЗ Страждущий, LienXo, pavlika, Gucci76, ryutao, ДиВаH2, denk, vicof, Доминошник, Вадя, nick86, lxndr, Мультук, Silgis, 2S, RVN, DomenER, maxar, integer, Ненавижу 1С, Гена, U4Me2, crotnn, abfm, GlRoznica, maxab72, El_Duke, zenik, Затейник, CepeLLlka, ndrv, Михаил_, trooba, DemonShinji2, unenu, Crusher, nysyssimara, _Batoo, okmail, zzz_zzz_zzz, Группа неравнодушных, PLUT, Гипервизор, Fish, alexis_nov, Krendel, Web00001, fbear
| ☑ | ||||||
|---|---|---|---|---|---|---|---|---|
|
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) Да, Вы правы. Надо было просто добавить Начисление в промежутке:
СтрокаНачисления.Начисление.ВидыВремени Спасибо. Всех благодарю. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |