0. AKnyazkov 34 11.09.19 12:42 Сейчас в теме

Про ТабДок или TabDoc Pro

Табличный документ – всем знакомый и привычный компонент продукта 1С. Про оптимизацию работы табличного документа, его проблемы и недостатки в своем докладе на конференции Infostart Event 2019 Education рассказал ведущий программист BIA-Technologies Князьков Алексей.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Светлый ум 228 12.09.19 13:06 Сейчас в теме
А пример сложного интерфейса в виде обработки есть возможность выложить? интересно пощупать...
3. AKnyazkov 34 12.09.19 15:48 Сейчас в теме
(1) Такие обработки обычно не имеют смысла без конфигурации, если интересно могу попробовать сделать демо-пример конфигурации
rpgshnik; +1 Ответить
10. Светлый ум 228 13.09.19 04:45 Сейчас в теме
(3) Пример был бы на пользу многим.
igo1; rpgshnik; +2 Ответить
11. ZloyProger 6 13.09.19 09:05 Сейчас в теме
Поддержу (10) пример был бы познавательным, делал нечто подобное - рабочий стол для службы снабжения, скрещивал 1с с Excel (отборы, формулы и т.д.), дойдут руки мб и выложу тоже, вдруг кому поможет)
Ещё из проблем - отсутствие возможности платформенными методами (через грабли конечно можно подгоняя под конкретные ситуации, даже видел статью здесь, где на мой взгляд оригинальный подход) определить что текст не помещается в ячейку (при этом платформа ведь понимает, что не влезает если сделать Переносить - переносит!!).
13. AKnyazkov 34 13.09.19 09:48 Сейчас в теме
(10) (11) ОК, сделаю тестовую конфу с примером и выложу. )
2. dreamadv 139 12.09.19 15:46 Сейчас в теме
Штрихкода где возможно стараемся использовать в виде шрифтовых решений, реальные интеграции EAN-13, CODE 39, CODE 128. Меньше проблем с печатью и не пухлый размер спулл задания.
rpgshnik; acanta; +2 Ответить
4. AKnyazkov 34 12.09.19 15:54 Сейчас в теме
(2) Штрихкоды построенные спец.шрифтами это немного не то, чего хотелось бы и не удовлетворяют всем требованиям макетов, таких как рзмер например.
rpgshnik; +1 Ответить
15. dreamadv 139 13.09.19 10:03 Сейчас в теме
(4) каких-то не возможных проблем с размером не возникало практически всегда можно подогнать размером шрифта и выравниванием в ячейке и размером самой ячейки по высоте
5. kiser 12.09.19 15:56 Сейчас в теме
Ещё не хватает возможности при формировании отчёта точно знать влезет ли очередная область на страницу или перенесется. Как пример нельзя при печати расчетников узнать сколько их влезет на лист. 3, 4 или даже 5 если коротенькие
6. AKnyazkov 34 12.09.19 16:33 Сейчас в теме
(5) Есть же метод "ТабДок.ПроверитьВывод()"? Правда он тоже замедляет фоормирование, и применять его тоже лучше с умом, как вариант не при каждой итерации в цикле, а только когда наступает "критически" момент и т.д.
7. for_sale 783 12.09.19 16:54 Сейчас в теме
(6)
С этим методом тоже есть проблемы. Например, нужно было выводить длинную таблицу с товарами, а в конце каждой страницы печатать "Лист 1 из Х". Во-первых, эти Х вообще никак не посчитаешь, пока всё не выведешь. Во-вторых, когда ПроверитьВывод говорит, что уже не влазит, эту область туда уже поздно вставлять, уже не влазит.
8. AKnyazkov 34 12.09.19 17:05 Сейчас в теме
(7) Метод не идеальный, и сильно зависит от внешних факторов (драйвера принтера, например).
Но иногда без него никак не обойтись, и если область не влазит, а нужно, чтоб влезла, как вариант можно уменьшить масштаб ТабДока.
23. vano-ekt 526 01.10.19 14:59 Сейчас в теме
(7) запихнуть страницы в ТаблицуЗначений, посчитать количество строк(Х), пробежаться по ТаблицеЗначений, вывести страницы, заполняя поля-"колонтитулы",
9. Yashazz 2859 12.09.19 21:58 Сейчас в теме
Напомню, что некоторые проблемы можно обходить, сериализовав табдок в хмл, и покурочив уже сам этот хмл. Вопросы с областями-секциями и некоторые фишки "конфигураторного" табдока я так делал в своё время.
Danil.Potapov; Светлый ум; +2 Ответить
12. milanse 32 13.09.19 09:45 Сейчас в теме
Хотелось бы ещё про скорость и вообще механизм передачи с сервера на клиент замолвить слово. Отчёт после формирования целиком лежит на сервере, поэтому сразу быстро открывается , стрелками вверх вниз и клавишами pgup pgdown передается с сервера порциями по 100 строк, клавиша end тоже отрабатывает, по типу dbf last, а вот потом если ещё раз нажать pgup весь документ начинает скачиваться с сервера порциями по 100 строк, что это ? В итоге фриз всей системы на несколько секунд.
14. Evil Beaver 6308 13.09.19 09:56 Сейчас в теме
в пользовательском режиме мы не можем задавать области


Так можем же! В толстом клиенте точно, и по-моему в тонком тоже. Можно задавать и области и имена ячеек, 1С:Свод отчетов на этом и держится, там полноценный редактор таб. макета в режиме Предприятия.
Danil.Potapov; AKnyazkov; +2 Ответить
16. AKnyazkov 34 13.09.19 10:32 Сейчас в теме
(14) Да, с какойто версии платформы это стало возможно, согласен...
17. Evil Beaver 6308 13.09.19 13:30 Сейчас в теме
(16) в 8.1 точно было, причем с очень ранних версий. Грубо говоря, в 2009 году я уже это использовал
18. AKnyazkov 34 13.09.19 15:20 Сейчас в теме
(17) Прощу прощения, что неверно выразился, области были и есть и их можно редактировать, но в пользовательском режиме программно нет возможности включить их отображение, т.к. нет такого свойства или метода (я такой не нашел). Т.е. если сохранять макет с заданными областями в справочнике, при повторном редактировании такого макета отобразить области можно только через меню Таблица\Имена\Отображение именованных строк/колонок
19. Evil Beaver 6308 13.09.19 18:51 Сейчас в теме
20. BackinSoda 16.09.19 09:20 Сейчас в теме
Увидеть бы использование Кэша областей в варианте до ускорения и после. Или просто пример с вызовом этой процедуры
21. AKnyazkov 34 16.09.19 10:01 Сейчас в теме
(20) Я готовлю тестовую ЦФ-ку, т.к. много людей попросили сделать это, может пример с кэшем областей "до/после" включу туда
Светлый ум; BackinSoda; +2 Ответить
22. vano-ekt 526 01.10.19 14:46 Сейчас в теме
самая боль в ТабДоке - ПроверитьВывод(), долго проверяет...
когда, например, есть длинный-длинный прайс с нефиксированной высотой строк / заголовков групп
до половины можно примерно "на глазок" пропустить проверку, но когда появляется неопределенность - все равно начинаешь проверять вывод каждой строки, чтобы на следующую страницу вывести, например, шапку и название текущей товарной группы
если это каталог на сто листов и несколько тысяч позиций, то очень долго формируется печ.форма, ну и замер производительности указывает ПроверитьВывод() 99,9% времени выполнения. На разных компах/серверах/сетях, с разными драйверами/принтерами, в терминале/локально
24. AKnyazkov 34 02.10.19 20:22 Сейчас в теме
(22)
ПроверитьВывод() - не такая уж и медленная...
Просто нужно правильно ее готовить )
Если у вас большой прайс, где много страниц, не нужно выводить сразу в результирующий документ все строки...
В (23) уже был предложен ответ...
Попробуем разобраться, что имелось ввиду

вывод результата -> кэш -> Финальный документ

где "кэш" это массив, где каждый элемент табличный документ, содержащий только одну страницу.
т.е. если страница "готова", складываем ее в массив и начинаем вывод в новый табдок.
когда все строки выведены, выводим каждую страницу из кэша в табдок - результат.

таким образом можно решить и ту проблему, которая была озвучена в (7).
25. vano-ekt 526 03.10.19 08:40 Сейчас в теме
(24)именно так, складываем в массив страницу, но перед складыванием страницы, ты все равно вызываешь ПроверитьВывод() перед помещением её в массив. Один или одиннадцать раз. Для каждой страницы/элемента массива. Таких страниц 100.
26. Светлый ум 228 21.10.19 12:54 Сейчас в теме
В итоге решили не выкладывать пример?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Консультант-аналитик 1С
Набережные Челны
зарплата до 90 000 руб.
Полный день

Программист 1С
Набережные Челны
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист 1С
Казань
зарплата от 40 000 руб. до 110 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день