|
Как в 1с пишутся прямые запросы? | ☑ | ||
---|---|---|---|---|
0
Domovoi
09.12.11
✎
12:45
|
Интересует следующий момент: как организовать написание прямого запроса в 1с? Без использования внешних компонент или библиотек.
Возможно есть какая-нибудь книга, посоветуйте. |
|||
144
МишельЛагранж
15.12.11
✎
14:22
|
(142) ну-ну.
даже профайлером не умеем пользоваться, которым кичимся. данные документа запросите, если сами не понимаете, что и где и как в 1с работает... а не данные регистров - КОТОРЫЕ ЕСТЬ ПОЧТИ ПОЛНЫЙ АНАЛОГ РЕЛЯЦИОННОЙ ТАБЛИЦЫ, И, ЕСТЕССТВЕННО, ЛОЖИТСЯ НАПРЯМУЮ В ТРАНСЛЯЦИИ 1С-ЗАПРОСА В SQL!!! |
|||
145
Сисой
15.12.11
✎
14:24
|
(144) МишельЛагранж врет, как сивый мерин.
Вот пример: ВЫБРАТЬ ПоступлениеТоваровУслугТовары.НомерСтроки, ПоступлениеТоваровУслугТовары.Номенклатура, ПоступлениеТоваровУслугТовары.Ссылка.Номер, ПоступлениеТоваровУслугТовары.Ссылка.Дата ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Номер = &Номер что получаем в SQL: exec sp_executesql N'SELECT _Document526_VT12990_Q_000_T_001._LineNo12991 AS f_1, _Document526_VT12990_Q_000_T_001._Fld12999RRef AS f_2, _Document526_rd0z0d35._Number AS f_3, _Document526_rd0z0d35._Date_Time AS f_4 FROM _Document526_VT12990 _Document526_VT12990_Q_000_T_001 WITH(NOLOCK) LEFT OUTER JOIN _Document526 _Document526_rd0z0d35 WITH(NOLOCK) ON _Document526_VT12990_Q_000_T_001._Document526_IDRRef = _Document526_rd0z0d35._IDRRef WHERE _Document526_rd0z0d35._Number = P1',N'P1 nvarchar(8)',N'ОИ001698' и еще один запрос к справочнику Номенклатура для получения наименования. >> 1с тащит вдобавок ВСЕ смежные таблицы, которые только могут быть затронуты по ссылкам. ЛОЖЬ!!!! |
|||
146
sergeante
15.12.11
✎
14:26
|
(145) Если поле составное, то (144) всё верно говорит. Учите матчасть, и языком попусту не шлёпайте, коли не в теме
|
|||
147
МишельЛагранж
15.12.11
✎
14:27
|
(145) т.е. все-таки пользоваться не умеем?
и не судьба разглядеть, сколько еще таблиц подключается ТОЛЬКО ДЛЯ ОДНОГО (!!!) документа. а их можно запросить и тысячу. потому и ввели костыль - регистры, чтобы уж совсем не выглядеть полными идиотами. |
|||
148
Сисой
15.12.11
✎
14:27
|
(146) Конструкцию ВЫРАЗИТЬ() не пробовал использовать? Помогает.
|
|||
149
sergeante
15.12.11
✎
14:30
|
(148) пробовал, помогает. А зачем кричать лооожжж
|
|||
150
Сисой
15.12.11
✎
14:33
|
(147) Ну не подключается у меня ничего лишнего!
Пришли тогда свой кусок из профайлера. Сравним. Запрос я запостил. Версия 8.2.13.202 |
|||
151
Ёпрст
15.12.11
✎
14:36
|
(150) тут видать про поля составного типа грят - тогда подключаются все возможные таблички, из которых оно может состоять..
|
|||
152
МишельЛагранж
15.12.11
✎
14:39
|
(148) т.е. вы не в курсе, что ВЫРАЗИТЬ() - ничего сама не находит, а лишь приводит тип данных к базовому типу составного поля либо к указанному ссылочному (строка, число) ??
(150) да даже в вашем запросе несколько таблиц соединяется. |
|||
153
pumbaEO
15.12.11
✎
14:47
|
(152) Подскажите, какой тогда православный способ получить данные из нескольких таблиц?
"да даже в вашем запросе несколько таблиц соединяется", как видно из запроса, объект документ состоит из нескольких таблиц условно назовем Шапка и табличная часть. Если простые данные (дата, число) никаких join нов не делает. Покажите пример, плиз. Не могу понять по вашим постам, как бы вы хотели видеть выбор из таблиц??? |
|||
154
Сисой
15.12.11
✎
14:47
|
(152) У меня соединяется две таблицы: табличная часть документа и шапка документа. Именно так, как я просил.
Но в (132) написано: "1с тащит вдобавок ВСЕ смежные таблицы, которые только могут быть затронуты по ссылкам". Если речь о составных типах, то можно заменить ссылочное обращение на левые соединения с анализом типа ПО ОсновнаяТаблица.Реквизит ССЫЛКА Документ.АвансовыйОтчет И .... |
|||
155
Сисой
15.12.11
✎
14:50
|
Я писал разные запросы, для систем с разным количеством пользователей (рекорд - 4 Тб, более 500 пользователей) и ни разу не напарывался на непреодолимые ограничения языка запросов 1С. Самому лопухнуться и написать неэффективный запрос - это запросто, но грамотно написанный пакетный запрос работает быстро.
Вот с модификацией данных на больших БД - беда. |
|||
156
Сисой
15.12.11
✎
14:54
|
(152) >> .е. вы не в курсе, что ВЫРАЗИТЬ() - ничего сама не находит, а лишь приводит тип данных к базовому типу составного поля
в курсе, но функцию ВЫРАЗИТЬ() можно использовать не только в определении результирующих полей запроса, но и в условиях соединений. И тогда лишние таблицы не подключаются. |
|||
157
Сисой
15.12.11
✎
15:06
|
У языка запросов 1С есть только одно существенное ограничение, иногда мешающее.
Невозможность делать коррелируемые подзапросы. Остальное нормально. |
|||
158
ado
15.12.11
✎
15:15
|
(157) Здрасте, приехали. Делал я коррелированные подзапросы, всё нормально там работает. Хотя их лучше таки избегать.
|
|||
159
Ёпрст
15.12.11
✎
15:17
|
(158) :)))
Их в снеговике нет и не было.. |
|||
160
Ёпрст
15.12.11
✎
15:18
|
(157) на самом деле, там много чего не хватает
|
|||
161
Serginio1
15.12.11
✎
15:19
|
(143) "Бывают сны без сновидений, но не бывает сновидений без снов". БД выступает ввиде сна, а вот 1с LINQ2SQL и прочие ОРМ выступают в роли сна. Так что данные БД мы можем отобразить в объекты различными способами и технологиями и с помощью них изменять данные БД.
Так, что все связано. И советую на досуге изучить Linq to EF. Многое интересного для себя найдешь. |
|||
162
ado
15.12.11
✎
15:22
|
(159) Гонишь!
|
|||
163
Ёпрст
15.12.11
✎
15:27
|
(162) Ну приведи пример коррелированного подзапроса в снеговике.
Только НЕ через адо или другое прямое соединение, а штатненьким языком запроса 1с. |
|||
164
ado
15.12.11
✎
15:28
|
(143) Ссылка в 1С -- это самый обыкновенный искусственный ключ. Объектная модель 1С абсолютно прозрачно ложится на реляционную модель.
|
|||
165
Сисой
15.12.11
✎
15:28
|
(162) Ну напиши мне на 1С запрос:
Select 1 From TableA as A Where A.Field1 In (Select B.Field1 From TableB as B Where B.Field2>А.Field2) |
|||
166
ado
15.12.11
✎
15:29
|
(163) Подожди немного, работу доработаю и представлю.
|
|||
167
Ёпрст
15.12.11
✎
15:31
|
(166) такой большой и в сказки веришь.
:))) |
|||
168
Ёпрст
15.12.11
✎
15:33
|
можешь и такой написать, для простоты восприятия:
Select (Select top 1 B.Field1 From TableB as B Where B.Field2>А.Field2 order by B.Field2) as Pole from From TableA as A |
|||
169
rs_trade
15.12.11
✎
15:38
|
(166) ставь бутыль коньяка.
|
|||
170
LouRENs
15.12.11
✎
15:42
|
Catalog="";
IP=СокрЛП("10.3.1.105"); PASS="123"; Табличка=" |declare @d1 datetime |declare @d2 datetime |set @d1='"+Формат(НачалоПериода,"ДФ=ггггММдд")+"' |set @d2='"+Формат(КонецДня(НачалоПериода),"ДФ=ггггММдд")+"' | |Select DAC_NOART, |'Ижевск' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG001..MAG001.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) | |Union all |Select DAC_NOART, |'Тула' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG002..MAG002.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) | |Union all |Select DAC_NOART, |'Ногинск' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG003..MAG003.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) | |Union all |Select DAC_NOART, |'Тамбов' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG005..MAG005.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) |Union all |Select DAC_NOART, |'Старый Оскол' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG006..MAG006.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) | |Union all |Select DAC_NOART, |'Кострома' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG007..MAG007.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1) |Union all |Select DAC_NOART, |'Калуга' as Подразделение , |case when a.DAC_DTDEBUT<@d1 then @d1 else a.DAC_DTDEBUT end as 'датаНачалаАкции', |case when a.DAC_DTFIN>@d2 then @d2 else a.DAC_DTFIN end as 'датаКонцаАкции' from |MAG008..MAG008.MGDAC a | |where (a.DAC_DTDEBUT<=@d2 and a.DAC_DTFIN>=@d1)"; ТЗ=ПрочитатьТаблицуSQL(Табличка,НачалоПериода, КонецДня(НачалоПериода),"",PASS,IP,Catalog); Функция ПрочитатьТаблицуSQL(Табличка,Дата1, Дата2 = Неопределено,Магазин,PASS,IP,Catalog, Логгер = Неопределено) Экспорт Перем ТЗ; ТЗ=Новый ТаблицаЗначений; Состояние("Выполняется запрос к "+Магазин+" "+IP); СтрокаЗапроса =СокрЛП(Табличка); Стр="Provider=SQLOLEDB.METI;Password="+СокрЛП(PASS)+";Persist Security Info=True;User ID=sa;Initial Catalog="+Catalog+";Data Source="+СокрЛП(IP)+";"; Попытка Подключение = Новый COMObject("ADODB.Connection"); Подключение.ConnectionTimeOut =8600000; Подключение.CursorLocation = 3; Подключение.CommandTimeOut=0; Подключение.ConnectionString=Стр; Подключение.Open(); Command = Новый COMОбъект("ADODB.Command"); Command.CommandTimeout=0; Command.ActiveConnection = Подключение; Command.CommandText = СтрокаЗапроса; БД = Новый COMОбъект("ADODB.RecordSet"); БД.CacheSize=10000; Попытка БД = Command.Execute(); //Выполнение и получение набора данных Исключение Сообщить("Ошибка: " + ОписаниеОшибки()); Возврат ""; КонецПопытки; Исключение Сообщить("Ошибка: " + ОписаниеОшибки()); Возврат ""; КонецПопытки; ТЗ.Колонки.Очистить(); Для Шаг=0 По БД.Fields.Count-1 Цикл ТЗ.Колонки.Добавить(БД.Fields(Шаг).Name); КонецЦикла; Попытка Всего=БД.RecordCount; Исключение // Так и неопнял, почему нет поля RecordCount для sql Касс Всего=1; КонецПопытки; Сч=0; Пока БД.EOF=0 Цикл Сч=Сч+1; Состояние("Заполняется "+Сч+" строка "+Окр(Сч/Всего*100,4,РежимОкругления.Окр15как20)+"%"); ТЗСтр=ТЗ.Добавить(); Для Шаг=0 По БД.Fields.Count-1 Цикл ТЗСтр.Установить(Шаг,БД.Fields(БД.Fields(Шаг).Name).Value); КонецЦикла; БД.MoveNext(); КонецЦикла; БД.Close(); Подключение.Close(); Состояние("ТЗ заполнена "); Возврат ТЗ; КонецФункции |
|||
171
Ёпрст
15.12.11
✎
15:43
|
(170) читай (163)
|
|||
172
rsv
15.12.11
✎
15:46
|
Коллеги, вся фишка в том что используя язык запросов 1С нельзя достичь главного - управлять оптимизатором в целях постоения оптимального плана т.к. в голом T-SQL ( как пример) используют для этого подсказки томуже оптимизатору.
|
|||
173
rsv
15.12.11
✎
15:49
|
(155) Грамотно написанный пакетный запрос может дать scan и перевести это все в seek - как получится .Хоть тышуууу индексов добавляй. Перекраивать для этого таблицу в 4 Тр или использовать подсказку ..... думаю выберу последнее.
|
|||
174
Serginio1
15.12.11
✎
15:51
|
||||
175
rs_trade
15.12.11
✎
15:53
|
(143) но 1с - нереляционная БД. И никогда ею не была.
Бред какой то. Вы бы уважаемый, букварь что ли почитали для начала. Что бы понимать значения терминов, коими сыпете налево и направо. |
|||
176
Ёпрст
15.12.11
✎
15:59
|
(174) и ? Там нет коррелированного подзапроса.
:)))) |
|||
177
rsv
15.12.11
✎
15:59
|
(0) А собсноооо по теме . Ищите в дебрЯх инета мегаобработище под 1С результатом оной будет табличка где будет полный расклад полей и так и эдак и индексов и по русски как в конфигураторе и по аглицки в таблицах выбранной вами БД . А потом в зависимотси от типа СУБД ...
QA, MS , TOAD , SQL Navigator ну и там чере что еще можно ... хз :) |
|||
178
МишельЛагранж
15.12.11
✎
16:12
|
(175) это вы не знаете основ.
то, что 1с использует SQL - не дает 1с-у называться "реляционной". Признак реляционности какой? каждая ячейка таблицы содержит ДАННЫЕ. Что такое данные, понимаете? это число, двойное число, строка, вариант и т.д. а не хрень зашифрованную. |
|||
179
ado
15.12.11
✎
16:14
|
(169) А чо, я не против. Забьемся на 0.5 "Ноя"? Ёпрст3 , поддержишь?
|
|||
180
ado
15.12.11
✎
16:15
|
(178) Бу-га-га. То есть если в базе есть искусственные ключи, то всё, она уже не реляционная? Кодд в гробу перевернулся.
|
|||
181
Serginio1
15.12.11
✎
16:17
|
(176) ГДЕ
(РеализацияТоваровУслугТовары.Ссылка, РеализацияТоваровУслугТовары.НомерСтроки) В (ВЫБРАТЬ ПЕРВЫЕ 1 Док.Ссылка, Док.НомерСтроки КАК НомерСтроки ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Док ГДЕ Док.Ссылка = РеализацияТоваровУслугТовары.Ссылка // А это что? УПОРЯДОЧИТЬ ПО НомерСтроки УБЫВ,Количество УБЫВ)) КАК ВложенныйЗапрос ПО РеализацияТоваровУслуг.Ссылка = ВложенныйЗапрос.Ссылка |
|||
182
МишельЛагранж
15.12.11
✎
16:18
|
(180) ну разберитесь тогда, что такое - ключ в БД, и что такое - к примеру, электронный ключ от банковской ячейки.
Аналогия, кстати, прямая. |
|||
183
ДенисЧ
15.12.11
✎
16:20
|
(182) для начала ты почитай про суррогатные и составные ключи.
|
|||
184
ado
15.12.11
✎
16:20
|
(182) Аналогия, кстати, абсолютно кривая, и почитайте таки уже букварь, действительно, абы людей не смешить.
|
|||
185
МишельЛагранж
15.12.11
✎
16:21
|
(179) а потом говорят, что это в провинциях все пьяницы и лентяи.
"об алкоголизме других любят рассуждать сами алкоголики". |
|||
186
viktor_vv
15.12.11
✎
16:22
|
(178) Я конечно из той большей половины 1Сников, которые доступно и всерьез, но ты какую-ту фигню несешь в данном случае. Признак реляционности это использование для хранения данных отношений (таблиц).
Ты с нормализацией не путаешь. |
|||
187
МишельЛагранж
15.12.11
✎
16:23
|
ДенисЧ и все-все ado:
вопрос на засыпку студентам: КТО ПОЛЬЗУЕТ КЛЮЧИ В БД - НЕКИЙ "КЛИЕНТ"-ПАРАЗИТ ИЛИ ЯДРО СУБД? |
|||
188
МишельЛагранж
15.12.11
✎
16:24
|
(186) - ЭТО ВСЕГО ЛИШЬ ФОРМА.
суть реляционности - как хранится и какая логическая-алгортмическая структура для этого используется. |
|||
189
МишельЛагранж
15.12.11
✎
16:26
|
+ (188) .. а хранится в виде однородных полей, содержит данные, и связаны ключами-полями.
и никаких прослоек в виде дешифраторов и переводчиков. |
|||
190
ДенисЧ
15.12.11
✎
16:29
|
(187) Когда с клиента приходит запрос на выборку документа с определённой ссылкой - и клиент тоже.
|
|||
191
Ёпрст
15.12.11
✎
16:31
|
(179) легко.
(181) :))))))))))))))))) расмешил. |
|||
192
ado
15.12.11
✎
16:32
|
(189) >> и никаких прослоек в виде дешифраторов и переводчиков.
Ога-ога, в расово-православной РСУБД пользователь должен сугубо ручками SQL-запросы писать и фтыкать таблички. |
|||
193
Ёпрст
15.12.11
✎
16:35
|
(192)только Ной я не пью, давай так, напишешь - я тебе Ной, не напишешь ты мне на выбор : Наири\Праздничный\Ахтамар
|
|||
194
ado
15.12.11
✎
16:36
|
(193) Ок.
|
|||
195
Ёпрст
15.12.11
✎
16:36
|
Пишем то, что в 165 или в 168 на языке запросов 1с без использования адо и прочего прямого доступа к данным.
|
|||
196
rs_trade
15.12.11
✎
16:38
|
ado беги в магазин
|
|||
197
Serginio1
15.12.11
✎
16:39
|
(191) Ну читаем про http://kuzelenkov.narod.ru/mati/book/progr/progr3.html Коррелированный подзапрос никакого смеха не вызывает.
А вот Получения поля из результата запроса невозможно. Просвяти в чем я заблуждаюсь? |
|||
198
МишельЛагранж
15.12.11
✎
16:41
|
(186) кстати, не-табличных СУБД не существует.
а то, что использует 1с для хранения и обработки - аналог сетевой модели хранения данных. |
|||
199
МишельЛагранж
15.12.11
✎
16:42
|
+(198) которая к SQL никакого отношения не имеет - окромя того, что ВСЕ ТИПЫ СУБД ХРАНЯТ ДАННЫЕ В ТАБЛИЦАХ.
|
|||
200
Александр_
Тверь 15.12.11
✎
16:44
|
(199) слушай, я правильно понимаю, что у тебя основная притензия к 1С в том, что используются некие идентификаторы, которые сами по себе не являются данными, а служат только для организации объектной модели?
|
|||
201
viktor_vv
15.12.11
✎
16:45
|
(198) Скорее тогда уж сказать использует технологию объектно-реляционного отображения (Вики рулит :)).
|
|||
202
МишельЛагранж
15.12.11
✎
16:45
|
(192) вы запрос T-SQL посмотрите. И попытайтесь представить, как действует ядро СУБД.
И сравните с 1с запросами. |
|||
203
Serginio1
15.12.11
✎
16:45
|
+197 Сейчас проверю в Выбор когда и там должно сработать
|
|||
204
МишельЛагранж
15.12.11
✎
16:47
|
(200) нет, у меня претензии к тому, что нечего было изобретать веник, и плодить горе-программистов.
а использовать десятилетиями наработанный опыт как в обработке данных, так и в программировании. ну да, пришлось совсем чуть-чуть раскошелиться на роялти. |
|||
205
МишельЛагранж
15.12.11
✎
16:48
|
+(204) >>для организации объектной модели
- если бы настоящшая объектная модель была реализована, а не одноуровневая подделка.... |
|||
206
Александр_
Тверь 15.12.11
✎
16:49
|
(204) поясни, пожалуйста, о чем идет речь? Если можно подробнее, я что-то никак не врублюсь.
|
|||
207
Serginio1
15.12.11
✎
16:53
|
Стоп а чем принципиально 168 отличается от 174 ?
И результат получим тот который хотим, просто подойти нужно подругому. |
|||
208
МишельЛагранж
15.12.11
✎
16:54
|
(201) специально заглянул по вашим ссылкам в википедию:
"О(Р)СУБД интегрированы с Объектно-Ориентированным (OO) языком программирования, внутренним или внешним как C++, Java. Характерные свойства ОРСУБД - 1) комплексные данные, 2) наследование типа, и 3) объектное поведение." отсюда: - вы не читаете, или читаете, но не хотите воспринимать прочитанное. - ясно описано, что 1с к О(Р)СУБД никаким боком не прислоняептся даже - четко указаны характеристики ОПП. как говорится - Россия, вперед, уже понятно, каким наше будущее будет. |
|||
209
Reset
15.12.11
✎
16:54
|
Процесс циклический: 1. месяц-два Мишель сидит в своей лечебнице и зубрит термины из справочников, запоминает части фраз(выбранные хаотично). 2.Периодически сбегает оттуда (или иным способом добирается до интернета) и вываливает все запомненные куски на форум. 3. Goto 1.
|
|||
210
МишельЛагранж
15.12.11
✎
16:57
|
(206) 1с "изобрела" некую систему хранения и выдает её за новацию, хотя я уже написал, что это за система.
1с не желает использовать мировой опыт в чем бы то ни было. 1с всеми силами ищет свой путь, используя "идеологически вредные буржуазные" способы и средства, и ставя своих пользователей в положение "терпил". |
|||
211
viktor_vv
15.12.11
✎
16:58
|
(208) В (201) про О(Р)СУБД ничего не написано, там про технологию отображения объектной модели на реляционную СУБД. Как раз под 1С это и подходит.
|
|||
212
Serginio1
15.12.11
✎
16:59
|
(191) Так непойдет
Выбрать Таблица2.Поле из Таблица1 как Таблица1,Таблица2 как таблица 2 Где Таблица2.Поле в (Выбрать первые 1 из Таблица2 как т когда Таблица2.поле>Таблица1.Поле) |
|||
213
Александр_
Тверь 15.12.11
✎
17:00
|
(210) звучит уж ОЧЕНЬ не конкретно.
Можно более конкретно? |
|||
214
МишельЛагранж
15.12.11
✎
17:01
|
(211) 1с - это ни разу не объектная модель ХРАНЕНИЯ ДАННЫХ.
это чуть-чуть шкура от ООП, высушенная и покрашенная. собственно, читайте внимательно wiki:Объектно-реляционная_СУБД ключевые слова: "особенность и отличие объектно-реляционных, как и ОБЪЕКТНЫХ, СУБД от реляционных заключается в том, что..." |
|||
215
МишельЛагранж
15.12.11
✎
17:05
|
(213) вон в (209) чьи-то побеги отслеживает, потом кого-то ловит и сажает обратно.
может, он знает. а что я думаю по этому поводу - давно написал в массе других тем. ищите поиском по словам "...а теперь хочется грязно ругаться" )) |
|||
216
МишельЛагранж
15.12.11
✎
17:08
|
и усвойте наконец, что назвать что-то объектом, и из-за назвать всю среду "ООП" - это аналогично переименованию милиции в полицию: переименовали и назвали всех полицейскими.
|
|||
217
ДенисЧ
15.12.11
✎
17:09
|
Ммм... А что, кто-то 1с называет ООП? У Вас, Мишель, галлюцинации...
|
|||
218
orefkov
15.12.11
✎
17:09
|
Шизофазия полная.
|
|||
219
rs_trade
15.12.11
✎
17:09
|
(216) хорошо, хорошо. мы все усвоили. хватит уже.
|
|||
220
Reset
15.12.11
✎
17:10
|
(215) Я не отслеживаю специально. Просто Ваши выступления очень колоритны, их сложно не заметить.
|
|||
221
viktor_vv
15.12.11
✎
17:11
|
Кстати да, уже вроде все давно поняли и простили, что 1С не совсем ООП :).
(214) Я про это. wiki:ORM http://lib.custis.ru/Современные_технологии_объектно-реляционного_отображения |
|||
222
Ёпрст
15.12.11
✎
17:14
|
(212) так пойдет, а вот в селект листе - болт
|
|||
223
Serginio1
15.12.11
✎
17:21
|
(222) А что такое селект лист?
|
|||
224
Serginio1
15.12.11
✎
17:23
|
(222) Многого в 1С нет, но на то мы и програмисты неищущие простых путей. На обычном то SQL или Linq работать то слишком просто.
|
|||
225
ado
15.12.11
✎
18:15
|
(165)
Проверил, вроде, отрабатывает правильно. Где я могу подойти заблать свой коньяк? |
|||
226
Ёпрст
15.12.11
✎
18:18
|
(225)а (168) ?
Пока, только чекушка :) А так пиши координаты, прибежит курьер |
|||
227
ado
15.12.11
✎
18:20
|
Честно говоря, (168) я не понял.
|
|||
228
Ёпрст
15.12.11
✎
18:24
|
(227)Типа такого, но это них..ра не работает :)
"ВЫБРАТЬ | ТаблицаА.Поле1 КАК ТаблицаАПоле1, | (Выбрать Первые 1 | ТаблицаБ.Поле1 | ИЗ | Справочник.ТаблицаБ КАК ТаблицаБ | ГДЕ | ТаблицаБ.Поле2 > ТаблицаА.Поле2 упорядочить по ТаблицаБ.Поле2 ) как Поле3 |ИЗ | Справочник.ТаблицаА КАК ТаблицаА |
|||
229
Ёпрст
15.12.11
✎
18:26
|
Вот только я не помню, с какого релиза (225) стало рабочим ?
Раньше, даже это не поддерживалось. А так, пиши координаты, могу тупо деньгой выслать. |
|||
230
Serginio1
15.12.11
✎
18:44
|
(229) На 8.2. Но таоо плана уже писал на 8.13.219. Тоже долго голову ломал как прикрутить первые 1 в подзапросе. Нашел, но не так все просто. И выход выгрузить данные в таблицу проиндексировать, а затем выбирать из этой таблицы первые в подзапросе
|
|||
231
rs_trade
15.12.11
✎
19:11
|
(229) да нифига. ничья получается. ибо какие моменты работают, а какие то нет.
|
|||
232
Ёпрст
15.12.11
✎
19:17
|
(231) а в 8.1 хоть что-то работает ?
|
|||
233
rs_trade
15.12.11
✎
19:52
|
(232) Да кто же помнит то. Надо бы через профайлер глянуть как 1С (225) раскладывает. Ибо если бы корр. подзапросы были реализованы в 1С, то целиком и полностью. А не отдельными моментами. А так, может на два запроса разбивает.
|
|||
234
ado
16.12.11
✎
09:04
|
(228) Так то проблема не в коррелированных запросах, а в том, что 1С не признает, что результатом подзапроса будет непременно скаляр и его можно по этому на место поля втыкать.
|
|||
235
ado
16.12.11
✎
09:36
|
+(234) То есть вот это:
тоже не будет работать, хотя никакой коррелированостью тут и не пахнет. |
|||
236
ado
16.12.11
✎
09:56
|
Короче, каниаг я заработал ;-)
|
|||
237
Serginio1
16.12.11
✎
10:32
|
(235) Смотри v8: Подзапросы с Выбрать Первые
|
|||
238
rs_trade
16.12.11
✎
12:18
|
(236) А условия в (195) не выполнены то ))
|
|||
239
ILM
гуру
16.12.11
✎
12:25
|
Мне вся ветка напомнила древнегреческий симпозиум, где все философы пьяные.
|
|||
240
МишельЛагранж
16.12.11
✎
12:48
|
любителям и "знатокам" прямых запросов в 1с8 - пожалте:
Разный результат запроса на MS SQL и PostrgreSQL "https://1cers.ru/topic.php?id=585704" |
|||
241
Ёпрст
16.12.11
✎
13:03
|
(236) ну дык, реквизиты в студию..
Хотя, не реализованы они тама до конца |
|||
242
Serginio1
16.12.11
✎
13:49
|
(238) Началось все с 157. А по определению Коррелированных подзапросов это можно делать и в снеговике. А вот что касается использование Запроса в поле, а также сравнение с результатом подзапроса этого сделать нельзя. Да и побольшому счету ненужно, т.к. соединения рулят. А вот для выбрать первые они необходимы. В итоге получаем один и тотже результат с примением Коррелированных подзапросов.
Короче есть много куда 1С совершенствоваться. В том числе и присвоение переменным данных запросов итд. А то проще многие запросы пешать через прямые запросы. |
|||
243
Serginio1
16.12.11
✎
15:02
|
(242) + Вообще 1С нужно привести к стандарту SQL.
Напрмер в Linq to EF из-за ограничений Linq можно писать запросы, где имена полей вроде как разыменовываются и можно использовать всю мощь SQL. Что можно было бы использовать и в 1С. Напрмер отлючить проверку функций или дополнять синтаксис позволяя парсеру запросов обходить нужные директивы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |