8.х Итого в отчете

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Danik95, 29 апр 2010.

  1. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    Добрые вечер. Работаю в конфигурации "Учет договоров"(ставится на Буху 8).
    Подскажите пожалуйста как в отчете мне добиться вывода итогов по каждому контрагенту. код приведены ниже.
    Код:
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    Запрос.Текст = "ВЫБРАТЬ
    |	удДоговор.Номер,
    |	удДоговор.Контрагент КАК Контрагент,
    |	удДоговор.СуммаДокумента,
    |	удДоговор.Предмет,
    |	ВложенныйЗапрос.Дата КАК Дата,
    |	ВложенныйЗапрос.Сумма КАК Сумма,
    |	ВложенныйЗапрос1.Дата КАК Дата2,
    |	ВложенныйЗапрос1.Сумма КАК Сумма2,
    |	ВложенныйЗапрос2.Дата КАК Дата3,
    |	ВложенныйЗапрос2.СуммаДокумента КАК Сумма3
    |ИЗ
    |	Документ.удДоговор КАК удДоговор
    |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			удДоговорПланИсполнения.Дата КАК Дата,
    |			удДоговорПланИсполнения.Сумма КАК Сумма,
    |			удДоговорПланИсполнения.Ссылка.Номер КАК Номер
    |		ИЗ
    |			Документ.удДоговор.ПланИсполнения КАК удДоговорПланИсполнения) КАК ВложенныйЗапрос
    |		ПО удДоговор.Номер = ВложенныйЗапрос.Номер
    |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			удДоговорПланПлатежей.Дата КАК Дата,
    |			удДоговорПланПлатежей.Сумма КАК Сумма,
    |			удДоговорПланПлатежей.Ссылка.Номер КАК Номер
    |		ИЗ
    |			Документ.удДоговор.ПланПлатежей КАК удДоговорПланПлатежей) КАК ВложенныйЗапрос1
    |		ПО удДоговор.Номер = ВложенныйЗапрос1.Номер
    |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			ПлатежноеПоручениеВходящее.Дата КАК Дата,
    |			ПлатежноеПоручениеВходящее.СуммаДокумента КАК СуммаДокумента,
    |			ПлатежноеПоручениеВходящее.ДоговорКонтрагента КАК ДоговорКонтрагента
    |		ИЗ
    |			Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее) КАК ВложенныйЗапрос2
    |		ПО удДоговор.ДоговорКонтрагента = ВложенныйЗапрос2.ДоговорКонтрагента";
    Запрос    = Запрос.Выполнить();
    Результат = Запрос.Выбрать();
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ТабличныйДокумент.Вывести(ОбластьШапка);
    ОбластьДоговор = Макет.ПолучитьОбласть("Договор");
    ЕстьНомерДоговора = "";
    ЕстьДатаИспол     = "";
    ЕстьСуммаИспол    = "";
    ЕстьДатаПлатежа   = "";
    ЕстьСуммаПлатежа  = "";
    
    Пока Результат.Следующий() Цикл
    Если ЕстьНомерДоговора <> Результат.Номер Тогда
    ОбластьДоговор.Параметры.НомерДоговора   = Результат.Номер;
    ОбластьДоговор.Параметры.Контрагент      = Результат.Контрагент;
    ОбластьДоговор.Параметры.ПредметДоговора = Результат.Предмет;
    ОбластьДоговор.Параметры.СуммаДокумента  = Результат.СуммаДокумента;
    Иначе
    ОбластьДоговор.Параметры.НомерДоговора   = "";
    ОбластьДоговор.Параметры.Контрагент      = "";
    ОбластьДоговор.Параметры.ПредметДоговора = "";
    ОбластьДоговор.Параметры.СуммаДокумента  = "";
    
    КонецЕсли;
    Если (ЕстьДатаИспол = Результат.Дата) И (ЕстьСуммаИспол =  Результат.Сумма) Тогда
    ОбластьДоговор.Параметры.Дата  = "";
    ОбластьДоговор.Параметры.Сумма = "";
    Иначе
    ОбластьДоговор.Параметры.Дата  = Результат.Дата;
    ОбластьДоговор.Параметры.Сумма = Результат.Сумма;
    КонецЕсли;
    Если (ЕстьДатаПлатежа = Результат.Дата2) И (ЕстьСуммаПлатежа =  Результат.Сумма2) Тогда
    ОбластьДоговор.Параметры.Дата2  = "";
    ОбластьДоговор.Параметры.Сумма2 = "";
    Иначе
    ОбластьДоговор.Параметры.Дата2  = Результат.Дата2;
    ОбластьДоговор.Параметры.Сумма2 = Результат.Сумма2;
    КонецЕсли;
    ОбластьДоговор.Параметры.Дата3  = Результат.Дата3;
    ОбластьДоговор.Параметры.Сумма3 = Результат.Сумма3;
    
    ТабличныйДокумент.Вывести(ОбластьДоговор);  
    ЕстьНомерДоговора = Результат.Номер;
    ЕстьДатаИспол = Результат.Дата;
    ЕстьСуммаИспол = Результат.Сумма;
    ЕстьДатаПлатежа = Результат.Дата2;
    ЕстьСуммаПлатежа = Результат.Сумма2;
    КонецЦикла;
    ТабличныйДокумент.ОтображатьСетку = Ложь;
    ТабличныйДокумент.Показать();
    
    КонецПроцедуры
    
    
    
  2. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    В файле желаемый результат, как картинку не смог прицепить, какие то глюки!!
    И еще... можно ли прямо в запросе исключить повторяющиеся значения(Например в колонке Факт поступлении на расчетный счет)??

    Вложения:

    • Новый1.mxl
      Размер файла:
      5,6 КБ
      Просмотров:
      18
  3. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Ну начнем с того что для получения у Итогов у вас итоги должны быть в ЗАпросе. Где в Запросе итоги?
  4. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    Их там нет потому что они суммируют повторяющиеся поля
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    А чеданные то из документов берете, разве документы никаких регистров не двигают?
  6. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    Нет, этот документ не делает никаких движении
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.647
    Симпатии:
    948
    Баллы:
    204
    Странный какой то документ не понятен тогда его смысл раз движений не делает. Н уда бох с ним. выкладывайте весь запрос. Вы говорите у Вас там есть повторяющиеся записи будем разбираться ...
  8. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    НУдля каждой строки табличной части запрос каждый раз вытаскивает реквизиты шапки, и соответственно в печатной форме они повторяются и когда в одной таб части строк меньше чем в другой, то в той которой меньше пустые поля заполняются посленим значением....

    Вложения:

    • Умика.jpg
      Умика.jpg
      Размер файла:
      205 КБ
      Просмотров:
      19
    • Умика.jpg
      Умика.jpg
      Размер файла:
      205 КБ
      Просмотров:
      18
  9. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    Вот как например с фактом поступления на расчетный счет, а повторение номера, контрагента, предмета и суммы договора я убрал при помощи кода
  10. TopicStarter Overlay
    Danik95
    Offline

    Danik95 Опытный в 1С

    Регистрация:
    22 мар 2009
    Сообщения:
    127
    Симпатии:
    0
    Баллы:
    26
    Ни кто не подскажет?

Поделиться этой страницей