Данныеформыколлекция как добавить колонку

Добавить программно колонки на форму

Привет (УФ), хочу добавить программно в ТаблицаРабочийТабель — это ТаблицаЗначений, а на форме ДанныеФормыКоллекции те колонки которые будут выгружены в ТЗ

ТЗ = Новый ТаблицаЗначений;
Линия = Справочники.прЛинии.Выбрать();

Пока Линия.Следующий()Цикл
Попытка
ТЗ.Колонки.Добавить(«К_»+Строка(Линия.Код));
Исключение
КонецПопытки;
КонецЦикла;
Стр = ТЗ.Добавить();
Стр.К_000000001 = Справочники.прЛинии.НайтиПоКоду(«000000001»);
ТаблицаРабочийТабель.Загрузить(ТЗ);

но на форме ничего не отображается, на форме ТаблицаРабочийТабель есть но без колонок

(6) так кто же знает сколько будет колонок, сколько элементом добавит пользователь к справочник столько и колонок должно быть, а значит фиксировано не нужно добавлять колонки.

Решил врчуну
ЭтаФорма.ТаблицаРабочийТабель — так получаю ДанныеФормыКоллекция но она пустая если так делаю

Тип: Массив.
Массив, содержащий объекты типа РеквизитФормы.
Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками.
К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект. .
Тип: Массив.
Массив, содержащий строки, описывающие пути к удаляемым реквизитам.
Удалять можно только ранее программно добавленные реквизиты.
Описание:

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

Сервер, мобильное приложение(сервер).

Новый РеквизитФормы( , , , , )
Параметры:

Тип: Строка.
Путь к создаваемому реквизиту. Не включает имя реквизита.
Содержит отображаемый текст реквизита.
Значение по умолчанию: Ложь.
Описание:

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

Источник

Как в 1С добавлять на форму списка различные колонки

Обновим 1С с гарантией сохранности базы

Поможем с 1С 24/7, без выходных

Установим сервисы 1С бесплатно

Оперативно решим любые задачи по 1С

Любой документ в 1с имеет определенную форму. Если нам необходимо ее изменить, например добавить для видимости колонку, то сделать это можно следующим способом:

1) Заходим в документ и в правом верхнем углу нажимаем на кнопку «Еще».

2) В появившемся списке выбираем «Изменить форму».

3) В открывшейся окне настройки формы проверяем проставленные «V» — возможно у нужного поля галочка не стоит.

Если ее нет, то проставляем и нажимаем «Ок» (Для примера добавим в «Тип»).

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

Для примера переместим «Тип» сразу за колонкой «Номенклатура».

Если в списке нет нужного реквизита, то можно воспользоваться кнопкой «Добавить поля», но это работает не всегда — там где возможно кнопка будет активна.

Для примера выведем на форму «Вид номенклатуры». Для этого открываем «Настройка формы» (п.1, 2), выбираем строчку «Номенклатура» и нажимаем «Добавить поля».

В появившемся списке ставим галочку возле «Вид номенклатуры» и нажимаем «ОК».

В списке «Настройка формы» появится соответствующая строчка. Нажимаем «ОК».

Источник

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

Область применения: управляемое приложение, мобильное приложение.

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

2. При работе с объектами типа ДанныеФормыКоллекция , если предполагается, что объект типа ДанныеФормыКоллекция может содержать большое количество строк (нужно ориентироваться на количество от 20 строк), необходимо придерживаться следующих рекомендаций:

  • обход строк такой коллекции необходимо производить на сервере;
  • функцию НайтиСтроки вызывать только на сервере.

Например, если решается задача по проверке в объекте строк, удовлетворяющих некоторому условию, то
неправильно:

правильно выполнять один явный вызов сервера:

Маленький IT блог с характером 1С.

Страницы

Поиск по блогу

пятница, 9 октября 2015 г.

Передача таблицы значений с сервера на клиент

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

Вариант №1

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

&НаСервере
Функция ПолучитьТЗКакМассивСтруктур()

МассивСтруктур = Новый Массив;
Для Каждого СтрокаТЗ Из МояТаблицаЗначений Цикл
СтрокаСтруктура = Новый Структура;
Для Каждого КолонкаТЗ Из МояТаблицаЗначений.Колонки Цикл
СтрокаСтруктура.Вставить(КолонкаТЗ.Имя, СтрокаТЗ[КолонкаТЗ.Имя]);
КонецЦикла;
МассивСтруктур.Добавить(СтрокаСтруктура);
КонецЦикла;

&НаКлиенте
Процедура ПолучитьДанные()

Минус данного решения – это отсутствие тех самых полезных методов таблицы значений.

Вариант №2

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

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

Рисунок 1. Реквизит формы типа ТаблицаЗначений

А потом написать следующий код:

&НаСервере
Функция ОтправитьТаблицуЗначенийНаКлиент()

ДобавляемыеРеквизиты = Новый Массив;
УдаляемыеРеквизиты = Новый Массив;

МассивКолонок = Новый Массив;
ИмяТаблицыФормы = «ИмяТаблицыЗначений»;

Для Каждого ТекКолонка из ТаблицаФормы.Колонки Цикл
УдаляемыеРеквизиты.Добавить(ИмяТаблицыФормы + «.» + ТекКолонка.Имя);
КонецЦикла;

Для Каждого ТекКолонка из МояТаблицаЗначений.Колонки Цикл
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ТекКолонка.Имя, ТекКолонка.ТипЗначения, ИмяТаблицыФормы));
МассивКолонок.Добавить(ТекКолонка.Имя);
КонецЦикла;

// Добавим новые, удалим старые колонки
ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты);
// Поместим значение в реквизит формы
ЗначениеВРеквизитФормы(МояТаблицаЗначений, ИмяТаблицыФормы);

Далее на клиенте можно смело обращаться к свежеиспеченной таблице значений ЭтаФорма.ИмяТаблицыЗначений.

личный блог

С задачей вывода каких либо данных в Таблицу Значений (ТЗ) на форме сталкиваются наверное все программисты. Если раньше до выхода Управляемого Интерфейса все решалось довольно просто, то теперь все немного изменилось.

Для обычных форм.

Стоит отметить, что предварительно нужно создать соответствующие РезультатуЗапроса колонки таблицы значений. Делается это также просто. Добавить ТаблицуЗначений следует в реквизиты Формы. Еще раз акцентирую внимание — Названия колонок и типы данных колонок ТЗ должны совпадать и на форме и в запросе. Можно вообще не создавать ТЗ на форме, а описать ее программно, примерно как то так:

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

Ниже пример такого преобразования.

Во всей этой истории следует обратить внимание на 2 строчки.

Первая

Вторая

Первый из типа данных ДанныеФормыКоллекция преобразует данные в тип ТаблицаЗначений. Второй соответственно конвертирует в обратном направлении.

Источник

ОБРАБОТКИ.com

Управляемая форма 1С 8.2 – работа с таблицей на форме (управление текущей строкой, перемещение и удаление элементов)

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

Задача: реализовать две команды КурсорВверх и КурсорВниз, которые соответственно перемещают ТекущуюСтроку(Курсор) на предыдущую(следующую) строку.

Исходные данные: управляемая форма, ТЗОбъект — реквизит формы типа ТаблицаЗначений(конечно же правильней говорить о типе который моделирует Таблицу значений, а именно ДанныеФормыКоллекция), которая отображается на форме при помощи элемента формы ТЗОбъект типа Таблица(Не путать с одноименным реквизитом формы!). Предполагается, что ДанныеФормыКоллекция содержит некоторые данные, внесенные вручную или программно. Добавляем пару команд и пишем код, реализующей нужные действия, комментарии я дам ниже.

Теперь давайте разберемся что здесь к чему. Во первых следует уяснить, что ДанныеФормыКоллекция и Таблица формы это два совершенно разных объекта. Первый содержит данные, а второй является контейнером для их отображения. Элементы.ТЗОбъект.ТекущиеДанные предоставляет доступ к данным текущей строки и имеет тип ДанныеФормыЭлементКоллекции, он доступен только для чтения. С помощью метода Индекс(Элементы.ТЗОбъект.ТекущиеДанные) мы получаем индекс текущего элемента коллекции, далее осуществляем проверку выхода за границы коллекции. После чего с помощью метода ПолучитьИдентификатор() получаем идентификатор следующего(предыдущего) элемента коллекции и присваиваем его свойству Таблицы формы ТекущаяСтрока, которое как раз и содержит идентификатор текущей строки таблицы(на которую установлен курсор). Вот такая нетривиальная связь между вышеупомянутыми объектами.
Реализуем ещё несколько полезных команд: удаление текущего элемента, перемещение текущего элемента вверх(вниз). Несмотря на то, что эти команды являются стандартными(для объекта Таблица) и поддерживаются на уровне самой платформы, их альтернативная ПРОГРАММНАЯ реализация в некоторых случаях может быть очень полезна.

Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания — поддержите автора.

Источник

ТаблицаЗначений и Колонки

Подскажите пожалуйста, почему если у меня на форме есть ТЗ , и я хочу получить количество колонок программно, то это не срабатывает, хотя остальные методы работы с ТЗ вроде как работают 🙂

вот эта строчка не срабатывает:
Кол = ТрудозатратыСотрудника.Колонки.Количество();

а вот эти прекрасно работают :

Для Каждого СтрокаТЗ Из ТрудозатратыСотрудника Цикл
ЧтоЭто=СтрокаТЗ.ТипРабот;
Сообщить(Строка(СтрокаТЗ.ТипРабот));
КонецЦикла;

Так сработает, если на форме табличное поле с типом значения ТаблицаЗначений

Таблица заполняется в модуле формы:

(12)
У вас на форме есть два одноимённых объекта «ТрудозатратыСотрудника»

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

Второй объект формы — это элемент формы типа «ТаблицаФормы». Его назначение — отображать данные. К нему обращаются так: Элементы.ТрудозатратыСотрудника. У него есть свойство «ПодчиненныеЭлементы», которое содержит коллекцию колонок и групп колонок для отображения на форме.

Источник

Читайте также:  Наушники для фонематического слуха
Оцените статью