Версия для печати темы (https://pro1c.org.ua/index.php?s=8b75331445b7afdee8b2b8b57f8543b6&showtopic=10482)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С Предприятие 8 _ Как программно сформировать и заполнить табличный документ по таблице значений в 1С 8

Автор: Vofka 04.01.13, 13:24

Сделаю небольшой опус.

В результате каких-то манипуляций появилась у нас таблица значений, которую нам надо показать пользователю. Кто-то скажет: "Ну и что? Кидаем на форму табличное поле и вуаля". Если такой вариант всех устраивает - то пожалуйста. Но в таком случае, как минимум, нужно размещать табличное поле и занимать пространство на форме.

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

Суть решения сводится к тому, чтобы получить некое подобие отчета и показать его пользователю. Я уже слышу негодование откуда-то со стороны по поводу того, что рисовать макет, чертить области, программировать его заполнение и вывод и прочее куда более затратно (лениво), чем варианты, оговоренные выше. Но спешу успокоить вас, что ничего этого делать не нужно. Всё что нам надо будет сделать - это следующее:

ТаблицаЗначений = ПолучитьКакиеТоДанные(); // я, надеюсь, понятно, что здесь демонстрируется момент, что переменная ТаблицаЗначений у нас как-то получается

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


Спасибо за внимание. smile.gif

Если знаете ещё способы - пишите в коментах.

Автор: nikora 22.09.21, 21:30

Vofka @ 04.01.13, 14:24 * ,
а как сделать тоже самое только в фоновом задании из под сервера?

Автор: Vofka 23.09.21, 8:09

nikora, так как выше написано не работает?

Автор: nikora 24.09.21, 17:38

Vofka @ Вчера, 9:09 * ,
ПолучитьМакетОформления(СтандартноеОформление.Классика) - не работает под сервером.

решил путем помещения ТабличногоДокумента в ХранилищеЗначений и записью в Константу. Из под сервера получаю ТабличныйДокумент из константы и вуаля.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua