Удалить область в табличном документе программно

Ребята, подскажите кто знает, делаю условие на вывод строк только с отрицательным итогом.
Вот условие:
Если ЭтотОбъект.Отрицательные = Истина И Итого>0 Тогда
Табдок.УдалитьОбласть(Табдок.Область(«R»+НомерМакета+»C1:R»+НомерМакета+»C»+(10+ 2*КоличествоНовыхСтолбцов)), ТипСмещенияТабличногоДокумента.ПоВертикали);
Номер = Номер -1;
КонецЕсли;
Смещение не происходит, может я что-то неправильно понимаю.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Присоединить область в табличном документе
Пытаюсь вывести колонками в ТД через присоединение областей и при выводе выводит после каждой.
Программно удалить большие отступы в документе Word
Добрый вечер. Ситуация такая: есть документ ворда на 1000 страниц, но такое количество страниц.
Проблемы с кодировкой в табличном документе 1С
Здравствуйте Уважаемые формучане На основании макета формируется табличный документ,куда выводятся.
Не печатает нули в табличном документе
В обработке куча строк, но интересующий фрагмент кода ВыводОтчета = Ложь; Если.
![]()
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,247
Рита20, если поможет я делал так
выводил область, проверял условие и задавал область для удаления, затем удалял её.
1 2 3 4 5
ТабличныйДокумент.Вывести(ОбластьШапка); Если НЕ ВыводитьНаПечатьГрузополучателя тогда ОбластьСтрока = ТабличныйДокумент.Область("R15"); ТабличныйДокумент.УдалитьОбласть(ОбластьСтрока, ТипСмещенияТабличногоДокумента.ПоВертикали); КонецЕсли;
Добавлено через 38 секунд
удалял не нужную строку из макета
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293
А зачем выводить области, а потом удалять часть из них по условию?! Почему нельзя перед выводом проверку сделать и если не подходит просто не выводить.
![]()
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,247
Yanush, потому что эта строка находится внутри области, это не отдельная область.
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293

Сообщение было отмечено Рита20 как решение
Решение
Ну от этого смысл моего сообщения не меняется. Значит нужно организовать вывод данных в отчет по-другому. А так это куча лишних действий — вывел удалил и т.д. Тем более, что итоговый табличный документ можно собирать как угодно по кускам, через присоединения и выводы. А чтобы все потом нормально соединялось нужно ячейки делать маленькими по размеру но много.
И да, я тупой. Из первого поста я ничего конкретного не понял, где и что удалять (хоть бы выделили ;( ). На картинке видно, что пропущено много строк (именно строк а не конкретных ячеек внутри строки). Поэтому так и написал.
![]()
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,247
Yanush, в моём примере было проще сделать так, чем разбивать область на подобласти и т.д. тем более надо было доработать именно эту строку, так что работал с тем что было)
Регистрация: 09.12.2013
Сообщений: 34
Спасибо всем)) пришлось итог считать вначале, там просто есть одна тонкость из-за которой его в запросе сразу не получается вывести, удаление области только очищало строки, поэтому такие пропуски на макете, пожелания по выводу только с отрицательным итогом поступили уже после того как отчет был готов) Но несмотря на все проблема решена)
Вот кусочек кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Итого = Остаток - ВыборкаСырье.ПланируемыйРасход; //выводим все Если ЭтотОбъект.Отрицательные = Ложь Тогда Номер = Номер + 1; ОбластьСтрокаСырье.Параметры.Номер = Номер; Табдок.Вывести(ОбластьСтрокаСырье); ОбластьСтрокаОстаток.Параметры.Остаток = Остаток; Табдок.Присоединить(ОбластьСтрокаОстаток); //выводим только отрицательные ИначеЕсли ЭтотОбъект.Отрицательные = Истина И Итого 0 Тогда Номер = Номер + 1; ОбластьСтрокаСырье.Параметры.Номер = Номер; Табдок.Вывести(ОбластьСтрокаСырье); ОбластьСтрокаОстаток.Параметры.Остаток = Остаток; Табдок.Присоединить(ОбластьСтрокаОстаток); КонецЕсли;
Изменить макет печатной формы(убрать колонки и строки)

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.
Реклама
Новые вакансии
- Вакансия: Разработчик 1С, Москва, удалёнка/гибрид, 200-300 net от yskinkurogova
Вчера в 13:25 - Вакансия аналитика 1с УТ от 200K, гибрид от Татьяна Астахова
25 января 2024 г. - Вакансия Программист 1С (Москва, гибрид) 250-300т.р. от paulaja03@gmail.com
23 января 2024 г.
Области табличного документа в 1С
В этой статье научимся работать с областями табличного документа в 1С 8.3. Вы узнаете, как создать и вывести вертикальные области, как создать и вывести горизонтальные области, а также как работать с пересечением областей.
Создадим обработку 1С, в которой будем разрабатывать макеты для демонстрации работы с разными областями табличных документов 1С.
И начнем с вертикальных областей.
Вертикальные области табличного документа 1С 8.3
Выполним небольшую задачу: будем выводить в табличном документе пронумерованные колонки, количество которых задается с формы.
Для реализации, создадим у обработки макет табличного документа, который так и назовем «ВертикальныеОбласти».

Нам нужно создать вертикальную область в этом макете. Для этого выделим те колонки макета табличного документа, в которых мы хотим создать область, и выполним команду «Назначить имя», которая находится по пути «Главное меню – Таблица – Имена».

В открывшемся окне введем имя области.

После того, как мы зададим имя, на макете будет создана область: в поле сверху появится название области, а также отобразятся вертикальные полосы, которые будут эту область ограничивать.

Немного доработаем макет. Объединим ячейки во второй строке. Для этого необходимо их выделить, вызвать контекстное меню, и применить команду «Объединить» этого меню.

В объединенных ячейках установим в свойство Заполнение значение Параметр. У нас в этих ячейках будет выходить какой-то параметр, назовем его НомерКолонки, а также в свойство Горизонтальное положение установим значение Центр.

И увеличим размер шрифта.

Всё, с макетом мы закончили.
Следующим шагом, разработаем основную форму обработки. На этой управляемой форме создадим реквизит «Количество колонок» (тип целое и неотрицательно число), а также команду формы «Вывести вертикальные области».

У команды формы создадим клиентский обработчик, который будет вызывать серверную бесконтекстную функцию.
&НаСервереБезКонтекста Функция ПолучитьТабличныйДокументВертикальныеОбласти(КоличествоОбластей) ТабличныйДокумент = Новый ТабличныйДокумент; Возврат ТабличныйДокумент; КонецФункции // ПолучитьТабличныйДокументВертикальныеОбласти() &НаКлиенте Процедура ВывестиВертикальныеОбласти(Команда) Если КоличествоКолонок = 0 Тогда Возврат; КонецЕсли; ТабДок = ПолучитьТабличныйДокументВертикальныеОбласти(КоличествоКолонок); ТабДок.Показать("Вертикальные области"); КонецПроцедуры
В функции ПолучитьТабличныйДокументВертикальныеОбласти мы получим макет обработки, получим область макета «Колонка», создадим простой цикл от 1 до значения реквизита формы количество колонок, а потом в теле цикла будет в табличном документе присоединять область при помощи метода Присоединить(), который добавляет ячейки области по горизонтали, как бы присоединяя их.
&НаСервереБезКонтекста Функция ПолучитьТабличныйДокументВертикальныеОбласти(КоличествоОбластей) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерТабличныхДокументов.ПолучитьМакет("ВертикальныеОбласти"); ВертикальнаяОбласть = Макет.ПолучитьОбласть("Колонка"); Для н = 1 по КоличествоОбластей Цикл ВертикальнаяОбласть.Параметры.НомерКолонки = "Колонка №" + Строка(н); ТабличныйДокумент.Присоединить(ВертикальнаяОбласть); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции // ПолучитьТабличныйДокументВертикальныеОбласти()
И у нашей обработки будет следующий результат работы.

Горизонтальные области табличного документа 1С 8.3
В этой задаче будем выводить в табличном документе пронумерованные строки. Для этого создадим макет обработки, который назовем «Горизонтальные области». В этом макете выделим строки, и выполним уже знакомую команду «Назначить имя» («Главное меню – Таблица – Имена»).

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

Также как и с предыдущим макетом (вертикальные области), объединим ячейки, сделаем их параметром, увеличим шрифт и выполним центрирование.

На основной форме обработки создадим новый реквизит КоличествоКолонок (тип Число) и команду ВывестиГоризонтальныеОбласти.

Далее, мы создаем обработчик события команды формы и функцию, которая возвращает табличный документ с горизонтальными областями. В этом коде будет все точно также, как и в коде, который формировал табличный документ с вертикальными областями, но только вместо метода Присоединить будет использоваться метод Вывести, который добавляет ячейки области по вертикали.
&НаСервереБезКонтекста Функция ПолучитьТабличныйДокументГоризонтальныеОбласти(КоличествоОбластей) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерТабличныхДокументов.ПолучитьМакет("ГоризонтальныеОбласти"); ГоризонтальнаяОбласть = Макет.ПолучитьОбласть("Строки"); Для н = 1 по КоличествоОбластей Цикл ГоризонтальнаяОбласть.Параметры.НомерСтроки = "Строка №" + Строка(н); ТабличныйДокумент.Вывести(ГоризонтальнаяОбласть); КонецЦикла; Возврат ТабличныйДокумент; КонецФункции // ПолучитьТабличныйДокументГоризонтальныеОбласти() &НаКлиенте Процедура ВывестиГоризонтальныеОбласти(Команда) Если КоличествоСтрок = 0 Тогда Возврат; КонецЕсли; ТабДок = ПолучитьТабличныйДокументГоризонтальныеОбласти(КоличествоСтрок); ТабДок.Показать("Горизонтальные области"); КонецПроцедуры
И результат работы этого кода.

Таким образом. Метод Присоединить табличного документа добавляет области по горизонтали таблицы, а метод Вывести – по вертикали.
Научимся выводить таблицу.
Пересечение областей табличного документа 1С 8.3
Сделаем возможность вывода таблицы с определенным количеством строк и колонок, которое будет задаваться из реквизитов формы, созданных ранее.
Для этого создадим новый макет табличного документа, с пересекающимися вертикальными и горизонтальными областями.

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

На форме обработки создадим команду ВывестиТаблицу.

Создадим обработчик команды и функцию, которая будет формировать таблицу.
&НаСервереБезКонтекста Функция ПолучитьТабличныйДокументТаблицу(КоличествоКолонок, КоличествоСтрок) ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПримерТабличныхДокументов.ПолучитьМакет("ПересечениеОбластей"); ОбластиЯчейки = Макет.ПолучитьОбласть("Строки|Колонки"); Для н = 1 по КоличествоСтрок Цикл ОбластиЯчейки.Параметры.Область = Строка(н) + ".1"; ТабличныйДокумент.Вывести(ОбластиЯчейки); Для к = 2 по КоличествоКолонок Цикл ОбластиЯчейки.Параметры.Область = Строка(н) + "." + Строка(к); ТабличныйДокумент.Присоединить(ОбластиЯчейки); КонецЦикла; КонецЦикла; Возврат ТабличныйДокумент; КонецФункции &НаКлиенте Процедура ВвестиТаблицу(Команда) Если КоличествоСтрок = 0 или КоличествоКолонок = 0 Тогда Возврат; КонецЕсли; ТабДок = ПолучитьТабличныйДокументТаблицу(КоличествоКолонок, КоличествоСтрок); ТабДок.Показать("Таблица"); КонецПроцедуры
Пересечение областей на табличной документе задается таким способом: «Строки|Колонки». Пишем название одной области, вертикальную черту и название другой области, которая с ней пересекается. Так мы получим именно пересечение областей, с которым дальше и будем работать: выводить и присоединять.
В этой функции делаем два цикла. В первом цикле обходим и создаем строки. Первую ячейку строки (она же первая ячейка колонки) мы выводим в табличный документ методом Вывести, а потом начинаем делать цикл по колонкам и уже присоединяем области по горизонтали, с помощью метода Присоединить. Когда колонки заканчиваются мы выходим из цикла по колонками и начинаем следующую итерацию цикла по строкам, выводя опять новую ячейку ниже по таблице с помощью метода Вывести. И так далее.
В этот раз у нас будет следующий результат.

Видео ниже почти повторяет статью, но в нем есть БОНУС. В конце видео я показываю, как добавить в таблицу вывод шапки и боковика, а также вывожу табличный документ на управляемой форме 1С.

Смотрите в этом видео:
Другие статьи про табличные документы в 1С:
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
2 Replies to “Области табличного документа в 1С”
Sanario :
Добрый вечер. А сделать печать документа с динамическими колонками (которые создаются программно)?
«В документе не хочет печатать Выдает ошибку:
Значение не является значением объектного типа (Параметры)
: Заголовок.Параметры.НомерДок = Объект.Номер;
: ТабДок = ПечатьЛистаКомплектацииНаСервере();» Код:
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.КомплектационныйЛист.ПолучитьМакет(«ПечатьЛистаКомплектации»); Заголовок = Макет.ПолучитьОбласть(«ГорОблЗаголовок|ВертОблОснова»);
Заголовок.Параметры.НомерДок = Объект.Номер;
Заголовок.Параметры.ДатаДокумента = Формат(Объект.Дата,»ДФ=dd.MM.yyyy»);
ТабДок.Вывести(Заголовок); Шапка = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
ШапкаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблКлиент»);
СтрокаБоковик = Макет.ПолучитьОбласть(«ГорОблШапка|ВертОблОснова»);
Боковик = Макет.ПолучитьОбласть(«ГорОблСтрока|ВертОблКлиент»); ТабДок.Вывести(Шапка);
Для Н = 1 По Объект.СписокКлиентов.Количество() Цикл
ШапкаБоковик.Параметры.КодКлиента = Н.КодКлиента;
ТабДок.Присоединить(ШапкаБоковик);
КонецЦикла; Для СтрН = 1 По Объект.Товары.Количество() Цикл
СтрокаБоковик.Параметры.НПП = СтрН.НомерСтроки;
СтрокаБоковик.Параметры.Товар = СтрН.Номенклатура.НаименованиеПолное;
СтрокаБоковик.Параметры.СтранаТовара = СтрН.Номенклатура.Родитель;
СтрокаБоковик.Параметры.ПроизводительТовара = СтрН.Номенклатура.Производитель.Наименование;
ТабДок.Вывести(СтрокаБоковик); Для К = 1 По Объект.СписокКлиентов.Количество() Цикл
Боковик.Параметры.КолВо = 0;
ТабДок.Присоединить(Боковик);
КонецЦикла;
КонецЦикла; Возврат ТабДок;
Василий :
Подскажите пожалуйста как реализовать перенос колонок на новую строку. Функция Кнопка2НаСервере(КоличествоОбластей)
ТабличныйДокумент = Новый ТабличныйДокумент; Макет = Обработки.ПечатьЦенник.ПолучитьМакет(«ВертикальныеОбласти»);
ВертикальнаяОбласть = Макет.ПолучитьОбласть(«Колонка»); ТекСтрокаНоменклатура = ЭтаФорма.Элементы.Состав.ТекущаяСтрока; Для Каждого ТекСтрокаНоменклатура Из Объект.Состав Цикл Для н = 1 по КоличествоОбластей Цикл
ВертикальнаяОбласть.Параметры.НомерКолонки = ТекСтрокаНоменклатура.ТабНоменклатура;
ВертикальнаяОбласть.Параметры.Цена = «Цена»;
ТабличныйДокумент.Присоединить(ВертикальнаяОбласть);
КонецЦикла; КонецЦикла; Возврат ТабличныйДокумент;
КонецФункции
Как удалить колонку в табличном документе 1с
Интернет-магазин программного обеспечения ООО «1С-МСсофт.ру»
Телефон в Санкт-Петербурге:
Телефон в Москве:
Вход
Или войти как пользователь:
Меню сайта
Моя корзина
Вход
Или войти как пользователь:
Консультации
Помощь в выборе программного обеспечения
Способы оплаты
- Банковские карты
- ЮKassa
- Наличный расчет
- Безналичный расчет
Новости в мире софта
После ухода с российского рынка основных зарубежных разработчиков САПР возникла необходимость замещения привычных программ отечественными разработками. Рассмотрим некоторые из них.
Современный бизнес все больше полагается на технологии виртуализации, чтобы обеспечить эффективность и гибкость своих операций. Рассмотрим несколько отечественных программных комплексов, которые могут заменить иностранные разработки.
Продолжаем наш цикл статей про импортозамещение ушедших с российского рынка разработчиков программного обеспечения