Имя: Пароль:
1C
 
Качественное дополнение данных в ТЧ
0 picom
 
28.10.25
11:17
Имеется табличная часть документа с данными
1. Номенклатура
2. Кол-во
3. Цена
4.
5.
...
n. Сумма

Как одним проходом, желательно, не помещая вручную всю ТЧ во временную таблицу, просчитать и заполнить новую колонку Сумма.

Одним запросом бы без переборов до или после...
1 Волшебник
 
28.10.25
11:18
Для Каждого СтрокаТЧ из ТЧ Цикл
    СтрокаТЧ.Сумма = СтрокаТЧ.Количество * СтрокаТЧ.Цена;
КонецЦикла;
2 picom
 
28.10.25
11:21
Иногда расчет значения может быть внушительным, научиться бы делать ВТ с каким-то номером строки, а затем по нему дополнять данные...
3 Garykom
 
гуру
28.10.25
11:28
(0) Эмм классика же
ТаблицаБезСумм = ТЧ.Выгрузить();
// ...
Запрос.УстановитьПараметр("ТаблицаДляВТ", ТаблицаБезСумм);
ТаблицаССуммами = Запрос.Выполнить.Выгрузить();
ТЧ.Загрузить(ТаблицаССуммами);
4 picom
 
28.10.25
11:30
(3) Да, но неизбежно надо в запросе перечислять все колонки...
5 2S
 
28.10.25
11:31
(4) шта?
6 2S
 
28.10.25
11:32
В типовых, как правило, есть функции ОМ для пересчета строк таблиц. Ищите там.
7 Web00001
 
28.10.25
11:33
>не помещая вручную всю ТЧ во временную таблицу
>Одним запросом бы без переборов до или после..

Не совсем понятно, где у тебя имеется табличная часть если ты и во временную таблицу не хочешь и в запросе хочешь одновременно
8 Ненавижу 1С
 
гуру
28.10.25
11:33
ТЧ.ДляКаждого(Стр -> Стр.Сумма = Стр.Количество*Стр.Цена);

правда это не 1С
9 Garykom
 
гуру
28.10.25
11:36
(4) Если количество строк не меняется можно использовать ТЧ.ЗагрузитьКолонку()
10 picom
 
28.10.25
11:36
(7) хочу во временную, что бы не все колонки потом перечислять, как в (2) бы
11 picom
 
28.10.25
11:37
(9) Норм, пошёл пробовать. Спасибо.
12 Web00001
 
28.10.25
11:40
(4)Не обязательно, можно выгрузить\загрузить одну колонку - с результатом. Но в остальном, ты думаешь, что система выгружая\загружая каким-то чудесным образом транспортирует данные, не перебирая значения?
13 Garykom
 
гуру
28.10.25
11:39
Имхо тут нахрен не нужны запросы как правильно написано еще в (1)
Зачем пытаться сделать все через одно странное место?
Вместо простого кода?
14 Web00001
 
28.10.25
11:42
(13)+1 все модули расчета строк табличных частей, в типовых написаны без использования запросов.

Вера в магию "Выгрузить\загрузить"
Выгрузить\загрузить работает быстро, а перебор значений медленно. Почему, не спрашивайте. Просто так повелось. Иногда хочется как-то извернуться, чтоб похитрее. Ну скучно же просто Цена * Количество = Сумма
15 picom
 
28.10.25
11:43
(13) Иногда для расчетов нужен запрос, в этом случае он будет один.
16 Garykom
 
гуру
28.10.25
11:46
(15) Часто есть смысл делать запросы в цикле
Потому что тупо так проще и нет смысла гнаться за ненужным быстродействием
17 mikecool
 
28.10.25
12:43
прочитал ветку и вспомнил Алису и гусеницу...
извиняюсь за ОФФ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший