Табличное поле 1с в форме как создать
Перейти к содержимому

Табличное поле 1с в форме как создать

  • автор:

Реализация отметки строк флажками в табличном поле

Иногда требуется дать возможность пользователю отметить определенные строки табличного поля, чтобы выполнить над ними определенное действие. Например, построить отчет только по выбранным группам товаров, сформировать пачку для Пенсионного фонда только для отмеченных сотрудников и другие подобные задачи.

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

Ниже приведены два примера. Первый пример показывает реализацию отметки строк в табличном поле, связанном с таблицей значений, а второй пример — при отображении динамического списка, например, списка элементов справочника «Номенклатура».

Пример 1. Отметка строк в табличном поле, связанном с таблицей значений

Основные принципы реализации этой возможности следующие:

  1. Список отмеченных строк нужно хранить, например, в коллекции типа «Соответствие».
  2. Текущее состояние флажков нужно отображать с помощью обработчика события ПриВыводеСтроки.
  3. Отслеживать переключение флажка и соответствующим образом изменять коллекцию в обработчике события » ПриИзмененииФлажка «.

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

  • «ФИО» (является колонкой таблицы значений, т.е. заполнено свойство «Данные»)
  • «Отметка» (является обычной колонкой табличного поля, не связана ни с какой колонкой таблицы значений, т.е. свойство «Данные» незаполнено).

В модуле формы размещены приведенные ниже процедуры. Обратите внимание, что процедуры тпСотрудникиПриВыводеСтроки и тпСотрудникиПриИзмененииФлажка являются обработчиками событий табличного поля, т.е. они назначены в палитре свойств для соответствующих событий.

Сотр

Пример 2. Отметка строк в табличном поле, отображающем динамический список

Аналогичным образом можно реализовать отметку строк для динамического списка, например, элементов справочника или документов. Ниже показано табличное поле, отображающее список элементов справочника «Номенклатура».

Программный модуль, реализующий отметку строк в динамическом списке, приведен ниже. Обратите внимание, что теперь список отмеченных элементов хранится не в объекте типа «Соответствие», как в предыдущем примере, а в объекте типа «СписокЗначений». Это сделано исключительно для демонстрации гибкости платформы 1С:Предприятия 8.0.

Вы можете посмотреть внешнюю обработку » marks.epf «, в которой содержатся два приведенных выше примера. Обратите внимание, что для просмотра второго примера требуется, чтобы в конфигурации был справочник «Номенклатура».

Внешняя обработка с примерами находится на CD-ROM в каталоге \1CITS\EXE\Examples81

Табличное поле 1с в форме как создать

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

НовыйЭлемент = ЭлементыФормы.Добавить(Тип(«ТабличноеПоле»), «ТЧ_Перечисление», Истина, ТекущаяПанель);

НовыйЭлемент.Верх = 6;
НовыйЭлемент.Высота = 19;
НовыйЭлемент.Лево = 6;
НовыйЭлемент.Ширина = 800;
НовыйЭлемент.Данные = «NEW__Перечисление»;
НовыйЭлемент.ТолькоПросмотр = Ложь;
//НовыйЭлемент.ИзменятьПорядокСтрок = Истина;
НовыйЭлемент.ИзменятьСоставСтрок = Истина;

НовоеПоле= НовыйЭлемент.Колонки.Вставить(0, «Ведомость»);
//НовоеПоле.Имя = «Ведомость»;
НовоеПоле.УстановитьЭлементУправления(Тип(«ПолеВвода»));
НовоеПоле.Данные = «Ведомость»;

Пробовал просто через НовыйЭлемент.СоздатьКолонки() . В примерах, которые я нашел, там так и было написано.

ЧЯДНТ? Не ужели нужно добавлять все колонки табличной части в табличное поле руками?

чтобы все работало, нужно данный код размещать ПриОткрытии или ПередОткрытием.

появились новые вопросы:

1) как к добавленным колонкам назначит события? ведь у самой колонки нет никаких событий, а есть только у полей ввода.

2) как обратиться к полю ввода табличного поля через форму?

Сейчас убрал метод НовыйЭлемент.СоздатьКолонки()

