Имя: Пароль:
1C
 
ОбщаяСумма документа 1с8.3 УПП
,
0 Casper211
 
20.04.16
10:37
Доброе утро!
У меня есть 4 закладки на форме, в каждой есть табличное поле - тип ДЗ. Мне нужно посчитать общую сумму документа по этим таблицам. я посчитал для 1:

мТекущаяСтрока.Сумма =мТекущаяСтрока.Количество*мТекущаяСтрока.Цена;
    СформироватьИтогиГруппДерева(ДеревоЗапросов1);
    ОбщаяСумма = 0;
    Для Каждого СтрокаДерева Из ДеревоЗапросов1.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    ЭлементыФормы.СтатусСтрока.Заголовок = строка(ОбщаяСумма) + " "+ "грн.";

А как это сделать для всех? Надо считать для каждой и добавлять?
Спасибо!
1 FIXXXL
 
20.04.16
10:38
сделай реквизит формы
изменяй его при изменении любой ТЧ
2 Casper211
 
20.04.16
10:41
(1) ОбщаяСумма - есть реквизит
просто добавлять к ней из любой ТЧ? я правильно понимаю?)
3 FIXXXL
 
20.04.16
10:43
(2) добавлять, удалять
в общем пересчитывать при изменении данных ТЧ
одновременно в нескольких ТЧ данные же не меняют?
4 Casper211
 
20.04.16
10:44
(3) да, меняют
5 FIXXXL
 
20.04.16
10:45
(4) в одном документе одномоментно в нескольких ТЧ?
6 Casper211
 
20.04.16
10:48
(5) не одновременно. По очереди)
7 Casper211
 
20.04.16
10:49
(5) неверно прочел
8 FIXXXL
 
20.04.16
11:07
(7) для простоты можешь завести реквизит суммы для каждой ТЧ, а потом их просто суммировать, дергая одну процедуру
т.е. ПриИзменении каждой ТЧ считаешь-пишешь сумму в свой реквизит, в конце дергаешь процедуру ОбновитьОбщуюСумму
9 Casper211
 
20.04.16
11:09
(5)

мТекущаяСтрока.Сумма =мТекущаяСтрока.Количество*мТекущаяСтрока.Цена;
    ОбщаяСумма = 0;
    
    СформироватьИтогиГруппДерева(ДеревоЗапросов1);
    Для Каждого СтрокаДерева Из ДеревоЗапросов1.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов2);
    Для Каждого СтрокаДерева Из ДеревоЗапросов2.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов3);
    Для Каждого СтрокаДерева Из ДеревоЗапросов3.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов4);
    Для Каждого СтрокаДерева Из ДеревоЗапросов4.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    ЭлементыФормы.СтатусСтрока.Заголовок = строка(ОбщаяСумма) + " "+ "грн.";
10 Casper211
 
20.04.16
11:13
(8) а так?

Процедура ДеревоЗапросовСтраница1КоличествоПриИзменении(Элемент)
    мТекущаяСтрока.Сумма =мТекущаяСтрока.Количество*мТекущаяСтрока.Цена;
    ОбщаяСумма = 0;
    ОбновитьОбщуюСумму();
    ЭлементыФормы.СтатусСтрока.Заголовок = строка(ОбщаяСумма);
КонецПроцедуры
11 Casper211
 
20.04.16
11:13
Процедура ОбновитьОбщуюСумму()Экспорт

    СформироватьИтогиГруппДерева(ДеревоЗапросов1);
    Для Каждого СтрокаДерева Из ДеревоЗапросов1.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов2);
    Для Каждого СтрокаДерева Из ДеревоЗапросов2.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов3);
    Для Каждого СтрокаДерева Из ДеревоЗапросов3.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;
    СформироватьИтогиГруппДерева(ДеревоЗапросов4);
    Для Каждого СтрокаДерева Из ДеревоЗапросов4.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСумма = ОбщаяСумма + СумаСтроки;
    КонецЦикла;

КонецПроцедуры
12 Casper211
 
20.04.16
11:15
или можно как-то оптимизировать?
13 FIXXXL
 
20.04.16
11:33
(12) завести на каждую ТЧ свою СуммуТЧ
при изменении любой ТЧ сначала обновляешь реквизит СуммаТЧ, потом суммой всех реквизитов СуммаТЧ обновляешь ОбщаяСумма
чтоб каждый раз не пересчитывать суммы по каждой ТЧ
14 Casper211
 
20.04.16
14:11
(13) спасибо
15 Casper211
 
20.04.16
15:48
(13) Сделал

Процедура ДеревоЗапросовСтраница1ЦенаПриИзменении(Элемент)
    мТекущаяСтрока.Сумма =мТекущаяСтрока.Количество*Элемент.Значение;
    Если НомерДерева = "ДеревоЗапросов1"  Тогда
        ОбщаяСуммаПричеп = 0;
        СформироватьИтогиГруппДерева(ДеревоЗапросов1);
        Для Каждого СтрокаДерева Из ДеревоЗапросов1.Строки Цикл
            СумаСтроки = СтрокаДерева.Сумма;
            ОбщаяСуммаПричеп = ОбщаяСуммаПричеп + СумаСтроки;
        КонецЦикла;
    КонецЕсли;
    Если НомерДерева = "ДеревоЗапросов2"  Тогда
        ОбщаяСуммаКаркас= 0;
        СформироватьИтогиГруппДерева(ДеревоЗапросов2);
        Для Каждого СтрокаДерева Из ДеревоЗапросов2.Строки Цикл
            СумаСтроки = СтрокаДерева.Сумма;
            ОбщаяСуммаКаркас = ОбщаяСуммаКаркас + СумаСтроки;
        КонецЦикла;
    КонецЕсли;
    Если НомерДерева = "ДеревоЗапросов3"  Тогда
        ОбщаяСуммаТент = 0;
        СформироватьИтогиГруппДерева(ДеревоЗапросов3);
        Для Каждого СтрокаДерева Из ДеревоЗапросов3.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСуммаТент = ОбщаяСуммаТент + СумаСтроки;
        КонецЦикла;
    КонецЕсли;
    Если НомерДерева = "ДеревоЗапросов4"  Тогда
        ОбщаяСуммаАксесуари = 0;
        СформироватьИтогиГруппДерева(ДеревоЗапросов4);
        Для Каждого СтрокаДерева Из ДеревоЗапросов4.Строки Цикл
        СумаСтроки = СтрокаДерева.Сумма;
        ОбщаяСуммаАксесуари = ОбщаяСуммаАксесуари + СумаСтроки;
        КонецЦикла;
    КонецЕсли;


    ОбновитьОбщуюСумму();    
КонецПроцедуры
16 Casper211
 
20.04.16
15:49
Процедура ОбновитьОбщуюСумму()Экспорт
    ОбщаяСумма = 0;
    ОбщаяСумма =ОбщаяСуммаПричеп + ОбщаяСуммаКаркас + ОбщаяСуммаТент + ОбщаяСуммаАксесуари;
    ЭлементыФормы.СтатусСтрока.Заголовок = строка(ОбщаяСумма);
КонецПроцедуры