|
Поле табличного документа. Сохранение и вывод на печать | ☑ | ||
---|---|---|---|---|
0
Chuvaschow
30.03.17
✎
10:59
|
Здравствуйте, уважаемые форумчане!
Нужна ваша помощь, направьте в нужное русло. Необходимо сделать заполнение одной из форм статистической отчетности из документов на УФ. Решил сделать через ПолеТабличногоДокумента. Наглядно, красиво. Однако как сохранять значения (при записи документа) и как вывести на печать не разобрался. Гугл не помог. Подскажите: 1. Как сохранять значения при записи документа? (думаю нужно копать в сторону ХранилищеЗначений) 2. Как вывести на печать ПолеТабличногоДокумента? Буду очень благодарен за помощь. http://savepic.ru/13374434.jpg |
|||
1
Рэйв
30.03.17
✎
11:02
|
А зачем его хранить? Формируй каждый раз заново. Вдруг данные изменятся - кому тогда твои сохранения будут нужны?
|
|||
2
Chuvaschow
30.03.17
✎
11:07
|
Дело в том, что это годовой отчет. Хочется записать документ, скажем за 2016 год, создать новый на 2017 и т.д. и в любой момент открыть и посмотреть, что же там было в 2016.
|
|||
3
Рэйв
30.03.17
✎
11:07
|
(2)Сохрани таб док в файл в какойнибудь папке с названием "Годовые отчеты" и смотри в любой мосент
|
|||
4
Рэйв
30.03.17
✎
11:08
|
но все таки чтобы "посмотреть, что же там было в 2016" лучше его в этом 2016 заново сформировать.
|
|||
5
Chuvaschow
30.03.17
✎
11:09
|
Возможно :) Тогда документ ни к чему, достаточно Отчета на СКД :)
Но хочется разобраться с документом... |
|||
6
Рэйв
30.03.17
✎
11:10
|
(5)ну так на то оно и годовой ОТЧЕТ .Документ тут ни каким боком не канает.
|
|||
7
Zmich
30.03.17
✎
11:12
|
(0). Как вариант, не привлекая хранилище значение:
Таб = ЭлементыФормы.ПолеТабличногоДокумента; Таб.Записать("C:\Таблица.mxl"); // записываем во внешний файл Таб.Очистить(); Таб.Прочитать("C:\Таблица.mxl"); // считываем из внешнего файла Таб.Напечатать(); // печать |
|||
8
Chuvaschow
30.03.17
✎
11:26
|
Таб = Элементы.ПолеТабличногоДокументаСтраница1;
Ругается: {Документ.РегламентированнаяОтчетностьФорма36.Форма.ФормаДокумента.Форма(67)}: Метод объекта не обнаружен (Записать) Таб.Записать("C:\Таблица.mxl"); и Прочитать тоже.. |
|||
9
Chuvaschow
30.03.17
✎
11:37
|
(6) Хотелось получить, что-то вроде регламентированной отчетности как в ЗУП 2.5.
|
|||
10
Chuvaschow
30.03.17
✎
11:51
|
&НаКлиенте
Процедура Печать(Команда) Таб = ПолеТабличногоДокументаСтраница1; Таб.Напечатать(); КонецПроцедуры Это гениально :) Но уходит сразу на принтер, без предпросмотра |
|||
11
Zmich
30.03.17
✎
12:00
|
(8). Сохранить и Записать на Клиенте не доступно, указывай директиву &НаСервере.
|
|||
12
Zmich
30.03.17
✎
12:00
|
(11)+ Т.е. Записать и Прочитать имел в виду.
|
|||
13
Вафель
30.03.17
✎
12:02
|
(0) Ты пытаешься переизобрести рег отчетность?
|
|||
14
mistеr
30.03.17
✎
12:28
|
(0) Росмотри рег. отчетность в типовых.
(6) Рег. отчеты не зря сделали документами. Бывают пересдачи и пр. |
|||
15
Chuvaschow
30.03.17
✎
12:37
|
(14) на типовые и равняюсь. Но знаний мало, а стиль кода в типовых для меня просто мозговыносящий. Но я учусь :)
|
|||
16
Chuvaschow
30.03.17
✎
12:40
|
Никак не мог понять, почему метод Показать для ПолеТабличногоДокумента не доступен в толстом клиенте. Затем в СП прочитал: Если табличный документ является реквизитом управляемой формы, то вызов метода приводит к возникновению исключения. И правда - зачем показывать, если все это и так на форме :)
|
|||
17
Chuvaschow
30.03.17
✎
13:46
|
Господа, помогите разобраться
Пытаюсь сделать так: формируем структуру со всеми страницами (с ПолеТабличногоДокумента), чтобы потом пробежаться по ней циклом методом Напечатать(). &НаКлиенте Процедура Печать(Команда) СписокЗначений = Новый СписокЗначений; Для Каждого Строка Из ФормированиеСтруктурыСтраниц() Цикл СписокЗначений.Добавить(Строка.Ключ); КонецЦикла; СписокЗначений.ОтметитьЭлементы("Отметьте страницы для печати"); Для Каждого ЭлементСпискаЗначений Из СписокЗначений Цикл Если ЭлементСпискаЗначений.Пометка = Истина Тогда ???? КонецЕсли; КонецЦикла; Таб = ПолеТабличногоДокументаСтраница1; Таб.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; КонецПроцедуры Функция ФормированиеСтруктурыСтраниц() Страницы = Новый Структура; Страницы.Вставить("Страница1",ПолеТабличногоДокументаСтраница1); Страницы.Вставить("Страница2",ПолеТабличногоДокументаСтраница2); Страницы.Вставить("Страница3",ПолеТабличногоДокументаСтраница3); Страницы.Вставить("Страница4",ПолеТабличногоДокументаСтраница4); Страницы.Вставить("Страница5",ПолеТабличногоДокументаСтраница5); Страницы.Вставить("Страница6",ПолеТабличногоДокументаСтраница6); Страницы.Вставить("Страница7",ПолеТабличногоДокументаСтраница7); Страницы.Вставить("Страница8",ПолеТабличногоДокументаСтраница8); Возврат Страницы; КонецФункции Структура получается. Отметки получаются. Выбрать только отмеченные получается. А вот напечатать. К моменту печати мы уже имеем только лишь строку. Как объяснить 1С, что за строкой "Страница1" таится ПолеТабличногоДокументаСтраница1 и получить метод Напечатать()? |
|||
18
Chuvaschow
30.03.17
✎
13:53
|
Если ЭлементСпискаЗначений.Пометка = Истина Тогда
поместить бы что-то вроде Таб = ЭлементСпискаЗначений.Значение (выйти на само ПолеТабличногоДокумента) Таб = Таб.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Таб.Напечатать() Но за ЭлементСпискаЗначений.Значение - строка |
|||
19
Chuvaschow
30.03.17
✎
15:04
|
Up
|
|||
20
dezss
30.03.17
✎
15:23
|
Исправь на
Для Каждого Строка Из ФормированиеСтруктурыСтраниц() Цикл СписокЗначений.Добавить(Строка.Значение); КонецЦикла; |
|||
21
dezss
30.03.17
✎
15:25
|
(19) Ты выбираешь ключ, а тебе надо выбирать значение...
Даже лучше так Для Каждого Строка Из ФормированиеСтруктурыСтраниц() Цикл СписокЗначений.Добавить(Строка.Значение, Строка.Ключ); КонецЦикла; |
|||
22
Chuvaschow
30.03.17
✎
15:33
|
В таком случае в мы получим значение "ТабличныйДокумент", но так и не получим выхода на Таб.Напечатать()
|
|||
23
dezss
30.03.17
✎
15:38
|
(22) я просто указал на явную ошибку...
Ты же выше писал, что &НаКлиенте Процедура Печать(Команда) Таб = ПолеТабличногоДокументаСтраница1; Таб.Напечатать(); КонецПроцедуры Работает и выводит на печать. А тут что, не выводит? |
|||
24
Chuvaschow
30.03.17
✎
15:40
|
Да, но это нужно прописать по каждой странице, а их 11.
Хотел свести их в структуру и пробежаться методом Напечатать(). к тому же такая структура пригодилась бы еще для обработки всех страниц. но выйти на печать никак не могу |
|||
25
Chuvaschow
30.03.17
✎
15:41
|
Нужно отобрать страницы которые были поечены СписокЗначений.ОтметитьЭлементы и все напечатать
|
|||
26
dezss
30.03.17
✎
15:41
|
(24) Это что, не отрабатывает?
Для Каждого ЭлементСпискаЗначений Из СписокЗначений Цикл Если ЭлементСпискаЗначений.Пометка = Истина Тогда Таб = ЭлементСпискаЗначений.Значение; Таб.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; Таб.Напечатать() КонецЕсли; КонецЦикла; |
|||
27
Chuvaschow
30.03.17
✎
15:45
|
Печатает :) Извините.
Просто при написании Таб. получал различные методы, кроме нужных (Напечатать) и думал, что не дотягиваемся... |
|||
28
dezss
30.03.17
✎
15:47
|
(27) Бывает. Не всегда все методы доступны через <ctrl> + <пробел>.
|
|||
29
Chuvaschow
30.03.17
✎
15:49
|
Так получилось вполне компактно и красиво.
Осталось решить вопрос с сохранением, чтобы при закрытии документы данные в ПолеТабличногоДокумента не пропадали. Буду все-таки копать в сторону ХранилищеЗначений. Не хочется мусорить на жесткий диск файлами. |
|||
30
dezss
30.03.17
✎
16:02
|
(29) ага...лучше мусорить базу?
Ты очень хорошо подумай, прежде чем это делать и хотя бы оцени объемы. |
|||
31
Chuvaschow
30.03.17
✎
16:24
|
Отчет годовой. Раз в год записать пару килобайт в Хранилище - думаю потянет :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |