Как стать автором
Обновить

Комментарии 100

В текущей версии файлы office это обычные зип архивы же. Статья старая?
Хех, вступления курсивные уже просто не вижу(тк там почти всегда не связанные с содержанием цитаты)
… внутри которых адская объектная модель + ресурсы. ))) Смысл статьи «не изобретайте велосипед» остаётся актуальным и для «новых форматов».
Забавно, что в этой статье первый комментарий точно такой же. Правда, она вышла в 2010 году.
> Купите один сервер Windows 2003, установите на него лицензионный Word, и настройте простой веб-сервис. Работы на полдня, с применением C# и ASP.NET

Отвечу переводу также в повелительном наклонении: автор выпей яду
>На этом пути есть несколько подводных камней, и он официально не поддерживается Microsoft
Перевод: купи реактивы для приготовления яда в магазине, смешай их в лаборатории и выпей.
Какие все нежные. Я что-то не вижу чтобы у вас была хоть одна публикация =) Иногда мне кажется что зря на Хабре открыли readonly аккаунты с возможностью писать комментарии
Знаете, я вполне понимаю и принимаю недовольство старожилов наплывом R&C-аккаунтов. Но с чего вам не понравился мой комментарий? Что, отсутствие официальной поддержки для часто встречающегося случая — хорошо и правильно? Или хорош совет использовать неподдерживаемый способ?

Я серьёзно спрашиваю и обещаю учитывать ваши замечания.
он читает невнимательно и решил что вы предлагаете выпить яду Fen1kz
И с каких это пор нормальным считается переходить на личности и намекать на «сперва добейся», если тебе не понравился комментарий?

Пожалуй, с момента появления комментариев как таковых.

Эти форматы выглядят безумно. Формат файла Excel 97-2003 представляет собой 349-страничный файл PDF.

Как насчет формата Office Open XML File где-то на 5000 страниц?

Для создания табличных данных и использования их в Excel используйте CSV

Не надо так. Если это выгрузки, которые будут использоваться людьми в том же Excel — используйте xlsx, благо сейчас это не так уж сложно, есть готовые библиотеки.

Для поддержки вычислений, которые не умеет делать CSV

Исходя из этой фразы можно сделать вывод, что CSV умеет делать какие-то вычисления, на самом деле нет. Возможно, просто неудачное построение фразы.
Это просто неудачный перевод, лучше писать «Для поддержки вычислений, чего не умеет делать CSV».
Почти все советы автора неживые. Старые форматы, типа WK1, поддерживали только кодировку ANSI. Даже в 2008 году даже в США было уже опасно на это полагаться — слишком жесткое ограничение. Чтение RTF в Office всегда было глюкавым: на вполне честном, но большом RTF, написанном не самим Word, возникали непредсказуемые проблемы: от полного развала форматирования до падения. В целом писать бинарные форматы Office — не адская проблема. Читать сложнее, но идея использования OLE Automation в веб-приложении кощунственна. Этот подход по меньшей мере не масштабируемый. В общем, статья ни о чем.
У вас есть веб-приложение, которому нужно вывести файлы Word в формате PDF… Та же задача под Linux.

Какие есть варианты?
Лицензировать коммерческие библиотеки. Идеально работающих нет, но даже у Microsoft в новых версиях Office поддержка старых бинарных форматов неидеальна.
Имеющиеся перевести скопом в какой-нибудь из человечьих форматов, возможно, кое где руками. Дальнейшее использование нечелоевечьих запретить административно.
Спасибо за перевод статьи 2008 года! Можно что-нибудь из 1998-2003?
Пожалуйста!)) На правах шутки.
http://www.nestor.minsk.by/kg/1999/13/kg91307.htm
Рассуждения, на что следует переходить с Win95: на 98 или на NT.
Нет, перевод нужен обязательно 2016 года, мы же тут за свежесть информации.
> не может быть правильно создан или прочитан

Так и есть. Порой Office +1 не читал правильно что записала предыдущая версия.

> У Word и Excel есть весьма полные модели объектов, доступные через COM Automation

Работа через OLE это вечная борьба за скорость вызовов. Впрочем, есть варианты. Для программистов на Java есть https://poi.apache.org/ считающаяся самой полной библиотекой, читающей форматы MS Office.
POI для бинарных форматов — это Адъ, Содом, Гоморра. С новыми форматами работает получше. На чтение работает хуже, чем на запись. По крайней мере у меня сложилось именно такое впечатление пару лет назад, возможно ситуация стала лучше… а возможно — всё осталось как прежде.
НЛО прилетело и опубликовало эту надпись здесь
Зачем нам эти форматы есть же odt и rtf, давно ods, dbf, csv…
Поймёте, если вам когда-нибудь придется обмениваться информацией с другими контрагентами.
Всё перечисленные форматы отлично открываются на любой платформе. В чём проблема? А вот xls, действительно даже MS Excel более свежей версии не всегда открывает.
Не «отлично», а с «определёнными ограничениями». Если у вашего контрагента не LibreOffice, он первым делом столкнётся с полетевшим форматированием, если вы в вашем odt колонтитулы красиво настроили. Или векторную графику всунули. Да и вообще, чем сложнее структура документа, тем больше у вас будет сюрпризов при открытии не в том редакторе, в котором вы его создали.

> А вот xls, действительно даже MS Excel более свежей версии не всегда открывает.
Всякое бывает, но вот это как раз очень редкое исключение, в отличии от попыток открытия файлов MS Office на Libre Office и наоборот.
Я работаю в довольно крупной организации, у нас много контрагентов и «тяжелый» обмен информацией. Многие форматы (в том числе xls,doc) запрещены корпоративными инструкциями. И я вот что-то не понимаю о каких проблемах вы говорите. А вот до наведения в этой сфере порядка был зоопарк, бардак и ворох проблем вида «не открылось, не отобразилось, поехало, не напечаталось...»
Старые .xls и .doc могли содержать вирусы в виде макросов(vba-скрипта). Новые форматы теперь разделелись на:
docx xlsx — файлы без макросов
docm xlsm — файлы с макросами.

Думаю, у вас проблему решили зарубить на корню, и запретить старые файлы и новые с макросами. А новые файлы без макросов, думаю, разрешены.
Интересно, если doc/xls запрещены, то какие форматы у вас являются рекомендуемыми?
Был бы благодарен, если бы вы описали поподробнее какие форматы используются в приоритете, какие — «табу».
Какие проблемы с контрагентами были/есть. Как решили?
> Был бы благодарен, если бы вы описали поподробнее какие форматы используются в приоритете, какие — «табу».
Мне кажется, перенимать подобный опыт — это плохая практика. Запрет на обмен какими-либо форматами документов, он появляется не как результат системного анализа и здравого подхода, а наоборот, как результат нежелания ИТ-подразделений тратить время/ресурсы на этот самый анализ и затем на построение безопасной инфраструктуры. Тем более что проблемы с контрагентами в таком случае не решаются никак. Вернее, решаются перекладыванием на пользователей ответственности, дескать сами с контрагентами договаривайтесь, почему вы не можете получить их договор в таком виде и т.д.
На ваш взгляд, а как должно быть оптимально? в чем заключается «построение безопасной инфраструктуры». Как обезопасится от нерадивых/неумных/… пользователей?
Плохое форматирование — оно везде плохое. Количество слетов между разными версиями Word из-за него тоже довольно большое.
.RTF самый универсальный, весит многовато, зато открывается везде.
И везде выглядит по-разному :-P

Лучше уж PDF тогда.
На него тоже нельзя надеяться. Забавные вещи творятся, особенно когда не Adobe Acrobat.
Мы в продакшне на несколько десятков тысяч пользователей выгружали все в PDF, при этом умудрялись огребать, пришлось еще сделать костыль «не открывается? нажми сюда» — при клике на который рендерили все в картинки в высоком разрешении и складывали опять таки в PDF.

Объем, разумеется, возрастает, но открывалось везде.
Самый универсальный jpg/(png — чуть хуже). :)
Универсальней некуда.
По поводу «весит многовато». Как-то обнаружил, что файл RTF открытый и сохраненный Wordpad-ом резко, иногда на порядок, теряет в размере. При этом заметных отличий при просмотре нет.

С тех пор так и делаю, если вдруг файл надо письмом отправлять, а его размер выглядит неприлично.)
Если контрагенту не надо редактировать информацию — из вариантов только PDF (информация, которую может быть надо печатать и желательно напечатать более-менее корректного размера), или HTML/MHT для информации, которую будут смотреть с экрана.

То что будут редактироать — желательно согласовать формат. А то всякое бывает. Мне как-то фотографию прислали… вставленную в документ Abiword. Который на тот момент проще всего было поставить, извлечь из документа что надо, и удалить. И на этом моменте я понял, что Microsoft вовсе не корпорация зла — у них хотя-бы бесплатные viewer-ы были и они были относительно небольшого объема, в отличие от того что прислали.
Во многих случаях лучше повторно использовать код из Office вместо попыток написать его заново.


Ога чё мучаетесь, купите за килограмм денег Windows и ещё за килограмм Office, чтобы в линуксе использовать возможности Word
Хороший совет чо… или я чёто не так понимаю в жизни?
Ну, тогда не используйте. Будьте богаты и счастливы в линухах. :-)

В мире адского энтерпрайза дешевле купить дорогое рабочее решение, чем допиливать своё/стороннее

Руки надо отрывать за «выгрузки»-«вгрузки» в doc,xls,xlsx,docx и прочее подобное. Отрывать и бить ими по морде, чтобы всякую охоту программировать отбить, а потом в программисты 1С, принудительно.
В 1С, кстати, все удобно в плане интеграции с офисом на уровне платформы. Можно использовать и LibreOffice и его форматы, если есть такое желание.
только всёравно блин большинство пишут костыли через COM к обычному офису (и рвут себе шаблон когда в линуксе «почемуто» не работает)
НЛО прилетело и опубликовало эту надпись здесь
Я сейчас даже не про это, а про то что не в Винде COM отсутствует. И использование этого механизма намертво прибивает гвоздями продукт к одной платформе.
можно конечно с пасофным видом, как некоторые, написать «Сервер _очкрутойштуки_ требования Windows XP sp2, на Windows 7 не работает, на Server не тестировали» (реальная софтина для фонового захвата видео предназначенная для установке на сервер в стойку)

только очень печалит понимание того что существуют такие разработчики погромисты на свете…
НЛО прилетело и опубликовало эту надпись здесь
Вы наверное шутите сейчас, да? По иронии судьбы, я сейчас занимаюсь интеграцией некоторой информационной системы (довольно таки сложной) с 1С. Глаза бы мои не видели это. Если бы не интеграция своей системы по требованию организации, которая её уже вовсю использует — я бы к этому «удобно» не прикасался бы ни за какие коврижки. Что же там удобно то? COM который windows-only? Может быть web-сервисы, которые работают только с apache 2.2, который уже по соображениям безопасности нельзя ставить на сервер, не говоря уже о том, что не так то просто его найти. Или может быть Native API с кривым выделением памяти, «дружелюбным» местом повернутую. (я вообщем-то хорошо владею C/C++, но даже при этом условии, писать что-то мало-мальски серьезное, да ещё и кроссплатформенное — удовольствие то ещё). Интеграция с офисом на самом деле не нужна, выгрузку какую-нибудь можно и нужно делать на xml/json/csv (последнее, если нужно «человеко читаемое в екселе»).
Я уже больше месяца голову ломаю и пробую разные варианты интеграции, пока лучшее, что работает (более-менее приемлемо) — это низкоуровневый сетевой сервер на native api, принимающий коннекты с json-стримом, сама система написана на java/scala и в качестве одного и компонентов системы присутствует 1С-кодогенератор, который генерирует практически весь код, требуемый от 1С «на лету», упаковывает его в cf/erf/epf и использует «на той стороне». Я бы не сказал, что мне это решение нравится «архитектурно».
Вы наверное шутите сейчас, да?

Почему? Если вам нужна печатная форма в ворде (ради форматирования или чего-то еще, что не хочется делать табдоком), то вы просто заводите макет с типом двоичные данные и загружаете туда файл ворда, после чего можно с ним сделать все, что нужно (подставить данные по шаблону, например). Впрочем, посмотрите в 11 УТ, там есть хорошие примеры, как с этим работать.

Я уже больше месяца голову ломаю и пробую разные варианты интеграции, пока лучшее, что работает (более-менее приемлемо) — это низкоуровневый сетевой сервер на native api, принимающий коннекты с json-стримом, сама система написана на java/scala и в качестве одного и компонентов системы присутствует 1С-кодогенератор, который генерирует практически весь код, требуемый от 1С «на лету», упаковывает его в cf/erf/epf и использует «на той стороне». Я бы не сказал, что мне это решение нравится «архитектурно».


Насколько я могу судить, вы пытаетесь сделать то, что вам нужно, исключительно на стороне своего приложения. Это не всегда удачное решение, учитывая возможности платформы. Если вам нужно получить данные из 1С для своей программы, то вы можете сделать это либо через механизм СКД, либо через план обмена. Посмотрите еще вот эту статью, возможно там есть подходящее решение.

apache 2.2

Можете воспользоваться IIS, но апач проще и удобнее.

Интеграция с офисом на самом деле не нужна, выгрузку какую-нибудь можно и нужно делать на xml/json/csv (последнее, если нужно «человеко читаемое в екселе»).


Она нужна для людей, которые пользуются этой системой. Для них excel и word — быстрый и удобный способ выгрузить и отредактировать для себя какие-то данные. xml/json/csv хороши прежде всего для обмена программ между собой, но их потом еще надо переводить в удобочитаемый для пользователя формат, что не всегда оправдано по трудозатратам.

В данном случае так сделано, потому что писать сложную загрузку, обработку, валидацию данных на bsl — это тот ещё мазохизм, без регулярных выражений, аспектов и других крайне необходимых штук. Но так как не маленькую часть логики нецелесообразно переносить из 1С во внешнюю систему — принято такое решение. Код пишется на нормальном языке, с мало-мальски богатой библиотекой, написанной под эти потребности, а всё 1С-ное мракобесие генерится генератором кода, регулярки, по возможности, реализуются через валидацию полей XDTO, там где не получается так — используется более медленная реализация в виде 1С-компоненты (думаю придется ещё и такую компоненту писать в итоге). Валидация и аспекты реализуются через адов динамический «code injection», писать такое на 1С-ном языке наверное человеку не очень под силу, умом точно тронешься. Запросы пишутся на нормальном SQL/HQL, а потом на основе, «подтягиваемого» из 1С маппинга её внутренних объектов на объекты БД — генерятся прямые запросы к БД, в «особо тонких» местах, где очень важна производительность. По-хорошему выбросить из этой системы 1С и заменить на БД + ORM(который и так есть уже) + web-контейнер c UI для всего этого хозяйства, но блин «М» — Монополия.

При чем тут СКД? СКД — это внутренний механизм 1С, им всё равно нужно рулить и самое главное получать от него данные во вне. Статью я эту читал, естественно, знаком уже со всеми внутренними технологиями 1С (как это развидеть?!!) даже с полнейшим «извращенством» вроде серверов написанных прямо на bsl или «обмена» через внешние события 1С, которые генерятся через js-скрипт. работающий в ПолеHTMLДокумента, с открытой страницей, любезно предоставленной java-сервером, на форме открытой в постоянно запущенном клиенте 1С.

Уж простите, но мои проблемы явно не в незнании какой-либо хитрой технологии в 1С, решающей всё проблемы. Наоборот садишься за scala писать какой-нибудь хардкор, в хорошем смысле этого слова, чтобы выбить это из головы на время, чтобы избавиться от какого-то непонятного чувства стыда, как будто копался зачем-то в корзине с чужим грязным бельём, уж простите за прямые ассоциации. У мира 1С есть БООЛЬШАЯ проблема — тотальное и поголовное отсутствие минимально квалификации у людей, которые под это активно пишут, включая разработчиков платформы. По крайне мере складывается такое ощущения. Чего только стоят, в штыки воспринимаемые статьи на infostart-е на какие-нибудь банальные темы вроде «нужно писать тесты», «Банальная дисциплина программирования или пишем хороший код, за который не стыдно». Отговорка обычно одна — «вы все теоретики, а мы тут реальные проблемы бизнеса решаем, у нас нет времени на глупости».
И по поводу web-серверов. IIS не подходит, всё наше хозяйство кроссплатформенное (с натягом включая саму 1С, от которой, рано или поздно, придется избавляться тоже) и построено преимущественно на открытых технологиях. IIS, который тянет за собой серверную винду, клиентские лицензии и (Б)анальное рабство от MS (хватит, пожалуй и Oracl`а) — не очень то вписывается в нашу «кухню». Пока что apache 2.2 в контейнере, изолированном по самое «не балуйся», через LXC/cgroups, в отдельном виртуальном инстансе proxmox, вместе с 1С, внутри корпоративной DMZ. С ним общается только отдельный сервис, который уже, в свою очередь, доступен «во вне». Компания крупная и требования к безопасности серьезные. Регулярно проводится аудит и за торчащий даже в интранет apache такой дряхлой версии — надают по шапке, к гадалке не ходи. И будут правы.
Текущая платформа 1с 8.3.8 умеет apache 2.4. Фанаты безопасности, почему не обновили 1с?

1с пишет тесты их можно скачать и запустить для типовых конфигураций. Программисты 1с не пишут тестов по банальной причине: тест изменения трех строчек в запросе отчета может занять остаток рабочего дня, т.к. нужно создать тестовую базу данных с приличным объемом данных, а поддержка этого теста при накатывании обновлений от 1с займет всю оставшуюся жизнь. На Зарплату 2.5 за этот год выкатили не бета релизов 16 штук, за 10 лет которые она живет 166 штук. У Бухгалтерии 3.0 за этот год не бета релизов 51, за 4 года жизни 258 штук. В целом проще исправить три строчки в запросе, когда они сломаются, чем поддерживать тест этого отчета. Привет программистам scala, министерству финансов, пенсионному фонду, государственной думе, фонду социального страхования, министерству налогов и сборов, росалкогольрегулированию и правительству рф в целом )
Не знаю почему не обновили, на это видимо есть свои причины, кстати обновлять платформу 1С сразу на новую версию, как только она вышла — плохая практика, лучше подождать и посмотреть на какой набор глюков сменится тот набор, что есть сейчас. Если бы дело было только в тестах, насчет тестов — им и впрямь не всегда есть место/время, особенно в бизнес логике. Но тесты — первое, что пришло в голову, как пример, на самом деле не в тестах дело, а в принципиальном игнорировании любых «дисциплинирующих» практик. Вот и вы мне тут повторяете ровно то же самое, о чём я рассказывал выше. «У нас нет времени. Мы решаем реальные проблемы. Проще две строчки кода исправить в запросе, чем...». Не это ли называется быдлокодингом и костылестроением? Количество релизов какое имеет отношение к обсуждаемой теме? Если бы в 1С приветствовались нормальные практики программирования, а самое главное — проектирования, было бы гораздо проще выпускать релизы, и работы было бы меньше, а не больше. Вы подтверждаете мои слова просто, я вам сейчас объясняю вещи, которые объясняют студентам, а то и школьникам, изучающим программирование. Понимаете, не в тестах дело. Есть много стилей, практик, парадигм, шаблонов проектирования, подходов к проектированию, подходов к менеджменту проекта, есть разные модели разработки и разные модели контроля качества. Многие из этих вещей противоположны друг другу, т.е. есть масса их комбинаций, где тесты неуместны или даже вредны и, соответственно — не используются. А есть полное игнорирование всякой дисциплины, «мы пишем запросы в три строчки, много запросов, что заказали то и пишем, у нас нет времени, мы выпускаем по 10 релизов в день». Вы даже не понимаете что нужно иметь не просто тестовую базу, а желательно тестовую ферму, имитирующую всю инфраструктуру в масштабе. Но для вас, необходимость в тестовой базе — это причина не писать тесты.
бывает что релиз конфигурации требует последнюю версию платформы, хочешь не хочешь, а обновляться надо
Если бы в 1С приветствовались нормальные практики программирования, а самое главное — проектирования, было бы гораздо проще выпускать релизы, и работы было бы меньше, а не больше

у нас бывает так что окончательный формат отчёта для налоговой утверждают за неделю до окончания периода сдачи отчётов
потом наши законодатели такие забавные, могут выдумать такой отчёт что для сбора данных под него надо перепиливать всю архитектуру конфигурации (камень в сторону 6-НДФЛ и то как с ним работает ЗУП 2.5)
Конечно, бывают разные случаи. В целом я согласен, что есть проблема со «сверхсрочными» правками, особенно в этой стране. Но для решения подобных проблем тоже существуют «хорошие» и «плохие» практики. Хорошие — модульность систем, возможность замены шаблонов и форм документов без пересборки или обновления всей системы, разделение системы на части по уровням ответственности, грамотное проектирование системы, чтобы даже серьезные изменения «цепляли» наименьшее количество компонентов, т.е. уменьшение связности и монолитности — да много есть чего. А есть практики плохие — строчить «релизы» спагетти-кода в попытке угнаться за всеми дуралеями, которые «не будут кошмарить бизнес». И вроде бы в 1С есть зачатки каких-то подобных практик, но выглядит это всё так себе и начинает дурно пахнуть. А потом тебе рассказывают, что «пробовали» и «ну его нафиг». 1С — это как АвтоВАЗ, такая структура давным давно должна просто рухнуть, но ряд нюансов и обстоятельств позволяет этому существовать и дальше, да ещё и неплохо себя чувствовать.
А обновлять apache сразу на новую версию — это хорошая практика? А почему за этот год наплодили 5 релизов apache 2.4? Как получилось, что apache 2.2 написанный богами и имеющий модульную структуру, покрытие тестами (вы не знаете где их скачать?), нельзя выставлять в интернет?

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

Если послушать вас, то 1с Бухгалтерия — это такая простая программка, которая пишется любым тру веб-программистом с использованием передовых практик примерно за неделю? А фирма 1с уже пару десятилетий занимается фигней и изнасилованием практик программирования? Где те герои, которые подвинут 1с? Желательно бесплатно )
apache обновлять сразу — хорошая, если он за nginx. Ого, целых 5 релизов! apache, кстати, совсем не «эталон» разработки, я бы даже особо его не хвалил. apache напрямую нельзя выставлять почти никакой, а особенно старый, куча есть известных проблем, взять хотя бы «slow headers». Но всё же, по сравнению с моделью разработки 1С — небо и земля. Что вы так к тестам то прицепились? Где скачать тесты apache? В репозитории с его основным кодом (хттп:/svn.apache.org/viewvc/httpd/test/) там не просто тесты, у него там в субпроектах целый фреймворк для тестирования, специально под него написанный, от модульного и функционального тестирования до нагрузочного. Опять же, на мой взгляд — apache не совсем хороший пример для подражания.

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

Я не говорил, что конфы 1С простые, скорее наоборот, там много усложнений из-за отсутствия инструментов и квалификации у разработчиков. А архитекторов, такое ощущение, что нет вовсе.

Чудес не бывает, в том виде в котором 1С есть — она монополист (ну почти) и так может оставаться довольно долго. Другой пример подобной ситуации — Артемий Татьянович Лебедев, не сказать, что он плохой дизайнер, но не гениальный и он останется «первый дизайнер России» совсем не потому, что лучше него никого нет — он просто оказался в нужное время в нужном месте и сумел свою «монополию» поставить параллельно со становлением дизайна, как такового, на просторах нашей необъятной. Я совсем не хочу сказать, что это легко, но и гением дизайна можно не быть. С 1С история ещё печальнее — монополия крепче, талантами и не пахнет. Симбиоз хищной системы гос аппарата с паразитической 1С. А вы говорите — прогоните паразитов, быстро, желательно с помощью чего-нибудь вкусного и желательно бесплатно. А разгоните как хищников. Желательно без «заварушек», а честным голосованием.
Дык наличие таких «выгрузок/вгрузок» определяется желаниями заказчика, а не кривизной рук программиста.
Не совсем так, заказчик часто не обладает необходимой информацией и компетенцией, для того чтобы выбирать форматы «выгрузок/вгрузок» и в этом выборе ему должны помочь специалисты на этапе разработки ТЗ. Зачастую требования «тут нужен только xls» обусловлены не ограничениями системы или техническими аспектами, а настроением «левой булки» главного бухгалтера заказчика, пусканием этого дела на «самотёк», отсутствием соответствующих этапов проектирования системы или отсутствием проектирования как такового. Вот как раз 1С «разработчики» приучают руководителей и бухов к «наколеночной» разработке, без проектирования, выдавая это за «фичу», мол «мы поспеваем за бизнесом, сделаем всё, что попросите, в кратчайшие сроки», при этом не неся, зачастую, долгосрочную ответственность за подобные «разработки». Абсолютно все 1С-конфигурации, которые я в своей жизни видел (а видел не мало), дописываемые кем угодно — не важно, будь то франчайзи, студент-третьекурсник или собственный отдел разработки из n программистов с m сертификатами — абсолютно все эти системы являются системами с быстро и необратимо возрастающей энтропией. Все эти «разработки» напоминают эрозию, и у любой «базы» наступает момент, когда это проще выбросить, чем привести в порядок. Вот в такие моменты у директоров наступает (далеко не всегда) прозрение и шанс задуматься, какие же причины привели к подобной ситуации. Я таких руководителей видел, поверьте — этот опыт бесценен.
Охотно верю, хотя сам в области 1С не работал, но ситуацию живо представляю. Понятное дело, что если есть выбор, можно объяснить заказчику, что XLS будет в N раз дольше реализовывать, чем CSV, чтобы он подумал, нужно за это платить, или нет. Но бывает и так, что нужен именно функционал офисных файлов. И тут уж не скажешь «давайте лучше сделаем ODT», потому что MS Office куда более распространён, а OpenDocument он поддерживает только в последних версиях.
НЛО прилетело и опубликовало эту надпись здесь
Приходилось использовать apache tike (на базе poi) для преобразований doc(не docx) ) -> html. Увы, таки местами все там не особо хорошо. В результате пришлось допиливать до приличного понимания списков, заголовков и некоторых стилей. Хотя если нужно выгрузить данные\текст, то проблем особых нет) Иначе приходится закапываться в спецификации.
Купите один сервер Windows 2003, установите на него лицензионный Word, и настройте простой веб-сервис.

А есть такая версия MS Office, лицензионное соглашение которой такое позволяет?
«Сохраните в Excel 3.0 минимальный файл только с теми функциями, которые вам необходимы, и используйте его как пример минимальной BIFF-записи»

Это уже не очень хорошо работает. Пользуюсь самодельным генератором 4.0.Последние эксели открывают в режиме «только чтение» и с отрисовкой содержимого иногда проблемы.
CSV не поддерживает вычисления, может чуть разное понимает, но но если в CSV прописать формулы в ячейках, то при открытии эксель всё вычислит.
C тех пор прошло немало времени, Word/Excel онлайн давно доступен в Onedrive и многих других облачных сервисах — тот же Яндекс.Диск.
«Купите один сервер Windows 2003, установите на него лицензионный Word, и настройте простой веб-сервис. Работы на полдня, с применением C# и ASP.NET… В последствии Word будет находиться в памяти под управлением COM-системы.»

Только перед сдачей в продакшн ознакомьте клиента с такой информацией:

Вопросы серверной автоматизации Office
https://support.microsoft.com/ru-ru/kb/257757
«Корпорация Microsoft на сегодняшний день не рекомендует производить и не поддерживает автоматизацию программ из пакета Microsoft Office с помощью автоматических, неинтерактивных клиентских приложений или компонентов (включая ASP, DCOM и службы NT), поскольку при запуске в этом окружении программы пакета Office могут работать нестабильно или зависать.»
Кстати, интересный вопрос. Автор предлагает использовать лицензионную Windows с лицензионным Office для решения проблем с форматом документов.
Но позволяет ли лицензия офисного пакета такое использование? Что-то мне подсказывает, что использование пакета «не поддерживаемым Microsoft» способом, да ещё и перепродажа части его функциональности (если мы в своём платном веб-сервисе генерируем отчёты в xls, например) выходят за рамки лицензионного соглашения. Явно противоречит правилам про личное использование (1 лицензия = 1 пользователь).

Так какой тогда смысл? В итоге разработчик тратит кучу бабла, но эффект такой же как и если бы он спиратил все вышеупомянутые продукты.
Я за старые добрые бинарные форматы, которые выглядят как нативные структуры данных C. Непонятно зачем многие перешли на XML, получив только увеличение времени открытия/сохранения и потребления памяти. Всё равно все используют готовые библиотеки для работы с этими форматами, поэтому абсолютно пофигу что там внутри, и этот человекочитаемый XML там нафиг был не нужен, ни там, ни в других подобных случаях как в примере ниже.
Тот же Premiere перешёл с бинарного формата в XML, теперь сохранение больших проектов с теми же бинарными данными Warp Stabilizer — это боль на десятки секунд и минут. Вместо того чтобы кинуть бинарные данные сразу на диск, они теперь сначала кодируются через base64, затем кидаются в виде строки в сотни мегабайт в XML, а потом это всё зипуется в проект одноядерным алгоритмом из zlib. Эффективные менеджеры, мать их за ногу.
Не сочтите за рекламу, но существует куча вендоров, которые предоставляют библиотеки для работы с офисными форматами без офиса. На вскидку Aspose и GemBox. Aspose вроде рендерит похоже на ворд. Сделать 100% похожий на Office рендеринг вобоще очень сложная задача, тут со статьей согласен — используй COM. Он правда любит глючить. Потом есть куча проблем с апгрейдом старого кода, который использует COM и макросы. Если нужно только модифицировать/генерировать, то для Java есть бесплатная poi, хоть она и кривая, но генерацию документов Excel на ней сделать у меня получилось, в Word пришлось лезть в дебри формата — poi не умеет правильно обрабатывать закладки. А старые форматы… да лучше уж через COM…
Вы нам тут расскажите еще, что микрософт разработал ексель. Последняя коза знает, что она его купила уже готовый и практически ничего нового за все это время туда не добавила. Куплен эксель был в рамках многоходовки по отжатию ништяков — приватизации прибылей и национализации убытков, которую провернула команда под крышей конгресса. В те времена конкурент экселя 123 был куда производительнее и функционально мощнее. Умел на 386/486 машине через дос-экстендер заюзать всю доступную память — 16 Мбайт. Потом микрософт купила ексель, айбиэм купил лотус. Потом айбиэм убил 123, передав все наработки в микрософт, как это было и с полуосью. Вклад микрософт в эксель состоит в засовывании туда OLE. Чтобы таблицы можно было курочить не вылезая из мсворда.
Масштабировав на порядки методику ибм-микрософт по приватизации прибылей/национализации убытков, НАСА передала свои технологии вместе с несколькими тысяч живых инженеров Илоне Маск. В результате вся инженерная братия была поставлена перед выбором — перейти к Илоне в частную контору и лишиться государственной пенсии, либо уволиться по сокращению.
В случае ибм-микрософт колическтво людей ограничивалось парой сотен. Кстати, если кто забыл, разработчик, который работал над контейнером в PM и GDI остался в IBM, в резульате чего вплоть до 98 включительно виндовсы были 16-разрядными — исходников не передали, поэтому приходилось линковать виндовысы со старым 16-разрядным объектным кодом от виндовсов 3.11.
вплоть до 98 включительно виндовсы были 16-разрядными — исходников не передали,


вы про NT забыли
Ее практически с нуля делали, в отличие от Win'9x. Она и называлась «Виндовс-новые технологии» поэтому. Там контейнер полностью свой, внешне похож на тот, что был у Win'3 но совершенно беспонтовый. Даже драг-н-дроп толком не поддерживался.
на самом деле ноги NT частично растут из OS/2
Только на уровне некоторых концепций. NT была микроядерной, полуось — монолитной. NT была 32-разрядной, OS/2 была 32-разрядной только выше ядра — все драйвера аппартного уровня были 16-разрядными начиная от варпа 3.0 вплоть до авроры 4.5. Даже термин был такой «thunking» — передача управления между 16- и 32-разрядными сегментами кода. Хорошо это или плохо, не ясно до сих пор — код закрыт, все засекречено. Тем не менее современные процессоры 16-разрядный режим поддерживают, судя по форматам дескрипторов шлюзов.
Как вспомню старые добрые времена, так вздрогну — драйвер Excel при импорте табличных данных проанализировал первые пять строк и решил, что в этой колонке строка не длинне 255 сиволов а в этой вообще ничего нет; и тут не число, мало ли что там пользователь ввёл, Excel же для красоты точку на запятую поменял…
Зато Excel ещё 97 года допускал совместную работу через сеть нескольких пользователей (на разных листах).

В Open Office с «простым» форматом этой функции не смогли полноценно сделать до сих пор.

«Q: Могут ли несколько пользователей одновременно работать с одним файлом?
A: Совместная работа в электронных таблицах Calc возможна в версии 3.0 Сервис — Совместно использовать документ
В режиме совместного доступа к таблице налагается ряд ограничений на редактирование (нельзя удалять/добавлять столбцы/строки и т.д.)»
Я так понял, статя была попыткой остановить развитие таких проектов как OpenOffice — типа «не пытайтесь ребята — у вас все равно ничего не выйдет с нашими форматами» (это сообщение в тексте повторено несколько раз)
А по состоянию на 2016 год через ту же Apache Tika вполне можно работать, и осчастливить минимум 80% пользователей.
По современному состоянию уже много есть и офисных пакетов и просто библиотек которые вполне сносно позволяют работать с DOC и SCV, но от этого те лимиты что были в них заложены не исчезли — в CSV например на каждой странице не может быть больше 65535 строк или столбцов — как не крути.

Собственно CSV потихоньку уходит в прошлое — все больше используется XLSX.
Все, что на xml, не более, чем раскрученная мода. У этой «технологии» нет абсолютно никаких преимуществ над джейсон-подобными форматами, даже наоборот — попробуйте распаковать odt или docx и что-нибудь поправить, да хотя бы найти.
xml планировался вместо flex+bison, которые нынешние «програмизды» не в состоянии освоить в силу массовой необразованности.

в CSV например на каждой странице не может быть больше 65535 строк или столбцов — как не крути.

Собственно CSV потихоньку уходит в прошлое — все больше используется XLSX.

Откуда такие ограничения в форматированном текстовом файле?! Если Ваши инструменты не умеют читать большие CSV, то меняйте инструменты, а не обвиняйте формат не в его грехах.

Прекрасно перегоняю данные в CSV файлах на почти 200 млн строк. Любой другой формат выжрал бы винчестер, ОЗУ, и, самое главное, время!
Мало каши ели. Хотя soffice такое же дерьмо, как и винворд. IBM в свое время на корпоративном уровне отказались вообще от использования вордпроцессоров — заманало форматирование документов через задницу — каждый жук и жаба считает своим дологом что-нибудь выделить в тексте, который он скопипастил или набрал, и ткнуть в одну из трех кнопок по своему разумению.
они в блокноте отчёты пишут?
В конце 90-х начали использовать Lotus Notes, из приложений которого выбросили возможность форматирования текста поль зователем, и развили в мощное корпоративное приложение. Вы просто набираете тексты в формах, решаете, что выделить, и не заботитесь, как он будет выглядеть на бумаге. В отчете, который выполняется по определенным стандартам, не требуется пользовательское форматирование — достаточно текста, а формой занимаются специально обученные люди.
Когда ставили задачу, одним из требований было, чтобы документ, прошедший двумя путями правок через полсотни человек, выглядел на выходе абсолютно одинаково.
По закрытости и «фундаментализму» Lotus Notes (… is not a mail system! ) даст фору любому офисному формату. )))
До сих пор с ужасом вспоминаю этого монстра, с которым в бытность Зурабова «подружился» ПФР.
Кого-нибудь интересует формат файлов Оракла или дибиту кроме их разработчиков?
Не знаю, как в настоящее время, но в конце90-х того API, что IBM предоставлял разработчикам, было более, чем достаточно. Не помню, чтобы возникали какие-нибудь вопросы в связи с недостатком информации. Мало кто так подробно и тщательно подавал информацию не только тогда, но и сегодня. Да, был децел «недокументируемых» вещей, но в подавляющем большинстве своем это были депрекаты, удаление которых на тот момент было нецелессообразным. Причем эти «недокументированные» просто не находились в онлайн-системе электронной подсказки visual age из ide по хоткею. Тем не менее, информация о них присутствовала на каком-нибудь сиди из комплекта документации или была откомментирована в заголовочном файле.
Зачем и кому может понадобиться информация о формате файлов, можно только пофантазировать — физический формат данных вообще в рамках среды IBM ничего не значил — поддерживалась настоящая объектная модель в том самом виде, в котором она изначально была задумана. Все вопросы совместимости и переносимости, включая межплатформенный обмен, решались на уровне абсолютно открытых решений и стандартов — в рамках среды IBM это был SOM (System Object Model), вне ее — CORBA. То, что позже появилось у микрософт под названием COM, это крайне криво реализованное подмножество технологий SOM. Причем спецом реализованное так, чтобы огородиться от остальных.
Кого-нибудь интересует формат файлов Оракла или дибиту кроме их разработчиков?
Не знаю, как в настоящее время, но в конце90-х того API, что IBM предоставлял разработчикам, было более, чем достаточно. Не помню, чтобы возникали какие-нибудь вопросы в связи с недостатком информации.


А в серверах БД фишка не в файлами с данными, а в алгоритмах работы с ними. Делал реверс баз Pervasive до 5.x и 6.2 (там заголовки таблиц генерировались приложением на лету, а в файлах были только данные) — ничего сложного. А вот заставить быстро читать или писать — это колоссальные знания.

PS
Криптованные данные умышленно вывожу за скобки.
Spolsky — мужик, конечно, известный, но его ОПРАВДАНИЯ для меня не выглядят профессионально. Особенно там, где сама же компания ЗАИНТЕРЕСОВАНА В МОНОПОЛИИ. Именно закрытый формат файлов и его безумная структура позволили мелкософту год за годом продавать «перекрашенный офис» слегка пополняя его перделками — ведь никто не напишет ДАЖЕ ИМПОРТ этой фигни в свой «СуперОфис», не говоря об экспорте.
Так что нет, Джоел, не оправдывай мелкомягкую глупость и намеренное усложнение формата. Да и кто вообще может заложить голову за то, что в MS работают сплошные специалисты??
Для примера, есть формат SVG — вы сами догадываетесь, насколько сложными могут быть переплетения геометрии, раскраски, текста, наложений и т.п. И ничего — обошлись ПРОСТЫМ XML! Элементарной иерархией, которую даже чайник может открыть и сходу понять хотя бы половину текста. ВОТ ТАК нужно проектировать форматы!
Шутите? xml человеком практически не читаем. То, что это символьный формат, а не бинарный, не делает его более понятным. Это во-первых.
Во-вторых, мало какие данные могут быть представлены в иерархическом формате. Был уже лет двадцать назад такой — sgml назывался (xml — жалкая калька с него). Загнулся именно по причине того, что не может поддерживать полносвязные объекты с той же эффективностью (здесь можно смеяться), что и иерархические.
А уж просто понять структуру дерева, просто глядя в xml, могут не только лишь все.
Вы можете впадать в крайности сколько угодно, но очевидное вы не переспорите: читать XML — можно, бинарный формат — нет.
Во-вторых, никого не интересует «мало какие данные», тем более, что речь идёт о конкретном применении. Вы HTML страницы видели? Ничего, что они тоже иерархия? Так что мешало макакам в менеджменте использовать XML?
Структуру дерева и не надо ВСЕМ понимать — достаточно иметь грамотно спроектированную иерархию + документацию. Посмотрите, сколько редакторов поддерживают SVG — для них это пара пустяков именно по причине удобного формата.

Так или иначе, ЛЮБОЙ человеко-читаемый формат был бы лучше кусков бинарного гогна, плодимого больным менеджментом MS.
К слову, тот же JSON — вполне удобный формат, но MS даже его профукала, когда переходила с бинарного. эпик фэйл.
Вот видите, Вы сами даже простой текст понять не в состоянии, а спорите.
Ваша фраза «читать XML — можно, бинарный формат — нет.» совершенно не противоречит моей «То, что это символьный формат, а не бинарный, не делает его более понятным», она просто уточняет некоторую часть исходной семантики. И речь шла не о том, можно ли прочитать бинарный формат или нельзя прочитать xml — речь шла о том, легче ли понять, что описывает xml, чем, например тот же джейсон или шиндаини, если они описывают один и тот же объект.
Я вот что Вам скажу — не имея специальной программы, Вы не только ничего в xml-документе не поправите, Вы даже в нем не разберетесь в отведенное для этого Вам время. Ключевое слово здесь — «в отведенное для этого время.» Именно поэтому появился и отлично на территории xml себя чуствует json, ну а уж если и его не хватает, то народ использует lex/yacc по их пярмому назначению.

У меня есть софт для разработки под платформу IBM и там в составе есть система контекстной помощи, из которой подсказка или соответствующая страница мануала вызывается по хоткею из IDE. Я использовал ее по подписке лет десять, если не больше, и имел счастье наблюдать как появившияся модный xml туда проникал. Контент имеется в трех форматах: в специальном символьном редактируемом и компилируемом формате, в html и xml. Предполагается, что первый, назовем его СА, предназначен для контестного использования, второй для свободного чтения мануалов и справки, а третий типа универсальный и очень перспективный. Так вот этот универсальный по объему занимает в два с половиной раза больше места, чем первый и второй вместе взятые. При этом в процессе работы все CА полностью помещаются в ОП и вывод справки происходит быстрее, чем я палец с хоткея сниму, а универсальный на каждый вызов шелестит блинами. Для чтения html достаточно примитивного просмотрщика, лишь бы умел картинки показывать, а для универсального xml требуется сугубо свой просмотрщик.
Эта справка иногда подразумевает показ картинки, например, синтаксической диаграммы или схемы БД. Картинки присутствуют в трех форматах — svg (тот же xml), png и бинарном векторном (оба компилируются из svg). Первый используется для xml, второй для html, третий для CA. Это единственное место в эдвайзере, где оправдано использование xml (svg). И самое интересное — именно под шиндовсами это не работает — в страницу, сверстанную из xml, вставляется png.
> Вот видите, Вы сами даже простой текст понять не в состоянии, а спорите.

Зачем вы тратите своё время, испражняя пустопорожние «доказательства»? Начинайте сразу с фразы «самдурак» — это лучший аргумент. Не стыдо быть таким быдлом, «товарищ из Рассеи»? Вас где учили общению со взрослыми? Я могу сказать ровно тот же текст, что вы ни черта не поняли из объяснений оппонента, но с пеной у рта пытаетесь ПРОПИХНУТЬ своё «единственно верное» мнение. Именно «мнение», а не реальный аргумент.
С вами лично не вижу никакого смысла продолжать — сами разбирайтесь с новыми воротами.
Рекомендуют использовать CSV, но не указывают что CSV у Office — это не обычный CSV. Начать хотя бы с того что разделитель там не обязательно запятая.
А я стараюсь RTF использовать, он гарантированно на любой системе встроенными средствами открывается, а для таблиц, да CSV.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории