Имя: Пароль:
1C
1С v8
Как в 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)

ТекстЗапроса =
   "ВЫБРАТЬ
   |    ТаблицаА.Поле1 КАК ТаблицаАПоле1,
   |    ТаблицаА.Поле2 КАК ТаблицаАПоле2
   |ИЗ
   |    Справочник.ТаблицаА КАК ТаблицаА
   |ГДЕ
   |    ТаблицаА.Поле1 В (ВЫБРАТЬ
   |        ТаблицаБ.Поле1 КАК ТаблицаБПоле1
   |    ИЗ
   |        Справочник.ТаблицаБ КАК ТаблицаБ
   |    ГДЕ
   |        ТаблицаБ.Поле2 > ТаблицаА.Поле2)";


Проверил, вроде, отрабатывает правильно. Где я могу подойти заблать свой коньяк?
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) То есть вот это:

ВЫБРАТЬ ПЕРВЫЕ 1
   ТаблицаА.Поле1,
   (ВЫБРАТЬ ПЕРВЫЕ 1
   ТаблицаБ.Поле2
ИЗ
   Справочник.ТаблицаБ КАК ТаблицаБ) КАК Поле3
ИЗ
   Справочник.ТаблицаА КАК ТаблицаА

тоже не будет работать, хотя никакой коррелированостью тут и не пахнет.
236 ado
 
16.12.11
09:56
Короче, каниаг я заработал ;-)
237 Serginio1
 
16.12.11
10:32
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С.
Напрмер отлючить проверку функций или дополнять синтаксис позволяя парсеру запросов обходить нужные директивы.
Независимо от того, куда вы едете — это в гору и против ветра!