Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Получить итог по столбцу табличной части          
cos12 Подменю пользователя
сообщение 09.12.16, 15:40
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 226
Спасибо сказали: 28 раз
Рейтинг: 0

Всем привет!
Платформа:
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
 


Сообщение отредактировал Vofka - 15.12.16, 17:54

Petre Подменю пользователя
сообщение 09.12.16, 15:42
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

cos12 @ Сегодня, 15:40 * ,
Перед циклом объявляем переменную, в цикле суммируем.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: cos12,

cos12 Подменю пользователя
сообщение 09.12.16, 16:11
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 226
Спасибо сказали: 28 раз
Рейтинг: 0

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

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

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

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

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


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

{ВнешняяОбработка.ПечатьОтчетаПоЗарплате.МодульОбъекта(264)}: Перетворення значення к типу Число не може бути виконано
СуммаИтог = СуммаИтог + ОбластьВыплатаЗаработнойПлаты.Параметры.Сумма;

podcast Подменю пользователя
сообщение 09.12.16, 16:13
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 306
Спасибо сказали: 74 раз
Рейтинг: 0

cos12 @ Сегодня, 16:11 * ,
Перед циклом СуммаИтог = 0.

Спасибо сказали: cos12,

Flexy Подменю пользователя
сообщение 09.12.16, 16:14
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

cos12 @ Сегодня, 16:11 * ,
СуммаИтог = 0;
Пока Выборка.Следующий() Цикл    
СуммаИтог = СуммаИтог + Выборка.Сумма;      
КонецЦикла;


Сообщение отредактировал Flexy - 09.12.16, 16:16

Спасибо сказали: cos12,

cos12 Подменю пользователя
сообщение 09.12.16, 16:22
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 226
Спасибо сказали: 28 раз
Рейтинг: 0

УРА!!!! Заработало!!! Всем огромное спасибо))
Вот конечный код, может кому пригодиться)

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

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

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

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

logist Подменю пользователя
сообщение 09.12.16, 16:45
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(cos12 @ 09.12.16, 17:22) *
   //Обьявляю переменную
    Перем СумИт;

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



Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 23:12
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!