|
ДанныеФормаКоллекция. ЗУП. | ☑ | ||
---|---|---|---|---|
0
Target1025
11.06.21
✎
12:55
|
Вызывается внешняя дополнительная обработка табличной части документа Премия, которая должна распихать результаты расчета в таблицу НАчисления, а распределение по долям по территориями в таблицу РаспределениеПоТерриториямУсловиямТруда. Код такой:
ПремияОбъект = ВладелецФормы.Объект; Для Каждого Стр из ПремияОбъект.Начисления Цикл Стр.Результат = МассивДанных[Стр.НомерСтроки-1]; НомерТекСтроки = Стр.номерСтроки; Отбор = новый Структура; Строки = ПремияОбъект.РаспределениеПоТерриториямУсловиямТруда.НайтиСтроки(Отбор); Если Строки.Количество() > 0 Тогда МаксДоля = 0; МаксРяд = 0; Итог = 0; Для Каждого Стр2 Из Строки Цикл Стр2.результат = МассивДанных[Стр.НомерСтроки-1]*Стр2.ДоляРаспределения; Итог = Итог + Стр2.результат; Если МаксДоля < Стр2.ДоляРаспределения Тогда МаксДоля = Стр2.ДоляРаспределения; МаксРяд = Стр2; КонецЕсли; КонецЦикла; Дельта = Стр.Результат - Итог; МаксРяд.Результат = МаксРяд.Результат + Дельта; Сообщить("Максряд = "+ МаксРяд.Результат); КонецЕсли; Конеццикла; Начисления заполняется, а вот РаспределениеПоТерриториямУсловиямТруда уже - нет. Сообщить("Максряд = "+ МаксРяд.Результат) = всегда равно нулю, как и остальные значения таблицы. Может кто-то ошибку видит в работе с данными формы? |
|||
1
Momus
11.06.21
✎
13:22
|
Отбор = новый Структура;
Строки = ПремияОбъект.РаспределениеПоТерриториямУсловиямТруда.НайтиСтроки(Отбор); Хороший отбор |
|||
2
Target1025
11.06.21
✎
13:23
|
(0)(1) Там в коде строка с заполнением отбора пропущена.
ПремияОбъект = ВладелецФормы.Объект; Для Каждого Стр из ПремияОбъект.Начисления Цикл Стр.Результат = МассивДанных[Стр.НомерСтроки-1]; НомерТекСтроки = Стр.номерСтроки; Отбор = новый Структура; Сообщить("НомерТекСтроки = "+НомерТекСтроки ); Отбор.Вставить("ИдентификаторСтроки",НомерТекСтроки); Строки = ПремияОбъект.РаспределениеПоТерриториямУсловиямТруда.НайтиСтроки(Отбор); Если Строки.Количество() > 0 Тогда МаксДоля = 0; МаксРяд = 0; Итог = 0; Для Каждого Стр2 Из Строки Цикл Сообщить("1. Стр2.результат = " + Стр2.результат); Стр2.результат = МассивДанных[Стр.НомерСтроки-1]*Стр2.ДоляРаспределения; Итог = Итог + Стр2.результат; Если МаксДоля < Стр2.ДоляРаспределения Тогда МаксДоля = Стр2.ДоляРаспределения; МаксРяд = Стр2; КонецЕсли; Сообщить("2. Стр2.результат = " + Стр2.результат); КонецЦикла; Дельта = Стр.Результат - Итог; Сообщить("Дельта = " + Дельта ); МаксРяд.Результат = МаксРяд.Результат + Дельта; Сообщить("Максряд.результат = "+ МаксРяд.Результат); КонецЕсли; Конеццикла; ВладелецФормы.Записать(); Вывод проги (данные левые): НомерТекСтроки = 1 1. Стр2.результат = 0 2. Стр2.результат = 3 051 Дельта = 0 Максряд.результат = 3 051 // тут распределять не надо, доля = 1 НомерТекСтроки = 2 1. Стр2.результат = 0 2. Стр2.результат = 4 616,86 1. Стр2.результат = 0 2. Стр2.результат = 12 696,14 Дельта = 0 Максряд.результат = 12 696,14 // распределил, сделал корректировку копеек самой большой доли Ну и как бы на этом все! Если таблица начислений заполнена, то вот таблица РаспределениеПоТерриториямУсловиямТруда имеет нулевые значения (если смотреть из одкумента). |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |