- 1С, Linux, Excel, Word, OpenXML,ADO и Net Core
- 1С,Linux,Excel,Word,OpenXML,Net Core
- Печать в Word без COM объектов или печать в Word под Linux
- 1. Теория и общее описание алгоритма.
- 2. Описание использования.
- Описание использования состоит из 2-х частей: правила составления макетов (для пользователей) и правила вывода макетов (для программистов)
- правила составления макетов (для пользователей)
- правила вывода макетов (для программистов)
- 3. Код методов
- 1С, Linux, Excel, Word, OpenXML, ADO, Net Core
- Скачать файлы
- Специальные предложения
- См. также
- Использование классов .Net в 1С для новичков Промо
- Работа с журналом регистрации. Выходим за границы платформы
- .Net Core, обмен с 1C по TCP/IP между различными устройствами
- Net Core. Динамическая компиляция класса обертки для получения событий .Net объекта в 1С
- Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7 Промо
- .Net Core, 1C, динамическая компиляция, Scripting API
- Асинхронное программирование в 1С через использование классов .Net из Native ВК
- Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux II
- Кроссплатформенное использование классов .Net в 1С через Native ВК. Или замена COM на Linux
- .Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.
- Быстрое создание Внешних Компонент на C#. Примеры использования Глобального Контекста, IAsyncEvent, IExtWndsSupport, WinForms и WPF
- Подсветка синтаксиса 1С в текстовых редакторах Atom, Sublime Text, VS Code
- .NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия
- 1С с «плюсами»
- Генерация штрих-кода для вставки его в 1С при работе в Linux
- Простейший способ создания штрих-кода в формате PNG из командной строки в Linux Ubuntu
- Компилирование внешней компоненты AddInNative в ОС Linux
- Использование внешних COM-компонент (.dll) или любых клиентских методов в регламентных заданиях серверной базы.
- Обработка изображений 1С средствами .Net framework
- Подсистема «COMExchange»: ускорение выгрузки запросов ADO или «игра с огнём».
- Простой пример создания ActiveX-control на Qt
- Finger-биометрия в 1С
1С, Linux, Excel, Word, OpenXML,ADO и Net Core
Доброго времени суток хабратчане! Сегодня я продолжу мучить вас великим и могучим Руслишем. Это продолжение статей:
С того времени я добавил использование расширений Linq. В этой статье я коснусь практического использования моей компоненты. А именно кроссплатформенной работой с файлами Excel и Word c помощью OpenXML и NetStandart.
Собственно ради чего эта разработка и задумывалась. Исходники были взяты отсюда. К сожалению без Nuget подключить библиотеку к проекту нельзя. Но через CoreClr его можно подключить. Справочную информацию по работе с OpenXML можно посмотреть здесь.
Как мне… (Open XML SDK)
Итак начнем с чтения страниц Excel. Задача преобразовать данные в ТаблицуЗначений.
Рассмотрим более подробно методы для получения данных о ячейках таблицы
Теперь нам нужно преобразовать ТЗ с данными о ячейках в Таблицу Здначений аналогичной Странице Excel
Теперь перейдем к чтению данных файла Word.
Очень удобно использовать Productivity Tool», она умеет генерировать код Генерируем OfficeOpenXML-документы за 5 минут
Кроме того есть множество провайдеров к различным базам данных, как MS SQL так и другим, в том числе NoSQL
Приведу пример доступа к MS SQL
При этом можно сделать обертку DynamicObject над SqlDataReader и использовать так
В своих статьях я хочу донести прежде всего до 1С, что есть кроссплатформенная замена COM с помощью NetStadart. Но к моему большому сожалению пока данный подход никого не интересует. Привлекает внимание только Руслиш. Если у кого будут идеи чем можно привлечь внимание к замене COM пишите. Буду только рад.
Источник
1С,Linux,Excel,Word,OpenXML,Net Core
Это продолжение статей
Кроссплатформенное использование классов .Net в 1С через Native ВК.
Кроссплатформенное использование классов .Net в 1С через Native ВК II
С того времени я добавил использование расширений Linq.
В этой статье я коснусь практического использования моей компоненты. А именно кроссплатформенной работой с файлами Excel и Word c помощью OpenXML и NetStandart.
Собственно ради чего эта разработка и задумывалась.
В своих статьях я хочу донести прежде всего до 1С, что есть кроссплатформенная замена COM с помощью NetStadart.
Но к моему большому сожалению пока данный подход никого не интересует. Привлекает внимание только Руслиш.
Если у кого будут идеи чем можно привлечь внимание к замене COM пишите. Буду только рад.
Песец.
Отстрелить пальцы только за неумное чередование кирилицы и латиницы.
.
нафейхоа так делать?
Я и в прямых запросах забадываюсь прыгать с кирилицы на латиницу и писать «SELECT спр.ТипТовара as ТипТовара FROM $Справочник.Номенклатура as спр(NOLOCK)».
Засуну. Пока времени нет. У меня дел по горло.
Вот на github имеет смысл
(2) Еще раз там есть возможность использования синонимов. Никто тебе не запрещает их использовать.
Мне же лениво писать синонимы
Ну, а кроме Русслиша, неинтересно?
3. Использование сахара как методы расширения, вывод типа в дженерик методах, асинхронное программирование?
и пипец, запускаешь какуюнить программу где интернета нет, и всё, вся система в ступоре. потомучто ктото скопипастил пример из книжки
(17) Copy-Paste и бездумный Copy-Paste это разные вещи.
Бездумно можно написать, что угодно.
Просто писать тонны кода, вместо того, что бы подправить в нескольких местах проще.
(19) Здесь не надо знать C#, нужно знать классы и их методы.
Как в COM и вэб сервисах. И не имеет смысла на чем они написаны
Источник
Печать в Word без COM объектов или печать в Word под Linux
Моя первая публикация (чего-то полезного) не только на инфостарте, но вообще в интернете, так что особо сильно не пинайте
Тем, кому не интересна теория, предлагаю сразу перейти ко 2-му пункту, быстро прочесть как пользоваться и скопировать код методов из 3-го пункта. Некоторое время после написания публикации я буду находиться на поддержке, отвечать на вопросы (возможно исправлять баги).
Исправил редкий баг, всем кто пользовался до «10.06.2014 13:03:56» рекомендую обновить метод РаспарситьСтроку(Стр, ХешКодировки)
1. Теория и общее описание алгоритма.
Сразу хочу заметить, что не претендую на самое красивое, лучшее и оптимальное решение этой задачи, все ниже описанное можно и нужно оптимизировать и я даже знаю как, но только руки не доходят. Формат RTF очень старый и имеет много надстроек и дополнений, всю его спецификацию я разумеется не изучал. Если простыми словами, то основа формата блоки заключенные в фигурные скобки, вот такие «< >«. Внутри блока расположены команды-маркеры, которые начинаются с символа «\» и описывают шрифт, цвет фона текста и т.д. т.п. и текст (если блок текстовый). Таблицы в RTF легко склеиваются между собой достаточно просто в тексте удалить все символы, разделяющие таблицы. Честно говоря, иметь счастье разбиаться со спецификацией таблиц у меня не было ни какого желанию, по этому решено было использовть свойство склейки, просто повторяющуюся многократно строку необходимо заключить в секцию и многократно вывести. О секциях расскажу ниже. На этом рассмотрение теории по RTF можно закончить. Вы и сами можете по исследовать этот вопрос, создав файл *.rtf и открыв его хоть блокнотом, хоть Hex редактором. Алгоримтм на самом деле банален и прост. Читаем файл, превращаем в текст. Далее работаем с текстом. В первом приближении это всего два метода. Первый — это построить дерево из блоков, команд и текста. Второй — это превратить дерево в текст классическим рекурсивным обходом. Вот текст методов:
и метод преобразования дерева в строку, совсем уж маленький
Далее все усложняется тем, что необходимо помимо обычного текста отслеживать секции и параметры, запоминать их засосвывать в какую-нибудь структуру. В какую только ? Размумеется в такую, что бы было максимально просто и удобно работать как проффесионалу, так и новичку (ну что бы мозг не напрягался). В начале я думал построить такое же дерево, но это не удобано. в результате пришел к тому, что проще всего сделать Хеш (но 1С Соотвестсвие), в котром можно обратиться к нужному элементу (секции или параметру) по имени. Причем элемент Хеша это массив, на случай если в макете будут встречаться параметры или секции несколько раз. В результате, 1 раз заполнив параметр, он автоматический заполниться по всему документу, аналогично и относительно секции. Далее еще 2 метода, первый — это копирование секции, зная где ее начало и где конец, и второй — это заполнение параметра (просто подмена текста). Секции при копировании пропускают все управляющие блоки, т.е. теги секций и параметров. Все эти операции происходят прямо в дереве значений. Дерево по сути — это структура с большим количеством коротких строк, работать с которыми 1С-ке гораздо проще (я правда не знаю какой алгоритм для работы со строками использует фирма 1С, но в любом случае оперировать строками порядка 1-го мегобайта это не по феншую). В результате на пентиуме 4, шаблон размером под 1 мегобайт (почти 40 страниц) заполняется всего за 1 минуту. Для тех кто разберется со спецификацией RTF бонус в том, что уже все разложено по полочкам и можно менять шрифт, цвет и прочие параметры текста прямо на лету в самом шаблоне, хотя это можно делать и на уровне секций, например создать чередующуюся цветами таблицу.
2. Описание использования.
Описание использования состоит из 2-х частей: правила составления макетов (для пользователей) и правила вывода макетов (для программистов)
правила составления макетов (для пользователей)
- Секции оформляются 2-мя тегами: откытием секции и закрытием секции (Пример. ).
- Параметры оформляются одним тегом через квадратные скобки (Пример: [Параметр1]).
- Любой текст за пределами секции принадлежит документу и будет выводиться в любом случае (Пример: Этот текст выведется в любом случаеЭтот текст выведется только если будет выведена секция «ШапкаДокумента» значение параметра «тестовый» = [тестовый])
- Секции могут быть вложенными. (Пример:Шапка:Шапка:)
- Макет может состоять из произвольного количества секций и параметров. Правило составления секции аналогично правило расставлению скобок в обычно тексте. Нельзя что бы в любом месте количество закрывающих скобок было больше открывающих. На параметры нет никаких ограничений.
- Можно создавать параметры с одинаковым именем. При этом все параметры с одинаковым именем будут заполнены одним значением (Пример: Дата документа = [ДатаДокумента], и тут тоже быдет выведена такая же дата документа [ДатаДокумента]).
- Можно создавать секции с одинаковым именем, даже вложенные одна в другую. При этом они будут выведен столько раз, сколько задано в алгоритме. (Для примера предположим, что секция «Тестовая» выведена будет 2 раза и текст макета следующий: «1. Текст секции2. Текст вложенной». При таких условиях результатом будет текст: «1. Текст секции 2. Текст вложенной 2. Текст вложенной 1. Текст секции 2. Текст вложенной 2. Текст вложенной «)
- Правила составления имени секции или параметра. Можно использовать пробелы в имени (но не рекомендуется). Имена регистрозависимы ([ИмяПараметра] и [имяпараметра] это 2 разных параметра). Можно смело использовать цифры и спец символы, кроме » «, «[«, «]» или последовательности «
- Таблицы. Таблица формируется внутри секции. Телом секции является одна строка таблицы с параметрами. После объявления начала секции не должно быть ни текста ни пробелов, только перевод на новую строку. Аналогично для строки таблицы с параметрами и следующим за ней объявлением конца секции.
- Возможные ошибки. Не обязательно, но крайне рекомендуется обрамлять пробелами все теги секций и параметров (Пример: «Пробел»»Пробел» текст секции «пробел»[Параметр]»пробел» конец текста секции «пробел»»Пробел»
правила вывода макетов (для программистов)
Еще один момент. В зависимости от того в каком редакторе вы создавали RTF-фаил, внутренний текст может сильно различаться. Я писал код, тестировал и отлаживался на MS Word 2010-м. Правда я не думаю это на что-то может повлиять, но все же решил вас предупредить.
3. Код методов
Почему-то весь текст не влазит, разделил на 3 части.
Источник
1С, Linux, Excel, Word, OpenXML, ADO, Net Core
С того времени я добавил использование расширений Linq.
В этой статье я коснусь практического использования моей компоненты. А именно кроссплатформенной работы с файлами Excel и Word c помощью OpenXML и NetStandart.
Собственно ради чего эта разработка и задумывалась.
Исходники были взяты отсюда github.com/ph1ll/Open-XML-SDK/tree/netstandard
К сожалению, без Nuget подключить библиотеку к проекту нельзя. Но через CoreClr его можно подключить.
Справочную информацию по работе с OpenXML можно посмотреть здесь
msdn.microsoft.com/ru-ru/library/office/gg278325.aspx
Итак, начнем с чтения страниц Excel. Задача — преобразовать данные в ТаблицуЗначений.
Рассмотрим более подробно методы для получения данных о ячейках таблицы
Теперь нам нужно преобразовать ТЗ с данными о ячейках в Таблицу Здначений аналогичной Странице Excel
Теперь перейдем к чтению данных файла Word.
Очень удобно использовать Productivity Tool», она умеет генерировать код Генерируем OfficeOpenXML-документы за 5 минут
Кроме того есть множество провайдеров к различным базам данных, как MS SQL так и другим, в том числе NoSQL
Приведу пример доступа к MS SQL
При этом можно сделать обертку DynamicObject над SqlDataReader и использовать так
В своих статьях я хочу донести прежде всего до 1С, что есть кроссплатформенная замена COM с помощью NetStadart.
Но, к моему большому сожалению, пока данный подход никого не интересует. Привлекает внимание только Руслиш.
Если у кого будут идеи, чем можно привлечь внимание к замене COM, пишите. Буду только рад.
Примеры и исходники — в приложенном файле.
Скачать файлы
Наименование | Файл | Версия | Размер |
---|---|---|---|