Имя: Пароль:
1C
1С v8
Запрос oData ( обновление, создание: POST запросы ) из c# (сторонней программы)
0 lvi15
 
19.10.16
11:31
Добрый день! Стал искать примеры oData (REST) из c# (сторонных приложений), но "с ходу" ничего нет.

Нашел что-то типа:
    private const string URL = "http://localhost/Demo/odata/standard.odata/Catalog_Организации";;
        private const string DATA = @"{""object"":{""Description"":""Name""}}";


        static void Main(string[] args)
        {

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

            request.Credentials = CredentialCache.DefaultCredentials;

            request.Method = "POST";                
            request.ContentType = "application/json";
            request.ContentLength = DATA.Length;
            StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
            requestWriter.Write(DATA);
            requestWriter.Close();

            try
            {
                WebResponse webResponse = request.GetResponse();
                Stream webStream = webResponse.GetResponseStream();
                StreamReader responseReader = new StreamReader(webStream);
                string response = responseReader.ReadToEnd();
                Console.Out.WriteLine(response);
                responseReader.Close();
            }
            catch (Exception e)
            {
                Console.Out.WriteLine("-----------------");
                Console.Out.WriteLine(e.Message);
            }

Но как его прикрутить к 1с - ??? Есть ли у кого точные ссылкы
1 Господин ПЖ
 
19.10.16
11:33
а зачем к 1с прикручивать код c#
2 lvi15
 
19.10.16
11:48
Прикрутить код c# для взаимодействия с 1с (в рамках решения более общей задачи интеграции систем). Через com- коннектор примеры есть (когда приложение получает "свой" экземпляр-интерфейс 1с), а чере oData не нашел, хотя решение должно быть ("простым и изящным")...???
3 Господин ПЖ
 
19.10.16
11:52
куда еще изящнее то?

спросил сервис, получил ответ, прочитал
4 lvi15
 
19.10.16
11:56
Про "прочитал" я и не спрашиваю - вроде как читает. Это обычный GET - запрос. А обновления-создание - это POST запросы. И здесь крайне желателен пример (как оформить "заголовок", как "тело" и пр.). Об этом и речь...
5 Serginio1
 
19.10.16
12:36
6 Serginio1
 
19.10.16
12:38
5+ Все значительно проще используя Linq
7 Serginio1
 
19.10.16
12:53
8 lvi15
 
20.10.16
10:03
А можно уточнить, LINQ - это прямой доступ к БД 1с?
Если так, то это "как-то подозрительно". Мне кажется, что надо использовать стандартные "интерфейсы" от разработчиков (тот же oData, com - но это уже вчеращний день, web-service - но там вроде как надо "цеплять" замки конфигурации..)
9 Serginio1
 
20.10.16
10:18
(8) Нет это стандартный доступ для ODATA. Ты хоть статью то почитал?
Дальше берешь в руки фиддлер и смотришь HTTP запросы.

Если используешь .Net Core то там немного другой подход
https://habrahabr.ru/post/310152/

Кроме того в новыйх версиях 1С обещают использование Expand

Code First и Linq to EF на примере 1С версии 8.3


Да есть возможность в ODATA сразу подгружать нужные свойства
var result = (from Тестовый in context.Catalog_Тестовый.Expand("РеквизитСправочник")
                          where Тестовый.Ref_Key == new Guid("aada18ad-5308-11e5-8e05-c86000c70663")
                          select Тестовый).SingleOrDefault();


Но пока в 1С Параметр $expand не поддерживается"
10 Serginio1
 
20.10.16
10:19
В конце статьи полезные ссылки

Полезные ссылки для запросов ODATA

https://msdn.microsoft.com/ru-ru/library/vstudio/dd673933(v=vs.100).aspx


Обновление, добавление и удаление записей

https://msdn.microsoft.com/ru-ru/library/vstudio/dd756361(v=vs.100).aspx
11 trdm
 
20.10.16
10:19
(8) > А можно уточнить, LINQ - это прямой доступ к БД 1с?

Зачем на .опу приключений искать?
Тебе общаться с 1С надо или обрабатывать данные в БД?
12 Serginio1
 
20.10.16
10:21
(11) Еще один. Linq to ODATA это как раз обртка на HTTP запросами. Ты хоть статью почитай.
13 trdm
 
20.10.16
10:21
ИМХО шарп сильно избыточен для разработки БД.
Что-бы его использовать в такой разработке нужны ОЧЕНЬ ВЕСКИЕ ДОВОДЫ. Проще на 1С накатать.
14 trdm
 
20.10.16
10:22
(12) Да мне больше делать нечего..
15 Serginio1
 
20.10.16
10:26
Вот статья про интеграцию с 1С https://habrahabr.ru/company/1c/blog/308420/

В 8.3.9 есть Expand

(13) Угу. На Шарпе намного удобнее работать с БД чем даже из 1С
Code First и Linq to EF на примере 1С версии 7.7
Code First и Linq to EF на примере 1С версии 8.3

Но это уже другая песня, когда нужна скорость и удобство  например из Asp.Net

(14) Главное ветку поднять.
16 Господин ПЖ
 
20.10.16
10:33
>ИМХО шарп сильно избыточен для разработки БД.

шарп - избыточен

1с - недостаточен за пределами справочник-документ-проводка

такая вот трагедия
17 trdm
 
20.10.16
10:42
(16) Верно.
май крези смайл
выход использовать С++ с патерном интертрепатор. Можно работать на любом уровне абструкции.
18 trdm
 
20.10.16
10:45
(15) Давно хотел спросить по синтаксису шарпа.
специфокаторы доступа привате/публик приколочены гвоздями к определениям мемберов и функций или можно определять зонально:
публик:
бла-бла-переменная;
бла-бла-переменная2;
..
бла-бла-переменнаяN;
19 Serginio1
 
20.10.16
10:49
(18) Нет так в C++.
В шарпе можно объявить в любом месте. По умолчанию если не указан (public и прочее), то считается private
20 Serginio1
 
20.10.16
10:50
(17) Уже реализовано, через .Net
21 trdm
 
20.10.16
10:56
(20) этих реализаций - просто море. дотнет в этом случае не уникален.
22 trdm
 
20.10.16
10:57
(19) и нет разницы между класами и структурами? В с++ в структурах помнится публик по укричанию, а в классах - привате.
23 Serginio1
 
20.10.16
11:15
(21) Покажи аналог v8: v8: Использование сборок .NET в 1С 7.x и 8.x на C++

Есть кстати на питоне. http://catalog.mista.ru/public/186206/

(22) Все одинаково для классов и структур.
На самом деле на С++ то нет большой разницы между классами и структурами
Кстати в C# тоже хотят дать возможность создавать классы на стеке
http://xoofx.com/blog/2015/10/08/stackalloc-for-class-with-roslyn-and-coreclr/
24 trdm
 
20.10.16
11:37
Что именно надо показать? Какую технологию?
25 Serginio1
 
20.10.16
11:58
Я же написал. Аналог
Использование сборок .NET в 1С 7.x b 8.x. http://catalog.mista.ru/public/238584/

Любые классы из 1С через COM, Так как в Native API не поддерживается возврат и передача объектов в параметрах.

1С,Linux,Excel,Word,OpenXML,Net Core
26 trdm
 
20.10.16
12:03
(25) pyQt к примеру.
По его подобию можно подключить к 1С библиотеку Qt с её функционалом. Просто в здравом уме это никто не будет делать, т.к. получится большой оверхед по памяти.
27 trdm
 
20.10.16
12:07
+(26) в здравом уме конечно при необходимости пишется отдельная библиотека с определенным функционалом, а не тянутся все либы в отведенную процессу память.
28 Serginio1
 
20.10.16
12:11
(26)  Во во в здравом уме пишутся отдельные ВК на каждый случай итд. Ты то говорил про
>> выход использовать С++ с патерном интертрепатор. Можно работать на любом уровне абструкции.

У меня через COM и кроссплатформенный .Net Core через Native API это реализовано, в отличие от.
При этом я могу использовать и динамическую компиляцию
http://catalog.mista.ru/public/466196/
http://catalog.mista.ru/public/547389/
29 Serginio1
 
20.10.16
12:12
(26) Можно и на Java. Только никто не делает.
30 trdm
 
20.10.16
12:16
(28) Да флаг тебе в руки. Когда проснешся и обнаружишь, что закон Мура не работает, может чего дойдет.
На белазе за семками гонять - это надо быть альтернативным до ужаса.
31 Serginio1
 
20.10.16
12:29
(30) А где ты белаз то увидел, В отличие от С++, в .Net Джитится только необходимое.
А вот твои библиотеки как раз будут тянуть и не нужные классы и код к ним.
А вот использовать .Net можно те только для Sleep.
Сначала используешь одно, затем другое и в итоге задействуешь кучу классов и сборок
32 trdm
 
20.10.16
12:34
да, с тобой ясно. Только одно непонятно, нафига тебе 1С?
Этот овнонет регистрируется в реестре и при каждом пуке перечитываются мегабайты.
Спасибо, проходили эту тормозуху.
Впрочем для садомазо - самое то что надо.
Оверхедный синтаксис, оверхедные объемы в процессе, оверхед по созданию классов, оверхед по привязке к производителю.
Накуй надо.
33 Serginio1
 
20.10.16
12:44
(32) А можно поподробне про
>> регистрируется в реестре и при каждом пуке перечитываются мегабайты

Особенно для .Net Core.

Меня поражает твое отношение к оверхеду, при том, что код вызывается из интерпритатора 1С.

А ты работаешь на Линукс?
.Net Core тебе в руки
34 Serginio1
 
20.10.16
12:46
32 Я же забыл ты ненавистник MS но обожатель QT.
Заметь, что я против QT, Java и прочего ничего не имею. А вот откуда у тебя такая ненависть.
35 trdm
 
20.10.16
13:00
(33) > А можно поподробне про
При одной из инсталляций видел что оно пишет в реестр. Регспаем пользовался.
Что такое реестр объяснять не надо надеюсь.  Многомегабайтная спец БДшка.
После этого шустрота компа пропала.
Пока это овно не вычистил комп работал с неторопливостью  катка асфальтоукладчика.

Есть вариант, что эту тормозуху починили, наверняка даже. Но впечатление осталось.
36 trdm
 
20.10.16
13:06
(34) Позицию я свою озвучивал.
37 trdm
 
20.10.16
13:09
+(36) майкрософт - один из участников экономической атаки на Россию.
Я подлянок не прощаю. И отношусь с презрением к тем, кто служит подобным уродам.
38 Serginio1
 
20.10.16
13:53
(37) Ну, дык ты работаешь на Windows и себя презираешь?
Сочувствую.
(35) Ну в коде не только из .Net можно писать или читать из реестра. Наверное это было очень давно.

А вот .Net Core этого не делает однозначно, хотя конечно можно через интероп, но это не кроссплатформенно.
39 trdm
 
20.10.16
14:01
(38) Я форточки не распространяю и не рекламирую. Данность есть данность.
А вот ты прививаешь эту заразу.
40 Serginio1
 
20.10.16
14:07
(39) Так, а кто тебе мешает приводить свои реализации на QT.
Я делюсь своим опытом. Кто то использует, большинство нет.
Сделай так, что бы все на Линукс перешли. Я например рекламирую .Net Core и показываю примеры его использования.
Чем больше выбор тем лучше. Или ты за безальтернативность?