Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
14 Дек 2017, 07:33
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Итоги в печатной форме  (Прочитано 3058 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Онлайн ls600

  • ****
  • Сообщений: 322
  • РЕПУТАЦИЯ: 20
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Доброго времени суток всем!
Ситуация такая,  документ по отгрузке цемента,  Плательщик по реализации заказывает цемент, реализаций может быть сколько угодно,  в итоге  реализации все суммируются  и получается итог по данному плательщику!
Подскажите как прописать в коде что бы в конце документа был итог по всем плательщикам!? общая сумма, кол-во.
Конфигурация 1С Бухгалтерия 
Платформа 1С:Предприятие 8.2 (8.2.15.301).


Процедура ДействияФормыСводкаОтгрузкиЦементаСформировать(Кнопка)
Если БезТовара Тогда БезВагонов = Истина; КонецЕсли;

Макет  = ОтчетОбъект.ПолучитьМакет("СводЖДТарифов");
ТабДок =  ЭлементыФормы.ПолеТабличногоДокумента;
Отбор = "";
запрос1 = Новый Запрос;
Если ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(МаркаЦемента) и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Контрагент = &Контр и РЦ_РеализацияЦементаОбороты.Грузополучатель = &ГрПол и РЦ_РеализацияЦементаОбороты.МаркаЦемента=&Цемент";
  запрос1.УстановитьПараметр("Контр", Плательщик);
  запрос1.УстановитьПараметр("ГрПол", Грузополучатель);
  запрос1.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(МаркаЦемента) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Контрагент = &Контр и РЦ_РеализацияЦементаОбороты.Грузополучатель = &ГрПол";
  запрос1.УстановитьПараметр("Контр", Плательщик);
  запрос1.УстановитьПараметр("ГрПол", Грузополучатель);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Контрагент = &Контр и РЦ_РеализацияЦементаОбороты.МаркаЦемента=&Цемент";
  запрос1.УстановитьПараметр("Контр", Плательщик);
  запрос1.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(МаркаЦемента) и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Грузополучатель = &ГрПол и РЦ_РеализацияЦементаОбороты.МаркаЦемента=&Цемент";
  запрос1.УстановитьПараметр("ГрПол", Грузополучатель);
  запрос1.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Контрагент = &Контр";
  запрос1.УстановитьПараметр("Контр", Плательщик);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.Грузополучатель = &ГрПол";
  запрос1.УстановитьПараметр("ГрПол", Грузополучатель);
ИначеЕсли ЗначениеЗаполнено(МаркаЦемента) Тогда
  Отбор = "и РЦ_РеализацияЦементаОбороты.МаркаЦемента=&Цемент";
  запрос1.УстановитьПараметр("Цемент", МаркаЦемента);
КонецЕсли;
запрос1.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                 | РЦ_РеализацияЦементаОбороты.Контрагент КАК Контрагент,
                 | РЦ_РеализацияЦементаОбороты.Грузополучатель КАК Грузополучатель,
                 | РЦ_РеализацияЦементаОбороты.ДокументОтгрузки КАК ДокументОтгрузки,
                 | РЦ_РеализацияЦементаОбороты.ДокументОтгрузки.Направление КАК Направление,
     | РЦ_РеализацияЦементаОбороты.ДокументОтгрузки.ДокументОтправки КАК ДокументОтправки,
                    | РЦ_РеализацияЦементаОбороты.МаркаЦемента,
                 | РЦ_РеализацияЦементаОбороты.Количество КАК КоличествоОборот,
                 | РЦ_РеализацияЦементаОбороты.СуммаРег КАК СуммаРегОборот,
                 | РЦ_РеализацияЦементаОбороты.Стоимость КАК СтоимостьОборот
                 |ИЗ
                 | РегистрНакопления.РЦ_РеализацияЦемента КАК РЦ_РеализацияЦементаОбороты
     |ГДЕ РЦ_РеализацияЦементаОбороты.Период Между &ДатаНач И &ДатаКон
     |  И РЦ_РеализацияЦементаОбороты.Организация = &Орг " + Отбор + " И РЦ_РеализацияЦементаОбороты.СпособОтправки = &Способ
                 |
                 |УПОРЯДОЧИТЬ ПО
                 | Контрагент,
                 | Грузополучатель,
                 | ДокументОтгрузки
                 |ИТОГИ
                 | СУММА(КоличествоОборот),
                 | СУММА(СуммаРегОборот)
                 |ПО
                 | Контрагент,
                 | Грузополучатель,
                 | ДокументОтгрузки
     |АВТОУПОРЯДОЧИВАНИЕ";
     
запрос1.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
запрос1.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
запрос1.УстановитьПараметр("Орг", Организация);
запрос1.УстановитьПараметр("Способ", Перечисления.СпособыОтправкиГрузов.Самовывоз);

запрос2 = Новый Запрос;
Если ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(МаркаЦемента) и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Контрагент = &Контр и РЦ_РеализацияЦемента.Грузополучатель = &ГрПол и РЦ_РеализацияЦемента.МаркаЦемента=&Цемент";
  запрос2.УстановитьПараметр("Контр", Плательщик);
  запрос2.УстановитьПараметр("ГрПол", Грузополучатель);
  запрос2.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(МаркаЦемента) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Контрагент = &Контр и РЦ_РеализацияЦемента.Грузополучатель = &ГрПол";
  запрос2.УстановитьПараметр("Контр", Плательщик);
  запрос2.УстановитьПараметр("ГрПол", Грузополучатель);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель)и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Контрагент = &Контр и РЦ_РеализацияЦемента.МаркаЦемента=&Цемент";
  запрос2.УстановитьПараметр("Контр", Плательщик);
  запрос2.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(МаркаЦемента) и ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Грузополучатель = &ГрПол и РЦ_РеализацияЦемента.МаркаЦемента=&Цемент";
  запрос2.УстановитьПараметр("ГрПол", Грузополучатель);
  запрос2.УстановитьПараметр("Цемент", МаркаЦемента);
