Вход | Регистрация


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 человек.
Рекламное место пустует