Linq to ODATA

0. Сергей Смирнов (Serginio) 603 29.09.15 16:42 Сейчас в теме
1С сейчас совершенствует REST интерфейс приложения, автоматически генерируемый платформой, и протокол обмена ODATA версии 3.
С недавнего времени появилась возможность обмениваться, используя JSON. На просторах интернета мало информации по использованию Linq для ODATA для 1С.
Поэтому решил поделиться опытом. Это продолжение статей https://infostart.ru/public/402433/

Перейти к публикации

Комментарии
1. Олег Дмитров (baracuda) 3 06.10.15 14:32 Сейчас в теме
Глоток свежего воздуха при изучении C# Odata.
adhocprog; +1 Ответить
2. Сергей Смирнов (Serginio) 603 06.10.15 16:53 Сейчас в теме
3. Игорь Богданов (avz_1C) 10 29.02.16 14:18 Сейчас в теме
Коллега, Вы продолжаете удивлять.
Спасибо.
Сегодня, как раз, возникла потребность разбирать метаданные нескольких
конфигураций, взаимодействием которых управляет модуль, созданный на C#.
Не успел подумать о Linq, как Вы подтвердили, своей публикацией, мои догадки.
4. Сергей Смирнов (Serginio) 603 29.02.16 17:41 Сейчас в теме
Спасибо. Рад, что мои труды не пропадают зря
5. Артём Артёмов (TeMochkiN) 20.09.16 10:58 Сейчас в теме
Здравствуйте!
Помогите, пожалуйста, пытаюсь добавить ссылку на службу в VS, а она постоянно запрашивает учетные данные и не дает её добавить:

Я ввожу имя пользователя, жму ОК, и снова появляется это же окно ввода имени пользователя и пароля.

После нескольких попыток, жму отмена и пишет следующее:



Я пробовал открыть данную ссылку в хроме он тоже запрашивает имя пользователя и пароль, я ввожу имя пользователя и всё загружается:


А вот Internet Explorer тоже не дает открыть эту ссылку. В чем может быть дело? IIS неправильно настроен?
6. Сергей Смирнов (Serginio) 603 20.09.16 11:10 Сейчас в теме
Логин и пароль должны быть на латинице
7. Сергей Смирнов (Serginio) 603 25.10.16 14:21 Сейчас в теме
Добавлю, что для Регистров бухгалтерии можно использовать функции для виртуальных таблиц.
<EntityContainer Name="EnterpriseV8" m:IsDefaultEntityContainer="true">
<EntitySet Name="AccountingRegister_Хозрасчетный" EntityType="StandardODATA.AccountingRegister_Хозрасчетный" />
<EntitySet Name="AccountingRegister_Хозрасчетный_RecordType" EntityType="StandardODATA.AccountingRegister_Хозрасчетный_RecordType" />
<FunctionImport Name="Balance" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_Balance)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
<Parameter Name="AccountCondition" Type="Edm.String" />
<Parameter Name="Condition" Type="Edm.String" />
<Parameter Name="Dimensions" Type="Edm.String" />
<Parameter Name="ExtraDimensions" Type="Edm.String" />
<Parameter Name="Period" Type="Edm.DateTime" />
</FunctionImport>
<FunctionImport Name="Turnovers" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_Turnover)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
<Parameter Name="AccountCondition" Type="Edm.String" />
<Parameter Name="BalancedAccountCondition" Type="Edm.String" />
<Parameter Name="BalancedExtraDimensions" Type="Edm.String" />
<Parameter Name="Condition" Type="Edm.String" />
<Parameter Name="Dimensions" Type="Edm.String" />
<Parameter Name="EndPeriod" Type="Edm.DateTime" />
<Parameter Name="ExtraDimensions" Type="Edm.String" />
<Parameter Name="StartPeriod" Type="Edm.DateTime" />
</FunctionImport>
<FunctionImport Name="BalanceAndTurnovers" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_BalanceAndTurnover)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
<Parameter Name="Condition" Type="Edm.String" />
<Parameter Name="Dimensions" Type="Edm.String" />
<Parameter Name="EndPeriod" Type="Edm.DateTime" />
<Parameter Name="StartPeriod" Type="Edm.DateTime" />
</FunctionImport>
<FunctionImport Name="ExtDimensions" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_ExtDimensions)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
</FunctionImport>
<FunctionImport Name="RecordsWithExtDimensions" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_RecordsWithExtDimensions)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
<Parameter Name="Condition" Type="Edm.String" />
<Parameter Name="EndPeriod" Type="Edm.DateTime" />
<Parameter Name="Order" Type="Edm.String" />
<Parameter Name="StartPeriod" Type="Edm.DateTime" />
<Parameter Name="Top" Type="Edm.Int64" />
</FunctionImport>
<FunctionImport Name="DrCrTurnovers" IsBindable="true" IsSideEffecting="false" ReturnType="Collection(StandardODATA.AccountingRegister_Хозрасчетный_DrCrTurnover)">
<Parameter Name="bindingParameter" Type="StandardODATA.AccountingRegister_Хозрасчетный" />
<Parameter Name="AccountCondition" Type="Edm.String" />
<Parameter Name="BalancedAccountCondition" Type="Edm.String" />
<Parameter Name="BalancedExtraDimensions" Type="Edm.String" />
<Parameter Name="Condition" Type="Edm.String" />
<Parameter Name="Dimensions" Type="Edm.String" />
<Parameter Name="EndPeriod" Type="Edm.DateTime" />
<Parameter Name="ExtraDimensions" Type="Edm.String" />
<Parameter Name="StartPeriod" Type="Edm.DateTime" />
</FunctionImport>
</EntityContainer>
</Schema>
8. Сергей Смирнов (Serginio) 603 25.10.16 14:27 Сейчас в теме
К сожалению VS их не подгружает. Но можно использовать CreateQuery. Но есть нюансы. Если сделать такой запрос

var query3 = context.CreateQuery<StandardODATA.AccountingRegister_Хозрасчетный_Turnover>(@"AccountingRegister_Хозрасчетный/Turnovers").ToList();


То 1С вернет такй тип

{

"odata.metadata": "http://localhost/DemoAccounting/odata/standard.odata/$metadata#Collection(StandardODATA.AccountingRegister_Хозрасчетный_Turnover)";,

"value": [


Для того, что бы программа поняла ответ нужно сделать такой запрос и программа не может привести Collection(StandardODATA.AccountingRegister_Хозрасчетный_Turnover)" к AccountingRegister_Хозрасчетный_Turnover

Поэтому создадим такой запрос

var query3 = context.CreateQuery<List<StandardODATA.AccountingRegister_Хозрасчетный_Turnover>>(@"AccountingRegister_Хозрасчетный/Turnovers").ToList();


То возвращается тип

query3 Count = 1 System.Collections.Generic.List<System.Collections.Generic.List<StandardODATA.AccountingRegister_Хозрасчетный_Turnover>>

Где вся коллекция лежит в первом элементе query3.Items[0]
9. Сергей Смирнов (Serginio) 603 16.12.16 12:41 Сейчас в теме
Оставьте свое сообщение