ИначеЕсли ЗначениеЗаполнено(Плательщик) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Контрагент = &Контр";
  запрос2.УстановитьПараметр("Контр", Плательщик);
ИначеЕсли ЗначениеЗаполнено(Грузополучатель) Тогда
  Отбор = "и РЦ_РеализацияЦемента.Грузополучатель = &ГрПол";
  запрос2.УстановитьПараметр("ГрПол", Грузополучатель);
ИначеЕсли ЗначениеЗаполнено(МаркаЦемента) Тогда
  Отбор = "и РЦ_РеализацияЦемента.МаркаЦемента=&Цемент";
  запрос2.УстановитьПараметр("Цемент", МаркаЦемента);
КонецЕсли;
запрос2.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                 | РЦ_РеализацияЦемента.Контрагент КАК Контрагент,
                 | РЦ_РеализацияЦемента.Грузополучатель КАК Грузополучатель,
                 | РЦ_РеализацияЦемента.Регистратор КАК Регистратор,
                 | РЦ_НаправленияЖДПеревозок.Квитанция,
                 | РЦ_НаправленияЖДПеревозок.Вагон,
                 | РЦ_НаправленияЖДПеревозок.Тариф КАК Тариф
                 |ИЗ
                 | РегистрСведений.РЦ_НаправленияЖДПеревозок КАК РЦ_НаправленияЖДПеревозок
                 |  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РЦ_РеализацияЦемента КАК РЦ_РеализацияЦемента
                 |  ПО РЦ_НаправленияЖДПеревозок.Регистратор = РЦ_РеализацияЦемента.Регистратор
                 |ГДЕ
                 | РЦ_РеализацияЦемента.Период <= &ДатаКон
                 | И РЦ_РеализацияЦемента.Период >= &ДатаНач
                 | И РЦ_РеализацияЦемента.СпособОтправки = &Способ
                 | И РЦ_РеализацияЦемента.Организация = &Орг "+Отбор+
                "
                 |УПОРЯДОЧИТЬ ПО
                 | Контрагент,
                 | Грузополучатель,
                 | Регистратор
                 |ИТОГИ
                 | СУММА(Тариф)
                 |ПО
                 | Контрагент,
                 | Грузополучатель,
                 | Регистратор
     |АВТОУПОРЯДОЧИВАНИЕ";
     
запрос2.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
запрос2.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
запрос2.УстановитьПараметр("Орг", Организация);
запрос2.УстановитьПараметр("Способ", Перечисления.СпособыОтправкиГрузов.Самовывоз);

ОбластьЗаголовок  = Макет.ПолучитьОбласть("Пояснение");
ОбластьШапка   = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьКонтрагент = Макет.ПолучитьОбласть("Контрагент");
ОбластьГрузополучатель = Макет.ПолучитьОбласть("Грузополучатель");
ОбластьДокумент = Макет.ПолучитьОбласть("Документ");
ОбластьДетали     = Макет.ПолучитьОбласть("Детали");
Результат1 = запрос1.Выполнить();
Результат2 = запрос2.Выполнить();

ТабДок.Очистить();
ТабДок.НачатьАвтогруппировкуСтрок();

ОбластьЗаголовок.Параметры.Текст = СоставитьЗаголовок();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапка);

