Pull to refresh

Comments 18

Магические константы в 105 символов выглядят совсем уж плохо (как минимум потому что символы в Times New Roman не фиксированной ширины).


Если Вам нужен только качественный печатный формат, то можете посмотреть в сторону latex: более-менее удобная поддержка макросов и счетчиков, перекрестных ссылок.
Из минусов: тяжелый порог входа, нет качественного экспорта в MS word, другие люди не захотят пользоваться латехом.


UPD. К функциональному программированию эта статья мало относится.

Меня не только печатный формат интересует, в конце-концов я думаю что так или иначе можно подвесить на вывод или преобразование в картинку/pdf. Дело в том, что фактически затем планирую добавить месячно-суточный график на основании которого будут заполняться другие типовые формы, например Общий журнал работ (Раздел 3), Акт готовности электромонтажных работ и другие. Можно ли в latex реализовать и парсить информацию с календарных графиков, заполняемых вручную?

Все зависит от того в каком формате будет представлен график, теоретически, если он он будет plain text (csv) то можно и замарочиться

На текущий момент видится мне следующим образом — МСГ в формате Excel, оттуда берутся работы, объемы работ согласно отчетным интервалам (например с 26го текущего по 25е число следующего месяца), в отдельном фильтре указывается какие работы будут упоминаться в каких типах актов, затем данные будут заноситься частично автоматически, частично вручную по нескольким таблицам и уже обработка информации с них, по принципу указанному в статье, будет осуществляться вывод комплекта документации в виде файлов.

На текущий момент у мя только одна проблема — под каждый новый принтер в системе приходится пересохранять файлы-шаблонов форм актов, т.к. не смотря на первоначальные настройки на разных принтерах даже на одной системе слетают границы. Если latex может решить эту проблему, то можно попробовать использовать его

Есть еще кое-что добавить:


  1. Lualatex — вариант Латеха, в котором (как это не удивительно) встроена поддержка языка программирования Lua. Собственно парсинг удобнее реализовывать на нормальном языке, а не в Латехе.
  2. Вывод в PDF в будет "из коробки" в любом современном дистрибутиве Латеха. Результаты воспроизводимы, печать из PDF будет стабильная с точностью до настроек принтера.
  3. Не находясь в контексте вашего документооборота сложно предлагать решения, я делаю это потому, что являюсь начинающим фанатиком. Принимайте решения о целесообразности самостоятельно.

Можно ж на VBA дергать скрипт компиляции latex, перед этим сгенерировав шаблон

Из другой области, но может будет полезно: для сложных работ (статьи с математикой, таблицами, графиками и алгоритмами в бумажные журналы) использую LyX. Графики делаю, в том числе, и в Excel, первожу в картинки (нпр., JPEG). На мой взгляд LyX проще ворда. На выходе легко получаю pdf.
Вспоминаю те времена когда я на VBA писал хорошие вещи, обработчики со всеми связями, даже добавлял формы красивые, для добавления информации и отображения подробностей. А также использовал WinAPI чтобы это все выглядело как нужно. Это было конечно до тесного знакомства с SQL базами.
И теперь спустя ваш опыт работы со скуэлем, положа руку на сердце, стоит ли базы делать на нём для домашне-офисного пользования? Или всё таки пытаться делать базы на нескольких файликах экселя? Что быстрее работает в простых поисках, что проще изучать, что проще обслуживать?

Гуглдокс незаменим в таких кейсах. +Масса удобств из-за облака.
Но я стараюсь все же избавиться от бумаги.

У меня несколько проще все сделано — на листе «исходники» собираются все данные, а потом раскидываются по десятку остальных актов. Печать из excel в принципе норм получается.
Купите себе кусочек фокспро 1С (технологическую платформу) и жуйте те же кактусы, но элегантно и со всеми встроенными удобствами.

В данном случае выбор обусловлен лишь тем, в чем я умею работать и в чем чаще всего работаю как инженер-строитель

Раньше (в 2к) просто отключалась отрисовка.
И потом, нужно использовать массив типа — ячейка!
Из прошлого опыта типа того что тут 2-5 стрпниц А4 готовились с минуту, потом, с отключенной отрисовкой и оформлением массива ячеек в памчти с послежкющей вставкой всего масмива — 2-3 сек.
Т.е. не надо городить на странице. Всё делается в оперативной памчти и потом вставляется чохом.
Главное, не забыть включить отрисовку потом.
А чем ваше решение лучше того что предлагает MS?
Для заполнения актов на скрытые пользуюсь связкой word + excel.
В ворде есть такая вкладка — рассылки. Там можно связать документ с данными из excel (и не только). И для каждого вхождения данных будет создан документ по шаблону (вкладка найти и объединить -> объединить все. Если подробнее то:
1. создаем в excel таблицу — в столбцах данные которые будут импортированы в ворд, первая строка — заголовки полей слияния.
2. в ворде создаем шаблон акта (или чего вам там надо) и на вкладке рассылки:
— выбрать получателей -> выбрать существующий список -> указываем файл с данными
— вставить поле слияния -> раскрывается список полей (названия столбцов в таблице ексель) -> форматируем как нам надо
— найти и объединить -> изменить отдельные документы -> все
-> ворд создает новый документ по шаблону с данными по таблице из ексель
3. Лайфхаки:
— поля с датами могут содержать условия, например если данные пустые можно вставить значения по умолчанию (если не заполнена дата вставляем '__'______20__ и тд)
— даты передаются как числа, потому правой кнопкой мыши по ним и в код/значениеполей добавляем \@ «dd MMMM yyyy г.» или как вам надо отформатировать)
— если в таблице нужно передать длинные строки, то есть одна тонкость. Если первая строка данных в екселе содержит короткую строку (короче 250 символов или около того) то последующие строки этого столбца ворд тоже обрежет. Потому первую строку с данными я заполняю просто длинной строкой типа 12345… и так 1000 символов.
— в таблице ексель я создаю поле «печать». Потом в ворде во вкладке рассылки -> изменить список получателей выбираю фильтр по полю «печать»=… и отфильтровываются документы которые нужны сейчас, а не вся таблица. Как правило я создаю в екселе сразу реестр работ по всему объекту, и по мере готовности печатаю.
— связать документ ворда можно не только с екселем, но и со многими источниками данных вроде бд и тд
— полезно и даже очень изучать инструменты в которых работаешь, особенно когда есть неплохая такая справка в офисе.
По выводным формам:
1. Мне удобнее и привычнее работать с Excel, чем с Word.
2. Когда кол-во пунктов для вывода становится очень много, то привязками в офисе сложнеее отслеживать такие вещи для меня визуально, в то же время я прописываю доп колонку из управляющих символов на латинице, загоняю из в массив, а в шаблоне акта расставляю как мне заблагорассудится, т.е. я могу поместить значение как в отдельную ячейку, так и набрать текст навроде «b6 b7 — b9c0c1c2(b8)» или «a2, a3», моя функция корректно отрабатывает вывод такой вывод. Т.е. Набрать можно абсолютно любой текст на кириллице и, вставив управляющую латиницу, на выходе получить любые сочетания текста с сохранением кириллицы.

Я знаю, что в сети есть 2 альтернативных варианта решения проблемы, один работает со слиянием, второй так же выводит в эксель, НО(!), я не собираюсь изначально ограничиваться только выводной формой таблицы. На текущий момент я реализовал следующий функционал:
— Заполнение данные для входного контроля и вывод акты входного контроля;
— Вывод журнала входного контроля;
— Заполнение форм для вывода АОСР с подтягиванием данных из листа с данными по материалам и годовым Месячно-суточным графиком, т.е. даты парсятся с графика согласно отчетных периодов (по умолчанию месяц) и расстановка следующих друг за другом актов в рамках каждого из отчетных периодов для АОСР, пока, берется последовательно с МСГ.
— Есть визуальный (пока визуальный) контроль за кол-вом списываемых по актам АОСР материалов.

На профильных сайтах и в одной социальной сети мною уже выложен часть работающего функционала в открытый доступ для тестирования. Так что я не делаю из этого тайну. Если будет интересно потрогать ручками — прошу в приват.

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

В планах:
— подключить ВСН'овские формы
— реестр документов на основании выводимых актов
— ОЖР — разделы 3 и 6
— доработать ввод данных для АОСР, с тем что бы система отслеживала вывод работ по участкам, возможно делала несколько актов в зависимости от этого.
Sign up to leave a comment.

Articles

Change theme settings