Перейти к содержимому

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

  • автор:

Связь колонок табличного поля с колонками источника данных

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

  1. Можно использовать метод СоздатьКолонки() табличного поля . В этом случае табличное поле создаст набор колонок по умолчанию и свяжет их с соответствующими колонками источника данных . Набор создаваемых колонок зависит от типа отображаемого списка :
    • Для списков справочников, планов видов характеристик и планов видов расчета создаются колонка Картинка, и колонки Код и Наименование, если их длина установлена не равной нулю.
    • Для списка документов создаются колонки Картинка, Номер (если его длина не равна нулю), Дата и Проведен .
    • Для списка плана счетов создаются колонка Картинка, и колонки Код, Наименование и Порядок, если их длина установлена не равной нулю.
    • Для списков регистров и соответствующих им наборов записей создаются колонки для всех существующих измерений, ресурсов и реквизитов, а также колонки картинки, регистратора и периода.
    • Для таблицы значений, дерева значений и табличной части создаются все существующие колонки.
  2. Можно создать программно необходимые колонки в табличном поле и связать их с соответствующими колонками списка. Для этого необходимо использовать метод Добавить() коллекции колонок табличного поля. После добавления колонки необходимо привязать ее к соответствующей колонке списка, используя свойство Данные колонки табличного поля , которому необходимо присвоить имя колонки списка . Для того чтобы отображать в колонке табличного поля флажки, необходимо использовать свойство ДанныеФлажка , которому необходимо присвоить имя колонки, содержащей значения флажков. Данный способ удобен тем, что позволяет создавать только необходимые колонки. Поясним использование данного способа на следующем примере. Пусть требуется получить все записи списка справочника «Номенклатура», у которых страной происхождения является Китай , загрузить их в таблицу значений и отобразить значения колонок Код, Наименование и ПометкаУдаления в табличном поле . Для этого выгрузим эти записи при помощи запроса в таблицу значений , установим эту таблицу значений табличному полю в качестве источника данных и добавим в табличное поле три колонки : Копировать в буфер обмена

После добавления колонки может потребоваться настроить редактирование. Для этого у колонки необходимо сбросить свойство ТолькоПросмотр и установить элемент управления — редактор, используя метод УстановитьЭлементУправления() колонки табличного поля. В приведенном ниже примере в табличное поле СправочникНоменклатура добавляется колонка Артикул, которой в качестве редактора значения устанавливается поле ввода : Копировать в буфер обмена

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

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

ИмяПанели = «Панель1»;
тПанель = ЭлементыФормы.Найти(ИмяПанели);
тПанель.ТекущаяСтраница = тПанель.Страницы[1];
НовыйЭлементФормыПТ = ЭлементыФормы.Добавить(Тип(«ТабличноеПоле»),»ТП_Рег»,Истина, тПанель);
НовыйЭлементФормыПТ.ТипЗначения = Новый ОписаниеТипов(«РегистрСведенийСписок.СостояниеВыпускаБанковскихКартБТБ»);

НовыйЭлементФормыПТ.Лево = 6;
НовыйЭлементФормыПТ.Верх = 50;
НовыйЭлементФормыПТ.Высота = 300;
НовыйЭлементФормыПТ.Ширина = 500;

НовыйЭлементФормы = ЭлементыФормы.Добавить(Тип(«КоманднаяПанель»),»КП_Рег»,Истина, тПанель);

НовыйЭлементФормы.Лево = 6;
НовыйЭлементФормы.Верх = 10;
НовыйЭлементФормы.Высота = 30;
НовыйЭлементФормы.Ширина = 500;

НовыйЭлементФормы.ИсточникДействий = НовыйЭлементФормыПТ;
НовыйЭлементФормы.АвтоЗаполнение = Истина;

НовыйЭлементФормы = ЭлементыФормы.Добавить(Тип(«КоманднаяПанель»),»КП_Рег»,Истина, тПанель);

тут должен быть задан источник данных для ком.панели

Как это можно сделать?
4 параметр в Добавить(. ) может быть панель или поле табличного документа.

НовыйЭлементФормы.Данные = «ТП_Рег»; — тоже ошибка!

(2) Данные — это у НовыйЭлементФормыПТ
(3)
вроде, так должно работать.

: Ошибка при установке значения атрибута контекста (Данные)
НовыйЭлементФормы.Данные = «НовыйЭлементФормыПТ»;
по причине:
Данный элемент управления не поддерживает связь с данными.

биля.
НовыйЭлементФормыПТ.Данные = «КакойтоРеквизитФормы»

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

Расширение элементов управления, расположенных в форме (Extension for controls located in a form)
ИсточникДействий (ActionSource)

(2) сорри, подзабыл это уже с УФками 🙂

Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену. по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший

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

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

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

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

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

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

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

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

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

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

Сотр

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

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

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

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

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

Связь формы и элементов управления с данными

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

На эту ситуацию можно посмотреть с двух сторон:

  • С одной стороны существуют привычные объекты конфигурации (как в версии 7.7), у них есть реквизиты и табличные части (тоже с реквизитами).
  • С другой стороны существуют такие объекты как «Форма» и элементы управления (поля ввода, табличные поля, флажки и т.д.).

Объект конфигурации (данные):

Экранная форма и элементы управления:

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

Чтобы какое-нибудь табличное поле в любой экранной форме отображало (и позволяло с ним работать) список элементов справочника, оно должно быть связано определенным образом с объектом типа «СправочникСписок.ИмяСправочника». В этой статье рассматривается, как настроить такую связь между формой с ее элементами управления и объектами конфигурации с их реквизитами и табличными частями.

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

Создание формы списка

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

Выберем тип формы «Произвольная», в этом случае создается независимая форма, не связанная с данными. Заметьте, что у нее нет ни одного реквизита формы.

Внимание. Не путайте реквизиты формы и реквизиты объекта конфигурации , например, справочника или документа. Это разные понятия.

Создадим реквизит формы с именем «СпрСписок» и назначим ему тип «СправочникСписок.Номенклатура»:

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

Заметьте, что при указании свойства «Данные» автоматически изменилось и свойство «Тип значения». Если его сейчас изменить, то изменится тип основного реквизита формы. Мы этого делать не будем.

Если вы перейдете обратно на закладку «Реквизиты» формы, то увидите, что этот реквизит стал «основным» (выделен жирным шрифтом):

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

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

Перейдем теперь в диалог формы и разместим в рабочей области формы элемент управления «Табличное поле»:

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

На этом этапе лучше сразу изменить имя элемента управления на что-нибудь более читабельное, например, «тпСписок». Но имя элемента управления в принципе ни на что не влияет, кроме случая, когда происходит обращение к элементу управления из модуля формы.

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

  • Были созданы колонки «Код» и «Наименование» табличного поля «тпСписок». Эти колонки были автоматически связаны с реквизитами справочника (через свойство колонки «Данные»). Естественно, что это можно было сделать и вручную.
  • Была заполнена верхняя вспомогательная командная панель (замечание: точнее для командной панели было установлено свойство «АвтоЗаполнение», поэтому теперь она будет содержать стандартный набор кнопок, определяемый типом основного реквизита формы)
  • Реквизит формы «ТабличноеПоле1» был удален.

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

Теперь можно запустить «1С:Предприятие» и проверить работу формы:

Создание формы элемента

Теперь создадим форму элемента для этого справочника. Мы опять не будем пользоваться конструктором, а продемонстрируем, как создаются такие формы вручную. Это будет очень полезным, чтобы понимать, что именно делает конструктор.

Создайте новую форму, принадлежащую справочнику. При создании формы укажите тип формы «Произвольная», затем можно задать для нее имя «ФормаЭлементаНовая». Будет создана следующая экранная форма:

Перейдите на закладку «Реквизиты» и создайте новый реквизит формы с именем «СпрОбъект» и типом «СправочникОбъект.Номенклатура».

Этот реквизит пока не является основным реквизитом формы, потому что он не указан в свойстве «Данные» самой формы. Сделаем это. Откройте свойства формы и заполните свойство «Данные» (тип значения будет заполнен автоматически):

Если в палитре свойств изменить «Тип значения», то изменится тип значения реквизита формы. Сейчас этого делать не нужно.

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

  • Изменился потенциальный состав кнопок командных панелей формы (верхней вспомогательной и нижней). Чтобы в верхней командной панели отображался набор кнопок, нужно в ее свойствах снять, а затем опять установить флажок «Автозаполнение». Далее добавьте кнопки ОК, Записать и Закрыть в нижнюю командную панель. Кнопка ОК будет выполнять действия «Записать и Закрыть» и она будет являться кнопкой по умолчанию (выделена жирным шрифтом и срабатывает по Ctrl-Enter). Чтобы выводились надписи и картинки, нужно для каждой кнопки соответствующим образом задать свойство «Отображение». В итоге форма приобретет следующий вид:

  • Расширился состав свойств, методов и событий контекста формы в соответствии с «расширением формы элемента справочника»:

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

Теперь разместим диалоге формы элементы управления для редактирования элемента справочника. Поместите в форму поле ввода и рядом с ним надпись «Наименование»:

В свойствах поля для ввода наименования установите свойство «Данные», связав его с реквизитом «Наименование» объекта «СпрОбъект»:

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

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

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

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

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

Осталось назначить эту форму в качестве основной формы элемента справочника и можно проверять ее работу:

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

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

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