Если Результат1.Пустой() Тогда
  Сообщить("Данных нет!!!");
  Возврат
КонецЕсли;
// Вывод данных в макет
ВыборкаКонтрагент1 = Результат1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаКонтрагент2 = Результат2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаКонтрагент1.Следующий() Цикл
  ВыборкаКонтрагент2.Следующий();
  ОбластьКонтрагент.Параметры.Заполнить(ВыборкаКонтрагент1);
  //ОбластьКонтрагент.Параметры.Тариф = ВыборкаКонтрагент2.Тариф;
  ТабДок.Вывести(ОбластьКонтрагент,ВыборкаКонтрагент1.Уровень());

  ВыборкаГрузополучатель1 = ВыборкаКонтрагент1.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
  ВыборкаГрузополучатель2 = ВыборкаКонтрагент2.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

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

    КонецЕсли;
   
   КонецЦикла;
  КонецЦикла;
КонецЦикла;

ТабДок.АвтоМасштаб = Истина;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.ФиксацияСверху = Макет.Области.ШапкаТаблицы.верх-1;
ТабДок.ВерхнийКолонтитул.Выводить = Истина;
ТабДок.ВерхнийКолонтитул.НачальнаяСтраница = 1;
    ТабДок.ВерхнийКолонтитул.ТекстСлева = Формат(ТекущаяДата(), "ДФ=dd/MM/yy");
ТабДок.ВерхнийКолонтитул.ТекстСправа = "[&НомерСтраницы]";

КонецПроцедуры



Заранее благодарю!


Оффлайн Public_enemy

  • **
  • Сообщений: 52
  • РЕПУТАЦИЯ: 6
  • КПД: 12%
  • Регистрация: 2011-10-13
  • Сайт: www.alliancesystems.ru
  • Профессия: Программист 1С
Насколько я понял все денежные суммы в первом запросе.
Попробуйте такой вариант:
КопияРезультат1 = запрос1.Выполнить().Выгрузить(); //тип таблица значений
//КопияРезультат1 .Свернуть(<колонки группировки через запятую Тип Строка>,<Колонки суммирования через запятую Тип Строка>)
  КопияРезультат1 .Свернуть("Контрагент","КоличествоОборот,СуммаРегОборот,СтоимостьОборот");
В итоге получится таблица значений с колонками Контрагент, КоличествоОборот, СуммаРегОборот, СтоимостьОборот. С итоговыми суммами по контрагенту.
Дабавте еще одну область в макет, назавите к примеру "Итоги".
Разместите в ней параметры: Контрагент, КоличествоОборот, СуммаРегОборот, СтоимостьОборот.
И по завершении вывода основных данных опишите цикл который выведет итоговые данные по каждому контрагенту.
Примерно так:
Для каждого Строка из КопияРезультат1  Цикл
       ОбластьИтоги = Макет.ПолучитьОбласть("Итоги");
       ОбластьИтоги.Параметры.Контрагент = Строка.Контрагент ;
       ОбластьИтоги.Параметры.КоличествоОборот = Строка.КоличествоОборот;
       ОбластьИтоги.Параметры.СуммаРегОборот = Строка.СуммаРегОборот;
       ОбластьИтоги.Параметры.СтоимостьОборо т= Строка.СтоимостьОборот;
      ТабличныйДокумент.Вывести(ОбластьИтоги );
КонецЦикла

P.S. Описание метода свернуть см. в синтаксис помошнике, также и про таблицу значений.


Теги:
 

Группа "СписокКомпоновщикНастроекПользовательскиеНастройки" в форме "Перечисления"

Автор Азамат ХубиевРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1759
Последний ответ 12 Ноя 2016, 18:08
от Азамат Хубиев
Изменение цвета при подборе сотрудника в форме списка справочника "Сотрудники организации" для документа "Зарплата к выплате организаций" ЗУП 2.5

Автор ksander-farsРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 270
Последний ответ 12 Окт 2017, 14:02
от wise
Как настроить отображение на форме "группа плательщика единого налога" при выборе системы налогообложения "Единый налог"?

Автор Nicolayci91Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2274
Последний ответ 17 Авг 2015, 07:48
от cska-fanat-kz
Добавление строки и заполнение строки в ТЗ на форме

Автор Св ЧРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 293
Последний ответ 25 Сен 2017, 09:00
от Св Ч
Ребята, срочно нужна помощь. Какую процедуру нужно написать в форме справочника, чтобы таблица заполнялась данными из другого справочника?

Автор Олька БякинаРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 5
Просмотров: 2758
Последний ответ 27 Май 2016, 15:19
от Олька Бякина

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
180 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
39 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
34 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
29 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 395
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal