Как вывести тз на форму 1с

Обновлено: 29.06.2024


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


Выводим на форму заполненную Таблицу значений в 1С 8.3:

&НаСервере
Процедура ПриОткрытииНаСервере ()

// Описание таблицы значений как реквизита
МассивТипа = Новый Массив ;
МассивТипа . Добавить ( Тип ( "ТаблицаЗначений" ));

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

// Создание ТаблицыЗначений с описанием колонок
КвалификаторыСтроки = Новый КвалификаторыСтроки ( 10 );
ОписаниеСтроки_10 = Новый ОписаниеТипов ( "Строка" , , КвалификаторыСтроки );

ОписаниеСотрудника = Новый ОписаниеТипов ( "СправочникСсылка.Сотрудники" );

ТЗ = Новый ТаблицаЗначений ;
ТЗ . Колонки . Добавить ( "Код" , ОписаниеСтроки_10 );
ТЗ . Колонки . Добавить ( "Сотрудник" , ОписаниеСотрудника );
// ТЗ.Колонки.Добавить - можно и в цикле

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

// Удаление - если таблица существует
ЭлементТаблица = Элементы . Найти ( "ТаблицаСотрудников" );
Если ЭлементТаблица <> Неопределено Тогда
Элементы . Удалить ( ЭлементТаблица );
Иначе
ИзменитьРеквизиты ( МассивРеквизитовФормы );
КонецЕсли;

// Добавление ТаблицыЗначений на форму
ТаблицаПолейВыбора = Элементы . Добавить ( "ТЗСотр" , Тип ( "ТаблицаФормы" ));
ТаблицаПолейВыбора . ПутьКДанным = "ТаблицаСотрудников" ;
ТаблицаПолейВыбора . Отображение = ОтображениеТаблицы . Список ;
ТаблицаПолейВыбора . ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы . Нет ; // Отключение командной панели

Для Каждого Колонка Из ТЗ . Колонки Цикл

НовыйЭлемент = Элементы . Добавить ( Колонка . Имя , Тип ( "ПолеФормы" ), ТаблицаПолейВыбора );
НовыйЭлемент . Вид = ВидПоляФормы . ПолеВвода ;
НовыйЭлемент . ПутьКДанным = "ТаблицаСотрудников." + Колонка . Имя ;
НовыйЭлемент . Ширина = 10 ;

// Заполнение ТаблицыЗначений
Запрос = Новый Запрос ;
Запрос . Текст =
"ВЫБРАТЬ
| Сотрудники.Код КАК Код,
| Сотрудники.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.Наименование КАК Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|
|УПОРЯДОЧИТЬ ПО
| Наименование" ;

РезультатЗапроса = Запрос . Выполнить ();

ВыборкаДетальныеЗаписи = РезультатЗапроса . Выбрать ();
Пока ВыборкаДетальныеЗаписи . Следующий () Цикл
Строка = ТЗ . Добавить ();
Строка . Код = ВыборкаДетальныеЗаписи . Код ;
Строка . Сотрудник = ВыборкаДетальныеЗаписи . Ссылка ;
КонецЦикла;

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

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


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

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

Справка

УправляемаяФорма.ИзменитьРеквизиты()

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

ВсеЭлементыФормы.Добавить()

  • Имя (обязательный, тип Строка ). Уникальное имя добавляемого элемента.
  • ТипЭлемента (обязательный, тип Тип ). Тип добавляемого элемента.
  • Родитель (необязательный, тип: ГруппаФормы ; ТаблицаФормы ; УправляемаяФорма ). Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
  • Тип: ДекорацияФормы ; ГруппаФормы ; КнопкаФормы ; ТаблицаФормы ; ПолеФормы .
  • Добавляет элемент в коллекцию.
  • Сервер, мобильное приложение (сервер).

Nav view search

Navigation

Search

Универсальная печать таблицы значений для 1С 8

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

Результат печати ниже. Обработку с примером можно скачать здесь.

личный блог


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

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

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

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

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

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

Первая

Вторая

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

Распечатать

Как заполнить табличную часть формы программно?  6
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С  42
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps  20
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2)  0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. COM-подключение к базе 7.7 из 8.2 1С  6
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь= Посмотреть все результаты поиска похожих

Еще в этой же категории

Создание Таблицы значений и описание типов значений ее колонок  28
ТаблицаПериодов = Новый ТаблицаЗначений; ТаблицаПериодов.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число")); ТаблицаПериодов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций")); ТаблицаП Удаление строк Таблицы Значений  27
// 1. Удаление строк согласно условию НулевыеСтроки = ТаблицаПослеПодмен.НайтиСтроки(Новый Структура(" Сумма" ,0)); Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл ТаблицаПослеПодмен.Удалить(СтрокаТаблицы) КонецЦикла; // Нужно оставить стр Как скопировать, выгрузить данные из одной таблицы значений в другую?  11
Как скопировать или выгрузить данные из одной таблицы значений в другую таблицу значений? 1. Добавление, копирование строк из одной таблицы значений в другую таблицу значений: Для каждого СтрокаТЗ Из Таблица1 Цикл ЗаполнитьЗначенияСвойств(Таблица Объединение 2 таблиц значений  10
// Объединить 2 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Ускорение поиска в таблице значений - Индексы  9
Для более быстрого поиска в базах данных было придумано свойство индекс. При использовании таблиц значений мы также можем создавать индексы для произвольных колонок. Например, у нас есть таблица с колонками «Номенклатура, Цена, ЕдиницаИзмерения». И Посмотреть все в категории Работа с Таблицей Значений

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

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Код в одну процедуру можно было и без обработки выложить. если уж выкладываете chemezov; user717534; Alex1c; V_Ladeska; LuxVeritatis; Stref75; Alien_job; ilialin; taishy; as-lubava; user774630; igormiro; tinkerbell; purgin; lost-s0u1; jura_t_vega; Annita; абв-вба; dusha0020; balbesinka; Lena272; gigapevt; tolyan_ekb; Styvi; Ulfhedhinn; KRJ; acanta; ikar-nikolay; dour-dead; Evmil; pchelkatoo; petrov_al; + 32 – Ответить

Спасибо! Программно добавил колонки в тз и долго мучился с выводом их на форму. Постоянно была Ошибка при установке значения атрибута контекста (ПутьКДанным) по причине: Недопустимое значение.

Оказалось что перед добавлением элементов формы нужно еще реквизиты формы добавить (ИзменитьРеквизиты).

Если бы в коде (3) была проверка на ПрограммноСозданныйРеквизит да и еще для внешней обработки, то юзал бы Ваш код "as is":)

Типовое создание элементов/реквизитов управляемой формы.
В чем уникальность публикации? Или просто как визуализация книжек по упр. интерфейсу?

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

Особенностью обработки считаю универсальную процедуру, т.к. в инете есть примеры с конкретной структурой.

(5) hiduk, Большое спасибо за помощь. В 82 из мелочи любят выдумывать сложности. Туда сюда гонять реквизиты и т д. Не понимаю зачем так заморачиваться. Сам не додумался. Большое спасибо! Получилось с вашей помощью . Спасибо за готовое решение.
Скопировал код, буду использовать в ближайшее время - ибо пока обходился без заполнения таблиц на УФ.

Я пробовал вышеуказанный код - у меня не работало удаление таблицы значений из управляемой формы. В итоге сделал свою модификацию:

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

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

Ну и до кучи - процедура вывода таблицы значений на управляемую форму:

v.l.; detro; lost-s0u1; Steelvan; Valerich; Prog1CZUP31; mangy; Styvi; + 8 – Ответить

&НаСервере
Процедура УдалитьТЗ(УФ, НомерТЗ="1") Экспорт

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

Если НЕ УдаляемыйЭлемент = Неопределено Тогда
// Теперь удалим элемент формы, который служил для визуального отображения
// удалённого реквизита УФ "Таблица значений"
УФ.Элементы.Удалить(УдаляемыйЭлемент);

Можно ли в добавленной таблице вызвать процедуру ПриАктивацииСтроки и т.п.? (10) tolyan_ekb, Можно наверное:) Попробуйте определить переменную ТЗОбработчиковСобытий как ТЗ. Добавить туда строку, колонка ИмяСобытия = "ПриАктивацииСтроки". А в модуле формы определить процедуру с именем "ИмяТаблицы" + "ПриАктивацииСтроки". В общем поройте в этом направлении. Здравствуйте.
А как сделать группы. Ну чтобы при отображении на форме несколько колонов были объединены в Группу колонок. (11) AleksSF, Добрый день! Группы сделать можно, но сложно:) (13) hiduk,
Повозился немного и сделал. В принципе не так сложно.
Но я делал для своей конфы, поэтому не доводил ее до универсальности.
Если интересно могу прислать.

Я немного подправил код вывода ТЗ: ранее он позволял вывести на управляемую форму только одну таблицу значений. Либо нужно было удалять сначала одноимённую ТЗ. Теперь ничего удалять не надо, и можно выводить на форму сколько угодно ТЗ, причём процедура принимает только один параметр - саму таблицу значений и ничего лишнего:

Но ещё интереснее было бы печатать таблицу значений в независимый табличный документ. Как бы это сделать?

Спасибо за обработку, очень удобнов вставлять и юзать. Даже внутрь не лазил процедур, юзал как функцию.

Если у таблицы тип содержит массив, не выводится.

Пришлось сделать проверку, ну и потом добавление колонок в попытке-исключении.

Спасибо за открытый код в комментариях! Даже скачивать не пришлось))

Просмотры 52869

Загрузки 316

Рейтинг 45

Создание 21.06.13 22:59

Обновление 21.06.13 22:59

№ Публикации 191774

Конфигурация Конфигурации 1cv8

Операционная система Windows

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Не указано

См. также

Альтернативный способ добавления элементов и реквизитов на формы Промо

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

1 стартмани

09.09.2019 18005 35 bmk74 7

Выделение текущей строки в отчете (сделать сразу во всех отчетах и ничего не сломать)

Как за 10 минут упростить работу с отчётами программистам и пользователям. Добавить ВО ВСЕ ОТЧЁТЫ механизм автоматического выделения текущей строки отчёта (той, на которой установлен курсор). И ПРИ ЭТОМ НИЧЕГО НЕ СЛОМАТЬ.

1 стартмани

17.10.2021 2826 6 Патриот 48

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

Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.

5 стартмани

18.02.2021 5739 13 compmir 30

Интерактивная справка по объектам 1С (подключаемое расширение)

База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020 15995 84 sapervodichka 47

Расширенная настройка динамического списка УФ Промо

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

Читайте также: