|
v7: Вывести список в семерке | ☑ | ||
---|---|---|---|---|
0
kofeinik
31.03.16
✎
23:28
|
Походу, в одной из семерок придется жить дольше, чем хочется, поэтому вопрос: посредством чего можно быстро добавить функционал вывода многострочной/табличной части в таблицу для последующего сохранения/печати?
|
|||
1
Zamestas
31.03.16
✎
23:42
|
(0) Обработка с дерганьем метаданных + пляски с шириной колонок.
|
|||
2
HawkEye
31.03.16
✎
23:49
|
(0)посредством кода...
|
|||
3
Builder
31.03.16
✎
23:58
|
Проще всего посредством мастера печати, если я понял о чем ТС.
|
|||
4
kofeinik
01.04.16
✎
00:49
|
(3) чтобы понять, нужен мастер Йода, не меньше
|
|||
5
Злопчинский
02.04.16
✎
00:37
|
есть такая хорошенькая практически "типовая" ПечатьТЗ(..куча параметров) - (спасибо Наташе?) - ставишь ее экспортной в глобальный модуль, макет - в общие таблицы конфиги.
для вывода ТЗ в минимальном случае достаточно ПечатьТЗ(МояТЗ); Для вывода ТЧ дока: ТЗ=""; ВыгрузитьтабличнуюЧасть(ТЗ); ПечатьТЗ(ТЗ). вот типа так сделано http://content.screencast.com/users/Che66/folders/Jing/media/f3b09de7-5b5e-4eb7-b7ab-b38291286bf9/2016-04-02_0035.png |
|||
6
Злопчинский
02.04.16
✎
00:44
|
для универсального вывода на печать форму списка справочника - тоже можно, но чуть придется предварительной работы сделать...
- получить контексть формы списка (это есть) - определить параметры (установлен ли отбор, включена ли иерархия, при включенной иерархии - в какой группе находимся, порядок сортировки списка, получить список видимых колонок списка - и повторить это все выборкой/запросом с выпихиванием в ТЗ как выше. для журнала - аналогично. Трудности могут быть с текстовыми колонками, в которых формулой выводится (но через метаданные и атрибуты списка можно получить доступ и к параметрам текстовых колонок... так что .. можно все.. почти.. главное чтобы еноты были... ну или посоветуют сейчас ТП юзать - там наверняка и печать типа штатной должна быть... |
|||
7
vadim777
02.04.16
✎
08:49
|
(6) Непонято, что-же тебе надо? Может это поможет, юзаю уже давно:
//=========================================== //Установление автоширины колонок таблицы Процедура АвтоШиринаКолонок(Таб,НачКол,НачСтр) // Проходим по столбцам таблицы, Для НомерКол=НачКол По Таб.ШиринаТаблицы() Цикл // затем спускаемся по текущему столбу по ячейкам (по строкам), // и максимизируем ширину каждой ячейки в текущем столбце МаксШирина=0; Для НомерСтр=НачСтр По Таб.ВысотаТаблицы() Цикл ТекШирина =Таб.Область(НомерСтр,НомерКол).ШиринаСтолбца(); // Ширина текущего столбца ТекДлина =СтрДлина(СокрЛП(Таб.Область(НомерСтр,НомерКол).Текст)); // Размер текста в ячейке МаксШирина=Макс(МаксШирина,ТекШирина,ТекДлина); КонецЦикла; Таб.Область(,НомерКол).ШиринаСтолбца(МаксШирина); КонецЦикла; КонецПроцедуры //===================================== Процедура ВывестиТЗ(ТЗ, Знач ИмяТЗ, Итог=0, ВКонец=0) Перем Таб,Длина,Заголовок,Ширина, СписокПолей; //Если ПустоеЗначение(ТЗ) = 1 Тогда // Сообщить("Ошибка вызова процедуры ВывестиТЗ: пустое значение ТЗ "+ИмяТЗ); // Возврат; //КонецЕсли; ИмяТЗ = СокрЛП(ИмяТЗ); Если ТипЗначенияСтр(ТЗ) <> "ТаблицаЗначений" Тогда Сообщить("Ошибка вызова процедуры ВывестиТЗ: тип значения ТЗ "+ИмяТЗ+" = "+ТипЗначенияСтр(ТЗ)); Возврат; КонецЕсли; Если ТЗ.КоличествоКолонок() = 0 Тогда Сообщить("Ошибка вызова процедуры ВывестиТЗ: в ТЗ "+ИмяТЗ+" не заданы колонки"); Возврат; КонецЕсли; Если ТЗ.КоличествоСтрок() = 0 Тогда // Сообщить("Ошибка процедуры вызова ВывестиТЗ: пустая ТЗ "+ИмяТЗ); Возврат; КонецЕсли; СписокПолей = ""; Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ВыводТЗ"); //! Сначала выведем заголовки столбцов Для Кол = 1 По ТЗ.КоличествоКолонок() Цикл ТЗ.ПолучитьПараметрыКолонки(Кол,,Длина,,Заголовок,Ширина); Значение = Заголовок; Если Кол=1 Тогда Таб.ВывестиСекцию("Строка|Столбец"); СписокПолей = Заголовок; Иначе Таб.ПрисоединитьСекцию("Строка|Столбец"); СписокПолей = СписокПолей +"," + Заголовок; КонецЕсли; КонецЦикла; //! Вывод содержимого таблицы Для Стр = 1 По ТЗ.КоличествоСтрок() Цикл Для Кол = 1 По ТЗ.КоличествоКолонок() Цикл Значение = ТЗ.ПолучитьЗначение(Стр, Кол); Если Кол=1 Тогда Таб.ВывестиСекцию("Строка|Столбец"); Иначе Таб.ПрисоединитьСекцию("Строка|Столбец"); КонецЕсли; КонецЦикла; КонецЦикла; Если Итог = 1 Тогда ТЗИтог = СоздатьОбъект("ТаблицаЗначений"); ТЗИтог.Загрузить(ТЗ); ТЗИтог.НоваяКолонка("_123_"); ТЗИтог.Заполнить(123,,,"_123_"); ТЗИтог.Свернуть("_123_",СписокПолей); ТЗИтог.УдалитьКолонку("_123_"); Для Стр = 1 По ТЗИтог.КоличествоСтрок() Цикл // Несмотря на то, что в ТЗИтог д.б. одна строка // Для начала убедимся, что в колонке если числовые значения Для Кол = 1 По ТЗИтог.КоличествоКолонок() Цикл Значение = ТЗИтог.ПолучитьЗначение(Стр, Кол); Если СтрЧислоВхождений(Значение, ".") > 1 Тогда // Обычно это Дата Значение = ""; Иначе ЗначТест = Число(Значение); Если ПустоеЗначение(ЗначТест) = 1 Тогда Значение = ""; Иначе Значение = ЗначТест; // Чисто число! Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если Значение = "" Тогда // В строке нет чисел - итог считать не по чем! Продолжить; КонецЕсли; Для Кол = 1 По ТЗИтог.КоличествоКолонок() Цикл Значение = ТЗИтог.ПолучитьЗначение(Стр, Кол); Если СтрЧислоВхождений(Значение, ".") > 1 Тогда // Обычно это Дата Значение = ""; Иначе ЗначТест = Число(Значение); Если ПустоеЗначение(ЗначТест) = 1 Тогда Значение = ""; Иначе Значение = ЗначТест; // Чисто число! КонецЕсли; КонецЕсли; Если Кол=1 Тогда Таб.ВывестиСекцию("Итог|Столбец"); Иначе Таб.ПрисоединитьСекцию("Итог|Столбец"); КонецЕсли; КонецЦикла; КонецЦикла; КонецЕсли; АвтоШиринаКолонок(Таб,1,1); Таб.ТолькоПросмотр(1); Таб.Опции(,,1,,ИмяТЗ,ИмяТЗ); Таб.ПараметрыСтраницы(2); Таб.Показать(ИмяТЗ,""); КонецПроцедуры // ВывестиТЗ(..) |
|||
8
Злопчинский
02.04.16
✎
09:52
|
(7) мне не надо, у меня все есть
|
|||
9
Это_mike
02.04.16
✎
10:39
|
(6) у тп печати списка нет.а вот у поставщика данных есть.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |