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

Запрос oData ( обновление, создание: POST запросы ) из c# (сторонней программы)

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

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

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

такая вот трагедия
   trdm
 
17 - 20.10.16 - 10:42
(16) Верно.
май крези смайл
выход использовать С++ с патерном интертрепатор. Можно работать на любом уровне абструкции.
   trdm
 
18 - 20.10.16 - 10:45
(15) Давно хотел спросить по синтаксису шарпа.
специфокаторы доступа привате/публик приколочены гвоздями к определениям мемберов и функций или можно определять зонально:
публик:
 бла-бла-переменная;
бла-бла-переменная2;
..
бла-бла-переменнаяN;
   Serginio1
 
19 - 20.10.16 - 10:49
(18) Нет так в C++.
В шарпе можно объявить в любом месте. По умолчанию если не указан (public и прочее), то считается private
   Serginio1
 
20 - 20.10.16 - 10:50
(17) Уже реализовано, через .Net
   trdm
 
21 - 20.10.16 - 10:56
(20) этих реализаций - просто море. дотнет в этом случае не уникален.
   trdm
 
22 - 20.10.16 - 10:57
(19) и нет разницы между класами и структурами? В с++ в структурах помнится публик по укричанию, а в классах - привате.
   Serginio1
 
23 - 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/
   trdm
 
24 - 20.10.16 - 11:37
Что именно надо показать? Какую технологию?
   Serginio1
 
25 - 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
   trdm
 
26 - 20.10.16 - 12:03
(25) pyQt к примеру.
По его подобию можно подключить к 1С библиотеку Qt с её функционалом. Просто в здравом уме это никто не будет делать, т.к. получится большой оверхед по памяти.
   trdm
 
27 - 20.10.16 - 12:07
+(26) в здравом уме конечно при необходимости пишется отдельная библиотека с определенным функционалом, а не тянутся все либы в отведенную процессу память.
   Serginio1
 
28 - 20.10.16 - 12:11
(26)  Во во в здравом уме пишутся отдельные ВК на каждый случай итд. Ты то говорил про
>> выход использовать С++ с патерном интертрепатор. Можно работать на любом уровне абструкции.

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

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

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

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

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

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


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