1С добавить колонку в табличную часть программно

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

Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.

Выглядит это приблизительно так:

Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.

Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.

Следующие три строки добавляют саму колонку на форму.

На этом все, надеюсь данная статья Вам помогла.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

  1. более удобно находить изменения между конфигурациями
  2. Изменять форму "на лету" в процессе работы
  3. Минимизировать изменения типовой конфигурации (в некоторых конфигурациях для этого созданы Переопределяемые модули/процедуры)

Рассмотрим наиболее частые вопросы, все действия показаны здесь проводятся в форме в процедуре ПриСозданииНаСервере

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

поехали!

Итак, унас есть форма и запрос, результат которого выгружен в таблицу. Например, так:

Читайте также:  Триггер на обновление таблицы sql

Выведем таблицу на управляемую форму

Наша основная задача номер РАЗ – вывести результат запроса на управляемую форму.

Для этого нам нужно:

  1. Создать реквизит типа "ТаблицаЗначений".
  2. Создать реквизиты с типом значения, соответствующим типу колонки таблицы, для каждой колонки, подчиненные таблице.
  3. Создать элемент формы типа "ТаблицаФормы" для таблицы.
  4. Создать элементы формы для колонок типа "ПолеФормы".

Таким образом код у нас будет такой:

Здесь мы создаем реквизиты, содержащие таблицу и колонки таблицы. Далее создаем элементы и прописываем для них путь к реквизитам формы. Т.е. у нас всегда создается и реквизит формы, который хранит значение, и элемент формы, который это значение отображает. В этом вся суть. При этом если Вы хотите создать группу формы, то реквизит формы вам не нужен – достаточно создать элемент формы типа "ГруппаФормы", после чего в поле "Вид" прописать соответствующтий вид элемента (Группа, Закладка, . ).

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

Читайте также:  Считается ли отсыпной выходным днем

Добавим колонку в таблицу документа

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

Допустим, мы хотим добавить колонку в таблицу выданных авансов авансового отчета как-нибудь так:

Для этого просто напишем в процедуре ПриСозданииНаСервере такой вот код:

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

Оцените статью
Добавить комментарий

Adblock detector