|
Торг12. Итоги на каждой странице, при изменении размера строк. | ☑ | ||
---|---|---|---|---|
0
toran1
16.05.16
✎
09:27
|
Доброго.
Платформа 8,2, толстый клиент, УПП1,3. Есть док, расходная накладная. К нему внешняя печатная форма. Пока наименование товара влезает в одну строку все хорошо, в коде есть необходимый блок подсчета строк и вывода красиво. Но если, название товара не помещается в одну строку, то становится весело. Шапка на одной странице, итог на другой. Потом вторая страница. И так далее. В общем как с этим бороться? |
|||
1
NikVars
16.05.16
✎
09:29
|
(0)Вычислять высоту строк.
|
|||
2
toran1
16.05.16
✎
09:33
|
(1) Логично. Тогда как? Свойства ячейки - установлено переносить.
|
|||
3
NikVars
16.05.16
✎
09:39
|
||||
4
NorthWind
16.05.16
✎
09:57
|
(0) я бы предусмотрел место исходя из максимально возможного количества строк, скажем 2 или 3 строки. И фиксированное количество таких строк на странице. Если есть желание поизвращаться, то можно корректировать количество строк, исходя из количества символов в наименовании. Допустим, поэкспериментировать и определить для себя, что если в строке 50 символов, то наименование влезет в строку, больше 50 - не влезет. Понятно, что для строк '11111' и 'ЖЖЖЖЖ' будут разные результаты по длине написания, но с учетом того что в текстах экстремальные варианты не встречаются - нечто среднее вывести можно.
|
|||
5
NikVars
16.05.16
✎
10:01
|
А если использовать моноширинный шрифт?!
|
|||
6
Масянька
16.05.16
✎
10:04
|
(0) Для семерки делала:
1. количество символов в строке (сколько помещается). 2. наименование номенклатуры разбивается по п. 1 (тупо разбивается, переносится на след. строку). 3. подсчет срок по п. 1 и 2. 4. вывод строк в соответствии с п. 3 (кол-во строк на странице (первой, след. и последней (с подписями и печатью)) - подбираешь и задаешь). |
|||
7
NikVars
16.05.16
✎
10:07
|
(6) Вот видишь, для 7.7 - вообще проблемы нет. А в восьмерке ...
:)) |
|||
8
Масянька
16.05.16
✎
10:11
|
(7) Есть проблемы. И там, и там.
Просто мои на снеговика забили - печатает и хорошо. Глюков и так хватает. |
|||
9
rozer76
16.05.16
✎
10:28
|
(0) используй "ПроверитьВывод"
|
|||
10
aleks_default
16.05.16
✎
11:06
|
(9) +1 в любую типовую заглянте уж наконец
|
|||
11
Злопчинский
16.05.16
✎
11:11
|
(8) в клюшках просто тупо делаешь вывод в черновик - если количество страниц не изменилось - выводишь строку в чистовик...
я у себя все печформы переделал по счф так. все работает. |
|||
12
toran1
16.05.16
✎
16:04
|
Нарыл по вашим наводкам.
http://pro1c.org.ua/index.php?showtopic=171 Для некоторых отчетов необходимо, чтобы в конце страницы содержалась некоторая область, которая бы сообщала информацию о содержимом страницы. Это может быть, например, информация о сумме по странице, количестве строк на странице и т.п. Во встроенном языке 1С:Предприятия предусмотрены специальные средства для разбиения табличного документа на страницы. В данном разделе рассказывается, каким образом можно организовать постраничный вывод при выводе информации в табличный документ. Метод табличного документа ПроверитьВывод() Объект ТабличныйДокумент имеет метод ПроверитьВывод(), предназначенный для того, чтобы проверить, поместится ли список областей на текущую страницу. В случае если метод вернет значение Истина, вывод областей, переданных в метод, не приведет к созданию новой страницы, иначе, для того, чтобы вывести области, в табличном документе будет создана новая страница. Данный метод работает с учетом настроек печати документа, у которого вызывается метод. Рассмотрим пример. Пусть нам необходимо создать отчет "Платежная ведомость". Требуется, чтобы на первой странице был заголовок, отображающий информацию о ведомости в целом, на остальных страницах - заголовок, содержащий только шапку таблицы ведомости. В подвалах страницы необходимо иметь информацию о сумме по странице. В подвале последней страницы необходимо иметь итоговую информацию по всей ведомости. Для того чтобы реализовать подобный отчет нам потребуется использовать метод ПроверитьВывод(). Пример алгоритма отчета будет выглядеть так: 1. выводим в результирующий табличный документ область - заголовок первой страницы; 2. для каждой строки из ведомости: 2.1. проверяем, вмещается ли на текущую страницу область со строкой ведомости и область итога по странице; 2.2. если области помещаются на странице - выводим строку области; 2.3. иначе - выводим подвал страницы, выводим горизонтальный разделитель страницы, выводим шапку страницы, выводим строку ведомости; 3. выводим подвал отчета. Ниже приведен пример того, как подобный алгоритм может быть реализован на встроенном языке 1С:Предприятия 8: СтрокаСПодвалом = Новый Массив; // создадим массив для проверки вывода СтрокаСПодвалом.Добавить(ОбластьДетальныхЗаписей); СтрокаСПодвалом.Добавить(ПодвалСтраницы); ИтогПоСтранице = 0; ТабДок.Вывести(ОбластьЗаголовок); // выведем заголовок отчета ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы Пока ВыборкаДетали.Следующий() Цикл // по всем строкам, которые необходимо вывести ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали); // заполним параметры области табличного докуента Если Не ТабДок.ПроверитьВывод(СтрокаСПодвалом) Тогда // Строка с итогом не вмещается. ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); // начнем новую страницу ТабДок.Вывести(ОбластьШапкаТаблицы); // выведем шапку страницы ИтогПоСтранице = 0; // сбросим текущую сумму по странице КонецЕсли; ТабДок.Вывести(ОбластьДетальныхЗаписей); // выведем очередную строку ИтогПоСтранице = ИтогПоСтранице + ВыборкаДетали.Сумма; // увеличим итог по странице КонецЦикла; ПодвалСтраницы.Параметры.Сумма = ИтогПоСтранице; // установим итог по странице ТабДок.Вывести(ПодвалСтраницы); // выведем итог по странице ТабДок.Вывести(ОбластьПодвал); // выведем подвал отчета Метод табличного документа ПроверитьПрисоединение() Метод табличного документа ПроверитьПрисоединение() работает аналогично методу ПроверитьВывод(), с тем отличием, что данный метод проверяет, изменится ли количество страниц по горизонтали при выводе в отчет областей при помощи метода Присоединить(). |
|||
13
Изучаю1С8
16.05.16
✎
16:16
|
(11) В какой черновик?
|
|||
14
Масянька
16.05.16
✎
16:40
|
(11) На фига мне "тупо выводить в черновик"? А сразу посчитать и вывести, как надо - не кошерно? :)
|
|||
15
Злопчинский
16.05.16
✎
17:41
|
(14) объясняю для...
сразу посчитать и вывести - в общем случае не получится или будет офигеть как сложно (для разных размеров шрифтов например). а вывод в черновик - это по сути и есть восьмерочная "ПроверитьВывод" |
|||
16
Злопчинский
16.05.16
✎
17:41
|
.. и реализуется небольшим количеством строк
|
|||
17
Злопчинский
16.05.16
✎
17:41
|
...кода и работает универсально
|
|||
18
Смотрящий
16.05.16
✎
17:44
|
(16) Покаж
|
|||
19
Масянька
16.05.16
✎
17:53
|
(15) Не надо объяснять для ...
Я тебе объясню: - разные шрифты: в накладных, актах, сф и пр. - на фига? У меня (как в типовых - один шрифт, разный размер, обычный + жирный + курсив). - параметры листа (кол-во строк шапки, заголовка таблицы, подвала) - для каждого макета (накладная, сф и пр.) задаются в обработке. - один раз для каждого макета считается кол-во символов в строке (номенклатуры). Задается там, где задаются параметры. - при выводе строки: строка разбивается (параметры уже заданы), считается кол-во строк (выведенных ранее + сколько сейчас хотим вывести), обрабатывается - продолжаем вывод или новую страницу делаем. Все. А твой "черновик" может и проще (не спорю), но ни чем не лучше. |
|||
20
Злопчинский
16.05.16
✎
18:14
|
Я тебе объясню*2:
- в _общем случае_ шрифты в разных документах (а их может быть множество всяких) - совершенно разные; - "параметры листа (кол-во строк шапки, заголовка таблицы, подвала) - для каждого макета (накладная, сф и пр.) задаются в обработке" - ты не поверишь, но например ТОРГ12 можно печатать и портрет и ландшафт. и даже на разных форматов листов. затрахаешься считать и описывать.. - см. п.1 - я при выводе нихрена ни считаю: плюнул на вывод - получил ответ "влезло на страницу/не влезло". . мой черновик "лучше" тем, что он - универсален и не требует подготовительных действий, связанных с какими-то расчетами. То есть в принципе можно оформить "универсально" . но вообщем, как ты написала - каждый сам выбирает как делать - можно гланды у отоларинголога вырезать, а можно и проктолога пригласить... |
|||
21
Aleksey
16.05.16
✎
18:53
|
(19) ну к примеру покупатель может быть на одной строке, а может и в 3 строки не влезть
Товар аналогично, количество строк от 1 до 3. Предлагаешь лишнее обрезать, или сразу делать макет с ячейками под 4 строки, чтобы наверняка? (20) Не совсем понял как ты определяешь влезло/невлезло? P.S. ПроверитьВывод в 8-ке кстати тоже не панацея, иногда ошибается |
|||
22
Злопчинский
16.05.16
✎
20:49
|
(21) блин ну все же просто мозги напрягите - вывести документ, "посмотреть" - влезло или нет. не влезло - сделать новую страницу, потворить "процедуру"
|
|||
23
Aleksey
16.05.16
✎
21:01
|
Посмотреть это кто? Человек или машина?
|
|||
24
Злопчинский
16.05.16
✎
21:20
|
Если ТабЧерновик.КоличествоСтраниц() > ПроверяемоеКоличество Тогда
Таб.НоваяСтраница(); |
|||
25
Aleksey
16.05.16
✎
23:55
|
(24) хм, спасибо, что то этот метод как то мимо меня прошел
|
|||
26
Злопчинский
17.05.16
✎
00:00
|
(25) он медленный.
и для правильной работы еще надо правильно макет определить - поиграться выводом строк-секций "вместе со следующим". . если будешь себя хорошо вести - дам живой пример (счф например) |
|||
27
Джордж1
17.05.16
✎
00:03
|
(0)перейти на УПД?
|
|||
28
Масянька
17.05.16
✎
08:10
|
(20) Чтобы ты признал, что ты сделал не "универсально"...
Можно и в Москву через Владик прокатиться. А можно и левой рукой левое ухо почесать через затылок. Разные шрифты и форматы - это тебе не бантики, а документы. Кстати, и ТОРГ-12 сф унифицированные формы (да, ТОРГ-12 уже исключили, но память осталась). И, наверное, "черновик" открывается и закрывается? (21) Аналогично номенклатуре. Не трудно посчитать, сколько строк займет покупатель, продавец и пр. в шапке. (26) Это - универсально? :))) |
|||
29
73с
17.05.16
✎
08:32
|
(28) "Не трудно посчитать, сколько строк займет покупатель, продавец и пр. в шапке. "
Ну не сказал бы, что нетрудно, заранее знать сколько займёт например покупатель - проблематично. А главное - зачем считать, когда программа посчитает все сама ? Кстати, предложенный метод через черновик реализован в типовой бюджетной 7ке |
|||
30
toran1
17.05.16
✎
10:06
|
(27) Контрагенты не хотят УПД.
|
|||
31
NikVars
18.05.16
✎
09:34
|
(30) Тогда допил отчета. Это интересная задача: простая, но с нюансами.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |