8.х Два экземпляра страницы с разными данными

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

  1. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Приветствую всех!

    Подскажите, пожалуйста, как вывести два экземпляра табличного документа с разными данными. Например, есть страница номер "N", на которой выводятся данные участника ООО, а если участника два, то должны выводиться страницы "N" и "N1" из одного макета, но с заполненные разными данными.
  2. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Вы же берете область (области) макета когда выводите данные участника N, если у вас участника 2, возьмите эти же области заполните их данными для N1 и также выведите.
    Непонятно в чем проблема?
  3. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Пардон! Не так сформулировал. Выводить нужно не области макета, а поле табличного документа в форме. При этом, данные об участниках берутся из регистра. Как указать, что если участника 2, то и табличных документа должно быть 2? Или я чего-то не понимаю?
  4. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Это я так понимаю - продолжение вчерашней темы?
    Вы хотите в одном ПолеТабличногоДокумента это вывести? У меня такое подозрение, что проще программно добавить страницу, и разместить на ней ПолеТабличногоДокумента, но здесь возникает вопрос, как задать имена ячейкам. Можно попробовать для вновьсозданного ПоляТабличногоДокумента использовать метод "ВставитьОбласть()", где источником для вставки указать уже имеющееся на форме ПолеТабличногоДокумента (одно то у вас в любом случае существует). Но я не пробовал, не знаю, имена ячеек (собственно то что вам и надо) при этом перенесутся или нет.
    Второй вариант: сделать макет, и выводить поля такого типа из макета (тоже естественно с програмным добавлением закладки и ПоляТабличногоДокумента).
  5. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Может, я не понятно формулирую. У меня есть поле табличного документа в форме, на нем есть именованные ячейки, содержащие значения, значения туда попадают запросами из нескольких регистров и справочников. Может это элементарно, но я что-то ума не приложу, как вывести после последней строки табличного документа такой же табличный документ с другими данными (

    Попробую попробовать ))
  6. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Если это продолжение вчерашней темы (для интересующихся http://www.1c-pro.ru/index.php?showtopic=26184&hl=), то думаю что никак. Ну всмысле 2 варианта я вам расписал.
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Ыыыы. Я нифига не понял.
    Думаю стоит применить общее правило разработки учетных систем:
    "Если задание сложно в реализации, или совершенно не понятно - скорее всего это задание вообще не нужно выполнять, а необходимо выяснить ЗАЧЕМ это надо клиенту, и предложить другой, более простой и корректный вариант"

    Т.е. может капать надо не со стороны "как реализовать вот такой вот мозговыверт" а собственно "от печки" - т.е. от вопрсса "а нафига это вообще надо". Не исключенно что вопрос мозговыверта отпадет сам сабой, как только будет исправленна ошибка планирования/структуры/методолгии.
  8. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    uza :angry:
    Посмотрите предыдущую тему (я ссылку выше привел) там с рисунком в первом посте, поймете в чем дело. :)


    Кстати более простой на мой взгляд вариант, это реализовать все полностью через макеты.. Но клиент не хочет.. :) Сорокин, кстати, вам ведь все равно на печать это дело выводить, почему бы действительно не сделать это через макеты и табличные документы?
  9. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Да, ребята! Гемор полный )))! И правда лучше попробовать убедить через макеты выводить на печать. С этими полями в форме у меня уже крыша едет :angry:
  10. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Если вопрос в том, как динамически насоздавать кучу закладок с кучей табличных документов - то я бы пошел более простым путем.
    Выдал бы список Участников, на каконить событие или кнопку повесил событие генерирования ОДНОЙ печатной формы (например в отдельном окне/форме).
    Есть список Иванов, Петров, Сидоров - даблкликнул по петрову - открылась печатная форма с петровым, даблкликнул по сидорову - открылась форма с сидоровым. Даблкликнул по кнопке ВСЕ - открылось бы N окон для каждого, или одна печатная форма с N листов

    P.S.
    Кликнул в пустое поле списка - выдалась ошибка и упала 1С :)... а ибо нечего пользователю тыкать где угодно :)
  11. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    :angry:
    Угу.. А главное format c: при это запустить.. :)
    хотя с: не получится... ну d: хотя бы...
    ибо нечего.. :)
  12. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    Убедил!!! Решили выводить через макет, заполняю области из запросов

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

    Вложения:

    • Макет.JPG
      Макет.JPG
      Размер файла:
      118,4 КБ
      Просмотров:
      19
  13. x_under
    Offline

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

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Кошмарный код.
    Физ лицо одно и тоже, потому что во втором запросе не получаете фамилию имя и отчество. Система использует ранее заполненые параметры
    Вопрос: зачем использовать наименование, если у вас есть ссылка на объект? Это плохой тон.
    Код:
     Запрос1.УстановитьПараметр("СоздаваемоеЮЛ", Ссылка.СокращенноеНаименованиеЮЛ_Рус);
    
  14. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

    Регистрация:
    7 сен 2010
    Сообщения:
    40
    Симпатии:
    0
    Баллы:
    1
    1. У двух физ лиц один владелец "Клиент"

    2. Ссылки на объект у меня нет, в документе ФизЛицо и создаваемой ЮрЛицо не связаны, т.к. физлица содержаться в регистре, это
    Код:
     Запрос1.УстановитьПараметр("СоздаваемоеЮЛ", Ссылка.СокращенноеНаименованиеЮЛ_Рус);
    
    сделано вместо
    Код:
     Запрос1.УстановитьПараметр("СоздаваемоеЮЛ", Справочники.ЮридическиеЛица.НайтиПоНаименованию(Ссылка.СокращенноеНаименованиеЮЛ_Рус);
    
  15. TopicStarter Overlay
    bel4onysh
    Offline

    bel4onysh

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

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