Имя: Пароль:
1C
 
Подсчет суммы справочника
0 АлексейИзТопок
 
09.09.09
05:56
Такая проблема. Есть справочник.
Договор Сумма
№1      500
№3      300
№2      200

Допустим, пользователь сделал отбор по справчонику, и у него в результате отбора выведены следующие строки
№3      300
№2      200

Как можно посчитать программно сумму отобранных договоров?
Сейчас они выгружают список в Ексель и там счиатеют сумму. А как в 1С это реализовать?
Я могу подсчитать сумму всех договоров через запрос, но как посчитать сумму отобранных интерактивно договоров???
1 Shurjk
 
09.09.09
05:57
(0) Пересчитывать учитывая установленные отборы
2 Vbif
 
09.09.09
06:22
(0) тебе нужно сделать это в форме спрвочника?
3 АлексейИзТопок
 
09.09.09
06:39
Мне нужно, чтобы пользователь от меня отстал :-)
А пользователь отстанет, если он узнает сумму всех договоров, отобранных им в справочнике методом "Установить отбор...".
4 АлексейИзТопок
 
09.09.09
06:45
Хотелось бы:
- или
1.
для каждого текстрока из списка справочника цикл
    общсумма = общсумма + текстрока.сумма;
конеццикла;

- или
2.

Запрос
выбрать
   ссылка как договор
из справчоника договоров
где отбор = отбор

запрос.параметр.отбор = элементыформы.список справочника.отбор

- или
3. итог(элементыформы.список справочника.сумма);
5 АлексейИзТопок
 
09.09.09
06:52
О чем тока не пишут, о стиральных машинах, футболе.... А у меня горе.
6 АлексейИзТопок
 
09.09.09
06:52
помогите, людим добрые
7 Rie
 
09.09.09
06:59
(0) А как они выгружают в Excel?
8 Vbif
 
09.09.09
06:59
(6) учти что европа еще спит :)
9 АлексейИзТопок
 
09.09.09
07:07
(7) В эксель выгружают просто. Через функцию "Вывести список" в табличный документ, сохранить копию... в экселевский файл
10 Rie
 
09.09.09
07:21
Отбор у тебя есть - возьми тот, который установлен пользователем в форме списка справочника.
Скажи Справочники.Договоры.Выбрать с этим отбором - и просуммируй.
11 Vbif
 
09.09.09
07:32
(10) что то мне кажется что не взлетит
у Спарвочник.Имя.Выбрать отбор это структура, которая может содержать только один элемент, а отбор в форме не есть такая структура
12 АлексейИзТопок
 
09.09.09
07:52
(10) (11) Во-во! Разные типы данных. Теоретически можно переделать, но это геморно, и это на случай, если ничего не поможет
13 АлексейИзТопок
 
09.09.09
08:34
Может Европа уже подтянулась??? Ребята помогите, Восток не помог!
14 Лирик
 
09.09.09
08:43
Возми построитель запроса (отчета) запихай в него тект запроса считающег сумму и отбор псе это помести в отдельную процедуру (функцию) и вызывай эту процедуру функцию "при получении данных" таб. полем списка справочника
15 Лирик
 
09.09.09
08:46
(14) псе - все
Ну и естественно должно быть в процедуре
получение запроса из построителя, его выполнение и обработка результата (показ в подвале формы например)
16 АлексейИзТопок
 
09.09.09
09:38
(15) Попробуем-с
17 Mitriy
 
09.09.09
09:45
ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.СправочникСписок.Значение);
       Результат = ПостроительЗапроса.Результат;
ТЗ = Результат.Выгрузить();
Выборка = Результат.Выбрать();
18 АлексейИзТопок
 
09.09.09
12:55
Сделал. В итоге получилось так.    Отборы = новый ПостроительОтчета();
   Отборы.ИсточникДанных = Новый ОписаниеИсточникаДанных(ЭлементыФормы.СправочникСписок.Значение);
   Результат = Отборы.Результат.Выбрать();
   
   нужныедоговоры = новый списокзначений();
   
   пока результат.Следующий() цикл
       нужныедоговоры.Добавить(результат.ссылка);
   конеццикла;
   
   
   ПостроительОтчетаОтчет = новый Запрос();
   
   ПостроительОтчетаОтчет.Текст =
   "ВЫБРАТЬ
   |    Договоры.Ссылка,
   |    Договоры.Представление,
   |    СрокИсполненияИСуммаДоговоровСрезПоследних.СуммаВРублях КАК СуммаДоговора
   |ИЗ
   |    Справочник.Договоры КАК Договоры
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СрокИсполненияИСуммаДоговоров.СрезПоследних КАК СрокИсполненияИСуммаДоговоровСрезПоследних
   |        ПО (СрокИсполненияИСуммаДоговоровСрезПоследних.Договор.Ссылка = Договоры.Ссылка)
   |ГДЕ
   |    Договоры.Ссылка В (&Отборы)";
   
   ПостроительОтчетаОтчет.УстановитьПараметр("Отборы",нужныедоговоры);
   сообщить(ПостроительОтчетаОтчет.Выполнить().Выгрузить().Итог("СуммаДоговора"));
Ошибка? Это не ошибка, это системная функция.