![]() |
|
КТУ рабочих в табличной части документа | ☑ | ||
---|---|---|---|---|
0
JuixyJes
27.04.19
✎
19:17
|
Имеется код, заполняющий ТЧ, и запрос в этом коде, отвечающий за заполнение строки в этой ТЧ, но при прохождении цикла, по идее, должны заполняться новые строки тч значениями. Но заполняется лишь последнее значение полученное в цикле, помогите пожалуйста, что я сделала не так?
Выб = Документы.ОтчетСотрудника.Выбрать(); Наряд_КТУ.Очистить(); Наряд_Работа.Очистить(); Пока Выб.Следующий() Цикл Если Ссылка = Выб.Наряд Тогда Для Каждого ТекСтрокаРабота Из Выб.Работа Цикл НоваяСтрока = Наряд_КТУ.Добавить(); НоваяСтрока.Сотрудник = Выб.Сотрудник; НоваяСтрока.Продукция = ТекСтрокаРабота.Продукция; НоваяСтрока.Размер_Формат = ТекСтрокаРабота.РазмерФормат; НоваяСтрока.Технология = ТекСтрокаРабота.Технология; НоваяСтрока.Времени = ТекСтрокаРабота.Времени; НоваяСтрока.КТУ_План = 1; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОтчетСотрудника.Сотрудник КАК Сотрудник, | ОтчетСотрудникаРабота.Продукция КАК Продукция, | ОтчетСотрудникаРабота.Технология КАК Технология, | ОтчетСотрудникаРабота.Времени КАК Времени |ИЗ | Документ.ОтчетСотрудника.Работа КАК ОтчетСотрудникаРабота | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетСотрудника КАК ОтчетСотрудника | ПО ОтчетСотрудникаРабота.Ссылка = ОтчетСотрудника.Ссылка |ГДЕ | ОтчетСотрудника.Наряд = &Наряд | И ОтчетСотрудникаРабота.Ссылка.Наряд = &Наряд | И ОтчетСотрудникаРабота.Технология = &Технология | И ОтчетСотрудника.Работа.Технология = &Технология"; Запрос.УстановитьПараметр("Наряд", Ссылка); Запрос.УстановитьПараметр("Технология", ТекСтрокаРабота.Технология); РЗ = Запрос.Выполнить().Выгрузить(); Если Рз.Количество() = 1 Тогда НоваяСтрока.КТУ_Факт = 1; Иначе Времени = 0 ; Для ИИ = 1 по РЗ.Количество() Цикл Времени = Времени + РЗ[ИИ-1].Времени; КонецЦикла; Для ИИ = 1 по РЗ.Количество() Цикл НоваяСтрока.КТУ_Факт = РЗ[ИИ-1].Времени/Времени; КонецЦикла; КонецЕсли; НоваяСтрока = Наряд_Работа.Добавить(); НоваяСтрока.Сотрудник = Выб.Сотрудник; НоваяСтрока.Времени = ТекСтрокаРабота.Времени; НоваяСтрока.Продукция = ТекСтрокаРабота.Продукция; НоваяСтрока.Технология = ТекСтрокаРабота.Технология; КонецЦикла; КонецЕсли; КонецЦикла; |
|||
1
hhhh
27.04.19
✎
19:41
|
попроще лучше
Запрос.Текст = "ВЫБРАТЬ | ОтчетСотрудникаРабота.Ссылка.Сотрудник КАК Сотрудник, | ОтчетСотрудникаРабота.Продукция КАК Продукция, | ОтчетСотрудникаРабота.Технология КАК Технология, | ОтчетСотрудникаРабота.Времени КАК Времени |ИЗ | Документ.ОтчетСотрудника.Работа КАК ОтчетСотрудникаРабота |ГДЕ | ОтчетСотрудникаРабота.Ссылка.Наряд = &Наряд | И ОтчетСотрудникаРабота.Технология = &Технология |
|||
2
JuixyJes
27.04.19
✎
20:09
|
(1) Я не прошу мне запрос переделать. Мне нужно лишь узнать, как исправить то, что я сделала не так.
|
|||
3
JuixyJes
27.04.19
✎
20:14
|
РЗ = Запрос.Выполнить().Выгрузить();
Если Рз.Количество() = 1 Тогда НоваяСтрока.КТУ_Факт = 1; Иначе Времени = 0 ; Для ИИ = 1 по РЗ.Количество() Цикл Времени = Времени + РЗ[ИИ-1].Времени; КонецЦикла; Для ИИ = 1 по РЗ.Количество() Цикл НоваяСтрока.КТУ_Факт = РЗ[ИИ-1].Времени/Времени; КонецЦикла; КонецЕсли; Конкретно вот в этом моменте |
|||
4
HawkEye
27.04.19
✎
20:22
|
(0)
вот ты создала новую строку: НоваяСтрока = Наряд_КТУ.Добавить(); дальше: Времени = 0 ; Для ИИ = 1 по РЗ.Количество() Цикл Времени = Времени + РЗ[ИИ-1].Времени; КонецЦикла; Для ИИ = 1 по РЗ.Количество() Цикл НоваяСтрока.КТУ_Факт = РЗ[ИИ-1].Времени/Времени; КонецЦикла; 1. зачем два раза цикл, ты не знаешь про Итог()? 2. ошибка во втором цикле: НоваяСтрока.КТУ_Факт = РЗ[ИИ-1].Времени/Времени; - у тебя одно и тоже значение КТУ_Факт заполняется в цикле, после выполнения цикла в КТУ_Факт будет ПОСЛЕДНЕЕ... т.е. весь твой второй цикл можно заменить на одну строку: НоваяСтрока.КТУ_Факт = РЗ[РЗ.Количество()-1].Времени/Времени |
|||
5
JuixyJes
27.04.19
✎
20:25
|
(4) А как эту ошибку исправить?
|
|||
6
JuixyJes
27.04.19
✎
20:26
|
(4) Отладчик показывает разные значения в цикле, как мне их тогда записать?
|
|||
7
HawkEye
27.04.19
✎
20:28
|
(5) откуда я знаю что ты хочешь добиться ))))
|
|||
8
HawkEye
27.04.19
✎
20:29
|
(6) куда записать то?!
ты создала новую строку у неё одна колонка КТУ_Факт - в нее можно записать только одно значение, разве это не логично? |
|||
9
JuixyJes
27.04.19
✎
20:30
|
(8) В колонке КТУ_Факт есть некоторое количество строк, которые заполняются.
|
|||
10
HawkEye
27.04.19
✎
20:32
|
(9) есть, но ты то в контексте ОДНОЙ строки работаешь...
НоваяСтрока = Наряд_КТУ.Добавить(); - что эта строчка делает по твоему? ... НоваяСтрока.КТУ_Факт = "ХХХ" - а эта, как ты считаешь, куда запишет значение "ХХХ"? |
|||
11
JuixyJes
27.04.19
✎
20:36
|
НоваяСтрока = Наряд_КТУ.Добавить(); добавляет строку в ТЧ, НоваяСтрока.КТУ_Факт = "ХХХ" заполнит во все строки ТЧ "ХХХ"
|
|||
12
HawkEye
27.04.19
✎
20:36
|
(11) НоваяСтрока.КТУ_Факт = "ХХХ" заполнит во все строки ТЧ "ХХХ" - не во все, а в ДОБАВЛЕННУЮ....
|
|||
13
JuixyJes
27.04.19
✎
20:38
|
(12) Ну так в цикле же и запрос висит, который в цикле и заполняет , нет???
|
|||
14
HawkEye
27.04.19
✎
20:38
|
(11) и где у тебя логика, ты в ЦИКЛЕ добавления новых строк, хочешь заполнить все строки? строк то нет еще, что ты будешь заполнять?
|
|||
15
HawkEye
27.04.19
✎
20:40
|
(13) запрос в цикле - это вообще зло, не надо так делать...
а по поводу того, что он у тебя заполняет.... так текущую строку и заполняет... обращаясь через НоваяСтрока.ХХХХХ - ты обращаешься к колонке ХХХХХ ТЕКУЩЕЙ строки, т.к. НоваяСтрока - это СТРОКА... |
|||
16
JuixyJes
27.04.19
✎
20:45
|
(15) Так, я совсем запуталась в ваших обьяснениях. Допустим, я работаю с одной строкой, но для каждой новой строки условия повторяются, мне как то из цикла вынести нужно заполнение строки данными?
|
|||
17
HawkEye
27.04.19
✎
20:56
|
(16) создавая строку - заполняй значение только для этой строки.
или сначала создай все строки - потом заполняй колонку... |
|||
18
JuixyJes
27.04.19
✎
21:02
|
(17) Тоесть я могу создать все строки, а потом заполнить уже КТУ_Факт, используя тот запрос и все из него вытекающее, правильно понимаю?
|
|||
19
HawkEye
27.04.19
✎
21:19
|
(18) ну можно и так...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |