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

Вывод в табличный документ

Автор Fedor_Safonchik, 22 июл 2016, 14:34

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

Fedor_Safonchik

Пытаюсь сделать заполнение табличного документа

Для абонента данные берутся из документа "Заказ к договору" - там табличная часть "КонтактнаяИнформацияАбонента"
Для оператора данные берутся из регистра сведений "КонтактнаяИНформацияОператора"

Необходимо заполнить область данными, пример области во вложении

Как только не пытался сделать, ничего не выходит, #ГУРУ #HELP

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Fedor_Safonchik

Цитата: cska-fanat-kz от 22 июл 2016, 14:50
ну и как пытались то? ;)

ОбластьКонтактыТехническихСлужбЗначения = МакетОбработки.ПолучитьОбласть("КонтактыТехническихСлужбЗначения"); - получаю область для заполнения

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

И получаю примерно то, что надо, но значение "Операторы" сверху должны выводиться (во вложении пример)

Gunner

Естественно так и будет выводиться, вы объединяете запросы, а надо их связывать
Либо, если это невозможно, вывести сначала область абонента, а потом оператора

Fedor_Safonchik

Цитата: Gunner от 22 июл 2016, 15:08
Естественно так и будет выводиться, вы объединяете запросы, а надо их связывать
Либо, если это невозможно, вывести сначала область абонента, а потом оператора

Если выводить области одну, а потом другую - тогда сначала выведутся контактные данные абонента, а
потом уже под ними выведутся контактные данные оператора,
Так что, я даже уже не знаю что делать)

Kironten

Цитата: Fedor_Safonchik от 22 июл 2016, 15:58
Если выводить области одну, а потом другую - тогда сначала выведутся контактные данные абонента, а
потом уже под ними выведутся контактные данные оператора,
Если уж работать в этом ключе, то юзайте метод Присоединить, табличного документа.
А вообще правильнее будет составить нормальный запрос.
Определяйтесь как у вас связаны данные документа с данными из регистра сведений и левым соединением соединяйте.

Fedor_Safonchik

Цитата: Kironten от 22 июл 2016, 17:00
Цитата: Fedor_Safonchik от 22 июл 2016, 15:58
Если выводить области одну, а потом другую - тогда сначала выведутся контактные данные абонента, а
потом уже под ними выведутся контактные данные оператора,
Если уж работать в этом ключе, то юзайте метод Присоединить, табличного документа.
А вообще правильнее будет составить нормальный запрос.
Определяйтесь как у вас связаны данные документа с данными из регистра сведений и левым соединением соединяйте.

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

Kironten

Цитата: Fedor_Safonchik от 22 июл 2016, 17:09
Цитата: Kironten от 22 июл 2016, 17:00
Цитата: Fedor_Safonchik от 22 июл 2016, 15:58
Если выводить области одну, а потом другую - тогда сначала выведутся контактные данные абонента, а
потом уже под ними выведутся контактные данные оператора,
Если уж работать в этом ключе, то юзайте метод Присоединить, табличного документа.
А вообще правильнее будет составить нормальный запрос.
Определяйтесь как у вас связаны данные документа с данными из регистра сведений и левым соединением соединяйте.

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

cska-fanat-kz

у вас в контактной информации оператора всегда одна строка?
если да, то соединяйте "...ПО ИСТИНА"
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ilnur75

Цитата: Fedor_Safonchik от 22 июл 2016, 14:59И получаю примерно то, что надо, но значение "Операторы" сверху должны выводиться
1. запросом Вы получаете нужные данные. Размещаются у Вас они не так как Вы хотите, поэтому
2. необходимо на макете вручную откорректировать или по-новому создать область расположения полученных запросом данных. Возможно это не сделано в том виде как Вы хотите видеть на первом рисунке в первом посте.
3. скорректируйте код ,в явном виде пропишите в цикле :

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

ОбластьКонтактыТехническихСлужбЗначения.Параметры.ФИОАбонента = ВыборкаДетальныеЗаписи.ФИОАбонента;
   ...      
   и т.д. для каждого выводимого параметра и в конце допишите строку
   
   ТабличныйДокумент.Вывести(ОбластьКонтактыТехническихСлужбЗначения);

КонецЦикла;

4. должно выводить так как надо.

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

Рейтинг@Mail.ru

Поиск