Имя: Пароль:
1C
1С v8
Заполнение данных в строку ТЧ
,
0 JuixyJes
 
28.04.19
13:51
Если Рз.Количество() = 1 Тогда
                    НоваяСтрока.КТУ_Факт = 1;
                Иначе
                    Времени = 0 ;
                    КТУ_Факт = 0;
                    Для ИИ = 1 по РЗ.Количество() Цикл
                        
                        Времени = Времени + РЗ[ИИ-1].Времени;
                        
                    КонецЦикла;
                    Для ИИ = 1 по РЗ.Количество() Цикл
                        КТУ_Факт = РЗ[ИИ-1].Времени/Времени;
                        Сообщить(КТУ_Факт);
                                            
                    КонецЦикла;
                КонецЕсли;


Как мне заполнить строки значениями, которые высчитываются в КТУ_Факт?
1 Гобсек
 
28.04.19
14:04
КТУ_Факт - это столбец РЗ?
Если да, то сделать в цикле:
  РЗ[ИИ-1].КТУ_Факт = РЗ[ИИ-1].Времени/Времени;
2 Гобсек
 
28.04.19
14:08
(1) +
еще добавлю, что в этом случае надо бы добавить пару строк кода для учета погрешности округления, чтобы итог КТУ_Факт по столбцу был равен 1
3 Dimeric
 
28.04.19
14:52
Можно как вариант записать в "КТУ_Факт" Таблицу, а потом пройтись по ней циклом
4 JuixyJes
 
28.04.19
15:05
(1) КТУ_Факт это столбец Таблицы Наряд_КТУ
5 HawkEye
 
28.04.19
15:19
(0) Наряд_КТУ[ИИ-1].КТУ_Факт  = РЗ[ИИ-1].Времени/Времени;
6 HawkEye
 
28.04.19
15:22
+(5) вот это:
7 HawkEye
 
28.04.19
15:23
Для ИИ = 1 по РЗ.Количество() Цикл
Времени = Времени + РЗ[ИИ-1].Времени;
КонецЦикла;

меняется на:

Времени = РЗ.Итог("Времени")
8 JuixyJes
 
28.04.19
15:45
(5) Наряд_КТУ это табличная часть документа, я разве смогу обратиться к ней так?
    НКТУ = ЭлементыФормы.Наряд_КТУ.ТекущиеДанные;
    НКТУ[ИИ-1].КТУ_Факт = РЗ[ИИ-1].Времени/Времени
    Выдает ошибку "Получение элемента по индексу для значения не определено"
9 JuixyJes
 
28.04.19
15:51
Обратилась через Наряд_КТУ[ИИ-1].КТУ_Факт  = РЗ[ИИ-1].Времени/Времени;

Возникла проблема с ошибкой "Индекс находится за границами массива"
10 HawkEye
 
28.04.19
16:04
(9) значит нет строки...
11 JuixyJes
 
28.04.19
16:16
(10) ну, не успевает заполняться строка, не смотря на то, что кту в строке заполняется в последнюю очередь
12 HawkEye
 
28.04.19
16:24
(11) потому что не надо пихать НКТУ[ИИ-1].КТУ_Факт = РЗ[ИИ-1].Времени/Времен в цикл создания строк
13 JuixyJes
 
28.04.19
16:45
(12) Это и так вне цикла создания строк находится
14 hhhh
 
28.04.19
16:49
(13) это внутри цикла
15 JuixyJes
 
28.04.19
16:51
(14) я убирала этот код вместе с прилегающим к нему запросом из цикла создания строк, тогда мне не давало обращаться через индекс
16 Garykom
 
гуру
28.04.19
17:01
(0) В наряде/задаче/работе с несколькими сотрудниками.
Надо высчитать КТУ каждого участника пропорционально от его затрат времени?
17 hhhh
 
28.04.19
17:26
(15) сделайте отдельную табличку: Сотрудник-КТУ, потом уже когда начнете создание строк, будете по сотруднику вставлять в наряд нужный КТУ.
18 HawkEye
 
28.04.19
17:34
(15) показывай текущий код.... кто знает чего ты там понаписала ))
19 JuixyJes
 
28.04.19
19:38
(16) Да, именно так.
20 JuixyJes
 
28.04.19
19:51
(17) а как мне это сделать, мозги уже в кашу превращаются по тихоньку
21 Garykom
 
гуру
28.04.19
20:08
(19) Примерно так, но не сильно поможет


//...
РЗ = Запрос.Выполнить().Выгрузить();
ОбщееВремя = РЗ.Итог("Времени");
Для Каждого ТекСтр Из РЗ Цикл
  ТекСтр.КТУ_Факт = ТекСтр.Времени/ОбщееВремя;
КонецЦикла;
//...