|
v7: Code First и Linq to EF на примере 1С версии 7.7 Ø (Волшебник 04.09.2015 10:55) | ☑ | ||
---|---|---|---|---|
0
Serginio1
28.08.15
✎
20:04
|
||||
1
Злопчинский
28.08.15
✎
20:07
|
вот ты мне как тупому 1С-программиситу поясни - для чего это все? профиты в чем при автоматизации?
|
|||
2
Sserj
28.08.15
✎
20:12
|
(1) Тут профит в том что понапишешь всякой лабудени, а потом заказчик сможет от тебя отказаться только при очень-очень-очень-очень большом желании
:) |
|||
3
Serginio1
28.08.15
✎
20:19
|
(1) На Linq значительно удобнее писать запросы. Например для сложного запроса есть повторяющися код, или его нужно использовать как подзапрос. Обычно используют склейку кода. На Linq ты можешь использовать повторно запросы. Например
var бд = Константы1С.ГлобальныйКонтекст.БД; //Определили запрос, где учавствуют таблицы и условия var query = from Константа in бд.ТаблицаКонстанты where Константа.ID == 9697 orderby Константа.DATE descending, Константа.TIME descending, Константа.DOCID descending, Константа.ROW_ID descending select Константа; // select new Константы1С.ЗначениеПериодического { Значение = Константа.VALUE }).Take(1); // А в этом запросе мы испльзуем его, же но добавляем еще условия var query2= (from спр in бд.Спр_ДляПериодических selectnew { Наименование=спр.Наименование, ДатаСпр=спр.ДатаСпр, Периодические=(from прериод in query.Where(х=> х.OBJID==спр.ID && х.DATE<=спр.ДатаСпр).Take(1) selectnew { Значение=прериод.VALUE, Дата=прериод.DATE }).FirstOrDefault() } ); |
|||
4
Serginio1
28.08.15
✎
20:25
|
Да и еще нужно заметить, что при написании такого запроса идет подсказка через точку контроль ошибок на этапе написания запроса. Если честно, я от Linq в полном восторге. Я даже не ожидал от него такой мощи.
|
|||
5
Asmody
28.08.15
✎
20:32
|
Запросы эффективно писать на чистом SQL. А как надо три связанных таблички на форму положить, так вся хваленая "мощь" .NET разом сдуваеся.
|
|||
6
Serginio1
28.08.15
✎
20:50
|
(5) Да ну? Не ужто ты начал писать на C#. Или сам не пробовал, но осуждаю. Я тебе приводил результирующие запросы. Все течет, все меняется. Кстати на Linq можно писать и в стиле 1С 8. Например http://msdn.microsoft.com/ru-ru/magazine/hh781018.aspx
string entitySQL = " SELECT p, p.Filling " + "FROM PartyContext.Pinatas AS p " "WHERE p.Filling.Description='Candy'"; var query=context.CreateQuery<DbDataRecord>(entitySQL); query.MergeOption = System.Data.Objects.MergeOption.NoTracking; var pinatasWithFilling=query.ToList(); Я пробовал работал псевдонимы таблиц и полей но только на латинице. С Юникодом возникли проблемы. Но может в дальнейшем узнаю как победить |
|||
7
Serginio1
28.08.15
✎
20:54
|
(5) Кстати о мифах о тормозах http://habrahabr.ru/post/230623/
|
|||
8
Serginio1
28.08.15
✎
20:59
|
Еще есть можно использовать
System.Data.SqlClient.SqlBulkCopy — класс из состава ADO.NET, предназначенный для записи большого объема данных в таблицы SQL Server. В качестве источника данных может принимать DataRow[], DataTable, либо реализацию IDataReader. http://habrahabr.ru/post/251397/ |
|||
9
Serginio1
28.08.15
✎
21:06
|
Да еще же куча асинхронных методов
https://msdn.microsoft.com/en-us/data/jj819165.aspx var blogs = await (from b in db.Blogs orderby b.Name select b).ToListAsync(); // Write all blogs out to Console Console.WriteLine("Query completed with following results:"); foreach (var blog in blogs) { Console.WriteLine(" - " + blog.Name); |
|||
10
Serginio1
28.08.15
✎
21:09
|
||||
11
Serginio1
28.08.15
✎
22:28
|
||||
12
Злопчинский
28.08.15
✎
23:39
|
(3) это всего лишь "помогалка", причем несущественная
|
|||
13
Serginio1
28.08.15
✎
23:42
|
(12) Так покажи этот запрос на 1С?
А помогалка весьма существенная. Вот реальный SQL код генерящийся из 3 Здесь мечта каждого программиста на 8 ке и 7 ке выполняет следующий код SELECT 1 AS [C1], [Extent1].[DESCR] AS [DESCR], [Extent1].[SP9700] AS [SP9700], [Limit1].[ROW_ID] AS [ROW_ID], [Limit1].[VALUE] AS [VALUE], [Limit1].[DATE] AS [DATE] FROM [dbo].[SC9691] AS [Extent1] OUTER APPLY (SELECT TOP (1) [Project1].[ROW_ID] AS [ROW_ID], [Project1].[DATE] AS [DATE], [Project1].[VALUE] AS [VALUE] FROM ( SELECT [Extent2].[ROW_ID] AS [ROW_ID], [Extent2].[DATE] AS [DATE], [Extent2].[VALUE] AS [VALUE], [Extent2].[DOCID] AS [DOCID], [Extent2].[TIME] AS [TIME] FROM [dbo].[_1SCONST] AS [Extent2] WHERE (9697 = [Extent2].[ID]) AND ([Extent2].[OBJID] = [Extent1].[ID]) AND ([Extent2].[DATE] <= [Extent1].[SP9700]) ) AS [Project1] ORDER BY [Project1].[DATE] DESC, [Project1].[TIME] DESC, [Project1].[DOCID] DESC, [Project1].[ROW_ID] DESC ) AS [Limit1] |
|||
14
Serginio1
29.08.15
✎
00:00
|
На самом деле по возможностям Linq значительно превосходит запросы 1С.
|
|||
15
igork1966
29.08.15
✎
00:03
|
(14) и левые соединения через ж@пу
|
|||
16
Asmody
29.08.15
✎
00:09
|
(14) Формочку с тремя табличками нарисуй.
А "возможности" .NET для работы с БД мы еще лет 10 назад изучили. С 7.7 работало прекрасно, со всякими отборами и прочими бантиками. Правда только "для чтения". Ну и вьюшек своих пришлось в базе накрутить, чтобы многоэтажных запросов не строить. Зато на дальнем складе в МО через тогдашний gprs был честный онлайн. |
|||
17
Serginio1
29.08.15
✎
00:14
|
(16) Еще раз я не говорю, что Linq это панацея, я говорю льшь о том, что стоит изучить то, чего не знаешь на знакомой для тебя базе. А проблемы с ьремя табличками я так и не понял?
|
|||
18
Serginio1
29.08.15
✎
00:15
|
(15) Да через одно место, но можно это решать через расшерители.
Кстати в понедельник попробую коррелирующий запрос (аналог 3), но с простым условием соединения http://www.codeproject.com/Articles/22342/LINQ-Challenges-and-SQL-Server-Compact-Edition |
|||
19
Serginio1
29.08.15
✎
00:21
|
(16) 10 лет назад не было ни Linq, ни Code First.
Кстати в ней присутствует миграция https://msdn.microsoft.com/ru-ru/data/jj554735 А накрутить и сейчас на 1С++ все можно. Я просто предлагаю посмотреть на другие возможности и поиграться на известных для тебя базах. Не хочешь не пробуй. За Linq и их подобными будущее. |
|||
20
Asmody
29.08.15
✎
00:29
|
А Linq - ну Linq - еще один DSL. В современном мире разве этим кого удивишь? Есть, например, squeryl. Или korma.
Или тебя восхищают возможности C# как функционального языка? После scala с akka C# вообще не прет :) |
|||
21
Asmody
29.08.15
✎
00:35
|
(17) Да задачка у меня была: три связанных таблички на форме, одна главная, две дочерних. Редактируемые, ну и чтоб с полями постановки, которые и руками заполнить, и из списка выбрать, и минимальным поиском. Потыкался я недельку во всю "мощь" обеих Enterprise-платформ, да и накидал за полдня в 1С.
|
|||
22
Asmody
29.08.15
✎
00:38
|
Из всего "богатства" .NET, только LightSwitch выглядит подходящим и адекватным по простоте для таких задач. Да и у него возникли несокрушимые проблемы с развертыванием.
|
|||
23
Serginio1
29.08.15
✎
00:47
|
(20) Нет. Но я пишу на C# и использую всю мощь Net, которой мне в 1С не хватает. А как тебе Хаскель?
C# это гибридный язык (21) 10 лет .Net еще сыроват был. Тогда только только 2.0 с дженериками вышел. Возможно ты ещё на 1.0 пробовал. У меня на Compct Framework c DataView никаких проблем не было. (22) К сожалению, а может быть и к счастью похоронили они Silverlight. Сейчас у них другая кроссплатформенная идея https://xakep.ru/2015/04/09/195-windows-10/ |
|||
24
Serginio1
29.08.15
✎
00:51
|
||||
25
Serginio1
29.08.15
✎
00:55
|
(22) Кстати а как тебе TypeScript, Asp.Net mvc весма мощен, особенно в новой версии в том числе и кроссплатформенной
|
|||
26
Masquerade
29.08.15
✎
01:07
|
(8)
Есть расширение для EF - EF EXTENDED. Там DELETE и UPDATE ходят не через объектную модель. И довлльно красиво. (0) Я решительно не понял - ты о чем? В 7.7 писать на линке? (25) Текущий стек в .net для разработки весьма мощен. За исключением одного - генерация форм. Их как-то приходится писать руками и это занимает время. Как бонус - технологии для фронтенда - выбираешь сам и какие хочешь. |
|||
27
Masquerade
29.08.15
✎
01:11
|
(0)
Но 1С-никам ты ничего выходящего за рамки конфигуратора- не продашь. В силу определенных факторов. 1С настоящий RAD. Разработка - ураган. Поставка решений - как из пулемета. И как бы не стонали о дороговизне программистов - дешево. Круто, чо. Корпоратив охвачен, на мобилы пришли. Осталось сайты делать - и дело за мировой экспансией. |
|||
28
Asmody
29.08.15
✎
01:13
|
(23) Haskell для какой-нибудь навороченной математики. Для обычных задач вся его чистоплотность избыточна, только мешает. Конечно, для фана потыкаться очень прикольно, чисто мозг повыворачивать.
TypeScript я не смотрел. Серверный javascript как-то не было печали писать, а на стороне браузера хватает обычного js. Или CoffeeScript. |
|||
29
Masquerade
29.08.15
✎
01:15
|
А что до общего качества решений, но на сторону технологии можно записать:
1. Неразвитость языка в принципе. 2. Отсутствие кастомных контролов (но надо ли) 3. Нет типизации. А все остальные минусы - следствие таких плюсов, как низкий порог вхождения - отсюда и качество решений. Так что, где 1С влезает - то это наверное лучший выбор. |
|||
30
Masquerade
29.08.15
✎
01:16
|
Но!
Если вложиться в разработку некоторого framework-а: 1. Генерация форм. 2. Скелет приложения. То все у 1С преимуществ не остается. |
|||
31
Masquerade
29.08.15
✎
01:18
|
И еще забыл - лицензирование.
Как ни странно - порой написать своё - дешевле, чем купить готовую конфу от 1С. |
|||
32
Asmody
29.08.15
✎
01:18
|
(29) Я вот думаю, когда разработчикам типовых надоест рисовать костыли типа Новый ОписаниеОповещения() или Выполнить(ИмяОбщегоМодуля), и они надают по головам девелоперам платформы.
|
|||
33
Asmody
29.08.15
✎
01:21
|
(30) Пфффф! 1С держится не на стеке, а на мощи типовых, туче решений и дешевизне кастомизации.
|
|||
34
Masquerade
29.08.15
✎
01:26
|
(33)
-- а на мощи типовых Скорее на мощах. Можно огласить дешевизну кастомизации следующего плана: 1. БП (Версию выбрать по вкусу) 2. 3000 складских документов в день. Нужно обеспечить восстановление последовательности за месяц <2 часа. Сейчас это >2 суток. Итак - дешевизна кастомизации? |
|||
35
Asmody
29.08.15
✎
01:30
|
(34) Дешевизна по сравнению с "мировыми аналогами".
|
|||
36
Злопчинский
29.08.15
✎
01:35
|
(34) может и на мощах - но эти мощи в каждой конторе торчат. причем не мощи а МОЩЬ, а сбоку/сверху наприлеплены костылики.
автономных решений, да еще вопросизводимых активно тиражируемых - не так уж и много. так что чем дальше тем больше типовые будут завоевывать мир. всем чистым спецам-кодерам1С будет кирдык. |
|||
37
Злопчинский
29.08.15
✎
01:37
|
(34) при чем здесь п.1 в совокупности п.2..?
п.1 - это учет виртуальных сущностей. п.2 - учет реальных объектов и реальных движений, здесь вообще - говорить о восстановлении ГП каком-то - за пределами добра и зла. В складских процессах и иих отражении в СКЛАДСКОМ учете вообще нет места документам в трактовке типовых 1С-ных понятий. |
|||
38
Serginio1
29.08.15
✎
01:52
|
(27) Я просто хотел показать пример построения объектной модели на основе Code First Linq. Её так же просто прикрутить и к 8 ке, но тут начнут кричать про лицинзионное соглашение. Поверь у меня много разработок и они никому не нужны, за редким исключением http://catalog.mista.ru/profile/82159/public/
Но я хочу довести до людей то, чего они не знают. Да и мне самому интересно отойти от 1С и заняться программированием для души. Давно я не получал такого удовольствия. |
|||
39
Masquerade
29.08.15
✎
02:07
|
(37)
У взрослых людей это называется хамством. |
|||
40
Злопчинский
29.08.15
✎
02:45
|
(39) ну извините, что мое видение мира не совпало с вашим...
|
|||
41
Serginio1
29.08.15
✎
09:12
|
(20. Кстати Asmody
Для интереса скачай Visual Studio Community 2015 http://www.microsoft.com/ru-ru/softmicrosoft/vs2015Community.aspx Обработку я тебе вышлю (ссылку не даю, потому что интересно вообще кому то это нужно и вышлю любому кто попросит) Поиграйся. Мне честно интересно твоё мнение |
|||
42
ДенисЧ
29.08.15
✎
09:49
|
в 1с линк не нужен
|
|||
43
Serginio1
29.08.15
✎
10:06
|
Ну 1С не нужны и Лямбды и awaitы и много многое другое, что есть в нормальных языках и которыми активно пользуются. Я предлагаю лишь попробовать, не нравится не надо.
|
|||
44
Serginio1
29.08.15
✎
10:29
|
(42) На самом деле для 1С идеальный язык это TypeScript.
В нем можно совмещать статическую и динамическую типизацию. И на нем намного приятнее писать, чем на JS. Кстати к JS Linq тоже прикручивают https://linqjs.codeplex.com/ |
|||
45
Serginio1
29.08.15
✎
10:47
|
А вот Linq и на TS
https://www.npmjs.com/package/linq-ts |
|||
46
Serginio1
29.08.15
✎
11:58
|
||||
47
igork1966
29.08.15
✎
12:03
|
Как всегда не учитывается стоимость.
Когда придется за все это добро платить, восторги пропадут. А для 1С это вполне подъемные деньги в отличии от... |
|||
48
Masquerade
29.08.15
✎
12:22
|
(47)
За какое добро придется платить? |
|||
49
Serginio1
29.08.15
✎
12:46
|
(15) Вот люди пишут расширители http://stackoverflow.com/questions/21615693/extension-method-for-iqueryable-left-outer-join-using-linq
(47) В отличие от чего? Кстати мой пример вполне это вполне реальный пример интеграции Asp.Net и 1С, MySql. Вообще зоопарк. Я только получаю то, что мне 1С не может дать. Особенно 7.7. |
|||
50
Masquerade
29.08.15
✎
21:59
|
(47)
Я так понимаю, что списка добра, за которое приходится платить неподъемные деньги - мы тут не увидим? |
|||
51
Masquerade
29.08.15
✎
22:04
|
(49)
Лучше б написал генерацию html-формы\контроллера с тем же bootstrap-ом, на основе EF-модели. Чтоб с мультиселектами, табами - всеми делами. А тащить линк в 1С, ради чего бы то не было - пустая затея. Во первых никому не нужно, во вторых - 1С - тормоз. |
|||
52
igork1966
29.08.15
✎
22:23
|
(48) За не бесплатную версию Visual Studio конечно. За дополнительные расширения.
Я конечно понимаю что большинство крякают ultimate и не говоря доп.софте. Но это пока до посадок не дошло дело. |
|||
53
Masquerade
29.08.15
✎
22:39
|
(52)
А чем бесплатная то не угодила? И за какие "дополнительные расширения" _придется_ платить? |
|||
54
Serginio1
29.08.15
✎
22:56
|
(51) Я не тащу Linq в 1С. Я показываю как его использовать на основе таблиц 1С. Мне например легче и понятнее экспериментировать на том, что я знаю досконально, а не какие то там искусственные базы.
(52) Скачай по ссылке в 41 бесплатную |
|||
55
igork1966
29.08.15
✎
22:56
|
(53) Resharper, например. По-моему он он стоит у многих разработчиков... сколько из них его купили, это вопрос...
ORM далеко не бесплатны. Но давай не будем спорить дальше я не чувствую себя достаточно в этом вопросе квалифицированным, ок? Тем более в приложении к (0) это не существенно. |
|||
56
igork1966
29.08.15
✎
22:58
|
(52) Это у меня уже стоит на ноуте с которого пишу. Пару раз даже использовал. :-)
|
|||
57
Serginio1
29.08.15
✎
23:04
|
А не хочешь попробовать на ней Code First и Linq попробовать?
Кстати говоря, что новая студия как раз перекрывает все плюсы решарпера. Но для моих задач он совсем не нужен |
|||
58
igork1966
29.08.15
✎
23:04
|
(56) => (54)
|
|||
59
igork1966
29.08.15
✎
23:10
|
(57) Когда будет немного поболее свободного времени.
Я собственно писал после 1c 8.1 на C# в основном linq-to-sql (прикладной код, у нас было разделение) после 1C 8.1. Но потом проект помер. |
|||
60
Попытка1С
29.08.15
✎
23:21
|
Все потребности семерки уже давно перекрыты компонентой 1cpp.
Честно говоря не очень понял в чем цымус разработки из (0) |
|||
61
Serginio1
30.08.15
✎
00:08
|
(60) Попробовать Linq на реальных данных. Кроме того, при всем моем почтении к 1С++, Linq очень удобно применять для интеграции из нетовских приложений. Например из asp.net mvs. Но мне лично было прикрутить Code First к 1С, попробовать Linq на знакомых мне данных и поделиться своими трудами с другими
|
|||
62
Serginio1
30.08.15
✎
00:52
|
61 Плюс используя наработки к семерке, достаточно просто написать Code First и к восьмерке
|
|||
63
Serginio1
30.08.15
✎
01:10
|
Case-When в линк
http://stackoverflow.com/questions/4244023/select-case-in-linq |
|||
64
Asmody
30.08.15
✎
01:36
|
(63) Это не так интересно. Вот если бы там pattern matching был...
|
|||
65
Serginio1
30.08.15
✎
01:50
|
(64) А разве он есть в запросах? pattern matching dвещь хорошая, но большая часть может быть реализована и через хэш таблицу.
http://habrahabr.ru/post/227935/ |
|||
66
Masquerade
30.08.15
✎
02:57
|
(63)
Case, when... Это всё для лохов. |
|||
67
Masquerade
30.08.15
✎
02:58
|
Вот LINQ
int[] numbers = {0,10,20,30,40,50,100}; //Зададим границы var users = numbers.Select(x => new user( Math.Abs(x - 3))); //Генерим Юзеров var __n = numbers.OrderBy(x=>x).Select((x, y) => new { start = x, end = y == numbers.Count() - 1 ? numbers.Max() + numbers.Max() : numbers[y + 1]}).Select(x=> Enumerable.Range(x.start,x.end - x.start)); //Немного последовательностей var result = users.GroupBy(x => __n.Where(xx => xx.Contains(x.age)).FirstOrDefault().Min().ToString() +" -- "+ __n.Where(xx => xx.Contains(x.age)).FirstOrDefault().Max().ToString()).Select(x => new { desc = x.Key, users = x.Count() }); //Вычисляем результат |
|||
68
Masquerade
30.08.15
✎
02:58
|
Весь текст
|
|||
69
Masquerade
30.08.15
✎
02:59
|
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int[] numbers = {0,10,20,30,40,50,100}; //Зададим границы var users = numbers.Select(x => new user( Math.Abs(x - 3))); //Генерим Юзеров var __n = numbers.OrderBy(x=>x).Select((x, y) => new { start = x, end = y == numbers.Count() - 1 ? numbers.Max() + numbers.Max() : numbers[y + 1]}).Select(x=> Enumerable.Range(x.start,x.end - x.start)); //Немного последовательностей var result = users.GroupBy(x => __n.Where(xx => xx.Contains(x.age)).FirstOrDefault().Min().ToString() +" -- "+ __n.Where(xx => xx.Contains(x.age)).FirstOrDefault().Max().ToString()).Select(x => new { desc = x.Key, users = x.Count() }); //Вычисляем результат } } public class user { public int age; public user(int _age) { this.age = _age; } } } |
|||
70
Serginio1
30.08.15
✎
09:14
|
(69) Спасибо!!! Не знал.
Правда в 1 строчку тяжело читать. Но прикольно! |
|||
71
Serginio1
30.08.15
✎
10:45
|
Кстати посмотрел http://www.dotnet-tricks.com/Tutorial/linq/UXPF181012-SQL-Joins-with-C
Там при коррелирующим запросе идет Left Join GROUP JOIN Whene a join clause use an INTO expression, then it is called a group join. A group join produces a sequence of object arrays based on properties equivalence of left collection and right collection. If right collection has no matching elements with left collection then an empty array will be produced. C# Code var q=(from pd in dataContext.tblProducts join od in dataContext.tblOrders on pd.ProductID equals od.ProductID into t orderby pd.ProductID select new { pd.ProductID, pd.Name, pd.UnitPrice, Order=t }).ToList(); Генерится левое соединение. |
|||
72
Serginio1
30.08.15
✎
12:48
|
Вот еще интересные примеры https://www.linqpad.net/WhyLINQBeatsSQL.aspx
|
|||
73
Serginio1
30.08.15
✎
12:50
|
||||
74
Serginio1
30.08.15
✎
15:19
|
Операции с множествами: объединение, пересечение, разность
http://metanit.com/sharp/entityframework/4.6.php |
|||
75
Serginio1
31.08.15
✎
10:49
|
Насчет левых Соединений
var бд = Константы1С.ГлобальныйКонтекст.БД; var qr = from Номенклатура in бд.Спр_Номенклатура from единицы in бд.Спр_Единицы.Where(единица => единица.ВладелецId == Номенклатура.ID).DefaultIfEmpty() select new { Номенклатура.Наименование, Номенклатура.ПолнНаименование, единицы.ШтрихКод, ОКЕИ=единицы.ОКЕИ.Наименование }; foreach (var элем in qr.Take(10)) { Console.WriteLine("{0}.{1} - {2}", элем.Наименование.TrimEnd(), элем.ШтрихКод == null ? "null" : элем.ШтрихКод, элем.ПолнНаименование.TrimEnd(), элем.ОКЕИ == null ? "null" : элем.ОКЕИ); } Генерирует такой запрос SELECT [Limit1].[C1] AS [C1], [Limit1].[DESCR] AS [DESCR], [Limit1].[SP101] AS [SP101], [Limit1].[SP80] AS [SP80], [Limit1].[DESCR1] AS [DESCR1] FROM ( SELECT TOP (10) [Extent1].[DESCR] AS [DESCR], [Extent1].[SP101] AS [SP101], [Extent2].[SP80] AS [SP80], [Extent3].[DESCR] AS [DESCR1], 1 AS [C1] FROM [dbo].[SC84] AS [Extent1] LEFT OUTER JOIN [dbo].[SC75] AS [Extent2] ON [Extent2].[PARENTEXT] = [Extent1].[ID] LEFT OUTER JOIN [dbo].[SC41] AS [Extent3] ON [Extent2].[SP79] = [Extent3].[ID] ) AS [Limit1] |
|||
76
Ненавижу 1С
гуру
31.08.15
✎
10:52
|
а почему не 8-ка
|
|||
77
Гёдза
31.08.15
✎
10:53
|
<тут картинка про троллейбус>
|
|||
78
Asmody
31.08.15
✎
10:53
|
(76) Была б 8ка, его бы на эту фигню не потянуло.
|
|||
79
Гёдза
31.08.15
✎
10:55
|
(78) Насколько я помню он изначально нет к 8 прикручивал
|
|||
80
Serginio1
31.08.15
✎
11:09
|
(76) Тут кричать будут про лицезионное соглашение раз. Во вторых сейчас 8 ки только файловые.
(78) Тянет. Так или иначе приходилось работать с большими объемами и объединять с помощью Merge, брать данные для сайта. Сейчас просто интересно посмотреть, что это за зверь. (79) Я ко всем 1С с чем работаю |
|||
81
Serginio1
31.08.15
✎
11:10
|
var бд = Константы1С.ГлобальныйКонтекст.БД;
var qr = from Номенклатура in бд.Спр_Номенклатура from единицы in бд.Спр_Единицы.Where(единица => единица.ВладелецId == Номенклатура.ID && единица.ШтрихКод.CompareTo("4") > 0).DefaultIfEmpty() select new { Номенклатура.Наименование, Номенклатура.ПолнНаименование, единицы.ШтрихКод, ОКЕИ=единицы.ОКЕИ.Наименование }; foreach (var элем in qr.Take(1000)) { if (элем.ШтрихКод == null) continue; Console.WriteLine("{0}.{1} - {2}", элем.Наименование.TrimEnd(), элем.ШтрихКод == null ? "null" : элем.ШтрихКод, элем.ПолнНаименование.TrimEnd(), элем.ОКЕИ == null ? "null" : элем.ОКЕИ); } Выдает такой запрос SELECT [Limit1].[C1] AS [C1], [Limit1].[DESCR] AS [DESCR], [Limit1].[SP101] AS [SP101], [Limit1].[SP80] AS [SP80], [Limit1].[DESCR1] AS [DESCR1] FROM ( SELECT TOP (1000) [Extent1].[DESCR] AS [DESCR], [Extent1].[SP101] AS [SP101], [Extent2].[SP80] AS [SP80], [Extent3].[DESCR] AS [DESCR1], 1 AS [C1] FROM [dbo].[SC84] AS [Extent1] LEFT OUTER JOIN [dbo].[SC75] AS [Extent2] ON ([Extent2].[PARENTEXT] = [Extent1].[ID]) AND ([Extent2].[SP80] > N'4') LEFT OUTER JOIN [dbo].[SC41] AS [Extent3] ON [Extent2].[SP79] = [Extent3].[ID] ) AS [Limit1] |
|||
82
Serginio1
31.08.15
✎
11:28
|
А такой запрос
var бд = Константы1С.ГлобальныйКонтекст.БД; var qr = from Номенклатура in бд.Спр_Номенклатура select new { Номенклатура.Наименование, Номенклатура.ПолнНаименование, Единицы=(Номенклатура.ПодчиненныеЕдиницы.Where(единица => единица.ШтрихКод.CompareTo("4") > 0).Select(единица=> new { единица.ШтрихКод, ОКЕИ = единица.ОКЕИ.Наименование } ) ) }; foreach (var элем in qr.Take(1000)) { foreach (var единица in элем.Единицы) Console.WriteLine("{0}.{1} - {2}", элем.Наименование.TrimEnd(), единица.ШтрихКод, элем.ПолнНаименование.TrimEnd(), единица.ОКЕИ); } } Генерирут SQL запрос SELECT [Project2].[ID] AS [ID], [Project2].[C1] AS [C1], [Project2].[DESCR] AS [DESCR], [Project2].[SP101] AS [SP101], [Project2].[C2] AS [C2], [Project2].[SP80] AS [SP80], [Project2].[DESCR1] AS [DESCR1] FROM ( SELECT [Limit1].[ID] AS [ID], [Limit1].[DESCR] AS [DESCR], [Limit1].[SP101] AS [SP101], [Limit1].[C1] AS [C1], [Join1].[SP80] AS [SP80], [Join1].[DESCR] AS [DESCR1], CASE WHEN ([Join1].[PARENTEXT] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C2] FROM (SELECT TOP (1000) [Extent1].[ID] AS [ID], [Extent1].[DESCR] AS [DESCR], [Extent1].[SP101] AS [SP101], 1 AS [C1] FROM [dbo].[SC84] AS [Extent1] ) AS [Limit1] LEFT OUTER JOIN (SELECT [Extent2].[PARENTEXT] AS [PARENTEXT], [Extent2].[SP80] AS [SP80], [Extent3].[DESCR] AS [DESCR] FROM [dbo].[SC75] AS [Extent2] INNER JOIN [dbo].[SC41] AS [Extent3] ON [Extent2].[SP79] = [Extent3].[ID] ) AS [Join1] ON ([Limit1].[ID] = [Join1].[PARENTEXT]) AND ([Join1].[SP80] > N'4') ) AS [Project2] ORDER BY [Project2].[ID] ASC, [Project2].[C2] ASC |
|||
83
necro
31.08.15
✎
11:40
|
Гадость какая.
|
|||
84
Serginio1
31.08.15
✎
11:47
|
(83) Здесь с форматированием http://rsdn.ru/forum/dotnet/6163878.1
|
|||
85
Serginio1
01.09.15
✎
10:10
|
Нашел как использовать запрос в стиле 1С 8
//var str = @"Select p.[Наименование] as [Прозвище],p.[Код],p.[ПолнНаименование] From [Спр_Номенклатура] as p"; var str = @"Select VALUE p From [Спр_Номенклатура] as p"; var Запрос = qr.CreateQuery<Справочник.Номенклатура>(str ); var res = Запрос.Execute(MergeOption.NoTracking); foreach (var элем in res) { //var элем = (Справочник.Номенклатура)элем1[0]; Console.WriteLine("{0}.{1} - {2}", элем.Наименование.TrimEnd(), элем.Артикул, элем.ПолнНаименование.TrimEnd()); // Console.WriteLine("{0}.{1} - {2}", элем[0], элем[1], элем[2]); } |
|||
86
Serginio1
01.09.15
✎
10:14
|
https://msdn.microsoft.com/ru-ru/library/bb738573(v=vs.110).aspx
Отличия Entity SQL и Transact-SQL Идентификаторы В языке Transact-SQL сравнение идентификаторов всегда осуществляется с учетом параметров сортировки текущей базы данных. В Entity SQL идентификаторы всегда чувствительны к регистру и диакритическим знакам (то есть Entity SQL различает диакритические знаки, например «а» отличается от «?»). Entity SQL обрабатывает версии букв, которые кажутся такими же, но являются другими символами и происходят из других кодовых страниц. Для получения дополнительной информации см. Набор символов ввода (Entity SQL). Функциональность Transact-SQL, недоступная в Entity SQL Следующая функциональность Transact-SQL недоступна в языке Entity SQL. DML В настоящее время язык Entity SQL не поддерживает инструкции DML (вставка, обновление, удаление). DDL Текущая версия Entity SQL не поддерживает DDL. Командное программирование Язык Entity SQL не поддерживает командное программирование в отличие от Transact-SQL. Используйте вместо этого языки программирования. Функции группирования Язык Entity SQL пока не поддерживает функции группирования (например, CUBE, ROLLUP и GROUPING_SET). Функции аналитики Язык Entity SQL не предоставляет (пока) поддержку функций аналитики. Встроенные функции, операторы Язык Entity SQL поддерживает подмножество встроенных функций и операторов Transact-SQL. Вероятно, эти операторы и функции будут реализованы ведущими поставщиками хранилищ. В языке Entity SQL используются специальные функции для хранилищ, объявленные в манифесте поставщика. Кроме того, модель Entity Framework позволяет объявлять встроенные и пользовательские функции хранилища для использования в Entity SQL. Подсказки Язык Entity SQL не предоставляет механизм подсказок в запросах. Пакетирование результатов запроса Entity SQL не поддерживает пакетирование результатов запросов. Например, допустим следующий запрос Transact-SQL (отправляемый как пакет): select * from products; select * from catagories; Однако эквивалент Entity SQL не поддерживается. Select value p from Products as p; Select value c from Categories as c; Entity SQL поддерживает только запросы, которые выдают один результат на одну команду. |
|||
87
Serginio1
01.09.15
✎
10:22
|
То есть нельзя создать пакет и временную таблицу.
Но вот используемые функции значительно больше чем в 1С https://msdn.microsoft.com/ru-ru/library/bb738683(v=vs.110).aspx В том числе и Функции поставщиков данных (Майкрософт) Функции поставщиков данных (Майкрософт) находятся в пространстве имен SqlServer. Пример SELECT SqlServer.LEN(c.EmailAddress) As EmailLen FROM AdventureWorksEntities.Contact AS c WHERE c.ContactID BETWEEN 10 AND 12 |
|||
88
Asmody
01.09.15
✎
10:34
|
(80) [Во вторых сейчас 8 ки только файловые.] — ?????!!!!!
|
|||
89
Serginio1
01.09.15
✎
10:38
|
(88) Ну вот так случилось.. Переводить на 8ки муторно сильно специализированные конфигурации под производства писанные в течении лет 10, а используя функциал 1С++ возможностей не меньше.
|
|||
90
Serginio1
01.09.15
✎
11:42
|
Интересно использование переменных в запросе
var бд = Константы1С.ГлобальныйКонтекст.БД; var qr = (from единица in бд.Спр_Единицы group единица by new { единица.ВладелецId, Наименование=единица.Владелец.Наименование.TrimEnd() } into группа let Количество = группа.Count() where Количество > 1 select new { Наименование = группа.Key.Наименование, Количество = Количество, }); foreach (var элем in qr) { //var элем = (Справочник.Номенклатура)элем1[0]; Console.WriteLine("{0}.{1} - ", элем.Наименование, элем.Количество); // Console.WriteLine("{0}.{1} - {2}", элем[0], элем[1], элем[2]); } Генерится такой запрос SELECT 1 AS [C1], [GroupBy1].[K2] AS [C2], [GroupBy1].[A1] AS [C3] FROM ( SELECT [Join1].[K1] AS [K1], [Join1].[K2] AS [K2], COUNT([Join1].[A1]) AS [A1] FROM ( SELECT [Extent1].[PARENTEXT] AS [K1], RTRIM([Extent2].[DESCR]) AS [K2], 1 AS [A1] FROM [dbo].[SC75] AS [Extent1] INNER JOIN [dbo].[SC84] AS [Extent2] ON [Extent1].[PARENTEXT] = [Extent2].[ID] ) AS [Join1] GROUP BY [K1], [K2] ) AS [GroupBy1] WHERE [GroupBy1].[A1] > 1 Having нет |
|||
91
Serginio1
01.09.15
✎
12:00
|
А вот такой
var qr = (from единица in бд.Спр_Единицы group единица by new { единица.ВладелецId, Наименование=единица.Владелец.Наименование.TrimEnd() } into группа let Количество = группа.Count() where Количество > 1 select new { Наименование = группа.Key.Наименование, Количество = Количество, Группа = группа }); foreach (var элем in qr) { Console.WriteLine("{0}.{1} - ", элем.Наименование, элем.Количество); foreach (var единица in элем.Группа) { Console.WriteLine("{0}.{1} - ", единица.ОКЕИ.Наименование, единица.ШтрихКод); } } Превращается SELECT [Project1].[C2] AS [C1], [Project1].[C3] AS [C2], [Project1].[C1] AS [C3], [Project1].[PARENTEXT] AS [PARENTEXT], [Project1].[C4] AS [C4], [Project1].[ID] AS [ID], [Project1].[PARENTEXT1] AS [PARENTEXT1], [Project1].[ISMARK] AS [ISMARK], [Project1].[SP79] AS [SP79], [Project1].[SP76] AS [SP76], [Project1].[SP78] AS [SP78], [Project1].[SP80] AS [SP80], [Project1].[SP8752] AS [SP8752], [Project1].[SP9519] AS [SP9519] FROM ( SELECT [GroupBy1].[A1] AS [C1], [GroupBy1].[K1] AS [PARENTEXT], [GroupBy1].[K2] AS [C2], [GroupBy1].[K3] AS [C3], [Join2].[ID1] AS [ID], [Join2].[PARENTEXT] AS [PARENTEXT1], [Join2].[ISMARK1] AS [ISMARK], [Join2].[SP79] AS [SP79], [Join2].[SP76] AS [SP76], [Join2].[SP78] AS [SP78], [Join2].[SP80] AS [SP80], [Join2].[SP8752] AS [SP8752], [Join2].[SP9519] AS [SP9519], CASE WHEN ([Join2].[ID1] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C4] FROM (SELECT [Join1].[K1] AS [K1], [Join1].[K2] AS [K2], [Join1].[K3] AS [K3], COUNT([Join1].[A1]) AS [A1] FROM ( SELECT [Extent1].[PARENTEXT] AS [K1], 1 AS [K2], RTRIM([Extent2].[DESCR]) AS [K3], 1 AS [A1] FROM [dbo].[SC75] AS [Extent1] INNER JOIN [dbo].[SC84] AS [Extent2] ON [Extent1].[PARENTEXT] = [Extent2].[ID] ) AS [Join1] GROUP BY [K1], [K2], [K3] ) AS [GroupBy1] LEFT OUTER JOIN (SELECT [Extent3].[ID] AS [ID1], [Extent3].[PARENTEXT] AS [PARENTEXT], [Extent3].[ISMARK] AS [ISMARK1], [Extent3].[SP79] AS [SP79], [Extent3].[SP76] AS [SP76], [Extent3].[SP78] AS [SP78], [Extent3].[SP80] AS [SP80], [Extent3].[SP8752] AS [SP8752], [Extent3].[SP9519] AS [SP9519], [Extent4].[DESCR] AS [DESCR] FROM [dbo].[SC75] AS [Extent3] INNER JOIN [dbo].[SC84] AS [Extent4] ON [Extent3].[PARENTEXT] = [Extent4].[ID] ) AS [Join2] ON ([GroupBy1].[K1] = [Join2].[PARENTEXT]) AND (([GroupBy1].[K3] = (RTRIM([Join2].[DESCR]))) OR (([GroupBy1].[K3] IS NULL) AND (RTRIM([Join2].[DESCR]) IS NULL))) WHERE [GroupBy1].[A1] > 1 ) AS [Project1] ORDER BY [Project1].[C2] ASC, [Project1].[PARENTEXT] ASC, [Project1].[C3] ASC, [Project1].[C4] ASC |
|||
92
ДенисЧ
01.09.15
✎
12:00
|
Может, ты себе блошек в свитере заведёшь?
|
|||
93
Serginio1
01.09.15
✎
12:04
|
(92) Так зачем ты сюда ходишь?
Я пишу для тех кому это интересно. Тебе правда интересно, что я пишу? |
|||
94
Mutniy2
01.09.15
✎
12:09
|
(93) +1
Мало ли кому что не нравится. |
|||
95
Serginio1
01.09.15
✎
12:12
|
(92) На самом деле очень мало информации по тому ка отображаются линковские запросы на запросы SQL. Я восполняю этот пробел. И кстати заодно разоблачить мифы о неповоротливости линка
|
|||
96
qwerty2469
01.09.15
✎
12:23
|
(0) LINQ хорош, когда нужно писать "запросы" к коллекции объектов. А LINQ-ом заменять SQL запросы, по моему как-то не кошерно.
|
|||
97
Serginio1
01.09.15
✎
12:28
|
(96) Ну вот я здесь показываю, что более чем кошерно. Функционал очень высокий. Кроме того есть Entity SQL
смотри 85. Но практически все возможности покрываются Linq https://msdn.microsoft.com/ru-ru/library/bb399560(v=vs.110).aspx Entity SQL представляет собой независимый от хранилища язык запросов, аналогичный языку SQL. Entity SQL позволяет выполнять запросы к данным сущности, представленным либо в виде объектов, либо в табличной форме. Возможность использования Entity SQL необходимо рассматривать в следующих случаях: • Если запрос должен создаваться динамически во время выполнения. В этом случае следует также рассмотреть возможность использования методов построителя запросов ObjectQuery<T> вместо создания строки запроса Entity SQL во время выполнения. • Если требуется определить запрос как часть определения модели. В модели данных поддерживается только Entity SQL. Дополнительные сведения см. в разделе QueryView Element (EntitySetMapping). • Если EntityClient применяется для возврата допускающих только для чтения данных сущности в виде наборов строк с использованием EntityDataReader. Для получения дополнительной информации см. Поставщик EntityClient для платформы Entity Framework. • Для специалиста по языкам запросов на основе SQL язык Entity SQL может оказаться самым естественным выбором. Ну и язык запросов например восьмерки значительно беднее Linq то EF кроме пакетов и временных таблиц |
|||
98
Serginio1
01.09.15
✎
16:29
|
Аналог Union All
var query = (from x in db.Table1 select new {A = x.A, B = x.B}) .Concat( from y in db.Table2 select new {A = y.A, B = y.B} ); |
|||
99
Гёдза
01.09.15
✎
16:47
|
(98) И чем такая запись лучше канонической?
|
|||
100
Гёдза
01.09.15
✎
16:49
|
(100) Какие конкретно фичи ты предлагаешь заюзать из Linq to EF
|
|||
101
Serginio1
01.09.15
✎
17:00
|
(99) Это просто другая запись.
(100) Конкретно я предлагаю просто ознакомиться и сравнить с запросами в стиле 8 ки, которые тоже можно делать. В Linq ты получаешь IntelliSense и синтаксический контроль на этапе разработки. И например если тебе нужен будет доступ из asp.net ты тоже можешь использовать БД 1С. Там кстати Linq to EF это уже стандарт. Просто попробуй и для себя реши зачем это нужно. |
|||
102
Гёдза
01.09.15
✎
17:02
|
(101) Так свой стартап никогда не откроешь.
Вначале должна быть проблема, которую ты можешь виртуозно решить |
|||
103
Serginio1
01.09.15
✎
17:09
|
(102) Ну я сейчас просто знакомлюсь, в дальнейшем есть планы прикрутить к уже существующему проекту на Asp.net
А я ничего открывать то и не собираюсь. Просто например в среде 1С ников очень мало знающих Net. Я стараюсь вести просветительскую деятельность, заодно и сам познавая новые фичи. А что касается проблем, то я их решаю в том числе и с помощью Net. А таких проблем достаточно. |
|||
104
Гёдза
01.09.15
✎
17:14
|
(103) Это шутка. Поэтому тебя здесь и не понимают, потому что твои идеи не решают практических задач
|
|||
105
Serginio1
01.09.15
✎
17:27
|
(104) Почему не решают? Еще раз тру 1С нику это не нужно, а вот тем кто хочет интегрировать с другими системами или повысить свой программистский уровень то такие есть. Просто пока их мало.
А мои идеи решают кучу моих задач. |
|||
106
Serginio1
01.09.15
✎
17:29
|
и вполне возможно, что Linq можно включить и в 1С
|
|||
107
Masquerade
01.09.15
✎
22:50
|
(106)
Дружище. LINQ основан на методах расширения. МЕТОДАХ. ООП в 1С как бы даже и не пахнет, буквально - не пахнет. Подцеплять к БД 1С какие-то сторонние прилады, особенно из .NET чревато. В первую очередь - это архитектурно неверно, лучше использовать для этого различные средства интгерации. Ну а во вторую - впаяет вам junior какой-нибудь иницилайзер "DropCreateDatabaseIfModelChanges" и ага. |
|||
108
Masquerade
01.09.15
✎
22:51
|
(106)
линк, а особенно L2O - прекрасен. Не случайно лямбды приползли только в 8-ую, Яву, но 1С... Не ту аудиторию для пропаганды ты выбрал. |
|||
109
Serginio1
02.09.15
✎
08:20
|
(107) Linq это прежде всего функциональщина, вывод типа и иммутабельность. Просто C# гибридный язык и использует все прелести одного и другого. Правда из-за этого у него и недостатки.
Аналог линка прикручивают и на JS. Я лично, считаю, что для 1С прекрасно подошел TypeScript, а там и вывод типа и все, что не хватает 1С. А насчет аудитории, то все течет и все меняется. Когда то и шарписты плевались на Linq и говорили, что циклы наше все. Однако прошло совсем немного времени и Linq это уже стандарт. |
|||
110
NikVars
02.09.15
✎
10:35
|
(98) Э-э-э-э... Накидай заполнение декларации по прибыли для конфигурации Бухгалтерский учет 7.7.
Хочу стравнить реализацию поставщика и твои разработки. |
|||
111
Serginio1
02.09.15
✎
10:39
|
(110) А может сразу все типовые конфы переписать?
|
|||
112
NikVars
02.09.15
✎
10:41
|
(111) Начни с прибыли, а то обидешь поставщика изящностью кода.
|
|||
113
Serginio1
02.09.15
✎
10:46
|
В линк есть одна хорошая особенност в том, что мы можем неоднократно применять его для расширения в том числе и добавлять условия. Например
Если ЗначениеЗаполнено(Номенклатура) Тогда Запрос.Where(запись=>запись.НоменклатураId==Номенклатура.Ссылка КонецЕсли Если ЗначениеЗаполнено(Фирма) Тогда Запрос.Where(запись=>запись.ФирмаId==Фирма.Ссылка КонецЕсли Но можно также и расширять условия http://www.albahari.com/nutshell/predicatebuilder.aspx https://github.com/scottksmith95/LINQKit Можно например написть условие по OR Можно написать обобщенныую функцию public IQueryable<TEntity> НайтиПоВхождениюВНаименование<TEntity>(params string[] keywords) where TEntity : СправочникПредок { var predicate = PredicateBuilder.False<TEntity>(); foreach (string keyword in keywords) { string temp = keyword; predicate = predicate.Or(p => p.Наименование.Contains(temp)); } return this.Set<TEntity>().AsExpandable().Where(predicate); } и использовать например так var запрос = бд.НайтиПоВхождениюВНаименование<Справочник.Номенклатура>("Linq", "Наше", "Все").Select(товар => товар.Наименование); foreach (var товар in запрос) { Console.WriteLine("{0} ", товар); } |
|||
114
Mutniy2
02.09.15
✎
10:46
|
(109) > Linq это прежде всего функциональщина, вывод типа и иммутабельность.
Шито? |
|||
115
NikVars
02.09.15
✎
10:47
|
(113) Все это настолько вторично, что я уже зеваю...
|
|||
116
Serginio1
02.09.15
✎
10:48
|
При это генерится такой запрос
SELECT [Extent1].[DESCR] AS [DESCR] FROM [dbo].[SC84] AS [Extent1] WHERE ([Extent1].[DESCR] LIKE @p__linq__0 ESCAPE N'~') OR ([Extent1].[DESCR] LIKE @p__linq__1 ESCAPE N'~') OR ([Extent1].[DESCR] LIKE @p__linq__2 ESCAPE N'~') -- p__linq__0: '%Linq%' (Type = String, Size = 4000) -- p__linq__1: '%Наше%' (Type = String, Size = 4000) -- p__linq__2: '%Все%' (Type = String, Size = 4000) |
|||
117
Serginio1
02.09.15
✎
10:49
|
(115) Так зайди в другие темы, зачем здесь то зевать. Какой смысл в твоей реплике?
|
|||
118
NikVars
02.09.15
✎
10:50
|
(117) Ты почитай порядок заполнения декларации по прибыли и набросай его особенности на Linq.
Да, еще интересно как на Linq клеточки рисовать. Эта тема вообще не раскрыта. |
|||
119
DDwe
02.09.15
✎
10:50
|
(109) И что?
|
|||
120
Serginio1
02.09.15
✎
10:53
|
(118) То есть на C# ничего нарисовать нельзя?
(114) http://rsdn.ru/article/dotnet/LinqAsStapToFp.xml (119) Разверни поподробнее свой вопрос |
|||
121
DDwe
02.09.15
✎
10:55
|
(120) К чему вся эта суета? Смысл в чем?
|
|||
122
Гёдза
02.09.15
✎
10:57
|
(121) Хочется прогать на настоящем языке, но платят только за 1С
|
|||
123
DDwe
02.09.15
✎
10:57
|
+ (121) Так, ЧСВ публично почесать?
|
|||
124
DDwe
02.09.15
✎
10:58
|
(122) Спасибо, объяснил. А то от ТС не дождешься.
|
|||
125
oleg_km
02.09.15
✎
11:03
|
(124) Евангелие Мф. 7:6 почитай, сразу станет все понятно.
|
|||
126
Serginio1
02.09.15
✎
11:04
|
(121) Уже много раз писал зачем.
На самом деле очень мало информации по тому ка отображаются линковские запросы на запросы SQL. Я восполняю этот пробел. И кстати заодно разоблачить мифы о неповоротливости линка Просто например в среде 1С ников очень мало знающих Net. Я стараюсь вести просветительскую деятельность, заодно и сам познавая новые фичи. |
|||
127
Гёдза
02.09.15
✎
11:07
|
(126) Почему именно Net, а не Java. Вторая вроде как более популярна и лучше годится как 2 язык (если никакой кроме 1С не знаешь)
|
|||
128
Serginio1
02.09.15
✎
11:11
|
(127) Потому, что я лучше знаю C# чем Яву. Но я показываю принцип , который легко перенести на ту же Яву если конечно там есть аналоги. Вот если тебя заинтересовало напиши и я с удовольствием посмотрю.
|
|||
129
Гёдза
02.09.15
✎
11:12
|
(128) Я вот хочу что-нибудь изучить другое, но к сожалению некуда навыки применять, а тупо учить теорию не хочу
|
|||
130
Serginio1
02.09.15
✎
11:14
|
(129) Как кстати прикрутить яву по аналогии с http://catalog.mista.ru/public/238584/
|
|||
131
Serginio1
02.09.15
✎
11:15
|
(129) Кстати Linq изучить надо. Он и в яве тоже применяется
|
|||
132
NikVars
02.09.15
✎
11:16
|
(120) Тема "Code First и Linq to EF на примере 1С версии 7.7" с тосованием переменных и констант - туфта. Она предметно не интересна и академически бесполезна.
Тема "Code First и Linq to EF на примере реализации декларации по прибыли для 1С версии 7.7" - гут тема. Тут вся изящность, красота кода будут соперничать с исключительной логикой разработки и демострировать крутизну и мощь нового подхода и вдохнет новую жизнь в увядающий программный продукт 1С 7.7. |
|||
133
NikVars
02.09.15
✎
11:18
|
Если новый язык будет применен к разработки декларации по НДС, то, возможно, ты решишь проблемы заполнения декларации по НДС на больших объемах книг покупок/продаж.
|
|||
134
Serginio1
02.09.15
✎
11:21
|
(133) Пока лениво. Есть куча своей работы. Предлагаю тебе самому ознакомиться и заработать на этом.
|
|||
135
NikVars
02.09.15
✎
11:21
|
(134) Ты же тут рисуешь легкость, мощь и простоту.
|
|||
136
Гёдза
02.09.15
✎
11:22
|
(131) Я и не говорю, что не надо. Просто без реального применения - невозможно
|
|||
137
Serginio1
02.09.15
✎
11:29
|
(135) Прекращай флудить. Не интересно не заходи. Я не рисую легкость и простоту. Я показываю возможности. Просто для некоторых эти возможности не будут доступны по причине их непонимания. От того, что ты будешь больше флудить понимание линка у тебя не увеличится. И применить его для своей декларации НДС ты не сможешь. Причем делал я эту декларацию на 1С++ и ничего сложного в ней так и не увидел.
(136) Ну например напиши свой сайт на Asp.Net. |
|||
138
Гёдза
02.09.15
✎
11:29
|
(137) плохой из тебя учитель
|
|||
139
Serginio1
02.09.15
✎
11:32
|
(138) Учитель реально плохой. Но например для меня в свое время такая статья была бы кладезью. Я просто делюсь своим опытом.
|
|||
140
DDwe
02.09.15
✎
11:33
|
(137) Очень плохой учитель.Нервный. Валериану три раза в день.
|
|||
141
Serginio1
02.09.15
✎
11:34
|
(138) Кстати ответь на 130. Интересно как прикрутить классы Явы к 1С.
|
|||
142
NikVars
02.09.15
✎
11:35
|
(137) Я делаю два дела сразу: поднимаю твою ветку и позволяю тебе задуматься стоит ли менять черную обувь на коричневую.
А в ответ излишняя говориливость с попыткой зарыть рот другим. А раз мои вопросы и предложения зависли в положении "лениво, но могу...", то я и продолжаю это выяснять. |
|||
143
Serginio1
02.09.15
✎
11:37
|
(142) Продолжай. А лучше задавай вопросы по существу.
А то брошу все и начну писать декларацию на Linq и еще кучу всего и ответов не дождешься. |
|||
144
Гёдза
02.09.15
✎
11:38
|
(141) Зачем прикручивать что-то к 1С? Это тупковый путь
|
|||
145
NikVars
02.09.15
✎
11:39
|
(143) Какие реальные текущие проблемы пользователей 1С 7.7 можно решить указанными тобой программными срествами?!
|
|||
146
Гёдза
02.09.15
✎
11:39
|
(143) Если ты хочешь, чтоб твою разработку использовали. Покажи хотя бы одно РЕАЛЬНОЕ применение.
Платформа - ничто. Магазин приложений - все! |
|||
147
NikVars
02.09.15
✎
11:41
|
(146) Поддерживаю!!!
Достаточно одного яркого практичного примера... |
|||
148
Serginio1
02.09.15
✎
11:41
|
(144) Почему? Я использую классы Net для широкого круга задач без использования обертки их в ВК или COM. Очень удобно.
(145) В твоих руках Никаких. |
|||
149
Serginio1
02.09.15
✎
11:44
|
(146) Реально я хочу показать возможности Net на примере исползования Code First и Linq to EF. Только и всего
|
|||
150
NikVars
02.09.15
✎
11:44
|
(148) Да, Кэп! Имено - никаках, и к чему тогда все эти твои потуги?!
|
|||
151
Гёдза
02.09.15
✎
11:45
|
(149) Да вс е и так знают, что у НЕТ док.я возможностей. А толку?
|
|||
152
NikVars
02.09.15
✎
11:46
|
(149) Возможностей-то нет...
"Слова ничего не стоят покажите мне код" Линус Торваль |
|||
153
DDwe
02.09.15
✎
11:48
|
(152) + "дс". ))
|
|||
154
Serginio1
02.09.15
✎
11:49
|
(151) Так вот я использую их для огромного круга задач. Если этих задач у тебя нет то это уже другая проблема. Тогда и тему эту читать не стоит. Если же вдруг у тебя такие задачи появятся и тебе захочется разобраться в вопросах, то ты можешь найти мои разработки и подчерпнуть для себя, что то нужное.
|
|||
155
NikVars
02.09.15
✎
11:50
|
(154) "Так вот я использую их для огромного круга задач"
Ты просто не знаешь 1С... :( |
|||
156
NikVars
02.09.15
✎
11:51
|
(154) Из твоей статьи: "Здесь мечта каждого программиста на 8 ке и 7 ке выполняет следующий код"
Неси дневник! Двойка... |
|||
157
NikVars
02.09.15
✎
11:55
|
О придумал!
А = 2 Этот код будет выполняться и на 7-ке и на 8-ке и еще на куче других языков программирования. И что мне с этим знанием делать... |
|||
158
Serginio1
02.09.15
✎
12:00
|
(157) Лучше прикрути SignalR, websocket, вацап, вэб сервисы с поддержкой WS-+, xml сериализация файлов не поддерживаемые 1С, вэб сервисы с описанием неподерживаеых 1С форматов, куча функций которые есть в Net и нет в 1С.
|
|||
159
Serginio1
02.09.15
✎
12:05
|
||||
160
NikVars
02.09.15
✎
12:07
|
(158) Поднимаемая тобой тем интересна, но браться за нее нужно в двух случаях:
1) В случае невозможности решения проблемы средствами 1С 7.7; 2) В случае минимального времени для разработки не средствами 1С 7.7 и простоты дальнейшей поддержки. Мой опыт подсказывает мне - иное - песочница и мои пользователи - мои кролики. |
|||
161
Serginio1
02.09.15
✎
12:30
|
(160) Такие вещи возникают достаточно часто. И моя тема просто показать, за счет чего можно решить такие проблемы.
Code First несложно прикрутить и к 8 ке. И если тебе вдруг понадобится прикрутить сайт на asp.Net ты можешь найти некоторые ответы из моих разработок. А на полный функционал у меня пока нет времени. Информации много не бывает, главное её правильно фильтровать. |
|||
162
Serginio1
02.09.15
✎
20:08
|
(156) Можно я оправдаюсь перед тобой О мой строгий учитель.
В 3 выполняется запрос к периодческому реквизиту элемента справочника, на дату записанную в реквизит этого элемента. Так как в 1С 7.7 дата без времени и на одну дату может быть несколько значений записанные при проведении документа, то использовать max или min нельзя. Поэтому используются коррелирующие запросы с сортировкой по дате, времени итд RDER BY [Project1].[DATE] DESC, [Project1].[TIME] DESC, [Project1].[DOCID] DESC, [Project1].[ROW_ID] OUTER APPLY (SELECT TOP (1) [Project1].[ROW_ID] AS [ROW_ID], [Project1].[DATE] AS [DATE], [Project1].[VALUE] AS [VALUE] FROM ( SELECT * FROM [dbo].[_1SCONST] AS [Extent2] WHERE (9697 = [Extent2].[ID]) AND ([Extent2].[OBJID] = [Extent1].[ID]) AND ([Extent2].[DATE] <= [Extent1].[SP9700]) ) AS [Project1] ORDER BY [Project1].[DATE] DESC, [Project1].[TIME] DESC, [Project1].[DOCID] DESC, [Project1].[ROW_ID] DESC ) AS [Limit1] |
|||
163
Serginio1
02.09.15
✎
20:14
|
Про семерку вообще умолчу, а в 8 ке ты можешь использовать коррелирующие запросы только в предложении В (IN)
v8: Подзапросы с Выбрать Первые При этом для оптимального использования подзапроса Выбрать Первые нужна сортировка v8: Подзапросы с Выбрать Первые Linq не является совершенством и OUTER APPLY не является совершенством. Оптимальным будет озвученный здесь http://rsdn.ru/forum/flame/6156923.1 На базе AdventureWorks2008R2 я попытался написать два запроса с использованием left join и outer apply по аналогии с вашим SQL запросом: /*1*/ select * from Sales.SalesOrderHeader h left join ( select top 1 with ties d1.SalesOrderID, d1.OrderQty from Sales.SalesOrderDetail d1 order by row_number() over(partition by d1.SalesOrderID order by d1.OrderQty desc) ) d on h.SalesOrderID = d.SalesOrderID /*2*/ select * from Sales.SalesOrderHeader h outer apply ( select top 1 d1.SalesOrderID, d1.OrderQty from Sales.SalesOrderDetail d1 where d1.SalesOrderID = h.SalesOrderID order by d1.OrderQty desc ) d Результат: Query 1: Query cost (relative to the batch): 3% Query 2: Query cost (relative to the batch): 97% Т.е. запрос с outer apply в моем случае показал себя совсем не с лучшей стороны. |
|||
164
Serginio1
02.09.15
✎
20:16
|
Про top 1 with ties скажу отдельно. Выбираются все записи с row_number() ==1
WITH TIES Используется, если требуется вернуть две или более строки, которые совместно занимают последнее место в ограниченном результирующем наборе. Требуется использовать с предложением ORDER BY. WITH TIES может привести к тому, что вернется строк больше, чем указано в значении expression. Например, если expression имеет значение 5, но еще 2 строки соответствуют значениям в столбцах ORDER BY в строке 5, то результирующий набор будет содержать 7 строк. Предложение TOP...WITH TIES может быть задано только в инструкциях SELECT, и только если указано предложение ORDER BY. Порядок возврата связанных записей произволен. ORDER BY не влияет на это правило. |
|||
165
Serginio1
02.09.15
✎
20:18
|
Посмотрю поддерживает ли в Entity SQL доступ к row_number() over(partition
|
|||
166
kofeinik
02.09.15
✎
20:18
|
(162) "Так как в 1С 7.7 дата без времени и на одну дату может быть несколько значений записанные при проведении документа"
Одно значение на одну дату. |
|||
167
Serginio1
02.09.15
✎
20:24
|
(166) Ошибаешься. При проведении документа можно привязать даже несколько строк к одному элементу справочника. И дата будет одна, и документ, только строки будут различаться.
|
|||
168
Serginio1
02.09.15
✎
20:27
|
http://catalog.mista.ru/public/63125/
Значения даты должны быть меньше либо равно интересующего нас. Из полученной выборки нужно отобрать значение, соответствующее максимальной дате. Для этого удобнее всего воспользоваться конструкцией «Select top 1 … order by …» с сортировкой в обратном хронологическом порядке, не забывая, что значения могут устанавливаться документами внутри одного дня. Примерно так: |
|||
169
kofeinik
02.09.15
✎
20:29
|
(167) спр.получить(дата) - возвращает одно значение на одну дату. Если физически в базе лежит несколько значений - использование этого - грязный хак.
|
|||
170
Serginio1
02.09.15
✎
20:34
|
(169) Пройдись используя Периодический и ВыбратьЗначения
|
|||
171
Serginio1
02.09.15
✎
20:37
|
||||
172
Masquerade
02.09.15
✎
21:19
|
(161)
Зря ты так с ним. Ну что он тебе скажет - "А ты нарисуй РСВ-1 образца 2014 согласно утвержденному порядку заполнения с WITH TIES!!" У него язык 1С под это ЗА-ТО-ЧЕН. ))))) |
|||
173
oleg_km
02.09.15
✎
21:51
|
(172) Да сегодня смотрел, как формируются эти ведомости. Бесконечная, слабоструктурированная работа над текстом запроса, сложения, СтрЗаменить. Просто макаронный код. Может в 8.3 все-таки перепишут на объектную, так большинство 1с-ников не разберется. А потом, из-за отсутствия типизации стоит объекту покинуть область видимости, а даже при процедурном программировании это сплошь и рядом, так сразу пропадает подсказка в конфигураторе, проваливаешься в технологиях лет на 20-30 назад
|
|||
174
kofeinik
02.09.15
✎
22:25
|
(171) так там и написано, что порядок выборки будет разный, плюс пишем два документа двумя пользователями с разницей менее одной секунды, далее - см. (169)
|
|||
175
kofeinik
02.09.15
✎
22:32
|
(173) это как раз специфика работы, завтра рсв опять поменяют, отчет переписывать, тут не до вылизывания классов, нужно, чтобы работало квартал-два до очередной смены заполнения.
|
|||
176
Serginio1
02.09.15
✎
22:56
|
(174) Там черным по белому написано, что на одну дату может быть несколько значений, а при ЗначениеНаДату или использоватьДату использует Выбрать Первые с сортировкой по
ORDER BY [Project1].[DATE] DESC, [Project1].[TIME] DESC, [Project1].[DOCID] DESC, [Project1].[ROW_ID] DESC ) AS [Limit1] (175) При нормальном проектировании переписывать значительно проще. |
|||
177
Serginio1
02.09.15
✎
22:59
|
(173) Мне в этом плане очень нравится TypeScript. Он значительно удобнее голого JS. Вот такой подходит для 1С.
|
|||
178
Serginio1
02.09.15
✎
23:04
|
(174) Что бы тебе было более понятно ситуация такая как http://rsdn.ru/forum/db/6085704.1
Есть несколько полей по которым определяется позиция. Поэтому мы не можем применить поиск по max так как при этом может использоваться одно поле. Либо как в http://catalog.mista.ru/public/63125/ Вычислять составное поле. |
|||
179
Serginio1
02.09.15
✎
23:06
|
И в одном документе может быть две записи по одному элементу. Там различие будет только по ROW_ID
|
|||
180
Serginio1
03.09.15
✎
00:05
|
||||
181
kofeinik
03.09.15
✎
00:39
|
(176) одно значение правильное, то, которое вернется по спр.получить(дата). Все остальное - от лукавого. По поводу "При нормальном проектировании переписывать значительно проще." - гы, ты РСВ-1 будешь "нормально проектировать" дольше, чем выйдет новая. Вообще, весь этот детский сад из топика - вполне вписывается в тему just for fun, написать шахматы на ассемблере, или, другими словами, у тебя слишком много свободного неоплачиваемого времени.
|
|||
182
Serginio1
03.09.15
✎
08:21
|
(181) Меня поражает твоя ивертливость. в 166 заявляешь, что может быть только одно значение на дату, потом говоришь, что от лукавого. Тебе даю ссылки, что значений на одну дату может быт много, а вот алгоритм описанный в 156 как раз и возвращает только одну самое последнее значение.
Здесь нет ничего от лукавого. Это как раз проектирование БД. По поводу РСВ и прочих. Сколько раз было проще написать заново, чем переписывать чей то сделанный на скору руку код. При этом получается значительно быстрее выполнение, и дальнейшая поддержка становится легче По поводу детского сада. Ну не нравится или не понимаешь, то зачем что то заявлять неправильное, а затем оправдываться. |
|||
183
DDwe
03.09.15
✎
08:50
|
Ветка странная. ТС сам с собой большую часть времени разговаривает, что то доказывает.
|
|||
184
akaBrr
03.09.15
✎
09:10
|
(183) ТСа прет от темы, не мешай :D
|
|||
185
oleg_km
03.09.15
✎
09:48
|
(175) Так классы для того и придуманы, чтобы легче было кусочки программы менять. А 1С-никам то невдомек.
|
|||
186
NikVars
03.09.15
✎
09:54
|
(185) Напиши план счетов на классах и все обортно-сальдовые.
Легче применять не "классы", а то, что уже написано. |
|||
187
oleg_km
03.09.15
✎
09:59
|
(186) ну конечно, когда одни "накакли" приходится и в г... разбираться. ТС пишет же про когда вы сами выбираете инструмент, то можно выбрать более современный. А если ваша работа заключается только в правке типовых, то да, я вам сочувствую.
|
|||
188
NikVars
03.09.15
✎
10:12
|
(187) Так нет же тобой написанного на классах "десерта". А по всему инету трындеж от "спецов" - как круто ООП, классы и прочая хня. Только, упс, когда речь заходит про бухучет - "спецы" сливаются и вдруг оказываются "сильно заняты".
|
|||
189
DDwe
03.09.15
✎
10:17
|
(188) +100500
Каждому овощу, свой фрукт. |
|||
190
oleg_km
03.09.15
✎
10:22
|
(189) Точно, 1С-нику - кактус.
(188) Да, во всем мире как-то справляются без 1С. Наши люди тоже когда-то верили, что без КПСС конец света, а ничего вроде живем. "Бухучет" на 7.7 жил без запросов и вы считали что это нормально, теперь есть запросы, но нет объектов, облегчающих работу с ними, но вы тоже считаете это нормально. Завтра в 1С добавят LINQ и вы будете уже с пеной доказывать, что без этого никуда. А на счет "спецов", да никто не лезет на "территорию 1С", в Сомали же никто не пытается технопарк построить. |
|||
191
NikVars
03.09.15
✎
10:25
|
(190) Во всем мире инженеров учат делу, а у нас - матану считать на листочке, сопромату - по старинным книгам и четить на ватмане карандашом в 21 веке. Поэтому у нас - умные, но делать нифига не умеют, там - тупые, но справляются. Вот и получается - у нас - "аргументированный трындеж", там - просто дело.
|
|||
192
DDwe
03.09.15
✎
10:29
|
(190) "Завтра в 1С добавят LINQ". Вот как добавят, тогда и смысл в разговоре появится.
|
|||
193
Serginio1
03.09.15
✎
10:55
|
(192) А для того, что бы он появился, нужны обсуждения.
Для того, что бы появились замыкания вместо ОписаниеОповещения итд. Синтаксис SQL хотя бы до стандарта SQL, а в идеале использовать и расширение поставщика. итд. Нужна воля низов, а не аморфное следование идеям верхов |
|||
194
NikVars
03.09.15
✎
11:01
|
(193) Делай, если интересно! Пример: движок 7.7 уже не развивается. Но умельцы слепили секретный релиз,решающий определенные проблемы, и его даже юзают.
|
|||
195
Serginio1
03.09.15
✎
11:03
|
(194) Я на нем и работаю. Кстати Code First работает только с SQL 2005 и выше. Еще раз Code First прикрутить к 8 ке не проблема.
|
|||
196
NikVars
03.09.15
✎
11:06
|
(195) "Code First работает только с SQL 2005" - Ты это указал в своей статье?!
:))) |
|||
197
Мимохожий Однако
03.09.15
✎
11:09
|
Не взлетит. Хотя романтизм ТС интересен.
(0)У тебя есть больше чем 2 клиента с этой приблудой? Надеюсь на честный ответ. |
|||
198
Asmody
03.09.15
✎
11:14
|
(191) А что, с появлением компьютеров матан или сопромат сильно поменялся? Так-то маткаду и матлабу еще нас в университете учили, и сейчас, думаю, учат. Только прежде чем что-то наматлабить нужно иметь понимание что ты хочешь получить.
|
|||
199
Serginio1
03.09.15
✎
11:18
|
(197) Я не ищу клиентов, а делюсь опытом. Мне лично такие статьи нравятся и я наматываю себе на ус. А так там неполный функционал. Только справочники. Но не стоит большого труда его расширить на документы и регистры
(196) Так секретный релиз и позволяет семерке работать с SQL 2005 и выше |
|||
200
Мимохожий Однако
03.09.15
✎
11:26
|
(199)Т.е. практической пользы пока ноль. Тебе нужны единомышленники - исследователи. Только 1С77 здесь не при делах. ИМХО.
|
|||
201
Serginio1
03.09.15
✎
11:32
|
(200) Я просто хотел показать Code First и Linq to EF на примере 1С версии 7.7 только и всего.
Показал как можно пользоваться, какие при этом генерятся SQL запросы, какие есть ограничения, какие премущества и недостатки по сравнению с запросами восьмерки. Здесь очень много информации. Буду рад если хоть одного человека это заинтересует. И судя по звездочкам http://catalog.mista.ru/public/393228/ 5 человек заинтересовало. |
|||
202
Мимохожий Однако
03.09.15
✎
11:35
|
(201)Сделай хотя бы один пример для 1С8 для конфигурации БП3.0, тогда звёздочек еще больше заработаешь. Трудно ориентироваться на программный продукт, который уже не развивается лет 8.
|
|||
203
Asmody
03.09.15
✎
11:39
|
(202) Что-то мне подсказывает, что для 8ки выгодность Linq на фоне СКД будет исчезающе мала.
|
|||
204
Serginio1
03.09.15
✎
11:41
|
(202) У меня 8 ки только файловые. Да всегда крику на лицензии. Кто понимает, тому несложно перенести описание таблиц и полей на 8 ку. Будет время напишу. Чуть позже.
(203) Есть смысл использовать например в ASP.net Есть смысл использования Linq в 1С, но это уже другая тема. |
|||
205
Serginio1
03.09.15
✎
11:45
|
(203) Еще можно использовать массовые операции
Еще есть можно использовать System.Data.SqlClient.SqlBulkCopy — класс из состава ADO.NET, предназначенный для записи большого объема данных в таблицы SQL Server. В качестве источника данных может принимать DataRow[], DataTable, либо реализацию IDataReader. http://habrahabr.ru/post/251397/ Например при работе с миллионными прайсами используя Merge. |
|||
206
Masquerade
03.09.15
✎
15:38
|
(203)
--выгодность Linq на фоне СКД И эти люди... Мда. Можно развить тему? "LINQ на фоне СКД". Очень интересно. |
|||
207
Asmody
03.09.15
✎
15:50
|
(206) Пока выгодность применения linq в 8ке нулевая. Есть примеры обратного?
|
|||
208
Гёдза
03.09.15
✎
15:52
|
(207) Зато МОЩЬ!!!!
|
|||
209
Masquerade
03.09.15
✎
15:53
|
(207)
Какой linq в 8-ке - его там нет банально. |
|||
210
Гёдза
03.09.15
✎
15:55
|
(209) "С помощью нехитрых приспособлений" можно
|
|||
211
Serginio1
03.09.15
✎
16:26
|
(210) Вот когда 1С выпустит "С помощью нехитрых приспособлений" тогда можно и говорить о выгодности применения. А для Asp.Net очень даже выгоднее чем дергать Вэб,HTTP сервисы или COM.
|
|||
212
Гёдза
03.09.15
✎
16:29
|
(211) А как ты имена таблиц получаешь? Получается что ты хардкоришь имена или как?
|
|||
213
Serginio1
03.09.15
✎
16:35
|
(212) Когда то генерил классы для доступа к DBF через курсоры BDE через RainBow/
Сейчас из поставки 1С++ МД=СоздатьОбъект("MetaDataWork"); |
|||
214
Serginio1
03.09.15
✎
16:37
|
Для Ном=1 По Метаданные.Справочник() Цикл
//Сообщить("Документ."+Метаданные.Документ(Ном).Идентификатор); ВалСпр=Метаданные.Справочник(Ном); ИмяСпр=ВалСпр.Идентификатор; ИДСпр=МД.ИДСправочника(ИмяСпр); ИД=МД.ИДСправочника(ИмяСпр); ДобавитьОбщиеРеквизитыСправочника(Текст,ТекстВиртуал,ВалСпр); Для НомРек=1 По ВалСпр.Реквизит() Цикл Вал=ВалСпр.Реквизит(НомРек); ИмяРеквизита=Вал.Идентификатор; ИДРекв=МД.ИДРеквизитаСправочника(ИмяСпр, ИмяРеквизита); |
|||
215
Serginio1
03.09.15
✎
16:43
|
Для перечислений
Для Ном=1 По Метаданные.Перечисление() Цикл ВалПер=Метаданные.Перечисление(Ном); Для НомРек=1 По ВалПер.Значение() Цикл Вал=ВалПер.Значение(НомРек); ИмяРеквизита=Вал.Идентификатор; ТекстПеречисления.ДобавитьСтроку("public const string "+ИмяРеквизита+"="""+_IdToStr(МД.ИДОбъекта(Вал))+" "";"); КонецЦикла; |
|||
216
trdm
03.09.15
✎
16:58
|
(208) За пиццей на белазе! Крутотень...
|
|||
217
Принт
03.09.15
✎
17:03
|
А не проще ли юзать другую, возможно свою, платформу?
|
|||
218
Serginio1
03.09.15
✎
17:06
|
(217) Тут Nemerle не могут никак до конца сделать.
Сложно это все. И требует человеко годов и соответствующие деньги. А вот 1С стоит посмотреть в сторону Linq и заодно функциональщину. |
|||
219
trdm
03.09.15
✎
17:13
|
Смысло то в чем? Где профит? Где я буду тратить меньше времени и получать результат быстрее и удобнее?
|
|||
220
Serginio1
03.09.15
✎
17:18
|
(219) Профит в том, что если тебе будет нужен доступ к данным 1С например из Asp.Net то Code First и Linq to EF значительно проще и быстрее юзать чем Вэб,HTTP сервисы или COM. Или тебе нужно построить ооооооочень сложный отчет требующий большого промежутка времени, то ты можешь использовать всю мощь Net.
|
|||
221
Serginio1
03.09.15
✎
17:23
|
220 Кстати Linq позволяет асинхронно обрабатывать запросы
|
|||
222
trdm
03.09.15
✎
17:23
|
(220) > то Code First и Linq to EF значительно проще и быстрее юзать
Думаю проще юзать то, что умеешь юзать. Для меня это немного другие инструменты. |
|||
223
Serginio1
03.09.15
✎
17:25
|
222 Ну тогда, тебе эта мощь не нужна. А вот если ты пишешь сайт на Asp.net то тебе такой инструмент самое то. Ты просто не умеешь готовить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |