|
Code First и Linq to EF на примере 1С версии 8.3 | ☑ | ||
---|---|---|---|---|
0
Serginio1
17.09.15
✎
12:35
|
Это продолжение Code First и Linq to EF на примере 1С версии 7.7
Выложил тестовую конфигурации с обработкой http://files.rsdn.ru/19608/CodeFirstTo83.zip Большая просьба выложить или отослать архив SQL так как у меня только файловые. Поэтому сделал вслепую. Буду рад если кто протестирует. |
|||
1
Serginio1
17.09.15
✎
14:03
|
В CodeFirst можно описать поля неопределенного типа
[ComplexType] public class РевизитВсеТипы:НеопределенныйТип,НеопределенныйТипБулево,НеопределенныйТипЧисло,НеопределенныйТипДата,НеопределенныйТипСтрока,НеопределенныйТипСсылочный { [Column(" _Fld37_TYPE")] [Required] [MaxLength(1)] override public byte[] Тип { get; set; } [Column("_Fld37")] [Required] [MaxLength(1)] public byte[] БулевоId { get; set; } [Column("_Fld37_N",TypeName = "numeric")] [Required] public decimal Число { get; set; } [Column("_Fld37")] [Required] public DateTime Дата { get; set; } [Column("_Fld37_S",TypeName = "nvarchar")] [Required] [StringLength(42)] public string Строка { get; set; } [Column("_Fld37_RTREF")] [Required] [MaxLength(4)] public byte[] НомерТаблицы { get; set; } [Column("_Fld37_RRREF")] [Required] [MaxLength(16)] public byte[] Ссылка { get; set; } [NotMapped] public bool Булево { get { return БулевоId.ВБулево(); } set { БулевоId = value.БулевоВМассив(); } } } и использовать public НеопределенныеТипы.РевизитВсеТипы РевизитВсеТипыId { get; set; } [NotMapped] public object РевизитВсеТипы { get{return КонстантыБД.ПолучитьЗначениеНеопределенногоТипа(РевизитВсеТипыId );} set{КонстантыБД.УстановитьЗначениеНеопределенногоТипа(value,РевизитВсеТипыId );} } |
|||
2
ДенисЧ
17.09.15
✎
14:03
|
шо, опять? (с)
|
|||
3
Serginio1
17.09.15
✎
14:14
|
(3) Нет это уже 8 ка. Будь добр вышли SQL резервную копию
|
|||
4
Принт
17.09.15
✎
14:16
|
Alchemy никому не надо?..
|
|||
5
ДенисЧ
17.09.15
✎
14:19
|
(3) А ключ от квартиры, где девки лежат, тебе не выслать?
Я тебе уже говорил, что тут это никому не интересно. Заведи себе блошек в свите^W в хабре и там пиши. Кому интересно, его уже читают. |
|||
6
Asmody
17.09.15
✎
14:24
|
(1) Есть один вопрос: нахрена?
|
|||
7
Serginio1
17.09.15
✎
14:31
|
(6) Для развития. Кстати .Net сейчас вполне кроссплатформен. Так что можешь использовать его и на линуксе и на IOS.
А потренироваться лучше на том, что тебе знакомо (5) Спасибо не надо. Я сейчас просто попросил сделать SQL резервную копию, что бы потренироваться. |
|||
8
ДенисЧ
17.09.15
✎
14:34
|
(7) Кого попросил?
|
|||
9
Serginio1
17.09.15
✎
14:35
|
(8) Всех в топике
Большая просьба выложить или отослать архив SQL так как у меня только файловые. Поэтому сделал вслепую. Буду рад если кто протестирует. |
|||
10
Принт
17.09.15
✎
14:38
|
(9) Может лучше вы к нам?
|
|||
11
ДенисЧ
17.09.15
✎
14:40
|
(9) 530ГБ. Высылать на почту?
|
|||
12
ДенисЧ
17.09.15
✎
14:40
|
(9) Неужели так впадлу выгрузить файловую и загрузить в сервер?
|
|||
13
Serginio1
17.09.15
✎
14:42
|
(11) Я выложил http://files.rsdn.ru/19608/CodeFirstTo83.zip там тестовая база с обработкой.
Она ооочень маленькая. Просто её развернуть на SQL и сделать резервную копию. |
|||
14
Serginio1
17.09.15
✎
14:43
|
(12) Нет у меня сервера приложений.
|
|||
15
ДенисЧ
17.09.15
✎
14:43
|
(14) А зачем тебе тогда резервная копия?
|
|||
16
Asmody
17.09.15
✎
14:43
|
(7) .NET, может быть, с натяжкой, и кроссплатформенный, MSSQL не кроссплатформенный.
Но даже не в этом дело. Даже если ты данные прочитаешь, что ты с ними делать будешь? |
|||
17
Serginio1
17.09.15
✎
14:44
|
(15) Так я её у себя разверну на SQL и протестирую.
|
|||
18
ДенисЧ
17.09.15
✎
14:45
|
(17) Для теста давно бы уже спер из интернета пропатченную...
|
|||
19
Serginio1
17.09.15
✎
14:46
|
(18) Подскажи.
(16) Entity Framework 7 вполне себе кросплатформен https://github.com/aspnet/EntityFramework/wiki/Roadmap |
|||
20
Serginio1
17.09.15
✎
14:48
|
||||
21
ДенисЧ
17.09.15
✎
14:49
|
(19) http://www.forum.mista.ru/rules.php , п.4
Кстати, там же и п. 5 |
|||
22
Принт
17.09.15
✎
14:49
|
А линуксовый дотнет к линуксовому 1С без проблем подключается? Я не в курсе.
|
|||
23
Serginio1
17.09.15
✎
14:53
|
(22) А какой SQL на линуксе Postgre?
http://www.codeproject.com/Articles/783552/Using-PostgreSQL-with-Entity-Framework-in-ASP-NET |
|||
24
Serginio1
17.09.15
✎
15:09
|
||||
25
Гёдза
17.09.15
✎
15:11
|
(1) Это что каждую таблицу так описывать?
|
|||
26
Serginio1
17.09.15
✎
15:14
|
(25) Там обработка все это делает.
|
|||
27
Serginio1
17.09.15
✎
15:49
|
Вместо апа
public static object ПолучитьЗначениеНеопределенногоСсылочного(НеопределенныйТип ВладелецId) { var НТС=ВладелецId as НеопределенныйТипСсылочный; Func<byte[], object> значение; if (ОбъектыПоТипу.TryGetValue(НТС.НомерТаблицы.byteArrayToInt(), out значение)) return значение(НТС.Ссылка); return null; } public static object ПолучитьЗначениеНеопределенногоТипа(НеопределенныйТип ВладелецId) { var тип = ВладелецId.Тип.ВБайт(); switch(тип) { case 1: return null; case 2: return (ВладелецId as НеопределенныйТипБулево).Булево; case 3: return (ВладелецId as НеопределенныйТипЧисло).Число; case 4: return (ВладелецId as НеопределенныйТипДата).Дата; case 5: return (ВладелецId as НеопределенныйТипСтрока).Строка; case 8: return ПолучитьЗначениеНеопределенногоСсылочного(ВладелецId); } return null; } |
|||
28
Oftan_Idy
17.09.15
✎
15:52
|
(0) А нахрена это?
|
|||
29
ДенисЧ
17.09.15
✎
15:53
|
(28) "Для развития"
Вот только нафига это _тут_ ? |
|||
30
Serginio1
17.09.15
✎
16:01
|
(29) Денис спасибо, что поддерживаешь ветку.
(28) Мне нужна резервная копия. А если знаешь .Net то можешь попрактиковаться в Linq to EF на знакомых данных. |
|||
31
Serginio1
17.09.15
✎
16:02
|
Ну и понять внутренне устройство БД 1С
|
|||
32
vhl
17.09.15
✎
16:12
|
(0) Ты можешь объяснить что это такое вообще и какую пользу можно извлечь при применении этой технологии?
|
|||
33
Serginio1
17.09.15
✎
16:21
|
(32) Это уже каждый решает для себя.
1. Ознакомление с технологиями Code First 2. Освоение Linq to EF на знакомых данных 3. После изучения первых двух пунктов можно использовать например 3.1 Для ускорения долгих отчетов используя скомпилированный код, кучу нетовских библиотек. 3.2 Для интеграции с системами написанными на .Net |
|||
34
vhl
17.09.15
✎
16:24
|
(33) Да блин, что такое Code First и Linq to EF - вот главный вопрос!
|
|||
35
Новиков
17.09.15
✎
16:26
|
(34) +1
|
|||
36
Serginio1
17.09.15
✎
16:27
|
||||
37
vhl
17.09.15
✎
16:29
|
(36) >Отличительной чертой Entity Framework является использование запросов LINQ для выборки данных из БД.
>Другим ключевым понятием является Entity Data Model. >Entity Data Model состоит из трех уровней: концептуального, уровень хранилища и уровень сопоставления (маппинга). Вот спасибо! Раньше было не понятно, а теперь понятно! |
|||
38
Serginio1
17.09.15
✎
16:33
|
(37) Пойдем для начала Linq to Object
http://habrahabr.ru/post/81592/ http://professorweb.ru/my/LINQ/base/level1/linq_index.php |
|||
39
Serginio1
17.09.15
✎
16:36
|
Вот здесь куча примеров https://code.msdn.microsoft.com/LINQ-Sample-Queries-13a42a54
|
|||
40
vhl
17.09.15
✎
16:37
|
Ты бы по человечески в 2х предложениях описал бы, а не ссылками кидался.
|
|||
41
Serginio1
17.09.15
✎
16:43
|
(40) Тяжело в двух предложениях. Статьи то как раз и написаны, что ввести.
Линк это работа с коллекциями по аналогии с SQL только там все типизированно при составлении запроса и получаешь так же типизированный результат. Так как используются ленивые вычисления, ты можешь склеивать запросы. В SQL приходится склеивать строки. При этом нет защиты от ошибов. В Linq уже на этапе программирования тебе покажут ошибки. С Linq намного удобнее работать чем с SQL. |
|||
42
vhl
17.09.15
✎
17:12
|
(41) Можешь привести итоговый пример работы? Пусть даже в теории. Как это будет выглядеть в конечном счете?
|
|||
43
Serginio1
17.09.15
✎
17:18
|
||||
44
Serginio1
17.09.15
✎
17:22
|
Олег огромнейшее спасибо!
|
|||
45
Serginio1
17.09.15
✎
18:04
|
Если у кого есть 2012 SQL просьба развернуть тестовую базу и выслать резервную копию
|
|||
46
Гёдза
17.09.15
✎
18:17
|
(45) почему сам не можешь то?
|
|||
47
Гёдза
17.09.15
✎
18:19
|
Попробуй на linq написать виртуальную таблицу остатков. Даже без оборотов хотябы
|
|||
48
Гёдза
17.09.15
✎
18:19
|
Или срез последних
|
|||
49
Serginio1
17.09.15
✎
18:37
|
(46) Нет у меня Сервера приложений. Но у меня есть резервная копия. Сейчас express новый разверну.
(48) Здесь уже показывал Code First и Linq to EF на примере 1С версии 7.7 (47) Да там без проблем написать. Два запроса объединение и группировка. Я уже показывал, что возможностей Linq даже больше чем в 1С языке запросов кроме пакетов и временных таблиц |
|||
50
Serginio1
18.09.15
✎
15:28
|
Обновил файлы. Наткнулся на забавную вещь.
В 1С Есть свойства неопределенного типа которое состоит из нескольких полей. В Code Firs есть атрибут ComplexType public partial class Тестовый : СправочникПредок { public partial class НеопределенныеТипы { [ComplexType] public class ЛюбаяСсылка_Fld19 : НеопределенныйТип, НеопределенныйТипСсылочный { [Column("_Fld19_TYPE")] [Required] [MaxLength(1)] override public byte[] Тип { get; set; } [Column("_Fld19_RTREF")] [Required] [MaxLength(4)] public byte[] НомерТаблицы { get; set; } [Column("_Fld19_RRREF")] [Required] [MaxLength(16)] public byte[] Ссылка { get; set; } } } } public partial class Тестовый : СправочникПредок { public partial class ТЧ { public partial class НеопределенныеТипы { [ComplexType] public class ЛюбаяСсылка_Fld52 : НеопределенныйТип, НеопределенныйТипСсылочный { [Column("_Fld52_TYPE")] [Required] [MaxLength(1)] override public byte[] Тип { get; set; } [Column("_Fld52_RTREF")] [Required] [MaxLength(4)] public byte[] НомерТаблицы { get; set; } [Column("_Fld52_RRREF")] [Required] [MaxLength(16)] public byte[] Ссылка { get; set; } } } } } Есть поле в разных типах ЛюбаяСсылка, но в базе все названия [ComplexType] должны быть уникальными. Поэтому добавляю номер таблицы для неопределенных владельцев и номер поля для неопределенных полей |
|||
51
Serginio1
24.09.15
✎
16:40
|
Выложил статью http://catalog.mista.ru/profile/public/
|
|||
52
quest
24.09.15
✎
16:43
|
ссылку поправь
|
|||
53
Serginio1
24.09.15
✎
16:45
|
52 Спасибо
http://catalog.mista.ru/public/402038/ |
|||
54
Serginio1
25.09.15
✎
17:41
|
Выложил практику использования
http://catalog.mista.ru/public/402433/ |
|||
55
Serginio1
28.09.15
✎
17:33
|
Кстати посмотрел на просторах интернета, что то не нашел описания подключения к ODATA.
На той тестовой конфигурации опубликовал ODATA Установил справочники Массив = Новый Массив(); Для Каждого Справочник Из Метаданные.Справочники Цикл Массив.Добавить(Справочник); КонецЦикла; УстановитьСоставСтандартногоИнтерфейсаOData(Массив); Затем в VS Добавить ссылку на службу http://localhost/LinqBD/odata/standard.odata/$metadata Получаем описание классов доступ к кторым через var uriString = @"http://localhost/LinqBD/odata/standard.odata/"; var context = new ServiceReference1.EnterpriseV8(new Uri(uriString)); var query = context.CreateQuery<ServiceReference1.Catalog_Тестовый>("Catalog_Тестовый"); var result = query.ToList(); |
|||
56
Serginio1
29.09.15
✎
11:37
|
Кстати есть и поддержка JSON
var uriString = @"http://localhost/LinqBD/odata/standard.odata/"; var context = new ServiceReference1.EnterpriseV8(new Uri(uriString)); context.Format.UseJson(); var query = context.CreateQuery<ServiceReference1.Catalog_Тестовый>(@"Catalog_Тестовый"); var result = query.ToList(); Генерирует такой запрос GET http://localhost/LinqBD/odata/standard.odata/Catalog_Тестовый HTTP/1.1 DataServiceVersion: 1.0;NetFx MaxDataServiceVersion: 3.0;NetFx Accept: application/json;odata=minimalmetadata Accept-Charset: UTF-8 User-Agent: Microsoft ADO.NET Data Services Host: tc-smirnov-s Connection: Keep-Alive И ответ HTTP/1.1 200 OK Content-Length: 14112 Content-Type: application/json;charset=utf-8 Server: Microsoft-IIS/7.5 DataServiceVersion: 3.0 Date: Tue, 29 Sep 2015 08:29:46 GMT { "odata.metadata": "http://localhost/LinqBD/odata/standard.odata//$metadata#Catalog_Тестовый", "value": [{ "Ref_Key": "aada18ad-5308-11e5-8e05-c86000c70663", "DataVersion": "AAAAAgAAAAA=", "DeletionMark": false, "Code": "000000001", "Description": "Первый Число", "Строка": "Число", "СтрокаФиксированная": " ", "СтрокаДлинная": "", "Число": 1, "Целое": "1", "Дата": "2015-09-04T00:00:00", "Булево": true, "ХранилищеЗначения_Type": "application/xml+xdto", "ХранилищеЗначения_Base64Data": "PFN0cmluZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEi\r\nIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5z\r\ndGFuY2UiPtCf0YDQvtGB0YLQviDRgdGC0YDQvtC60LA8L1N0cmluZz4=", "УникальныйИдентификатор": "65d503d9-e412-4b19-99af-ed3fc8b063b1", "ЛюбаяСсылка": "aada18ac-5308-11e5-8e05-c86000c70663", "ЛюбаяСсылка_Type": "StandardODATA.Catalog_Номенклатура", "ПеречислениеДляТестов": "Первый", "РевизитВсеТипы": "223.33", "РевизитВсеТипы_Type": "Edm.Double", "НеопределенныйНеССылочный": "99.6", "НеопределенныйНеССылочный_Type": "Edm.Double", "РеквизитСправочник_Key": "aada18ac-5308-11e5-8e05-c86000c70663", "РеквизитДокумент_Key": "ebb8aaa1-5534-11e5-a6ad-c86000c70663", "ТабЧасть": [ { "Ref_Key": "aada18ad-5308-11e5-8e05-c86000c70663", "LineNumber": "1", "Номенклатура_Key": "aada18ac-5308-11e5-8e05-c86000c70663", "Количество": "1", "Сумма": 1, "ЛюбаяСсылка": "", "ЛюбаяСсылка_Type": "StandardODATA.Undefined" } ], "РеквизитСправочник@navigationLinkUrl": "Catalog_Тестовый(guid'aada18ad-5308-11e5-8e05-c86000c70663')/РеквизитСправочник" }, |
|||
57
Serginio1
29.09.15
✎
13:49
|
Ну и соответственоо вызов определенного элемента
var query = context.CreateQuery<ServiceReference1.Catalog_Тестовый>(@"Catalog_Тестовый(guid'aada18ad-5308-11e5-8e05-c86000c70663')"); Можно применять фильтры var query = context.CreateQuery<ServiceReference1.Catalog_Тестовый>(@"Catalog_Тестовый") .AddQueryOption("$filter", "Число le 100"); |
|||
58
Serginio1
29.09.15
✎
15:29
|
А можно и так
var result = (from Тестовый in context.Catalog_Тестовый where Тестовый.Число<500 select Тестовый).ToList(); |
|||
59
Serginio1
29.09.15
✎
17:41
|
Выложил статью Linq To ODATA http://catalog.mista.ru/public/403524/
|
|||
60
Адинэснег
29.09.15
✎
18:38
|
||||
61
Serginio1
29.09.15
✎
18:45
|
Зачем 1С применяет ODATA?
http://v8.1c.ru/o7/201312rest/ Зачем Linq к ODATа, а затем что это намного проще чем работать с нетипизированными структурам, задавать условия как в нормальных запросах полностью абстрагируясь от механизмов ODATA и программируя привычно используя объекты и Linq |
|||
62
Serginio1
29.09.15
✎
18:46
|
||||
63
Гёдза
29.09.15
✎
18:46
|
(60) Бессмысленно задавать ему такие вопросы. Он не понимает
|
|||
64
Serginio1
29.09.15
✎
18:48
|
(63) Эх тупой я
|
|||
65
Гёдза
29.09.15
✎
18:49
|
(64) Да не тупой, просто твои ковыряния в песочнице никому не понятны
|
|||
66
Гёдза
29.09.15
✎
18:50
|
Собственно эта ветка подтверждает (да и на ис тоже) что кроме тебя это никому не нужно
|
|||
67
Cyberhawk
29.09.15
✎
18:56
|
У меня скуль 2012 есть, если че-то еще надо - стучи в асю
|
|||
68
Serginio1
29.09.15
✎
20:08
|
(67) Огромное спасибо. Уже решил проблему. Поставил у себя SQL 2014 Express
|
|||
69
Dmitry1c
29.09.15
✎
20:11
|
Ух какие же вы извращенцы
|
|||
70
Serginio1
29.09.15
✎
20:25
|
(69) Спасибо. А то в одной миссионерской позе (1С) совсем надоело. Хочется, чего то возвышенного
|
|||
71
Мефистофель
29.09.15
✎
20:51
|
почему не на ява?
в качестве первого проекта на ява хочу реализовать объекты 1С :) |
|||
72
Serginio1
29.09.15
✎
21:27
|
(71) У Явы есть ограничения например для использования сборок
http://catalog.mista.ru/public/238584/ А что касается Linq в явеЮ то он разве есть? http://rsdn.ru/forum/java/5431309.flat |
|||
73
Serginio1
30.09.15
✎
10:24
|
(66) Ошибаешься. Уже один человек нашелся https://github.com/WorldException/v7py
Смотри комментарий http://catalog.mista.ru/public/402433/ Во! |
|||
74
DDwe
30.09.15
✎
10:38
|
(73) О, целый один комментарий. Прогресс. И все-таки вопрос - на ...что всё это?
|
|||
75
Гёдза
30.09.15
✎
10:40
|
(71) Лучше пиши минисклад на спринг+хибернэйт
|
|||
76
Serginio1
30.09.15
✎
10:46
|
(71) Зачем? У меня кроме этого забот хватает и на 1C,C#,JS. А Linq это отдушина, в свободное от работы время.
(74) Понимаешь многие программисты изучают не только 1С. Некоторые хотят расширить свой кругозор, понять новое и использовать свои знания, когда появится возможность. Я так и делаю. Но мне приходится кучу информации искать. И тем кому это вдруг понадобится, я рассчитываю, что мои статьи помогут ему во многом разобраться. А помощь в прогрессе это и есть смысл жизни. |
|||
77
DDwe
30.09.15
✎
10:53
|
(76)Т.е всё, что ты причислил к 1С не имеет ни какого отношения? Тогда зачем ты завел тему здесь?
|
|||
78
Serginio1
30.09.15
✎
10:57
|
(77) Как это не имеет? Это как раз доступ к данным 1С из программ написанных на .Net
|
|||
79
Serginio1
30.09.15
✎
10:59
|
(78) Мало того используя http://catalog.mista.ru/public/238584/
ты можешь использовать нетовские сборки в 1С |
|||
80
DDwe
30.09.15
✎
11:01
|
(79) Что такое нетовская сборка? Сборка чего?
|
|||
81
DDwe
30.09.15
✎
11:02
|
(78) И зачем мне доступ к 1С из программ написанных на .НЕТ?
|
|||
82
Лодырь
30.09.15
✎
11:05
|
(81) Тебе не нужна, успокойся. Мне нужна.
|
|||
83
DDwe
30.09.15
✎
11:06
|
(82) А Вам зачем?
|
|||
84
Лодырь
30.09.15
✎
11:09
|
(83) Из 1С я расширяю возможности. Из внешних систем имею возможность прямого доступа к данным 1С.
|
|||
85
Serginio1
30.09.15
✎
11:12
|
(81) Да здесь полно веток, где мне это не нужно. Но я не захожу в них и не кричу "А нафига". Есть полно узкоспециализированных задач, с которыми среднестатистический 1Сник никогда и не сталкивается, а другие с этими задачами связаны постоянно. Информация не бывает бесполезной.
|
|||
86
Serginio1
30.09.15
✎
11:43
|
(84) Спасибо за поддержку.
|
|||
87
Гёдза
30.09.15
✎
11:55
|
(84) Это вообще-то нарушение лицензионного соглашения
|
|||
88
Serginio1
30.09.15
✎
11:59
|
(87) ODATA? И к 7.7 нет нарушения
|
|||
89
Гёдза
30.09.15
✎
12:11
|
(88) к одата - нет, напрямую к скл - есть
|
|||
90
Serginio1
30.09.15
✎
12:14
|
(89) В 7.7. Приводи. Все 1С++ пользуются и не жужжат. Да и к 8.3 как обслуживать базу, восстанавливать после неудачного динамического обновления итд.
|
|||
91
Гёдза
30.09.15
✎
12:15
|
(90) Тебе выдержку из лицензионного соглашения привести что ли?
В 77 кстати не было такого ))) |
|||
92
Serginio1
30.09.15
✎
12:16
|
(91) Я про 7.7.
|
|||
93
Гёдза
30.09.15
✎
12:17
|
||||
94
Serginio1
30.09.15
✎
12:17
|
92+ Так как ты в 89 в ответ на 88 утверждал, что для 7.7 SQL есть. Показывай.
|
|||
95
Serginio1
30.09.15
✎
12:18
|
(93) И где там 7.7?
|
|||
96
Гёдза
30.09.15
✎
12:18
|
(94) Где я утверждал про 77?
|
|||
97
Serginio1
30.09.15
✎
12:20
|
(96) Да так как ты дал свой ответ на 88 в которым русккими словами написано
ODATA? И к 7.7 нет нарушения Кстати а дай выдержку по 8.x я чёт о не найду |
|||
98
Serginio1
30.09.15
✎
12:24
|
97+ Спасибо нашел пункт 65. Внимательней читать нужно.
|
|||
99
oleg_km
30.09.15
✎
12:31
|
Статья 1280. Право пользователя программы для ЭВМ и базы данных
(в ред. Федерального закона от 12.03.2014 N 35-ФЗ) 1. Лицо, правомерно владеющее экземпляром программы для ЭВМ или экземпляром базы данных (пользователь), вправе без разрешения автора или иного правообладателя и без выплаты дополнительного вознаграждения: 1) осуществлять действия, необходимые для функционирования программы для ЭВМ или базы данных (в том числе в ходе использования в соответствии с их назначением), включая запись и хранение в памяти ЭВМ (одной ЭВМ или одного пользователя сети), внесение в программу для ЭВМ или базу данных изменений исключительно в целях их функционирования на технических средствах пользователя, исправление явных ошибок, если иное не предусмотрено договором с правообладателем; (пп. 1 в ред. Федерального закона от 12.03.2014 N 35-ФЗ) 2) изготовить копию программы для ЭВМ или базы данных при условии, что эта копия предназначена только для архивных целей или для замены правомерно приобретенного экземпляра в случаях, когда такой экземпляр утерян, уничтожен или стал непригоден для использования. При этом копия программы для ЭВМ или базы данных не может быть использована в иных целях, чем цели, указанные в подпункте 1 настоящего пункта, и должна быть уничтожена, если владение экземпляром таких программы или базы данных перестало быть правомерным. 2. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения изучать, исследовать или испытывать функционирование такой программы в целях определения идей и принципов, лежащих в основе любого элемента программы для ЭВМ, путем осуществления действий, предусмотренных подпунктом 1 пункта 1 настоящей статьи. 3. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий: 1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников; 2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию; 3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ. 4. Применение положений, предусмотренных настоящей статьей, не должно противоречить обычному использованию программы для ЭВМ или базы данных и не должно ущемлять необоснованным образом законные интересы автора или иного правообладателя. Сергей, не заморачивайся. Продолжай исследования, пожалуйста |
|||
100
Serginio1
30.09.15
✎
12:33
|
(99) Олег большое спасибо!
Кстати Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных "1С:Предприятия". Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии "1С:Предприятия". Интересно как чтение будет мешать работе механизмов системы и переходу на новые версии? |
|||
101
oleg_km
30.09.15
✎
13:24
|
(100) Никак, в данном случае это 1С снимает с себя любую ответственность. Это может быть проблемой, если планировать, какое-то супертиражное решение, типа сертифицированного 1С.
|
|||
102
Serginio1
01.10.15
✎
11:26
|
Добавлю немного к ODATA. В ней можно использовать навигационные свойства. Например
var ПустаяСсылка = new Guid("00000000 - 0000 - 0000 - 0000 - 000000000000"); string НоменклатураНаименование = ""; if (result.РеквизитСправочник_Key != ПустаяСсылка) { context.LoadProperty(result, "РеквизитСправочник"); НоменклатураНаименование = result.РеквизитСправочник.Description; } |
|||
103
Serginio1
01.10.15
✎
11:28
|
Для Неопределенных типов Можно создать функцию
object ПолучитьНеопределенныйТип(ServiceReference1.EnterpriseV8 context, string значение, string Тип) { switch (Тип) { case "StandardODATA.Undefined": return null; case "StandardODATA.Catalog_Номенклатура": return context.Catalog_Номенклатура.Where(Тестовый => Тестовый.Ref_Key == new Guid(значение)).SingleOrDefault(); case "Edm.Double": return Double.Parse(значение, System.Globalization.CultureInfo.InvariantCulture); } return null; } И получать данные dynamic ЛюбаяССылка = ПолучитьНеопределенныйТип(context, result.ЛюбаяСсылка, result.ЛюбаяСсылка_Type); dynamic НеСсылочный = ПолучитьНеопределенныйТип(context, result.НеопределенныйНеССылочный, result.НеопределенныйНеССылочный_Type); |
|||
104
Serginio1
01.10.15
✎
12:07
|
Хотя странно, что 1С применяет для чисел Double вместо Decimal
|
|||
105
Serginio1
01.10.15
✎
12:49
|
Да есть возможность в ODATA сразу подгружать нужные свойства
var result = (from Тестовый in context.Catalog_Тестовый.Expand("РеквизитСправочник") where Тестовый.Ref_Key == new Guid("aada18ad-5308-11e5-8e05-c86000c70663") select Тестовый).SingleOrDefault(); Но пока в 1С Параметр $expand не поддерживается" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |