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

Автор Тема: Работа с табличными частями документа.  (Прочитано 8906 раз)

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

Оффлайн beztrud

Здравствуйте. В документе есть несколько табличных частей. Не все табличные части бывают заполнены. Необходимо при печати макета пропускать незаполненные табличные части. Т.е. необходимо написать что-то вроде этого

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


   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   //}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Если ТабличнаяЧасть1.Количество() > 0 Тогда

Оффлайн beztrud

Пребольшущее спасибо.

Оффлайн beztrud

Помогите пожалуйста реализовать это на 8.2. У меня такой текст в менеджере:

Процедура Печать(ТабДок, Ссылка) Экспорт
   //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
   Макет = Документы.ФаксыСтекло.ПолучитьМакет("Печать");
   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |   ФаксыСтекло.Дата,
   |   ФаксыСтекло.Куда,
   |   ФаксыСтекло.Стекло1.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло2.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло3.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло4.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло5.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло6.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло7.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло8.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло9.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   ),
   |   ФаксыСтекло.Стекло10.(
   |      ТипСтекла,
   |      Высота,
   |      Ширина,
   |      Количество
   |   )
   |ИЗ
   |   Документ.ФаксыСтекло КАК ФаксыСтекло
   |ГДЕ
   |   ФаксыСтекло.Ссылка В (&Ссылка)";
   Запрос.Параметры.Вставить("Ссылка", Ссылка);
   Выборка = Запрос.Выполнить().Выбрать();

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   Шапка = Макет.ПолучитьОбласть("Шапка");
   ОбластьСтекло1Шапка = Макет.ПолучитьОбласть("Стекло1Шапка");
   ОбластьСтекло1 = Макет.ПолучитьОбласть("Стекло1");
   ОбластьСтекло2Шапка = Макет.ПолучитьОбласть("Стекло2Шапка");
   ОбластьСтекло2 = Макет.ПолучитьОбласть("Стекло2");
   ОбластьСтекло3Шапка = Макет.ПолучитьОбласть("Стекло3Шапка");
   ОбластьСтекло3 = Макет.ПолучитьОбласть("Стекло3");
   ОбластьСтекло4Шапка = Макет.ПолучитьОбласть("Стекло4Шапка");
   ОбластьСтекло4 = Макет.ПолучитьОбласть("Стекло4");
   ОбластьСтекло5Шапка = Макет.ПолучитьОбласть("Стекло5Шапка");
   ОбластьСтекло5 = Макет.ПолучитьОбласть("Стекло5");
   ОбластьСтекло6Шапка = Макет.ПолучитьОбласть("Стекло6Шапка");
   ОбластьСтекло6 = Макет.ПолучитьОбласть("Стекло6");
   ОбластьСтекло7Шапка = Макет.ПолучитьОбласть("Стекло7Шапка");
   ОбластьСтекло7 = Макет.ПолучитьОбласть("Стекло7");
   ОбластьСтекло8Шапка = Макет.ПолучитьОбласть("Стекло8Шапка");
   ОбластьСтекло8 = Макет.ПолучитьОбласть("Стекло8");
   ОбластьСтекло9Шапка = Макет.ПолучитьОбласть("Стекло9Шапка");
   ОбластьСтекло9 = Макет.ПолучитьОбласть("Стекло9");
   ОбластьСтекло10Шапка = Макет.ПолучитьОбласть("Стекло10Шапка");
   ОбластьСтекло10 = Макет.ПолучитьОбласть("Стекло10");
   ТабДок.Очистить();

   ВставлятьРазделительСтраниц = Ложь;
   Пока Выборка.Следующий() Цикл
      Если ВставлятьРазделительСтраниц Тогда
         ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
      КонецЕсли;

      ТабДок.Вывести(ОбластьЗаголовок);

      Шапка.Параметры.Заполнить(Выборка);
      ТабДок.Вывести(Шапка, Выборка.Уровень());

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


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

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

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

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

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

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

      ТабДок.Вывести(ОбластьСтекло10Шапка);
      ВыборкаСтекло10 = Выборка.Стекло10.Выбрать();
      Пока ВыборкаСтекло10.Следующий() Цикл
         ОбластьСтекло10.Параметры.Заполнить(ВыборкаСтекло10);
         ТабДок.Вывести(ОбластьСтекло10, ВыборкаСтекло10.Уровень());
      КонецЦикла;
   
      ВставлятьРазделительСтраниц = Истина;
   КонецЦикла;
   //}}
КонецПроцедуры




Модуль команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
   ТабДок = Новый ТабличныйДокумент;
   Печать(ТабДок, ПараметрКоманды);

   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.Защита = Ложь;
   ТабДок.ТолькоПросмотр = Ложь;
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.Показать();
   //}}
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
   Документы.ФаксыСтекло.Печать(ТабДок, ПараметрКоманды);
КонецПроцедуры

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
А что не получается то?

Оффлайн beztrud

если пишу
Если Объект.Стекло1.Количество() > 0 Тогда
      ТабДок.Вывести(ОбластьСтекло1Шапка);
      ВыборкаСтекло1 = Выборка.Стекло1.Выбрать();
      Пока ВыборкаСтекло1.Следующий() Цикл
         ОбластьСтекло1.Параметры.Заполнить(ВыборкаСтекло1);
         ТабДок.Вывести(ОбластьСтекло1, ВыборкаСтекло1.Уровень());
      КонецЦикла;
      КонецЕсли;
То пишет ошибку {Документ.ФаксыСтекло.МодульМенеджера(111,8)}: Переменная не определена (Объект)
      Если <<?>>Объект.Стекло1.Количество() > 0 Тогда (Проверка: Сервер)

Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
В модуле менеджера нет контекста документа определенного, поэтому передавать надо. Попробуй так
Если НЕ Выборка.Стекло1.Пустой() Тогда
      ТабДок.Вывести(ОбластьСтекло1Шапка);
      ВыборкаСтекло1 = Выборка.Стекло1.Выбрать();
      Пока ВыборкаСтекло1.Следующий() Цикл
         ОбластьСтекло1.Параметры.Заполнить(ВыборкаСтекло1);
         ТабДок.Вывести(ОбластьСтекло1, ВыборкаСтекло1.Уровень());
      КонецЦикла;
КонецЕсли;

Оффлайн beztrud

Респект и уважуха!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

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

Ответов: 1
Просмотров: 4470
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

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

Ответов: 6
Просмотров: 15910
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

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

Ответов: 3
Просмотров: 4195
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

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

Ответов: 1
Просмотров: 620
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

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

Ответов: 4
Просмотров: 7735
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
171 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
51 Сообщений
alex0402
49 Сообщений
andron81_81
38 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal