Имя: Пароль:
1C
1С v8
посчитать сумму выбранных строк в регистре сведений
0 lucifer
 
02.08.12
16:31
в форме списка регистра сведений пишу такой код

&Насервере
Функция ПолучитьСумму(КлючЗаписи)
   МЗ = РегистрыСведений.Зарп_Движение.СоздатьНаборЗаписей();
   МЗ.Отбор.регистратор.установить(Регистратор);
   МЗ.Прочитать();
   Возврат МЗ[0].Сумма; // в таком случаи вернется сумма всегда первой строки    
КонецФункции


&НаКлиенте
Процедура Сумма(Команда)
   Строки = Элементы.Список.ВыделенныеСтроки;
   Сумма = 0;
   Для каждого Строка из Строки Цикл
       Сумма = Сумма + ПолучитьСумму(Строка);    
   КонецЦикла;
КонецПроцедуры

как бы получить сумму именно выделенной строки?
1 Mort
 
02.08.12
16:35
У тебя уже есть на клиенте эти значения. Зачем на сервер лезть?
2 lucifer
 
02.08.12
16:36
(1) нет на клиенте ничего, на клиенте РегистрСведенийКлючЗаписи а как из него вытащить сумму?!
3 Kashemir
 
02.08.12
16:41
&Насервере
Функция ПолучитьСумму(КлючЗаписи)
   Запрос = Новый Запрос("ВЫБРАТЬ
                         |    СУММА(РС.Сумма) КАК Сумма
                         |ИЗ
                         |    РегистрСведений.Зарп_Движение КАК РС
                         |ГДЕ
                         |    РС.Регистратор = &Регистратор");
   Запрос.УстановитьПараметр("Регистратор", КлючЗаписи);
   Выборка = Запрос.Выполнить().Выбрать();
   Возврат ?(Выборка.Следующий(),  Выборка.Сумма, 0);
КонецФункции
4 Mort
 
02.08.12
16:41
ДанныеСтроки()
5 lucifer
 
02.08.12
16:43
(4) как использовать?
6 Mort
 
02.08.12
16:44
(5) Найти в СП, распечатать и курить до просветления.
7 lucifer
 
02.08.12
16:45
(3) КлючЗаписи - это не регистратор
8 lucifer
 
02.08.12
16:45
+ (7) КлючЗаписи - это РегистрСведенийКлючЗаписи
9 Kashemir
 
02.08.12
16:46
(7) Тогда твой пример функции не корректен.
10 lucifer
 
02.08.12
16:46
(6) а ничего если у меня список это не таблица а динамическийсписок ?
11 Kashemir
 
02.08.12
16:47
(8) Собрать свое условие отбора по ключу для запроса тоже не проблема.
12 lucifer
 
02.08.12
16:47
(9) моя ф-я работает, значение возвращается, только не той строки
13 Mort
 
02.08.12
16:47
(10) главное - не боятся. И всё получится.
14 Mort
 
02.08.12
16:47
+(13) боятЬся
15 lucifer
 
02.08.12
16:48
(3) к тому же таким отбором выберутся все записи регистратора, а мне этого не нужно
16 Kashemir
 
02.08.12
16:48
(12) В контексте (8) твоя не может работать. Она использует для отбора некий регистратор и забивает на параметр ключа.
17 Kashemir
 
02.08.12
16:49
Ааа понял. Так Морт тебе все по делу написал.
18 lucifer
 
02.08.12
16:50
(14) Процедура или функция с указанным именем не определена (ДанныеСтроки)
использую на клиенте
19 Kashemir
 
02.08.12
16:50
(18) Наверно потому что это не процедура и не функция.
20 lucifer
 
02.08.12
16:51
(17) да, КлючЗаписи я не придумал как прикрутить, поэтому в примере я его не использую
21 Kashemir
 
02.08.12
16:51
(19) Хотя вру
ТаблицаФормы.ДанныеСтроки (FormTable.RowData)
ТаблицаФормы (FormTable)
ДанныеСтроки (RowData)
Синтаксис:

ДанныеСтроки(<Строка>)
Параметры:

<Строка> (обязательный)

Тип: Произвольный.
Строка таблицы, данные которой необходимо получить. Тип параметра зависит от типа редактируемого значения.
Возвращаемое значение:

Тип: ДанныеФормыСтруктура; ДанныеФормыЭлементДерева; ДанныеФормыЭлементКоллекции.
Для таблиц, связанных с разными типами данных, тип возращаемого значения данного метода может различаться:
Для динамического списка тип свойства - ДанныеФормыСтруктура;
Для дерева значений - ДанныеФормыЭлементДерева;
Для остальных (таблица значений, табличные части и др.) - ДанныеФормыЭлементКоллекции.
Описание:

Возвращает значение, содержащее данные указанной строки.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
22 lucifer
 
02.08.12
16:54
все просто оказаласть )))
Mort спасибо.
23 lucifer
 
02.08.12
16:57
Kashemir и тебе спасибо )
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн