|
1С,Linux,Excel,Word,OpenXML,Net Core | ☑ | ||
---|---|---|---|---|
0
Serginio1
22.08.16
✎
14:09
|
Это продолжение статей
Кроссплатформенное использование классов .Net в 1С через Native ВК. Кроссплатформенное использование классов .Net в 1С через Native ВК II С того времени я добавил использование расширений Linq. В этой статье я коснусь практического использования моей компоненты. А именно кроссплатформенной работой с файлами Excel и Word c помощью OpenXML и NetStandart. Собственно ради чего эта разработка и задумывалась. В своих статьях я хочу донести прежде всего до 1С, что есть кроссплатформенная замена COM с помощью NetStadart. Но к моему большому сожалению пока данный подход никого не интересует. Привлекает внимание только Руслиш. Если у кого будут идеи чем можно привлечь внимание к замене COM пишите. Буду только рад. Статьи можно посмотеть здесь https://habrahabr.ru/post/308216/ http://catalog.mista.ru/public/544232/ Исходники здесь https://yadi.sk/d/jRSHEA19svgrn |
|||
1
Garykom
гуру
22.08.16
✎
14:20
|
Засунь свои изделия в nuget (или еще какой аналог пакетной системы) или хотя бы в https://chocolatey.org/packages
|
|||
2
trdm
22.08.16
✎
14:23
|
Песец.
Отстрелить пальцы только за неумное чередование кирилицы и латиницы. // Строки хранятся отдельно // В ячейках хранится индекс pt=ъ(ъ(workbookPart.in(SharedStringTablePart.ПолучитьСсылку())).GetPartsOfType()); sstpart = ъ(pt.First()); sst = ъ(sstpart.SharedStringTable); ОбщиеСтроки=ъ(sst.ChildElements); workbook = ъ(workbookPart.Workbook); // Получим список страниц sheets = ъ(ъ(workbook.in(Sheet.ПолучитьСсылку())).Descendants()); sheets=ъ(Врап.ПолучитьЭнумератор(sheets.ПолучитьСсылку())); ................. нафейхоа так делать? Я и в прямых запросах забадываюсь прыгать с кирилицы на латиницу и писать "SELECT спр.ТипТовара as ТипТовара FROM $Справочник.Номенклатура as спр(NOLOCK)". |
|||
3
Serginio1
22.08.16
✎
14:25
|
Засуну. Пока времени нет. У меня дел по горло.
А Nuget то зачем? Он в 1С то не применяется Вот на github имеет смысл (2) Еще раз там есть возможность использования синонимов. Никто тебе не запрещает их использовать. Мне же лениво писать синонимы |
|||
4
Gary417
22.08.16
✎
14:26
|
А слово "Энумератор" это кто так переводил интересно?
|
|||
5
Gary417
22.08.16
✎
14:27
|
прям всплывает в голове "Иф а=1 тзен б=2 эндиф"
|
|||
6
Serginio1
22.08.16
✎
14:27
|
(2)
Ну, а кроме Русслиша, неинтересно? 1. Использование классов .Net в нативе 2. Кроссплатформенность как замена COM 3. Использование сахара как методы расширения, вывод типа в дженерик методах, асинхронное программирование? (4) Я! |
|||
7
Gary417
22.08.16
✎
14:30
|
(6) кошмар какойто, если уж писать по русски то надо писать по русски, всмысле по одинесному. а не делать транслит ради русских букв
|
|||
8
Garykom
гуру
22.08.16
✎
14:31
|
(3) Пофиг что но чтобы установка всего поделия для работы и запуска примеров из коробки была как: "apt-get install NetObjectToIDispatch45"
|
|||
9
trdm
22.08.16
✎
14:31
|
(6) просто нет необходимости. Я как-то Qt обхожусь. Из него ком-объект сделать - как 2 пальца обоссать.
Я им МС-офисные документы читаю/пишу. |
|||
10
Serginio1
22.08.16
✎
14:33
|
(7) На вас не угодишь. Enumerator перечислитель. Народу это не понравилось.
А кроме руслиша что понравилось, что нет? (9) На Линукс? |
|||
11
Gary417
22.08.16
✎
14:42
|
(10) идея хорошая, но я даже не думаю гдето реализовывать т.к. когда уйду в другой отдел мой преемник очумеет это поддерживать
|
|||
12
Gary417
22.08.16
✎
14:43
|
(11) *реализовывать - в смысле использовать
|
|||
13
Serginio1
22.08.16
✎
14:48
|
(11) Если 1С встроет поддержку как COM думаю не очумеет.
Суть то та же. Как b при работе с Вэб сервисамию Есть пространство имен, есть типы, объекты. Тот же Руслиш. В чем сложность? |
|||
14
Gary417
22.08.16
✎
14:49
|
(13) сложность что не все C# знают
|
|||
15
Gary417
22.08.16
✎
14:49
|
и вообще знание .Net не подразумевается на вакансиях 1С
|
|||
16
Serginio1
22.08.16
✎
14:53
|
(15) А многие знают COM или Вэб сервисы?
Нужно знать методы классов. А они, что в COM, что в вэб сервисах или .Net классов одинаковы. Есть описание методов. Кроме того есть великий и могучий Copy-Paste Единственоо в .Net классах есть дженерики. |
|||
17
Gary417
22.08.16
✎
14:59
|
(16) <Кроме того есть великий и могучий Copy-Paste>
За который отрывать надо руки мне очень нравится древний пример из книг по программированию сети где написано чёто типа while (!connection.establish) { wait(0); } ==== и пипец, запускаешь какуюнить программу где интернета нет, и всё, вся система в ступоре....потомучто ктото скопипастил пример из книжки |
|||
18
Garykom
гуру
22.08.16
✎
15:00
|
(17) Некоторые вирусы по этому примеру написаны...
|
|||
19
trdm
22.08.16
✎
15:01
|
(14) > сложность что не все C# знают
+100 Да и не все его любят. Специфическое поделие. |
|||
20
Gary417
22.08.16
✎
15:02
|
(18) да почти весь софт так написан, такая хренота даже в браузерах встречается, когда отмену загрузки страницы нажать нельзя пока таймаут по подключению не пройдёт
|
|||
21
Serginio1
22.08.16
✎
15:03
|
(17) Copy-Paste и бездумный Copy-Paste это разные вещи.
Бездумно можно написать, что угодно. Просто писать тонны кода, вместо того, что бы подправить в нескольких местах проще. (19) Здесь не надо знать C#, нужно знать классы и их методы. Как в COM и вэб сервисах. И не имеет смысла на чем они написаны |
|||
22
Serginio1
22.08.16
✎
15:04
|
(17) Кстати код то небось скопировал?
|
|||
23
Gary417
22.08.16
✎
15:04
|
(22) этот код я сам написал только что. потому что оригинал помню ещё на VB6, и примерно воспроизвёл какбы он выглядел на какойнить яве/c#
|
|||
24
Gary417
22.08.16
✎
15:05
|
потому что искать книжку откуда копировать дольше чем написать
|
|||
25
Serginio1
22.08.16
✎
16:44
|
Подыму. Может кому и интересно.
|
|||
26
Serginio1
23.08.16
✎
17:58
|
Сейчас поставил punto switcher набрал твой текст. Только
справочник.Номенклатура пришлось исправить через Shift + Break Select спр.типтовара as ТипТовара From $справочник.Номенклатура as спр А ты конструктором запросов не пользуешься. Очень удобно |
|||
27
_stay true_
25.08.16
✎
09:22
|
Разработка очень интересная. Только из-за того, что обмен со СБИСом и Аксаптой(от которой отказываемся) писался на СОМ-ке, приходится для этого держать отдельный сервак на винде, вся остальная часть давно уже линуховая: и рабочие компы, и сервера. Будем пробовать переписать обмен с использованием этой технологии)))
|
|||
28
_stay true_
25.08.16
✎
10:32
|
А можно как-то с помощью Вашей компоненты подклбючиться к другой базе 1С(как по COM) и выполнить прямой запрос? Ответ желательно в стиле "для блондинок"
|
|||
29
Garykom
гуру
25.08.16
✎
10:40
|
(28) Можно, но не нужно, потому что изврат.
|
|||
30
_stay true_
25.08.16
✎
10:56
|
(29) Соглсен. Но новый начальник линухизирован до нельзя, хочет от винды вообще отказаться. А весь обмен с внешними системами написан с использованием СОМ. Нашёл статью, увидел заветную фразу "Замена СОМ на Linux" и разбирайтесь, пацаны. Так что очень надо)))
|
|||
31
Serginio1
26.08.16
✎
23:15
|
(28) Вот так
СборкаSqlClient=ъ(Врап.Сборка("System.Data.SqlClient.dll")); SqlConnection=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlConnection")); SqlCommand=ъ(СборкаSqlClient.GetType("System.Data.SqlClient.SqlCommand")); connection =ъ(Врап.Новый(SqlConnection.ПолучитьСсылку(),ConnectionString)); connection.Open(); ТекстЗапроса = "Select Номенклатура.DESCR Наименование From sc84 Номенклатура where DESCR Like '%'+@Строка+'%' |order by Номенклатура.DESCR"; command = ъ(Врап.Новый(SqlCommand.ПолучитьСсылку(),ТекстЗапроса,connection.ПолучитьСсылку())); Parameters=ъ(command.Parameters); Parameters.AddWithValue("@Строка", "ДСП"); dr = ъ(command.ExecuteReader()); Пока dr.Read() Цикл Сообщить(dr.get_Item("Наименование")); КонецЦикла; При этом можно сделать обертку DynamicObject над SqlDataReader и использовать так Пока dr.Read() Цикл Сообщить(dr.Наименование); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |