Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Получить итог по столбцу табличной части
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
cos12
Всем привет!
Платформа:
1С:Підприємство 8.3 (8.3.8.2027)
Конфигурацыя:
"Зарплата и Управление Персоналом для Украины", редакция 2.1.

Суть вопроса:
Переделываю чужую обработку выгрузки платежного поручения по зарплате для банка в Екселевский файл.
Файл формирую.
Список сотрудников с номерами карт и суммами тоже формирую нормально.
Ну а дальше туплю... - не могу сообразить как получить в подвале итог по столбцу "Сума"



необходимо зарегистрироваться для просмотра ссылки
Функция ПечатьАльфаКратко1() Экспорт
    
    Если СсылкаНаОбъект.Организация.Пустая() Тогда
        Сообщить(НСтр("ru='Не указана организация.';uk='Не зазначена організація.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;

    Если СсылкаНаОбъект.Контрагент.Пустая() И Не СсылкаНаОбъект.ВидОперации=Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет Тогда
        Сообщить(НСтр("ru='Не указан контрагент.';uk='Не зазначений контрагент.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    
    Если СсылкаНаОбъект.СчетОрганизации.Пустая() Тогда
        Сообщить(НСтр("ru='Не указан расчетный счет.';uk='Не зазначений розрахунковий рахунок.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    ТекстМесяц = Формат(СсылкаНаОбъект.Дата,"ДФ=""ММММ', 'гггг""");
    ТекстПериод = ПредставлениеПериода(НачалоМесяца(СсылкаНаОбъект.Дата) , КонецМесяца(СсылкаНаОбъект.Дата));
    //СуммаКомиссииАстра = Окр((СсылкаНаОбъект.СуммаДокумента*0.5)/100,2);
    Запрос = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросДляПечати();
    Выборка = Запрос.Выполнить().Выбрать();
    
    ТабДок = Новый ТабличныйДокумент;
    //ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПлатежноеПоручениеИсходящее_ПечатьОтчетаПоЗарплате";
    
    Макет = ЭтотОбъект.ПолучитьМакет("Alfa");
    
    // печать производится на языке, указанном в настройках пользователя
    //КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
    //Макет.КодЯзыкаМакета = КодЯзыкаПечать;

    // ВыплатаЗаработнойПлаты
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);
    ОбластьВыплатаЗаработнойПлаты = Макет.ПолучитьОбласть("ВыплатаЗаработнойПлаты");

    НомерСтроки = 0;
    Пока Выборка.Следующий() Цикл    
        НомерСтроки = НомерСтроки+1;
        ОбластьВыплатаЗаработнойПлаты.Параметры.Заполнить(Выборка);
        ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма = Формат(Выборка.Сумма,"ЧДЦ=2; ЧРД=,; ЧГ=");
        ОбластьВыплатаЗаработнойПлаты.Параметры.НомерСтроки = НомерСтроки;
    
        ТабДок.Вывести(ОбластьВыплатаЗаработнойПлаты);
    КонецЦикла;
    // Нужен подвал для получения итога
    // Беру подвал из макета
        // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    //Макет получен, теперь нужен итог по столбцу "Сума"
        Подвал.Параметры.СуммаИтого = Формат(??????,"ЧДЦ=2; ЧРД=,");
    
    ТабДок.Вывести(Подвал);                          

    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    Возврат ТабДок;
КонецФункции



 ! 

необходимо зарегистрироваться для просмотра ссылки: 8
 
Petre
cos12 @ Сегодня, 15:40 необходимо зарегистрироваться для просмотра ссылки ,
Перед циклом объявляем переменную, в цикле суммируем.
cos12
Petre @ Сегодня, 15:42 необходимо зарегистрироваться для просмотра ссылки ,
обьявил переменную и в цыкле написал сумирование:
Функция ПечатьАльфаКратко1() Экспорт
    //Обьявляю переменную
    Перем СуммаИтог;
    
    Если СсылкаНаОбъект.Организация.Пустая() Тогда
        Сообщить(НСтр("ru='Не указана организация.';uk='Не зазначена організація.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;

    Если СсылкаНаОбъект.Контрагент.Пустая() И Не СсылкаНаОбъект.ВидОперации=Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет Тогда
        Сообщить(НСтр("ru='Не указан контрагент.';uk='Не зазначений контрагент.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    
    Если СсылкаНаОбъект.СчетОрганизации.Пустая() Тогда
        Сообщить(НСтр("ru='Не указан расчетный счет.';uk='Не зазначений розрахунковий рахунок.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    ТекстМесяц = Формат(СсылкаНаОбъект.Дата,"ДФ=""ММММ', 'гггг""");
    ТекстПериод = ПредставлениеПериода(НачалоМесяца(СсылкаНаОбъект.Дата) , КонецМесяца(СсылкаНаОбъект.Дата));
    //СуммаКомиссииАстра = Окр((СсылкаНаОбъект.СуммаДокумента*0.5)/100,2);
    Запрос = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросДляПечати();
    Выборка = Запрос.Выполнить().Выбрать();
    
    ТабДок = Новый ТабличныйДокумент;
    //ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПлатежноеПоручениеИсходящее_ПечатьОтчетаПоЗарплате";
    
    Макет = ЭтотОбъект.ПолучитьМакет("Alfa");
    
    // печать производится на языке, указанном в настройках пользователя
    //КодЯзыкаПечать = Локализация.ПолучитьЯзыкФормированияПечатныхФорм(УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "РежимФормированияПечатныхФорм"));
    //Макет.КодЯзыкаМакета = КодЯзыкаПечать;

    // ВыплатаЗаработнойПлаты
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);
    ОбластьВыплатаЗаработнойПлаты = Макет.ПолучитьОбласть("ВыплатаЗаработнойПлаты");

    НомерСтроки = 0;
    Пока Выборка.Следующий() Цикл    
        НомерСтроки = НомерСтроки+1;
        ОбластьВыплатаЗаработнойПлаты.Параметры.Заполнить(Выборка);
        ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма = Формат(Выборка.Сумма,"ЧДЦ=2; ЧРД=,; ЧГ=");
        ОбластьВыплатаЗаработнойПлаты.Параметры.НомерСтроки = НомерСтроки;
        //  суммирую по переменной
        СуммаИтог = СуммаИтог + ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма;
    
        ТабДок.Вывести(ОбластьВыплатаЗаработнойПлаты);
    КонецЦикла;
    // Нужен подвал для получения итога
    // Беру подвал из макета
        // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    
        Подвал.Параметры.СуммаИтого = Формат(СуммаИтог,"ЧДЦ=2; ЧРД=,");
    
    ТабДок.Вывести(Подвал);                          

    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    Возврат ТабДок;
КонецФункции


выдает тогда ошибку:

{ВнешняяОбработка.ПечатьОтчетаПоЗарплате.МодульОбъекта(264)}: Перетворення значення к типу Число не може бути виконано
СуммаИтог = СуммаИтог + ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма;
podcast
cos12 @ Сегодня, 16:11 необходимо зарегистрироваться для просмотра ссылки ,
Перед циклом СуммаИтог = 0.
Flexy
cos12 @ Сегодня, 16:11 необходимо зарегистрироваться для просмотра ссылки ,
СуммаИтог = 0;
Пока Выборка.Следующий() Цикл    
СуммаИтог = СуммаИтог + Выборка.Сумма;      
КонецЦикла;
cos12
УРА!!!! Заработало!!! Всем огромное спасибо))
Вот конечный код, может кому пригодиться)

Функция ПечатьАльфаКратко1() Экспорт
    //Обьявляю переменную
    Перем СумИт;
    
    Если СсылкаНаОбъект.Организация.Пустая() Тогда
        Сообщить(НСтр("ru='Не указана организация.';uk='Не зазначена організація.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;

    Если СсылкаНаОбъект.Контрагент.Пустая() И Не СсылкаНаОбъект.ВидОперации=Перечисления.ВидыОперацийППИсходящее.ПереводНаДругойСчет Тогда
        Сообщить(НСтр("ru='Не указан контрагент.';uk='Не зазначений контрагент.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    
    Если СсылкаНаОбъект.СчетОрганизации.Пустая() Тогда
        Сообщить(НСтр("ru='Не указан расчетный счет.';uk='Не зазначений розрахунковий рахунок.'"), СтатусСообщения.Важное);
        Возврат Неопределено;
    КонецЕсли;
    ТекстМесяц = Формат(СсылкаНаОбъект.Дата,"ДФ=""ММММ', 'гггг""");
    ТекстПериод = ПредставлениеПериода(НачалоМесяца(СсылкаНаОбъект.Дата) , КонецМесяца(СсылкаНаОбъект.Дата));
    Запрос = СсылкаНаОбъект.ПолучитьОбъект().СформироватьЗапросДляПечати();
    Выборка = Запрос.Выполнить().Выбрать();
    
    ТабДок = Новый ТабличныйДокумент;
        
    Макет = ЭтотОбъект.ПолучитьМакет("Alfa");
    
    // ВыплатаЗаработнойПлаты
    Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);
    ОбластьВыплатаЗаработнойПлаты = Макет.ПолучитьОбласть("ВыплатаЗаработнойПлаты");

    НомерСтроки = 0;
    СумИт = 0;
    Пока Выборка.Следующий() Цикл    
        НомерСтроки = НомерСтроки+1;
        ОбластьВыплатаЗаработнойПлаты.Параметры.Заполнить(Выборка);
        ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма = Формат(Выборка.Сумма,"ЧДЦ=2; ЧРД=,; ЧГ=");
        ОбластьВыплатаЗаработнойПлаты.Параметры.НомерСтроки = НомерСтроки;
        //  суммирую по переменной
        СумИт = СумИт + Выборка.Сумма;
    
        ТабДок.Вывести(ОбластьВыплатаЗаработнойПлаты);
    КонецЦикла;
    // Нужен подвал для получения итога
    // Беру подвал из макета
        // Подвал
    Подвал = Макет.ПолучитьОбласть("Подвал");
    Подвал.Параметры.СуммаИтого = Формат(СумИт,"ЧДЦ=2; ЧРД=,");
    Подвал.Параметры.СуммаИтогоПропись = ЧислоПрописью(СумИт,"Л=ru_RU","гривна, гривны, гривен, м, копейка, копейки, копеек, ж, 2");
    
    ТабДок.Вывести(Подвал);                          

    
    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Ложь;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    Возврат ТабДок;
КонецФункции
logist
Цитата(cos12 @ 09.12.16, 17:22) необходимо зарегистрироваться для просмотра ссылки
   //Обьявляю переменную
    Перем СумИт;

Особого смысла не имеет, потому что это выполняет тоже самое, только уже типизировано.
Цитата(cos12 @ 09.12.16, 17:22) необходимо зарегистрироваться для просмотра ссылки
  СумИт = 0;

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.