1С 8.3 Программное создание таблицы значений на форме в управляемом приложении — Программист 1С Минск. Автоматизация бизнеса.
1С 8.3 Программное создание таблицы значений на форме в управляемом приложении

&НаСервере
Процедура ПриОткрытииНаСервере ()
// Описание таблицы значений как реквизита
МассивТипа = Новый Массив ;
МассивТипа . Добавить ( Тип ( «ТаблицаЗначений» ));
// Добавление ТаблицыЗначений в массив реквизитов
ОписаниеТипа = Новый ОписаниеТипов ( МассивТипа );
МассивРеквизитовФормы = Новый Массив ;
МассивРеквизитовФормы . Добавить (Новый РеквизитФормы ( «ТаблицаСотрудников» , ОписаниеТипа , «» , «ТЗСотр» ));
// Создание ТаблицыЗначений с описанием колонок
КвалификаторыСтроки = Новый КвалификаторыСтроки ( 10 );
ОписаниеСтроки_10 = Новый ОписаниеТипов ( «Строка» , , КвалификаторыСтроки );
ОписаниеСотрудника = Новый ОписаниеТипов ( «СправочникСсылка.Сотрудники» );
ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( «Код» , ОписаниеСтроки_10 );
ТЗ . Колонки . Добавить ( «Сотрудник» , ОписаниеСотрудника );
// ТЗ.Колонки.Добавить — можно и в цикле
// Добавление в массив реквизитов колонок ТаблицыЗначений
Для Каждого Колонка Из ТЗ . Колонки Цикл
МассивРеквизитовФормы . Добавить (Новый РеквизитФормы ( Колонка . Имя , Колонка . ТипЗначения , «ТаблицаСотрудников» ));
КонецЦикла;
// Удаление — если таблица существует
ЭлементТаблица = Элементы . Найти ( «ТаблицаСотрудников» );
Если ЭлементТаблица <> Неопределено Тогда
Элементы . Удалить ( ЭлементТаблица );
Иначе
ИзменитьРеквизиты ( МассивРеквизитовФормы );
КонецЕсли;
// Добавление ТаблицыЗначений на форму
ТаблицаПолейВыбора = Элементы . Добавить ( «ТЗСотр» , Тип ( «ТаблицаФормы» ));
ТаблицаПолейВыбора . ПутьКДанным = «ТаблицаСотрудников» ;
ТаблицаПолейВыбора . Отображение = ОтображениеТаблицы . Список ;
ТаблицаПолейВыбора . ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы . Нет ; // Отключение командной панели
Для Каждого Колонка Из ТЗ . Колонки Цикл
НовыйЭлемент = Элементы . Добавить ( Колонка . Имя , Тип ( «ПолеФормы» ), ТаблицаПолейВыбора );
НовыйЭлемент . Вид = ВидПоляФормы . ПолеВвода ;
НовыйЭлемент . ПутьКДанным = «ТаблицаСотрудников.» + Колонка . Имя ;
НовыйЭлемент . Ширина = 10 ;
// Заполнение ТаблицыЗначений
Запрос = Новый Запрос ;
Запрос . Текст =
«ВЫБРАТЬ
| Сотрудники.Код КАК Код,
| Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.Наименование КАК Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|
|УПОРЯДОЧИТЬ ПО
| Наименование» ;
РезультатЗапроса = Запрос . Выполнить ();
ВыборкаДетальныеЗаписи = РезультатЗапроса . Выбрать ();
Пока ВыборкаДетальныеЗаписи . Следующий () Цикл
Строка = ТЗ . Добавить ();
Строка . Код = ВыборкаДетальныеЗаписи . Код ;
Строка . Сотрудник = ВыборкаДетальныеЗаписи . Ссылка ;
КонецЦикла;
// Передача ТаблицыЗначений в реквизит формы
ЗначениеВРеквизитФормы ( ТЗ , «ТаблицаСотрудников» );
Вывести таблицу значений в табличное поле
Здравствуйте, подскажите пожалуйста. Есть у меня запрос, выбирает действующие на данный момент скидки. как их вывести на форму, при открытии ее (минуя нажатие кнопки Сформировать)?
Процедура ПриОткрытии()
Запрос = Новый Запрос;
Запрос.Текст дата»,ТекущаяДата());
(5) Перечитай ещё раз (2).
ЗЫ. В свойствах табличного поля посмотри, что у него в «Данные» прописано.
(6) так понятнее, спс )
и всё равно
Результат = Запрос.Выполнить();
ЭлементыФормы.ТабличноеПоле1.Выгрузить(Результат);
Метод объекта не обнаружен (Выгрузить)
🙁
имеет значение то, что отчет внешний?
(15) Результат = Запрос.Выполнить();
ЭлементыФормы.ТабличноеПоле1 = Результат.Выгрузить();
Поле объекта недоступно для записи (ТабличноеПоле1)
что я делаю не так? может его отдельно надо сделать доступным для записи?
1С Управляемые Формы. Программное создание таблицы значений и динамического списка (Часть 2)
Перед прочтением данной статьи рекомендуется ознакомиться с первой частью, в которой описаны примеры программного создания элементов, команд, реквизитов управляемой формы, а также описание стандартных возможностей для работы с ними.
В данной же части будет рассмотрено программное создание динамических списков, таблиц значений на форме, их вывод в элементы формы и стандартные возможности для работы.
Модифицировать формы рекомендуется программно для удобного обновления конфигураций и исключения конфликтов, а также для удобной поддержки кода. Со статьями о механизмах модификации можно ознакомиться в разделе полезных ссылок.
Также все описанные в текущем разделе процедуры и функции находятся во внешней обработке УпрФормы.
Примеры программного создания элементов, команд, реквизитов управляемой формы, а также описание стандартных возможностей для работы с ними можно будет посмотреть в части 1.
Для запуска обработки в режиме предприятия необходимо наличие объектов «Справочники.Номенклатура», подчиненный ему «Справочники.ХарактеристикиНоменклатуры» и «РегистрыСведений.ЦеныНоменклатуры”.
Создание реквизита типа таблица значений и вывод на форму
Добавление условного оформления таблицы формы
Создаем условное оформление для таблицы:
- если реквизит формы Использование (тип булево) = Истина, тогда разрешаем изменять цену в строках таб. части;
- если в строке таб части цена не заполнена, то выделять фон ячейки «Цена» розовым.
В процедуру команды добавим вызов серверной процедуры для заполнения таблицы цен в зависимости от выбранной номенклатуры и характеристики:
Добавляем в процедуру ПриСозданииНаСервере процедуры:
Заполняем реквизиты Номенклатура, Характеристика и заполняем цены в таблице значений. 

Создание реквизита типа динамический список с заданными настройками и вывод на форму
На странице 3 создадим динамический список с выводом всех цен выбранной номенклатуры и характеристики.
Добавим Условное Оформление дин. списка, отбор и сортировку программно.
Вывести динамический список в элементы управляемой формы 1С
Для вывода дин. списка воспользуемся процедурами, которые использовали при выводе таблицы значений, так как это один тип — ДанныеФормыКоллекция.
Обновление параметров динамического списка программно
Если в запросе дин. списка используются параметры, то их необходимо обновлять при изменении соответствующих реквизитов.
Добавляем в процедуру ПриСозданииНаСервере процедуры:
Заполняем реквизиты Номенклатура, Характеристика и заполняем цены в таблице значений. 
Содержимое регистра сведений ЦеныНоменклатуры: 
Динамический список на форме: 
Таблица значений 1С
Таблица значений 1С — это универсальная коллекция значений, которую разработчик может использовать при программной разработке для реализации своих алгоритмов. По сути, таблица значений 1С представляет собой динамический набор значений, имеющих колонки и столбцы.
Работая в конфигураторе 1С, программист может создать таблицу значений, как при помощи кода, так и интерактивно на форме.
Таблица значений 1С на управляемой форме
На любой управляемой форме 1С 8.3 разработчик может разместить таблицу значений в виде реквизита формы. Для этого нужно создать новый реквизит и задать ему тип «Таблица значений».

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

Но если у Вас нет задачи, чтобы пользователь как-то интерактивно работал с таблицей значений на форме, то совсем необязательно создавать реквизит формы с типом таблица значений. Разработчик может работать с таблицей значений из встроенного языка программирования 1С.
Программное создание таблицы значений 1С
Вы можете создать таблицу значений в любом программном модуле при помощи оператора Новый.
ТЗ = Новый ТаблицаЗначений ;
Эта таблица значений будет существовать в том контексте, в котором Вы её создали: если Вы создали её в процедуре или функции, то она будет существовать до того момента пока выполняется эта процедура или функция. Если Вы её создали в программном модуле объекта, то таблица значений будет существовать пока выполняется обращение к этому объекту.
Но имейте в виду, что если вы создали таблицу значений в процедуре или функции программного модуля управляемой формы 1С 8.3, то на клиенте (под директивой &НаКлиенте) код будет выполняться только в толстом клиенте. В тонком клиенте и на веб-клиенте нельзя работать с таблицей значений. Возникнет ошибка!

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

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
One Reply to “Таблица значений 1С”
Добрый день, Ильяз! хотела поддержать проект и не смогла оплатить с Карты Маэстро.
М.б. другие варианты.
Спасибо за проект!