1C v7.7: Вывод на печать произвольной переменной типа "Таблица значений"

19.10.12

Разработка - Универсальные функции

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

Автор: Денис Горбунов, осень 2001 - осень 2003
Оригинал расположен на: http://faq1c.gorbunov.ru

Побаяню и я.

1C v7.7: Вывод на экран произвольной переменной типа "Таблица значений"

Описание

Процедура предназначена для облегчения отладки прикладных решений (конфигураций).
Выводит на экран в удобночитаемом виде содержимое произвольной переменной типа "ТаблицаЗначений".
Может быть использована с любой конфигурацией 1С: Предприятие V 7.7.

Автор: Денис Горбунов, осень 2001 - осень 2003
Оригинал расположен на: 
http://faq1c.gorbunov.ru/node/3
Как это использовать

Входные параметры:

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

Предусмотрена дуракозащищенность: корректно отрабатывает, даже если в качестве первого входного параметра подсунуть переменную другого типа - а, точнее, сруганется и выведет на экран наименование типа этого параметра.

Результат работы:
Формирование и вывод на экран печатной формы (объекта типа "Таблица").
Выглядит как обычная таблица - с шапкой (заголовком), разной шириной колонок (ширина определяется автоматически по содержимому)

История создания

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

Да и, вообще, просмотр сложных структур данных неудобен в большинстве отладчиков большинства систем программирования, а не только 1С: Предприятие V 7.7. Мне давненько это не нравилось.

И напала на меня мысль, что в языке программирования 1С: Предприятие V 7.7 есть все необходимые средства для реализации универсального алгоритма просмотра "ТаблицыЗначений".

Отбится от этой мысли не удалось. И первый (насколько я помню даже еще нерабочий) вариант был сделан в тот же день. И через небольшой промежуток времени алгоритм был доведен до ума.
В течение 2001, 2002, 2003 годов алгоритм совершенстовался по мелочам. Основная же идея созрела еще в самый первый день.

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

Исходный текст

Врезается в глобальный модуль прикладного решения (конфигурации) и вызывается откуда угодно. Если не хочется врезать в глобальный модуль, то слово "Экспорт" в объявлении процедуры смысла не имеет ;)

 

Процедура глВывестиТаблицуЗначений(ТаблицаЗначений, Заголовок = "") Экспорт
    Перем
Таб, ИИ, ЖЖ, НазваниеКолонки, ТипКолонки, Ширина, Значение, Сообщение;
   
Таб = СоздатьОбъект("Таблица");
    Если
ТипЗначенияСтр(ТаблицаЗначений) <> "ТаблицаЗначений" Тогда
       
Сообщение = "В процедуру ""глВывестиТаблицуЗначений()"" передана переменная не типа ""ТаблицаЗначений"", "+
       
