Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С,Linux,Excel,Word,OpenXML,Net Core

1С,Linux,Excel,Word,OpenXML,Net Core
Я
   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
 
 
   Garykom
 
1 - 22.08.16 - 14:20
Засунь свои изделия в nuget (или еще какой аналог пакетной системы) или хотя бы в https://chocolatey.org/packages
   trdm
 
2 - 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)".
   Serginio1
 
3 - 22.08.16 - 14:25
Засуну. Пока времени нет. У меня дел по горло.

А Nuget то зачем? Он в 1С то не применяется
Вот на  github имеет смысл
(2) Еще раз там есть возможность использования синонимов. Никто тебе не запрещает их использовать.

Мне же лениво писать синонимы
   Gary417
 
4 - 22.08.16 - 14:26
А слово "Энумератор" это кто так переводил интересно?
   Gary417
 
5 - 22.08.16 - 14:27
прям всплывает в голове "Иф а=1 тзен б=2 эндиф"
   Serginio1
 
6 - 22.08.16 - 14:27
(2)

Ну, а кроме Русслиша, неинтересно?
 1. Использование классов .Net в нативе
 2. Кроссплатформенность как замена COM
3. Использование сахара как методы расширения, вывод типа в дженерик методах, асинхронное программирование?

(4) Я!
   Gary417
 
7 - 22.08.16 - 14:30
(6) кошмар какойто, если уж писать по русски то надо писать по русски, всмысле по одинесному. а не делать транслит ради русских букв
   Garykom
 
8 - 22.08.16 - 14:31
(3) Пофиг что но чтобы установка всего поделия для работы и запуска примеров из коробки была как: "apt-get install NetObjectToIDispatch45"
   trdm
 
9 - 22.08.16 - 14:31
(6) просто нет необходимости. Я как-то Qt обхожусь. Из него ком-объект сделать - как 2 пальца обоссать.
Я им МС-офисные документы читаю/пишу.
   Serginio1
 
10 - 22.08.16 - 14:33
(7) На вас не угодишь. Enumerator перечислитель. Народу это не понравилось.
А кроме руслиша что понравилось, что нет?
(9) На Линукс?
   Gary417
 
11 - 22.08.16 - 14:42
(10) идея хорошая, но я даже не думаю гдето реализовывать т.к. когда уйду в другой отдел мой преемник очумеет это поддерживать
   Gary417
 
12 - 22.08.16 - 14:43
(11) *реализовывать - в смысле использовать
   Serginio1
 
13 - 22.08.16 - 14:48
(11) Если 1С встроет поддержку как COM думаю не очумеет.
Суть то та же. Как b при работе с Вэб сервисамию
Есть пространство имен, есть типы, объекты. Тот же Руслиш.
В чем сложность?
   Gary417
 
14 - 22.08.16 - 14:49
(13) сложность что не все C# знают
   Gary417
 
15 - 22.08.16 - 14:49
и вообще знание .Net не подразумевается на вакансиях 1С
   Serginio1
 
16 - 22.08.16 - 14:53
(15) А многие знают COM или Вэб сервисы?
Нужно знать методы классов.
А они, что в COM, что в вэб сервисах или .Net классов одинаковы.
 Есть описание методов. Кроме того есть великий и могучий Copy-Paste
Единственоо в .Net классах есть дженерики.
   Gary417
 
17 - 22.08.16 - 14:59
(16) <Кроме того есть великий и могучий Copy-Paste>

За который отрывать надо руки

мне очень нравится древний пример из книг по программированию сети где написано чёто типа

while (!connection.establish)
{
 wait(0);
}

====

и пипец, запускаешь какуюнить программу где интернета нет, и всё, вся система в ступоре....потомучто ктото скопипастил пример из книжки
   Garykom
 
18 - 22.08.16 - 15:00
(17) Некоторые вирусы по этому примеру написаны...
   trdm
 
19 - 22.08.16 - 15:01
(14) > сложность что не все C# знают


+100
Да и не все его любят. Специфическое поделие.
   Gary417
 
20 - 22.08.16 - 15:02
(18) да почти весь софт так написан, такая хренота даже в браузерах встречается, когда отмену загрузки страницы нажать нельзя пока таймаут по подключению не пройдёт
   Serginio1
 
21 - 22.08.16 - 15:03
(17) Copy-Paste и бездумный Copy-Paste это разные вещи.
Бездумно можно написать, что угодно.
Просто писать тонны кода, вместо того, что бы подправить в нескольких местах проще.

(19) Здесь не надо знать C#, нужно знать классы и их методы.
Как в COM и вэб сервисах. И не имеет смысла на чем они написаны
   Serginio1
 
22 - 22.08.16 - 15:04
(17) Кстати код то небось скопировал?
   Gary417
 
23 - 22.08.16 - 15:04
(22) этот код я сам написал только что. потому что оригинал помню ещё на VB6, и примерно воспроизвёл какбы он выглядел на какойнить яве/c#
   Gary417
 
24 - 22.08.16 - 15:05
потому что искать книжку откуда копировать дольше чем написать
   Serginio1
 
25 - 22.08.16 - 16:44
Подыму. Может кому и интересно.
   Serginio1
 
26 - 23.08.16 - 17:58
Сейчас поставил punto switcher набрал твой текст. Только 
справочник.Номенклатура  пришлось исправить через Shift + Break

Select спр.типтовара as ТипТовара From $справочник.Номенклатура as спр 

 А ты конструктором запросов не пользуешься. Очень удобно
   _stay true_
 
27 - 25.08.16 - 09:22
Разработка очень интересная. Только из-за того, что обмен со СБИСом и Аксаптой(от которой отказываемся) писался на СОМ-ке, приходится для этого держать отдельный сервак на винде, вся остальная часть давно уже линуховая: и рабочие компы, и сервера. Будем пробовать переписать обмен с использованием этой технологии)))
   _stay true_
 
28 - 25.08.16 - 10:32
А можно как-то с помощью Вашей компоненты подклбючиться к другой базе 1С(как по COM) и выполнить прямой запрос? Ответ желательно в стиле "для блондинок"
   Garykom
 
29 - 25.08.16 - 10:40
(28) Можно, но не нужно, потому что изврат.
   _stay true_
 
30 - 25.08.16 - 10:56
(29) Соглсен. Но новый начальник линухизирован до нельзя, хочет от винды вообще отказаться. А весь обмен с внешними системами написан с использованием СОМ. Нашёл статью, увидел заветную фразу "Замена СОМ на Linux" и разбирайтесь, пацаны. Так что очень надо)))
 
 
   Serginio1
 
31 - 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.Наименование);
    КонецЦикла;


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.