Имя: Пароль:
1C
1C 7.7
v7: Итог по столбцу табличной части!
,
0 Luffy
 
22.01.16
12:09
Ребята подскажите пожалуйста, как посчитать итог табличной части из четырех столбцов, и записать итоги в четыре поля ввода, которые располагаются ниже табличной части.

Док = СоздатьОбъект("Документ.Запрос");
Док.НайтиПоНомеру(1);
Док.НоваяСтрока();
Док.НачОстД = ПечНачОстД;
Док.ПриходД = ПечПриходД;
Док.РасходД = ПечРасходД;
Док.КончОстД = ПечКонОстД;
                  
Док.Записать();
1 DDwe
 
22.01.16
12:16
(0) "посчитать итог табличной части из четырех столбцов, и записать итоги в четыре поля ввода, которые располагаются ниже табличной части. "
2 Масянька
 
22.01.16
12:17
(1) Переверни (С) :))))))))))))
3 ДенисЧ
 
22.01.16
12:17
Продам описание метода Итог()
4 GROOVY
 
22.01.16
12:18
(3)  Ты уже раздербанил СП и постранично продаешь?
5 ДенисЧ
 
22.01.16
12:18
(4) ну дык кризис... На полный у людей денег не хватает ))
6 aka AMIGO
 
22.01.16
12:23
(0) Ну, что молчишь? Сообразил? Ответ в (3), без первых трёх слов :)
7 DDwe
 
22.01.16
12:24
(2) В вода поля четыре, ниже табличной части лежащих
Итог по столбцам четырем запиши, ты
8 aka AMIGO
 
22.01.16
12:26
(6)+ ИтогВПолеВВодаНачОстД = Док.Итог("НачОстД"); // здесь в скобко-кавычках - имя реквизита ТЧ

(7) Внезапно получились стихи :)
9 Garykom
 
гуру
22.01.16
12:31
До чего маразм дошел
Прога увольняют
И манагер молодой
Теперь его изображает...
10 Масянька
 
22.01.16
12:31
(7) Не, я о другом...
Как занять блондинку на несколько часов? Дать листок, на котором на каждой стороне написано "Переверни".
11 DDwe
 
22.01.16
12:32
(10) +100500 ))
12 aka AMIGO
 
22.01.16
12:33
(10) какая прелесть! :)
13 ДенисЧ
 
22.01.16
12:34
(10) А ты откуда знаешь? Тебе уже подсовывали?
14 Luffy
 
22.01.16
12:36
(8) Один фиг не отображается в поле ввода итог
        Док = СоздатьОбъект("Документ.Запрос");
        Док.НайтиПоНомеру(1);
    Док.НоваяСтрока();
    Док.НачОстД = ПечНачОстД;
    Док.ПриходД = ПечПриходД;
    Док.РасходД = ПечРасходД;
    Док.КончОстД = ПечКонОстД;
        СуммаН = Док.Итог("НачОстД");
    СуммаП = Док.Итог("ПриходД");                  
        СуммаР = Док.Итог("РасходД");
    СуммаК = Док.Итог("КончОстД");
    Док.Записать();
15 DDwe
 
22.01.16
12:38
(14) Твою в качель ты читать умешь?
16 DDwe
 
22.01.16
12:38
Итог(<?>)
Синтаксис:
Итог(<ИмяРеквизита>)
Назначение:
Возвращает сумму значений реквизита по всем строкам табличной части документа.
Параметры:
<ИмяРеквизита> - имя реквизита табличной части документа.
Замечание:
Метод  можно использовать только для реквизитов табличной части документов с установленным свойством 'Итог по колонке'.
17 DDwe
 
22.01.16
12:38
Что за лень, откуда вы понабежали все...
18 Масянька
 
22.01.16
12:41
(13) Каждая нормальная блондинка имеет такой листочек у себя на рабочем столе. Чем еще заниматься?
19 Luffy
 
22.01.16
12:43
(17) Нового ничего для меня не открыл/открыла, не добавляет в поле ввода итоги.
20 DDwe
 
22.01.16
12:50
(19) Всё внимательно прочитал?
21 Масянька
 
22.01.16
12:51
(19) Форму обнови.
22 Garykom
 
гуру
22.01.16
12:54
(21) А что сча есть специальная форма для падаванов? Точнее юнлингов?

А как выглядит? Цвет какой и логотипы где?
23 DDwe
 
22.01.16
12:54
А ты вообще откуда код в (14) вызываешь?
24 Luffy
 
22.01.16
12:58
(20) Да (21) галочки везде проставлены и типы соответствуют, так же как и идентификаторы. (23) Код Процедура ПечататьСтроку()
25 DDwe
 
22.01.16
13:00
(24) Издеваешься или тупишь? А, "Код Процедура ПечататьСтроку()" - где?
26 Luffy
 
22.01.16
13:01
(25) Процедура ПечатьСтроки(Запрос,Ном,НазваниеСекции,ПечТекстСтроки,ТекРасшифровка)

//    Перем Сумма;

    ПечЕд = Запрос.Номенклатура.ОсновнаяЕдиница;
    //Сумма = Число(Запрос.Номенклатура.ЕмкостьБазовойЕдиницы);
    //начальный остаток                              
    ПечНачОстС     = глФРМ(Запрос.НачОстС);              
    ПечНачОстК     = глФРМКоличество(Запрос.НачОстК,ПечЕд);        
    ПечНачОстД = ФРМКоличество(Запрос.НачОстД * Запрос.Номенклатура.ЕмкостьБазовойЕдиницы/10,ПечЕд);

    Таб.ВывестиСекцию(НазваниеСекции+"|Начало");
    
    // приходы (по операциям)
    ПриходС        = Запрос.ПриходС;
    ПриходК        = Запрос.ПриходК;                                
    ПриходД        = Запрос.ПриходД*Запрос.Номенклатура.ЕмкостьБазовойЕдиницы/10;
    ВсегоСтрок     = СписокОперДебет.РазмерСписка();
    Для СчЦикла=1 по ВсегоСтрок Цикл
        НазвОперации     = СписокОперДебет.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор();
        ТекПриходС         = Запрос.ПолучитьАтрибут(НазвОперации+"ПриходС");
        ТекПриходК         = Запрос.ПолучитьАтрибут(НазвОперации+"ПриходК");
        ТекПриходД         = Запрос.ПолучитьАтрибут(НазвОперации+"ПриходД")*Запрос.Номенклатура.ЕмкостьБазовойЕдиницы/10;
        ПриходС            = ПриходС - ТекПриходС;
        ПриходК            = ПриходК - ТекПриходК;
        ПриходД            = ПриходД - ТекПриходД;
        ПечПриходС         = глФРМ(ТекПриходС);
        ПечПриходК         = глФРМКоличество(ТекПриходК,ПечЕд);
        ПечПриходД         = ФРМКоличество(ТекПриходД,ПечЕд);
        Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход");
    КонецЦикла;                                                                
    ПечПриходС     = глФРМ(ПриходС);
    ПечПриходК     = глФРМКоличество(ПриходК,ПечЕд);
    ПечПриходД     = ФРМКоличество(ПриходД,ПечЕд);
    Таб.ПрисоединитьСекцию(НазваниеСекции+"|Приход");    
    
    // расходы (по операциям)  
    РасходС        = Запрос.РасходС;
    РасходК     = Запрос.РасходК;
    РасходД     = Запрос.РасходД*Запрос.Номенклатура.ЕмкостьБазовойЕдиницы/10;
    РасходОборот     = Запрос.РасходВыручка;
    ВсегоСтрок     = СписокОперКредит.РазмерСписка();
    Для СчЦикла=1 по ВсегоСтрок Цикл
        НазвОперации     = СписокОперКредит.ПолучитьЗначение(ВсегоСтрок - СчЦикла + 1).Идентификатор();
        ТекРасходС         = Запрос.ПолучитьАтрибут(НазвОперации+"РасходС");
        ТекРасходК        = Запрос.ПолучитьАтрибут(НазвОперации+"РасходК");
        ТекРасходД        = Запрос.ПолучитьАтрибут(НазвОперации+"РасходД");
        ТекРасходОборот        = Запрос.ПолучитьАтрибут(НазвОперации+"РасходВыручка");
        РасходС            = РасходС - ТекРасходС;
        РасходК            = РасходК - ТекРасходК;
        РасходД            = РасходД - ТекРасходД;
        РасходОборот    = РасходОборот - ТекРасходОборот;
        ПечРасходС         = глФРМ(ТекРасходС);
        ПечРасходК         = глФРМКоличество(ТекРасходК,ПечЕд);
        ПечРасходД         = ФРМКоличество(ТекРасходД,ПечЕд);
        ПечРасходОборот = глФРМ(ТекРасходОборот);
        Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход");
    КонецЦикла;
    ПечРасходС     = глФРМ(РасходС);
    ПечРасходК     = глФРМКоличество(РасходК,ПечЕд);
    ПечРасходД     = ФРМКоличество(РасходД,ПечЕд);
    ПечРасходОборот = глФРМ(РасходОборот);
    Таб.ПрисоединитьСекцию(НазваниеСекции+"|Расход");
    
    // конечный остаток
    ПечКонОстС     = глФРМ(Запрос.КонОстС);      
    ПечКонОстК     = глФРМКоличество(Запрос.КонОстК,ПечЕд);      
    ПечКонОстД     = ФРМКоличество(Запрос.КонОстД * Запрос.Номенклатура.ЕмкостьБазовойЕдиницы/10,ПечЕд);      
    Таб.ПрисоединитьСекцию(НазваниеСекции+"|КонечныйОстаток");
    
    // Создадим документ в котором будут хранится итоги по далам, для вывода их в отчет
    Док = СоздатьОбъект("Документ.Запрос");
    Док.НайтиПоНомеру(1);
    Док.НоваяСтрока();
    Док.НачОстД = ПечНачОстД;
    Док.ПриходД = ПечПриходД;
    Док.РасходД = ПечРасходД;
    Док.КончОстД = ПечКонОстД;
    СуммаН = Док.ПолучитьАтрибут("СуммаН");
    СуммаП = Док.ПолучитьАтрибут("СуммаП");  
    СуммаР = Док.ПолучитьАтрибут("СуммаР");
    СуммаК = Док.ПолучитьАтрибут("СуммаК");
    СуммаН = Док.Итог("НачОстД");
    СуммаП = Док.Итог("ПриходД");                  
    СуммаР = Док.Итог("РасходД");
    СуммаК = Док.Итог("КончОстД");
    Док.Записать();

      глОживить(1);

КонецПроцедуры
27 Builder
 
22.01.16
13:02
СуммаН = Док.Итог("НачОстД");
Док.Записать();

Этот текст как бы намекает, что "СуммаН" не имеет отношение к документу.
Сообщи имена реквизитов для итога в документе.
Да и вообще накой они там сдались?
Зачем хранить то, что можно легко вычислить?
28 Garykom
 
гуру
22.01.16
13:05
(26) это:

Док = СоздатьОбъект("Документ.Запрос");
Док.НайтиПоНомеру(1);
Док.НоваяСтрока();
Док.НачОстД = ПечНачОстД;
Док.ПриходД = ПечПриходД;
Док.РасходД = ПечРасходД;
Док.КончОстД = ПечКонОстД;
СуммаН = Док.ПолучитьАтрибут("СуммаН");
СуммаП = Док.ПолучитьАтрибут("СуммаП");  
СуммаР = Док.ПолучитьАтрибут("СуммаР");
СуммаК = Док.ПолучитьАтрибут("СуммаК");
СуммаН = Док.Итог("НачОстД");
СуммаП = Док.Итог("ПриходД");                  
СуммаР = Док.Итог("РасходД");
СуммаК = Док.Итог("КончОстД");
Док.Записать();


ШЕДЕВР!!!
29 Масянька
 
22.01.16
13:06
(26) Блондинке не понятно: зачем "// Создадим документ в котором будут хранится итоги по далам, для вывода их в отчет"? А нельзя сразу вывести в отчет?
30 Масянька
 
22.01.16
13:07
(28) Это не шедевр, а "специальная форма для падаванов. Точнее юнлингов."
31 Garykom
 
гуру
22.01.16
13:08
(29) разве непонятно что кто то про ТЗ вообще не в курсе?
32 DDwe
 
22.01.16
13:13
(31) Сейчас спросит, что такое ТЗ.
33 oslokot
 
22.01.16
13:14
че вы прикалываетесь над юными падаванами? грешно
34 aka AMIGO
 
22.01.16
13:15
(26) Ключевые слова метода Итог():  у переменных-реквизитов табличной части должен быть установлен признак "Итог по колонке"
См. (16), или загляни в СП (это Синтакс Помощник, есть такой в конфигураторе.)
35 DDwe
 
22.01.16
13:16
(33)Нет не грешно, они хотя бы читать и думать пробовали для начала.
36 Масянька
 
22.01.16
13:16
(33) Видимо, там - Как посчитать в отчете итоги в 1с 7.7? уже наприкалывались...
37 Масянька
 
22.01.16
13:17
(34) Тут речь об отчете...
38 Масянька
 
22.01.16
13:17
(26) Открой стандартный отчет, где есть итоги. Разберись - напиши свой.
39 DDwe
 
22.01.16
13:18
(37) А причем тут итоги в документе?
40 Масянька
 
22.01.16
13:18
(26) И не надо темы плодить. Не надо.
41 Масянька
 
22.01.16
13:18
(39) А чего ты у меня спрашиваешь?
42 DDwe
 
22.01.16
13:19
(41) А, ТС молчит )))
43 Масянька
 
22.01.16
13:19
+ (41) Если что - я не в теме :)))))))))
44 aka AMIGO
 
22.01.16
13:20
Интересная конструкция в сабже:
Док = СоздатьОбъект("Документ.Запрос");

Я с такой не встречался.
45 aka AMIGO
 
22.01.16
13:20
(43) струсила и бежишь в свою раковинку? :)
46 Масянька
 
22.01.16
13:21
(44) "Попадешь к вам в гости - научишься есть всякую гадость" (С) :))))
47 Масянька
 
22.01.16
13:22
(45) Чё за наезды? (цепь на шее и пальцы сложены определенным образом) :)
Я вообще не понимаю замысел автора...
48 Garykom
 
гуру
22.01.16
13:23
(44) мне тоже понравилось
технически если сделать запись этого дока (юзаемого как промежуточная ТЗ) то можно в случае сбоя (после записи но до вывода результатов) восстановить что нассчитали ))

а если не записывать док то чем не ТЗ а?
49 aka AMIGO
 
22.01.16
13:25
(47) Да ладно.. :)
ИМХО ТС еще учится, так что замысел и конструкции могут быть неожиданными.

ЗЫ. сколько открытий чудных сделали авторы, не знающие, что ЭТО сделать нельзя :)
50 Builder
 
22.01.16
13:25
(48) А еще удобно что все данные по отчету складываются в этом документе. Сколько раз отчет сформировали - такие и итоги.
51 Масянька
 
22.01.16
13:29
(49) +100
А если оно еще и работает... Хотя, работать не должно. :)))))
52 Garykom
 
гуру
22.01.16
13:35
(50) это уже мелочи, можно новый док каждый раз делать при создании отчета - заодно и нагрузку померяем

но вот если отчет делают несколько сотен раз в день то как быстро база того?
53 DDwe
 
22.01.16
13:41
ТС молчит как партизан.
54 Garykom
 
гуру
22.01.16
13:42
(53) за ДДОСили ((
55 Масянька
 
22.01.16
13:47
(53) (54) Вы кого хочешь обидете... Злыдни... :)))))
56 Масянька
 
22.01.16
13:49
(55) Блин... Стыдобища... ОбидИте...
57 aka AMIGO
 
22.01.16
13:57
У Автора есть еще одна тема
Как посчитать в отчете итоги в 1с 7.7?

В ней скопирована процедура из отчета "Отчет по продажам ТМЦ"

В принципе - вопрос у него в данной теме - остался прежним.

А в типовом отчете итоги считаются. Только вчера я занимался ими.

Вывод: что-то ТС здесь не то спросил, или не донёс до нас проблему. Вот потому полсотни ответов..
58 Luffy
 
22.01.16
14:06
Позже, постараюсь все конкретно объяснить.
59 Масянька
 
22.01.16
14:13
(57) Правильно поставленная задача содержит половину ответа (С)
60 aka AMIGO
 
22.01.16
14:28
(58) Угу.

И вот что: в Отчетах при построении таблицы итоги (те, что выводятся после таблицы!) считаются в процессе вывода.
Для этого вводятся дополнительные переменные. К примеру, в итоговой строке есть выражение ГлФРМ(ВсегоОборот);
Эта ВсегоОборот считается в двух процедурах
Проц Вывод строки() и
Проц ВыводСтрокиДокумента()
по формуле: ВсегоОборот = ВсегоОборот + Оборот;

Чтобы она не теряла значение при переходе из одной процедуры в другую, она объявлена в самом верху модуля:

Перем ВсегоОборот;

В конце отчета выводится секция "Итог", в которой стоит формула глФРМ(ВсегоОборот)

Это самый применяемый метод подсчета итогов в конце таблицы.
61 Luffy
 
22.01.16
14:39
(60) Теперь понял немного, сейчас не дома, попробую отпишусь.
62 Масянька
 
22.01.16
14:57
(61) - Ты понял, что параллельные прямые не пересекаются?
- Да, понял я, понял... Я вот только не понял, почему они не пересекаются...
(С)
63 VladZ
 
27.01.16
06:33
(0) OMG!  Если не сложно, дай координаты фирмы. Горю желанием предложить свои услуги.