"а типа """+СокрЛП(ТипЗначенияСтр(ТаблицаЗначений))+"""";
       
Таб.Область(1, 1, 1, 1).Текст = Сообщение;
       
Таб.Область(1, 1, 1, 1).ШиринаСтолбца(СтрДлина(Сообщение));
       
Таб.ТолькоПросмотр(1);
       
Таб.Показать("Не таблица значений: "+Заголовок);
        Возврат;
    КонецЕсли;
    Для
ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл
       
ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ,,,, НазваниеКолонки);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).Текст = СокрЛП(НазваниеКолонки);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).РамкаОбвести(5, 5, 5, 5);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).ВертикальноеПоложение(3);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).ГоризонтальноеПоложение(3);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).РазмерШрифта(7);
       
Таб.Область(1, ЖЖ, 1, ЖЖ).Полужирный(1);
       
Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца();
       
Ширина = Макс(Ширина, СтрДлина(СокрЛП(НазваниеКолонки)));
       
Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина);
    КонецЦикла;
    Для
ИИ = 1 по ТаблицаЗначений.КоличествоСтрок() цикл
        Для
ЖЖ = 1 по ТаблицаЗначений.КоличествоКолонок() цикл
           
Значение = ТаблицаЗначений.ПолучитьЗначение(ИИ, ЖЖ);
           
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Текст = Значение;
           
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Расшифровка(Значение, 0);
           
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).РамкаОбвести(3, 0, 3, 0);
           
Ширина = Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца();
           
Ширина = Макс(Ширина, СтрДлина(СокрЛП(Строка(Значение))));
           
Таб.Область(1, ЖЖ, 1, ЖЖ).ШиринаСтолбца(Ширина);
           
ТаблицаЗначений.ПолучитьПараметрыКолонки(ЖЖ, ТипКолонки); ;
            Если
ТипКолонки = "Число" тогда
               
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ГоризонтальноеПоложение(2);
            КонецЕсли;
            Если
ИИ = ТаблицаЗначений.ТекущаяСтрока() тогда
               
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).ЦветФона(255, 0, 0);
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
   
Таб.ТолькоПросмотр(1);
   
Таб.Показать("Таблица значений: "+Заголовок);
КонецПроцедуры

На приведенном скриншоте результат отладочной таблицы для обработки Движение ОС (//infostart.ru/public/68881/) 

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    656    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1816    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4398    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13284    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10092    malovandrey    1    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18672    2    HAMMER_59    6    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. anton.fly7 173 14.04.10 11:06 Сейчас в теме
2. v.l. 434 14.04.10 11:18 Сейчас в теме
3. Ёпрст 1063 14.04.10 12:31 Сейчас в теме
Э... а куды мой пост делся ?


4. v.l. 434 14.04.10 12:37 Сейчас в теме
(3) А никуды не делся - удалился вместе с дублем статьи.
Дык и там есть расшифровка, о которой все мечтают:
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Расшифровка(Значение, 0);
5. Ёпрст 1063 14.04.10 13:39 Сейчас в теме
(4) в первоналальном варианте нихрена там не было.
6. v.l. 434 14.04.10 13:47 Сейчас в теме
7. v.l. 434 14.04.10 13:47 Сейчас в теме
8. Pin 170 15.04.10 11:30 Сейчас в теме
Вообще-то этим уже в субботу побаянили вот тут

(4)Я с вашего позволения пожалуй порву баян и выложу реализацию с нормальной расшифровкой, а не с этим недоразумением которое тут "как бы есть".
9. v.l. 434 15.04.10 12:15 Сейчас в теме
(8) А давайте объединим усилия в одну публикацию?
Скажите, чего не так в расшифровке и напишите Ваш вариант а я добавлю.
А то прямо "перенумератор"! какой-то получился.
10. Dolly_EV 269 15.04.10 12:38 Сейчас в теме
(8) Какой-то заразительный боян... ;) Я тоже побояню: http://infostart.ru/public/69026/
(9) как-то разом на всех напала необходимость в отладке)) можно уже отдельную подгруппу организовать в классификаторе "просмотрщики ТЗ, СЗ, ИТЗ"
11. shoy 19 21.04.10 10:31 Сейчас в теме
:D
Бойтесь все! Сейчас придёт в студию самый крутой автор самой первой подобной разработки и всех вас съест! 8-)

я вот помню ещё одну такую!
С возможностями визуального изменения (сортировка, свёртка, группировка, изменения порядка колонок, и их формата. С загрузкой из разных видов таблиц (ТЗ, ТЧ, справочник).
Умеет сохранять свои результаты и возвращаться к ним.
http://infostart.ru/projects/664/?ref=825
v.l.; RustIG; +2 Ответить
12. v.l. 434 21.04.10 10:43 Сейчас в теме
(11) Прийдеть автор, захочет убрать - убру!
Ссылку на него я положил в заголовке, такчто все копирайты соблюдены.

Интюресная обработочка ;)
Оставьте свое сообщение