НовыйЭлемент.Колонки.Вставить(0, «Ведомость»);
НовыйЭлемент.Колонки.Колонка1.УстановитьЭлементУправления (тип(«ПолеВВода»));
НовыйЭлемент.Колонки.Колонка1.Данные = «Ведомость»;
НовыйЭлемент.Колонки.Колонка1.Положение = ПоложениеКолонки.ВТойЖеКолонке;

УстановитьЭлементУправления
А потом обращайся к элементу управления через «.ЭлементУправления»

в документе «Платежное поручение исходящее» есть панель «ПанельПлатежи», у нее есть страницы » — Перечисление ЗП, Выдача подотчетнику и т.д.

Я программно добавил свою страницу на данную панель, но как разместить на ней новые реквизиты, которые тоже создаются программно? Т.к. в методе «ЭлементыФормы.Добавить» последний параметр это

» (необязательный)
Тип: Панель; ПолеТабличногоДокумента.
Определяет, какой панели формы или какому табличному документу принадлежит создаваемый элемент. Если указана панель, то добавляемый элемент размещается на текущей странице панели. Если не указан, создаваемый элемент будет принадлежать непосредственно форме. «

Следовательно, никак нельзя связать новые элементы с страницей?

Как временное решение сделал свою новую панель поверх «ПанельПлатежи».

Табличное поле 1с в форме как создать

Хочу в форме программно создать табличное поле и вставить туда колонки. Создаю таб. поле, пишу
НоваяКолонка = ЭлементыФормы.ДопОтпуска.Колонки.Добавить(«НомерСтроки»,»№»);
НоваяКолонка.УстановитьЭлементУправления(Тип(«ПолеВвода»));
На второй строке вылазит ошибка что метода УстановитьЭлементУправления для объекта «НоваяКолонка» нет. Смотрю в трассировщике, и правда, колонка новая создалась, но тип у нее Неопределено.

Подскажите как вставить в форму табличное поле и заполнить его колонками

Колонки надо в источнике данных поля добавлять
(1) Источник данных Табличного поля или поля ввода или какого поля?
(2) Таб. поля, само собой. В нем данные не хранятся, как ни странно, они в нем только отображаются.
(2) табличного поля. И не забыть про СоздатьКолонки(). А вообще — зачем вся эта чехарда?
Народ лучче пришлите кусок кода как это делать?, а я свой пришлю то что я накропал

НоваяСтраницаПанели = ЭлементыФормы.Панель.Страницы.Вставить(1,»ДопОтпуска_», «Доп отпуска»);
ЭлементыФормы.Панель.ТекущаяСтраница = НоваяСтраницаПанели;

ТаблПолеДопОтпуска = ЭлементыФормы.Добавить(Тип(«ТабличноеПоле»),»ДопОтпуска_», Истина,ЭлементыФормы.Панель);
ТаблПолеДопОтпуска.Данные = «ДопОтпуска»;
ТаблПолеДопОтпуска.Лево = 6;
ТаблПолеДопОтпуска.Верх = 24;
ТаблПолеДопОтпуска.Высота = 162;
ТаблПолеДопОтпуска.Ширина = 620;
ТаблПолеДопОтпуска.Подвал = Истина;
ТаблПолеДопОтпуска.ТолькоПросмотр = Ложь;
ТаблПолеДопОтпуска.СоздатьКолонки();
//КоллекцияКолонок = ЭлементыФормы.ДопОтпуска_.Колонки;
//НоваяКолонка1 = КоллекцияКолонок.Добавить(«НомерСтроки»,»№»);
//НоваяКолонка1.имя = «оролра»;
//НоваяКолонка2 = КоллекцияКолонок.Добавить(«ВидРасчета»,»Вид расчета»);
//НоваяКолонка2.УстановитьЭлементУправления(Тип(«ПолеВвода»));
//НоваяКолонка2.ЭлементУправления.Данные = «ВидРасчета»;
//НоваяКолонка3 = КоллекцияКолонок.Добавить(«Размер»,»Дней»);
//НоваяКолонка4 = КоллекцияКолонок.Добавить(«Результат»,»Результат»);
//НоваяКолонка5 = КоллекцияКолонок.Добавить(«Сторно»,»Сторно»);
//НоваяКолонка6 = КоллекцияКолонок.Добавить(«Авторасчет»,»Авторасчет»);
//НоваяКолонка7 = КоллекцияКолонок.Добавить(«ОплаченоДнейЧасов»,»Оплачено дней/часов»);
//НоваяКолонка8 = КоллекцияКолонок.Добавить(«ПериодРасчетаСреднегоЗаработкаНачало»,»Период расчета среднего заработка начало»);
//НоваяКолонка9 = КоллекцияКолонок.Добавить(«ПериодРасчетаСреднегоЗаработкаОкончание»,»Период расчета среднего заработка окончание»);

КоманднаяПанельДопотпуска = ЭлементыФормы.Добавить(Тип(«КоманднаяПанель»),»КоманднаяПанельДопОтпуска_», Истина,ЭлементыФормы.Панель);
КоманднаяПанельДопотпуска.ИсточникДействий = ЭлементыФормы.ДопОтпуска_;
КоманднаяПанельДопотпуска.АвтоЗаполнение = Истина;
КоманднаяПанельДопотпуска.Лево = 6;
КоманднаяПанельДопотпуска.Верх = 0;
КоманднаяПанельДопотпуска.Высота = 24;
КоманднаяПанельДопотпуска.Ширина = 620;

ТаблПолеДопОтпуска.КонтекстноеМеню = ЭлементыФормы.КоманднаяПанельДопотпуска_;
ЭлементыФормы.Панель.ТекущаяСтраница = ЭлементыФормы.Панель.Страницы[0];

Табличный документ на управляемой форме в 1С 8.3

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

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

Пример с отчетом

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

Отчет с макетом табличного документа

Подробнее о том, как создается и оформляется макет табличного документа, читайте в этой статье:

Следующим шагом создадим пустую форму подчиненную этом отчёту, и добавим у неё реквизит управляемой формы с типом ТабличныйДокумент.

Реквизит управляемой формы с типом ТабличныйДокумент

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

Элемент формы поле табличного документа

Создадим команду управляемой формы, и поместим её на форму в виде кнопки.

Команда управляемой формы

Для команды создадим обработчики в серверном и клиентском контексте. В серверном обработчике получим макет табличного документа и единственную область макета. А потом просто будем выводить, как мы это уже делали ранее, полученную область в табличном документе — реквизите формы.

&НаСервере Процедура ПечатьНаСервере() МакетТД = Отчеты.НашОтчет.ПолучитьМакет("Макет"); ОбластьШапка = МакетТД.ПолучитьОбласть("Область"); ТабДок.Вывести(ОбластьШапка); КонецПроцедуры &НаКлиенте Процедура Печать(Команда) ПечатьНаСервере(); КонецПроцедуры 

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

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

Вывод табличного документа в 1с предприятии

Пример с печатной формой документа

А сейчас, мы доработаем вывод печатной формы документа, который мы делали в статье ранее:

Раньше у нас печатная форма документа выходила каждый раз в отдельном окне, так её выводила платформа 1С, мы же сделаем так, чтобы печатная форма выводилась в нужной нам управляемой форме.

Для этого мы создадим общую форму, которую назовем ФормаВыводаПечатнойФормы.

Общая форма

У этой формы создадим реквизит с типом ТабличныйДокумент, разместим его на форме, а также поменяем заголовок формы.

Реквизит с типом табличный документ управляемой формы

Следующим шагом, создадим параметр ТабДок с типом ТабличныйДокумент.

Параметр управляемой формы с типом табличный документ

Нам осталось при создании формы реквизиту управляемой формы присвоить значение параметра.

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ТабличныйДокументФормы = Параметры.ТабДок; КонецПроцедуры 

На этом мы закончим работать с общей формой. В нашем случае, при открытии, форма будет заполняться тем табличным документом, который будет передан в параметре.

Перейдем в модуль команды документа, которую мы создали в предыдущей статье.

Открытие модуля команды

И подправим эту команду: будем открывать общую форму, в которую в качестве параметра передадим сформированный ранее табличный документ.

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

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

Всё! На этом доработка команды закончена. Можно проверить, как работает открытие нашей формы.

Открытие общей управляемой формы для печати

Причем, форму мы можем открыть, как с общего списка документов, так и из нужного нам документа.

Открытие общей управляемой формы для печати

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

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *