Программный вывод произвольной таблицы значений на управляемую форму

27.03.25

Разработка - Работа с интерфейсом

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Программный вывод произвольной таблицы значений на управляемую форму:
.epf 5,73Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Коллеги, добрый день!

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

Покажу, как сделать вот такую штуку:

 

 

1. Откроем конфигуратор, создадим новую обработку, в обработке добавим форму.

2. В событии формы "ПриСозданииНаСервере" добавим следующий текст:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Тз = Новый ТаблицаЗначений;
	тз.Колонки.Добавить("К1");
	тз.Колонки.Добавить("К2");
	стр = тз.Добавить();
	стр.К1 = 111;
	стр.К2 = 222;    
	
	стр = тз.Добавить();
	стр.К1 = 333;
	стр.К2 = 444;
	
	Реквизит_Табл  = новый РеквизитФормы("Табл", Новый ОписаниеТипов("ТаблицаЗначений"));
	Реквизит_к1    = новый РеквизитФормы("К1", Новый ОписаниеТипов("Строка"), "Табл");
	Реквизит_к2    = новый РеквизитФормы("К2", Новый ОписаниеТипов("Число"),"Табл");

	
	м = новый Массив;
	м.Добавить(Реквизит_к1);
	м.Добавить(Реквизит_к2);
	м.Добавить(Реквизит_Табл);
	
	ИзменитьРеквизиты(м);
	
	Табл = Элементы.Добавить("Табл", Тип("ТаблицаФормы"));
	Табл.ПутьКДанным = "Табл"; 
	
	Поле1 = Элементы.Добавить("К1", Тип("ПолеФормы"), Табл); 
	Поле1.ПутьКДанным = "Табл.К1";
	Поле2 = Элементы.Добавить("К2", Тип("ПолеФормы"), Табл);
	Поле2.ПутьКДанным = "Табл.К2";
	

	ЗначениеВРеквизитФормы(тз, "Табл");
	
КонецПроцедуры

3. Сохраним и запустим в режиме "Предприятие".

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.21.106

Создание произвольной таблицы значений на форме в управляемом приложении программным способом; вывести таблицу значений на управляемую форму

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

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

5000 руб.

14.01.2016    55958    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64300    45    60    

83

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    20287    29    6    

45

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    26102    mrXoxot    44    

130

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    13607    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18883    1241    elcoan    53    

128

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    13233    170    acces969    31    

127

Работа с интерфейсом Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    8855    kalyaka    6    

34
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gravitator 27.03.25 15:37 Сейчас в теме
Честно сказать непонятна целевая аудитория сего творчества. Зачем это?
В программном формировании элементов и реквизитов формы нет ничего сложного. Честно говоря, заходя сюда, ожидал увидеть универсальный код, действительно позволяющий выводить любую (состав колонок которой заранее неизвестен) таблицу значений на форму, а не это поделие...
2. SAShikutkin 15 27.03.25 17:17 Сейчас в теме
(1) Для новичков я так понимаю. Многие теряются, когда нужно добавить что-то сложнее поля ввода.
4. evgen7938 16 27.03.25 22:25 Сейчас в теме
(2) а я вот, не могу назваться себя новичком. Я уже достаточно давно работаю с 1С, но когда возникла задача сделать подобное и был острый дефицит времени - я не нашел подходящего примера.

Пусть будет, возможно, нейросеть считает эту информацию и скорректирует то, что выдает в данный момент.
11. starik-2005 3167 28.03.25 15:01 Сейчас в теме
(4)
я не нашел подходящего примера
Очень странно, очень:
https://infostart.ru/1c/articles/574802/

Вообще, на эту тему сотни статей.
12. evgen7938 16 30.03.25 03:25 Сейчас в теме
(11) Да, все верно, статей много, спорить не буду.

Вот, кстати, Вашу статью 2017 года тоже прокомментировали:
"поддерживаю (1). Приведенный код обильно присутствует на всем известных форумах.
Если бы сделали всеобъемлющее руководство, привели нюансы с какими багами предстоит встретиться на разных платформах, про удаление и т.д.
А так... В чем новость?
"

Итого: статей много, но продолжают появляться новые. Странно, очень странно...
А может это не спроста, может, за этой странностью действительно имеется какая-то проблема?
Может быть тема для поисковиков сложная, не индексируется соответствующим образом или еще что?
Почему с момента публикации Вашей статьи в 2017 году продолжают появляться новые?
3. evgen7938 16 27.03.25 22:20 Сейчас в теме
(1)
действительно позволяющий выводить любую (состав колонок которой заранее неизвестен) таблицу значений


Добрый день!
Подскажите, пож-та, а в чем Вы видите принципиальную сложность добавления лобой таблицы?
Можете подробнее описать Ваши изначальные ожидания?
5. sapervodichka 6955 28.03.25 01:15 Сейчас в теме
У меня товарищ из запроса выгружает ТЗ и закидывает её в процедуру рисования на форме

&НаСервере
Процедура СоздатьЗаполнитьРеквизиты(ИмяТЗ, ТЗ_Данные, Родитель)

	// Создание реквизита формы 
	МассивДобавляемыхРеквизитов = Новый Массив;
	МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ИмяТЗ, Новый ОписаниеТипов("ТаблицаЗначений")));

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

	// Создание элемента формы типа ТаблицаФормы для отображения ТЗ
	ЭлементДерево = Элементы.Добавить(ИмяТЗ, Тип("ТаблицаФормы"), Элементы[Родитель]);
	ЭлементДерево.ПутьКДанным = ИмяТЗ;
	ЭлементДерево.Отображение = ОтображениеТаблицы.Список;
	ЭлементДерево.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
	
	Для Каждого Колонка Из ТЗ_Данные.Колонки Цикл
	    НовыйЭлемент = Элементы.Добавить(ИмяТЗ+Колонка.Имя, Тип("ПолеФормы"), ЭлементДерево);
	    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
	    НовыйЭлемент.ПутьКДанным = ИмяТЗ+"." + Колонка.Имя;
	КонецЦикла;

	// Преобразование объекта прикладного типа ТаблицаЗначений
	// в реквизит управляемой формы (данные формы)
	ЗначениеВРеквизитФормы(ТЗ_Данные, ИмяТЗ);   
	
	Элементы[Родитель].Видимость = Истина;

КонецПроцедуры
Показать
7. evgen7938 16 28.03.25 08:41 Сейчас в теме
(5) Коллеги, я думаю, это отличный пример! а товарищ - красавчик )
sapervodichka; +1 Ответить
10. SlavaKron 28.03.25 08:56 Сейчас в теме
(5)
Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ИмяТЗ))
А разве не надо очищать тип колонки ТЗ от типа NULL, который непременно добавляет результат запроса?
14. gravitator 30.03.25 17:59 Сейчас в теме
(3)
Вам в (5) все подробно показали. Управляемые формы существуют настолько давно, что Вы по сути изобрели велосипед, причем в самом примитивном виде, и хвастаетесь им, хотя программная модификация форм легко постигается после пары уроков...
6. user1832003 57 28.03.25 07:58 Сейчас в теме
когда искал в свое время это, то нашел в гугле по первой ссылке. Как это можно не найти?

Пример реализации максимально унылый. все на хардкоде... Еще и за бабки...Надмозг одним словом
8. evgen7938 16 28.03.25 08:43 Сейчас в теме
(6) Я сегментировал целевую аудиторию. Есть те, кому нравится срач в комментах. Надеюсь, доставил удовольствие.
9. spyke 145 28.03.25 08:51 Сейчас в теме
https://infostart.ru/1c/articles/960353/ (6 лет статье и там сделано универсально)
13. evgen7938 16 30.03.25 03:37 Сейчас в теме
(9) Хорошая статья, спасибо за информацию.
Кстати, автору той статьи тоже досталось от коллеги starik-2005.

(11) Подскажите, пож-та, как Вам так часто удается отслеживать такой большой поток информации и комментировать новые публикации? Что является для Вас мотивацией в данном случае?
Оставьте свое сообщение