Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 14:41

Макет

Автор 441, 15 сен 2014, 11:35

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

441

Добрый день!Подскажите ,пожалуйста.Я делаю макет, в котором пытаюсь вывести данные по заказам поставщикам и данные оплаты этих заказов .
проблема в том,что если Заказ поставщику оплачивался двумя документами оплаты то отчет выглядит так
ЗП1 -СуммаЗП1- ДокументОплаты1 - СуммаДокумента1
ЗП1 -СуммаЗП1- ДокументОплаты2 - СуммаДокумента2 .
Хочется ,чтобы это выглядело так , пример :
ЗП1 -СуммаЗП1- ДокументОплаты1 - СуммаДокумента1.
        -                 - ДокументОплаты2 - СуммаДокумента2.

Т.к. там еще много данных в макете,в том числе документы поступления товаров и услуг ,которых так же к одному заказу относятся по несколько штук и которые также нужно выводить и в результате получается много дублирующейся и ненужной информации, как в моём примере.
Не подскажете ,как можно было бы избежать этого и получить необходимый вид макета.
Заранее спасибо.

TreeDogNight

Создай вертикальные области, и получай пересечения областей. Выводи сначала область, которая должна быть в одном экзэмпляре, а остальные выводи в цикле.

441

Извините, а можно немного поподробнее объяснить ,как получить пересечения областей.

TreeDogNight

Макет.ПолучитьОбласть("ГоризонтальнаяОбласть|ВертикальнаяОбласть")

441

Извините,а можно какой-нибудь пример.
Я не понимаю.
Сначала нужно получить горизонтальную область,потом вертикальную, а потом пересечение?
И как можно вывести область ,которая будет в одном экземпляре без цикла? Если документов тысячи. Каждый документ должен выводиться с ,допустим, тремя документами оплаты.
Я пытаюсь вывести просто даже номера документов заказа поставщику и дату, он мне выводит почему - то по пять одинаковых дат и номеров документов

TreeDogNight

Можете выложить сюда свой код и скрин макета.

441

Да ,конечно .Вот код :
Процедура ОбновитьОтчет()
   
   Если НЕ ЗначениеЗаполнено(ДатаНачала) Или НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда
      Предупреждение("Не выбран период!");
      Возврат;
   КонецЕсли;
   мТабДок = ЭлементыФормы.Результат;

   мТабДок.Очистить();

   Макет = ЭтотОбъект.ПолучитьМакет("Макет");


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

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

   Запрос = Новый Запрос;
   Запрос.УстановитьПараметр("Дата1", НачалоДня(ДатаНачала));
   Запрос.УстановитьПараметр("Дата2", КонецДня(ДатаОкончания));
   Запрос.УстановитьПараметр("Контрагент", Контрагент);

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


а вот макет из конфигуратора.

TreeDogNight

Для читаемости кода на форуме используй тег "[сode][/сode]". Сейчас посмотрю код..

441

Хорошо,учту.
Спасибо за помощь.

freez1301

в УТ товарный чек сделан именно таким образом. можно подсмотреть там (я про области)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск