![]() |
|
Как в 1с пишутся прямые запросы? | ☑ | ||
---|---|---|---|---|
0
Domovoi
09.12.11
✎
12:45
|
Интересует следующий момент: как организовать написание прямого запроса в 1с? Без использования внешних компонент или библиотек.
Возможно есть какая-нибудь книга, посоветуйте. |
|||
1
0xFFFFFF
09.12.11
✎
12:47
|
(0) все обычно мышкой пишут. Правда не сильно прямой, но и геморроя на порядки меньше.
А тебе зачем? |
|||
2
sttt
09.12.11
✎
12:47
|
да просто "select * from МойТаблица"
|
|||
3
Wobland
09.12.11
✎
12:47
|
(0) платформа нужна
|
|||
4
Александр_
Тверь 09.12.11
✎
12:48
|
(2) + 1
что тут еще посоветовать? и традиционный вопрос: нафига? ) |
|||
5
sda553
09.12.11
✎
12:49
|
(0) А как организованы запросы не в 1С? Без библиотек и компонентов?
|
|||
6
Domovoi
09.12.11
✎
12:50
|
(1)Ну так, интересно.
(2)Т.е. я просто пишу SQL запрос и он работает? Запрос = Новый Запрос; Запрос.Текст = "select * from МойТаблица"; Запрос.Выполнить(); Так? (5)Там и так все работает. |
|||
7
Wobland
09.12.11
✎
12:51
|
(6) сработает
|
|||
8
ДенисЧ
09.12.11
✎
12:53
|
мдя...
|
|||
9
sttt
09.12.11
✎
12:53
|
(6) есть объект "Внешние источники данных" вот там балуйся
|
|||
10
Domovoi
09.12.11
✎
13:09
|
Запрос = Новый Запрос;
Запрос.Текст = "select * from МойТаблица"; Запрос.Выполнить(); Я так понял это вот я заменил просто 1совский запрос английскими словами, но вытащить данные из SQL таблиц я не могу. Я так понимаю что что-то дополнительно надо писать, а что именно? |
|||
11
Domovoi
09.12.11
✎
13:10
|
+(10)Я может не правильно понимаю? Прямой запрос - это который напрямую к SQL таблицам обращается? В общем мне надо именно к ним обратиться.
|
|||
12
shuhard
09.12.11
✎
13:12
|
(11) ну и чем тебя ADODB не устроил
|
|||
13
Domovoi
09.12.11
✎
13:12
|
(9)Это я так понимаю в 8.2?
|
|||
14
big
09.12.11
✎
13:13
|
Кто это был в (0) ?????
|
|||
15
Domovoi
09.12.11
✎
13:14
|
(12)Не говорите загадками. Лучше подскажите, что к чему куда.
|
|||
16
Domovoi
09.12.11
✎
13:15
|
(14)Варианты ответа?
|
|||
17
zling
09.12.11
✎
13:15
|
(15) тут посмотри http://infostart.ru/public/92746/
|
|||
18
rs_trade
09.12.11
✎
13:15
|
(6) пятничная ветка сюда перебирается?
|
|||
19
big
09.12.11
✎
13:16
|
(16) Тут специалист нужен, он бы понял мой ответ
|
|||
20
Domovoi
09.12.11
✎
13:19
|
(17)Спасибо. Буду изучать.
|
|||
21
shuhard
09.12.11
✎
13:19
|
(15) RTFM
|
|||
22
Domovoi
14.12.11
✎
15:28
|
Есть несколько вопросов. На сколько я понял при использовании объекта Внешние источники данных вначале подключаемся к базе SQL для этого нам нужен логин и пароль, а без них никак?
Вообще прямые запросы можно писать не зная логина и пароля к базе SQL? Провобал еще писать как указано тут http://infostart.ru/public/17202/ , но то что написано английским вызывает ошибки, как надо? Может у кого-то есть пример прямого запроса, без доп объектов или компонент или библиотек? |
|||
23
shuhard
14.12.11
✎
15:31
|
(22) в 99% случаев это "sa" + пусто
|
|||
24
Domovoi
14.12.11
✎
15:37
|
В любом слчае я не могу использовать Внешние источники данных. Надо просто кодом в обработке написать.
|
|||
25
Rovan
гуру
14.12.11
✎
15:38
|
(24) т.е. ты хочешь прочитать не данные БД 1С в SQL
а что-то другое ? |
|||
26
Asmody
14.12.11
✎
15:39
|
(22) [для этого нам нужен логин и пароль, а без них никак?] — это пятЬ!
|
|||
27
shuhard
14.12.11
✎
15:40
|
(24)[В любом слчае я не могу использовать Внешние источники данных. Надо просто кодом в обработке написать.]
просто кодом + без доп объектов или компонент или библиотек = низяяяяяяяяяяяяяяяяяяя |
|||
28
Александр_
Тверь 14.12.11
✎
15:40
|
(26) это не пять, это больше!
Ну попробуй в обработке написать: "О башой и магучий SQL, ну пусти меня, ну пажалуста.... не знаю я паролей и знать не хочу" |
|||
29
DmitrO
14.12.11
✎
15:42
|
(22)к некоторым серверам, например к mssql, можно и без логина и пароля
|
|||
30
ДенисЧ
14.12.11
✎
15:45
|
(29) Ага. Если dba об этом позаботился...
|
|||
31
Shurjk
14.12.11
✎
15:46
|
А зачем? -уже было?
|
|||
32
shuhard
14.12.11
✎
15:47
|
(30) ну понеслось,
сейчас ТС будут учить xp_cmdshell |
|||
33
rs_trade
14.12.11
✎
15:48
|
(23) насколько я помню, в последних версиях обязательно при инсталле указывать пароли.
|
|||
34
aleks-id
14.12.11
✎
15:48
|
в 1с прямые запросы пишутся прямыми руками (с)
|
|||
35
Domovoi
14.12.11
✎
15:48
|
(27)Получается в ссылке которую я привел в (22) обманули? Или я что-то не понял?
|
|||
36
Evil-Wisp
14.12.11
✎
15:50
|
И всетаки, что можно получить такого прямым запросом, чего нельзя получить встроеным в 8.1(2)?
|
|||
37
stix2010
14.12.11
✎
15:50
|
(27) если без объектов и компонент, то напиши функции доступа нужного sql сервера в 1с коде, иначе пользуйся тем что дают
|
|||
38
stix2010
14.12.11
✎
15:51
|
тьфу, (37) -> (24)
|
|||
39
Domovoi
14.12.11
✎
15:52
|
(36)А как к таблице обратиться, если 1с8 ее не видит?
|
|||
40
Rovan
гуру
14.12.11
✎
15:55
|
(36) данные SQL не относящиееся к базам 1С
|
|||
41
Shurjk
14.12.11
✎
15:55
|
(39) Может проще сделать чтоб видело?
|
|||
42
MORRoz
14.12.11
✎
15:57
|
(39) Пока не опишешь зачем тебе это, почему не хочешь по-другому и не представишь полную ситуацию - никто не даст тебе полный ответ.
В целом - все варианты уже перечислили. |
|||
43
rs_trade
14.12.11
✎
15:57
|
(36) обработать данные на порядок быстрее, чем средствами 1С.
|
|||
44
Александр_
Тверь 14.12.11
✎
15:57
|
Короче, уважаемый специально для тебя накидал пример одного из возможных вариантов получения данных из SQL. (в данном случае из MySQL)
Процедура Пример() АутентификацияПрошла=Ложь; СерверSQL = "10.0.0.1"; БазаSQL = "base"; ПользовательSQL = "root"; ПарольSQL = "*****"; Connection = Новый COMОбъект("ADODB.Connection"); Попытка Connection.Open ("DRIVER={MySQL ODBC 5.1 Driver};SERVER="+СерверSQL+";PORT=3306; DATABASE="+БазаSQL+";uid="+ПользовательSQL+";pwd="+ПарольSQL+";"); Исключение сообщить(ОписаниеОшибки()); возврат; КонецПопытки; RS = Новый COMОбъект("ADODB.RecordSet"); // ВОТ ОН! "ПРЯМОЙ" запрос RS.Open("SELECT * FROM trm_in_input_templates", Connection); // здесь сохраним результат ТаблицаРезультат = новый ТаблицаЗначений; // создаем поля таблицы Для НомерСтолбца = 0 По Rs.Fields.Count-1 Цикл ИмяНовойКолонки = Rs.Fields(НомерСтолбца).Name; ТаблицаРезультат.Колонки.Добавить(ИмяНовойКолонки, ОписаниеТипов); КонецЦикла; // идем в начало списка Если Не Rs.eof Тогда rs.MoveFirst(); КонецЕсли; // для каждой полученной записи Пока Не Rs.eof Цикл НоваяСтрока = ТаблицаРезультат.Добавить(); // заполняем строку Для каждого Колонка из ТаблицаРезультат.Колонки Цикл ИмяКолонки = Колонка.Имя; Значение = Rs.Fields.Item(ИмяКолонки).Value; Если значение <> Null Тогда НоваяСтрока[ИмяКолонки] = Значение; КонецЕсли; КонецЦикла; // переходим к сл. строке rs.MoveNext(); КонецЦикла; КонецПроцедуры; |
|||
45
Aleksey
14.12.11
✎
15:59
|
(36) Язык запроса 1С очень урезан по сравнению с языком SQL.
|
|||
46
DmitrO
14.12.11
✎
15:59
|
(39)Щас тебя еще местные пугатели будут пугать, что при этом ты нарушаешь закон.
|
|||
47
Aleksey
14.12.11
✎
15:59
|
(46) Не закон, а по мнению 1С нарушаешь ЛС
|
|||
48
stix2010
14.12.11
✎
16:01
|
опередили, буду банален, adodb тебе в помощь.
А что 8.2 в клиент-сервере тормозит? Может ты просто неправильно готовишь? |
|||
49
МишельЛагранж
14.12.11
✎
16:03
|
утомляют как упертые "дайте загрузится из SQl", так и 1с-ники, не могущие (или не знающие?), как объяснить все придурости 1с.
собственно, по ссылке выше все видно: загружаются примитивные типы данных, и то с большим трудом. из таблиц самой 1с ничего путного извлечь нельзя - там ссылки одни, а по ним самое голавное хранится. а запрос к не-1с SQL базе - пожалуйста, что угодно. вот здесь подробно недавно обсуждали в 100тысячный раз: http://forum.infostart.ru/forum24/topic45012/ |
|||
50
Domovoi
14.12.11
✎
16:04
|
(41)Так ну вообщем, сел изучать прямые запросы(как попой чуствовал), и тут подкинули задачку, кто-то ее делал, но не доделал и скинули мне. Смысл не особо думаю важен, от меня требуется считывать некоторые данные таблиц SQL, а так же записывать ну и анализировать их в 1с(в 1с это я уже умею:)). Доп библиотеки нельзя использовать(хз как проверить используется ли 1с++ уже?) Попросили написать все в обработке + можно модуль сделать, Внешние источники данных нельзя пользоваться, открыв базу увидел, что его и нет возможности добавить. Логин и пароль от SQL не дали, если надо то дадут, просто у прогера который до меня писал я не нашел чтоб он вводил пароль и логин. Собственно все.
|
|||
51
МишельЛагранж
14.12.11
✎
16:05
|
+49 почему именно так все дело обстоит - копайте "3хзвенная архитектура 1с", вечернее домашнее чтение.
|
|||
52
МишельЛагранж
14.12.11
✎
16:06
|
(44) ему, я так понял, надо чтоб как в 77 - данные 1с-а получать напрямую из базы SQL, ибо "че-то херово работает 1с-ый запрос".....
|
|||
53
МишельЛагранж
14.12.11
✎
16:07
|
+ (44) у вас что в полях таблицы trm_in_input_templates хранится?
|
|||
54
Александр_
Тверь 14.12.11
✎
16:08
|
(52) ну судя по (50)
>> от меня требуется считывать некоторые данные таблиц SQL, а так же записывать ну и анализировать их в 1с(в 1с это я уже умею:)). где-то в сторонней базе хранятся дополнительные данные (у меня, к примеру, это данные траффике посетителей в магазине, данные дает строронняя система) я эти данные получаю (при формировании отчета) и миксую с продажами т.е. вывожу продажи по часам, количество посетителей и считаю хитрые коэффициенты. Может и ему что-то подобное надо? |
|||
55
Александр_
Тверь 14.12.11
✎
16:09
|
(53) в данном примере совершенно не важно что там хранится т.к. это просто пример. С тонкосятями будет разбираться после того как в основах разберется. Но для справки там варчары лежат.
|
|||
56
Александр_
Тверь 14.12.11
✎
16:10
|
к(54) считываю = расчитываю
|
|||
57
МишельЛагранж
14.12.11
✎
16:11
|
(50) >>прямые запросы(как попой чуствовал)
- если бы попа что-то у вас чувствовала, то вы бы ощутили, насколько в 8 погано с обработкой данных СУБД. И совсем нет никаких "прямых запросов" а-ля 7. >> считывать некоторые данные таблиц SQL - примеры выше - для не-1с баз. >> Доп библиотеки нельзя использовать(хз как проверить используется ли 1с++ уже?) - 1с++ нет вообще в 8, допбиблиотеки для 8 пока за рамки графических примочек не ушли. |
|||
58
Domovoi
14.12.11
✎
16:12
|
1Вопрос. Значит мне точно нужен логин и пароль? Если да то я не буду париться спрошу просто и все у заказчика.
|
|||
59
stix2010
14.12.11
✎
16:12
|
(50) данные то у тебя 1С-ные?
|
|||
60
МишельЛагранж
14.12.11
✎
16:12
|
(55) т.е. 1с преобразует типы корректно?
|
|||
61
Domovoi
14.12.11
✎
16:13
|
(59)А это как понять?)
|
|||
62
Александр_
Тверь 14.12.11
✎
16:13
|
(58) для подключения к базе в любом случае логин и пароль нужен, другой вопрос где его указывать. Можно указывать в 1С, а можно в системе настроить подключение и там указать логин и пароль, а в 1С вызывать нужное подключение (с уже указанным логином и паролем)
|
|||
63
stix2010
14.12.11
✎
16:14
|
(61) таблицы sql 1с-ой базы или сторонние данные?
|
|||
64
МишельЛагранж
14.12.11
✎
16:15
|
(63), (54) >> Может и ему что-то подобное надо?
похоже, он сам не знает.... |
|||
65
МишельЛагранж
14.12.11
✎
16:15
|
(61) в базу SQL какая программа пишет?
|
|||
66
МишельЛагранж
14.12.11
✎
16:16
|
да, "от меня требуется считывать некоторые данные таблиц SQL, а так же записывать ну и анализировать их в 1с(в 1с это я уже умею:))" - у вас там все так не понимают?
|
|||
67
Александр_
Тверь 14.12.11
✎
16:16
|
(60) да, там просто строки. В некоторых случаях числа. Ничего криминального нет. Но даже если бы и было, не вижу проблем преобразовывать как мне надо. Более того, структура той БД не совсем простая, там также используются различные ID, требуется соединять много таблиц чтобы выбрать нужные данные, но это уже детали.
|
|||
68
Domovoi
14.12.11
✎
16:16
|
(63)1сной, на сколько я понял.
|
|||
69
stix2010
14.12.11
✎
16:18
|
(63) гы гы гы гы гы, когда поймешь на 100%, тогда можно продолжить
|
|||
70
Domovoi
14.12.11
✎
16:19
|
Ладно дали что-то поизучать, дали пример и надо логин и пароль спросить. Буду копаться, пока не стоит вас больше мучать)
|
|||
71
Александр_
Тверь 14.12.11
✎
16:20
|
(68) да нихрена ты не понял.
Есть объект в 1С (документ, справочник и т.д.), для реализации этого объекта на SQL сервера создаются какие-то таблицы. Эти таблицы заполняются платформой. Легко и просто получить из них данные ты НЕ МОЖЕШЬ. Да и не нужно это. А вот если у тебя данные какой-то другой системы т.е. просто SQL база в которой данные лежат в более-менее понятном виде - получай сколько угодно. |
|||
72
Александр_
Тверь 14.12.11
✎
16:22
|
ппц, обсуждение на уровне - меня попросили написать прошение в конституционный суд США. Английский алфовит я в книжке видел, что делать дальше?
|
|||
73
Domovoi
14.12.11
✎
16:22
|
(71)Короче как я понял. 1с подрублена к sql, там дальше чем-то создали несколько таблиц левых и с ними мне надо обмениваться.
Блин дайте что почитать))) |
|||
74
Domovoi
14.12.11
✎
16:22
|
(72)А на каком уровне должно быть? Дали задачу, решай, а с чего начать я хз, вот и пишу сюда.
|
|||
75
stix2010
14.12.11
✎
16:22
|
если 1с база, то есть масса других способов, опять же от зависит от конфы, иногда проще КД использовать
|
|||
76
Александр_
Тверь 14.12.11
✎
16:22
|
да пожалуйста:
http://www.ozon.ru/context/detail/id/3482233/ |
|||
77
Александр_
Тверь 14.12.11
✎
16:23
|
(74) ну ты попробуй дать задачу сантехнику починить твой телек. Результат будет анналогичным твоему.
|
|||
78
МишельЛагранж
14.12.11
✎
16:23
|
(67) еще раз про реляционные базы и отличия их от "типа СУБД 1с":
в РБД вы соединяете ТАБЛИЦЫ и поля в них по ключам, посик - по индексам. все просто и понятно, работает как самолет. в 1с вы находите ССЫЛКУ, и по ней ищете другое поле в ДРУГОЙ таблице, которое тоже может быть ссылкой и вести дальше... т.е. НЕТ алгоритма как это "автоматизировать", а надо тупо искать ссылки и выуживать по ним след данные... чем и занимается 1с-сервер... почему и времени у него уходит миллион лет... почему и SQL сервер выдает 1с-севреру все, что сколько-нибудь связано с данными запрошенными, все таблицы целиком, порой до миллионов записей доходит за раз.. сколько бы не убеждали сторонники "1с сделала революцию в обработке данных!", что все не так, а выбирается корректно, нежно и красиво... так что сравннеи ябыть не может в принципе - SQL и 1с-поделка ))) |
|||
79
МишельЛагранж
14.12.11
✎
16:25
|
(73) >> там дальше чем-то создали несколько таблиц левых и с ними мне надо обмениваться.
- где, в базе 1с???? |
|||
80
МишельЛагранж
14.12.11
✎
16:26
|
(71) ну (78) больше к ТС, чем к вам )))
|
|||
81
stix2010
14.12.11
✎
16:26
|
(73) если дело так обстоит то в (44) тебе дали рецепт adodb к ms sql есть на каждом компьютере с установленным толстым клиентом
|
|||
82
Александр_
Тверь 14.12.11
✎
16:26
|
(78) что-то я тебя не пойму. Мы сейчас про то "как это делает сервер 1С" или о том как данные хранятся и получаются в обход сервера 1с?
|
|||
83
DmitrO
14.12.11
✎
16:27
|
МишельЛагранж сегодня жгёт.. :)
|
|||
84
МишельЛагранж
14.12.11
✎
16:27
|
(81) далеко не на каждом, даже если винда стоит... опять же надо проверять драйвер и совместимость ))
а если база 1с - то все советы не помогут... |
|||
85
Domovoi
14.12.11
✎
16:29
|
(76)По теме почитать, а не лишь бы что.
|
|||
86
МишельЛагранж
14.12.11
✎
16:31
|
(82) в обход нельзя ничего получить, окромя несвязанного набора данных..
а нужны объекты, а не набор бессмысленных строк и чисел. Так ведь? )) (83) Дима, когда будет КонсольЗапрсоов с прямыми запросами к базе SQL? ))) (85) по теме - если база SQL от 1с-а, то читайте !запросы 1с!, и забудьте про SQL-базу. |
|||
87
Александр_
Тверь 14.12.11
✎
16:35
|
(86)
>> в обход нельзя ничего получить, окромя несвязанного набора данных.. э... а что мешает использовать: ПолучитьСтруктуруХраненияБазыДанных? Синтаксис: ПолучитьСтруктуруХраненияБазыДанных(<Объекты метаданных>, <Имена базы данных>) Описание: Получает информацию о структуре таблиц базы данных для переданных в качестве параметра массива имен объектов метаданных или массива объектов метаданных для административных действий с ней. Если параметр не используется, то возвращаемая таблица значений содержит информацию о структуре таблиц базы данных всех объектов метаданных. |
|||
88
stix2010
14.12.11
✎
16:36
|
(84) драйвера это проблемы админа,
я кажется понял у ТС в базе 1с-ки есть таблицы созданные не в 1С с примитивными данными. |
|||
89
Александр_
Тверь 14.12.11
✎
16:37
|
(88) >> я кажется понял у ТС в базе 1с-ки есть таблицы созданные не в 1С
если это так, руки оборвать тому кто такое придумал. |
|||
90
МишельЛагранж
14.12.11
✎
16:37
|
(87) а что вы с этой структурой делать будете? )
ну получили, узнали таблицы. (78) прочитайте еще раз )) |
|||
91
Александр_
Тверь 14.12.11
✎
16:40
|
(90) все зависит от задачи. Я из реальных задач встречал только необходимость для 300.000 документов заполнить вновь созданный реквизит неким значением (простым) отличным от значения по умолчанию.
Через 1С это обещало делаться порядка 3х дней. Прямым запросом сделалась какое-то не значительное время. А так, к примеру, при большом желании, можно получить данные какого либо документа. Причем никто не мешает вместо ссылок на ссылочные типы данных получить их представления из соответствующих таблиц. Сразу скажу, сам этого не делал, но и серьезных проблем вроде как быть не должно (при известной структуре данных) |
|||
92
DmitrO
14.12.11
✎
16:41
|
>>Дима, когда будет КонсольЗапрсоов с прямыми запросами к базе SQL? )))
Прямые запросы к родным данным базы 1С v8 не нужны, т.к. штатные запросы имеют вполне достаточную функциональность. Запросы к чужим данным отлично работают через ADO. |
|||
93
МишельЛагранж
14.12.11
✎
16:41
|
(89) еще раз:
в РБД связь таблиц - поле перекрывает поле, поле одной таблицы - связь с полем другой таблицы (не ячейки!). реальные данные получаете почти сразу (именно за счет избыточности многих таблиц - добавляются "лищние" дуболяжи полей, зато поиск и запрос - мгновенно )) 1с: связь между таблицами - ячейка-ячейка: прыгаете туда-сюда, и ищете в этом клубке реальные данные. Реальные данные получают не по индексу поля/таблицы, а сначала найдя значения ячейки, расшифровав его, потом следующее, и далее... если по-простому )) |
|||
94
Александр_
Тверь 14.12.11
✎
16:42
|
вот с записью могут быть проблемы т.к. необходимо обеспечить ссылочную целостность БД, да и вообще не нарушить какие-нибудь внутренние механизмы. А вот читать... не должно быть особых проблем (ну кроме замороченной структуры данных)
|
|||
95
stix2010
14.12.11
✎
16:43
|
(83) ксати, где то я уже видел консоль запросов через adodb
|
|||
96
МишельЛагранж
14.12.11
✎
16:43
|
(91) если только все доки будут одинаковы ))
>> А так, к примеру, при большом желании, можно получить данные какого либо документа. - если все доки будут одинаковыми )) или пишите свой 1с-сервер )) |
|||
97
Александр_
Тверь 14.12.11
✎
16:44
|
(96) возможно :) в целом я не великий спец по SQL, но серьезных трудностей пока не встречал.
|
|||
98
МишельЛагранж
14.12.11
✎
16:45
|
(97) дело не в SQL, дело в структур хранения данных 1с...
а SQL так, как коробка для кубиков используется, где кубиками - рулит 1с-сервер... |
|||
99
Александр_
Тверь 14.12.11
✎
16:46
|
(98) скаже так, данные есть? есть. информация о структуре есть? есть. Руки есть? есть. Растут из нужного места? да.
Остальное решаемо :) Главное чтобы была соответствующая мотивация. |
|||
100
Grusswelle
14.12.11
✎
16:47
|
100!
|
|||
101
shuhard
14.12.11
✎
16:49
|
(92) угу,
а в связке в ADOX и вовсе творят чудеса |
|||
102
МишельЛагранж
14.12.11
✎
16:51
|
(99) а вам 1с тогда зачем? ))
|
|||
103
Александр_
Тверь 14.12.11
✎
16:53
|
(102) не опять же, тут речь идет о всяких таких вот мега-непонятных хотелках как у ТС.
А так, как описано в (91), один раз только сталкивался. Нафиг не надо лезть в таблицы самой 1С. |
|||
104
stix2010
14.12.11
✎
16:55
|
||||
105
МишельЛагранж
14.12.11
✎
16:57
|
(103) кстати, пример (44) мускул на этой же машине? а примера подключения по инету нет? по php-админ там или напрямую... ))
|
|||
106
Serginio1
14.12.11
✎
16:58
|
(103) Мне приходится грузить многомиллионные прайсы с помощью Merge. Делать прямые запромы для сайта с большими выборками, т.к. Вэб сервисы избыточны итд.
Массово удалять изменять регистры значений. Со всем остальным 1С прекрасно справляется. |
|||
107
МишельЛагранж
14.12.11
✎
16:58
|
(104) а зачем? ему все равно в базу нужнеы данные, а не "прсото посмотреть", это так, для отладки запроса к стронней SQL-базе из 1с...
|
|||
108
МишельЛагранж
14.12.11
✎
17:01
|
(106) это вы про 7-ку?
что-то не увязываю 1с8 и "многомиллионные прайсы... прямые запросы...удалять изменять регистры значений"... "гостиницы... аэропорт....прилетит Касабланка, я лично договорюсь.." )))) |
|||
109
stix2010
14.12.11
✎
17:04
|
(107) Вариантов много, каждый хорош для определенной ситуации, можно просто из ADODB запросов в ТЗ лить или в объекты текущей, потом манипулировать, если иная 1с база, то проще лить данные через КД в текущую,
|
|||
110
stix2010
14.12.11
✎
17:07
|
Опять же что ТС надо скорость работы или скорость реализации
|
|||
111
Serginio1
14.12.11
✎
17:08
|
(107) Обработка открытая. Там есть замена операторов 1С на SQL. Правда нет полног парсинга, но для большинства задач достаточно. Через ПолучитьСтруктуруХраненияБазыДанных можно многое сделать.
|
|||
112
МишельЛагранж
14.12.11
✎
17:09
|
(109) >>можно просто из ADODB запросов в ТЗ лить или в объекты текущей,
- либо в реквизиты, либо записи <регистров>, либо в ТЗ )) больше никак... >> иная 1с база, то проще лить данные через КД в текущую - это если доков много.. иначе - COM или OLE... если обмен - то УРБД така называемая... |
|||
113
Serginio1
14.12.11
✎
17:12
|
(108) Нет про восьмерку
|
|||
114
МишельЛагранж
14.12.11
✎
17:18
|
(111) в той обработке идет подмена элементарных операторов типа ВЫБРАТЬ на SELECT....
и все... соответственно, данные получают либо из регистров, либо прямые табличные.. о получении объектов (и ссылочных данных) речи не идет... также, как и о их обработке.... так что о каком "большинстве задач" идет речь - непонятно... разве что тех, которые по недорозумению засунули в 1с (типа почти полностью реляционных таблиц - 1с регистров, хранящих непосредственно данные, а не ссылки), а теперь пытаюся их оттуда вытянуть.... вместо того, чтобы всю эту массу хранить отдельно в SQL и обрабатывать SQL, а потом результаты - вносить в 1с.... |
|||
115
Serginio1
14.12.11
✎
17:19
|
(112) Угу и как быстро ты обновишь хотя бы 100 000 записей.А нужно миллионы. И обычно эта операция от несколких минут, когда идет обновление, до 30 минут когда идет добаление записей. Много индексов.
Merge необходимая инструкция для самой 1C. Так при записи документа, набора записей регистра изменяется 1 запись, а в 1С сначала удаляются все записи и скопом добавляются. |
|||
116
Serginio1
14.12.11
✎
17:22
|
(114) А что соединения уже запретили? Работаю и с сылка какая проблема? а и прфайлер в руки и технолоический журнал если, что.
А зачем этот геморрой с 2 я базами? Если можно все хранить в одной и делать запросы в одной базе. 8.14 совсемнедано появилась? |
|||
117
МишельЛагранж
14.12.11
✎
17:26
|
(116) я говорю о полновесной обработке данных в 1с, а данные в 1с - это в основном обеъекты, а не наборы строк и чисел..
>> 1С сначала удаляются все записи и скопом добавляются - вот именно, что вы обрабатываете прсотые типы - из регситров, скорей всего сведений. а эти данные попали в таком количестве явно по-недоразумению - ибо 1с не предназначена хранить и обрабатывать миллионострочные регистры. |
|||
118
МишельЛагранж
14.12.11
✎
17:26
|
+ да и не нужны они у вас в базе 1с наверняка в таком количестве...
|
|||
119
МишельЛагранж
14.12.11
✎
17:28
|
(116) ну да, ну да... рассказывайте мне, как вы с ссылками работаете.. рассказывают уже начиная с выхода 8.1, и вот, как видите, слушаю эти сказки до сих пор, только версия платформы меняется )))
|
|||
120
Serginio1
14.12.11
✎
17:45
|
(118) Нет я обрабатываю ссылочные типы со множествами соединений.А данные просто необходимы для работы. Без них никака. Про ссылки Еще раз а что соединения уже запретили?
|
|||
121
МишельЛагранж
14.12.11
✎
17:50
|
(120) что есть "соединения" в вашем понимании? COM, ссылки, клеммы? ))
Какие конкретно ОБЪЕКТЫ вы получаете напрямую из SQL? |
|||
122
Serginio1
14.12.11
✎
17:58
|
Я объекты не получаю. Я изменяю таблицы БД, и запросы для отображения на сайте, и выгрузки больших данных. Кроме того если тебе нужны объеты на клиентском уровне, то легко их можно получить через Linq to EF. Начал делать да закинул из-за нехватки времени. Но есть разработки для Linq2Sql. Но Linq to EF позволяет и делать запрсы в стиле 1С. Там подмена имен таблиц идет
|
|||
123
Serginio1
14.12.11
✎
17:59
|
(122) Тоесть совмещать Linq и Sql запросы.
|
|||
124
Serginio1
14.12.11
✎
18:07
|
(123) Чего в 1С сильно нехватает
|
|||
125
ado
14.12.11
✎
18:18
|
(121) "соединение" -- это оператор JOIN языка SQL, грамотный вы наш.
|
|||
126
Mikeware
14.12.11
✎
18:37
|
(77) Не обижай сантехников... Они интеллектом повыше ТС...
|
|||
127
rs_trade
14.12.11
✎
18:46
|
(117) а данные в 1с - это в основном объекты, а не наборы строк и чисел
ню ню. смею утверждать обратное. |
|||
128
Сисой
14.12.11
✎
18:48
|
(119) Не понимаю. Я всегда пишу запросы через соединения, разыменования не использую вообще, составные типы по возможности привожу к нужному через ВЫРАЗИТЬ().. Кто мешает на языке запросов 1С писать грамотные SQL-запросы? Ну разве что хинтов нет...
Вот с UPDATE и INSERT реально засада... |
|||
129
Mikeware
14.12.11
✎
18:52
|
(127) Да пусть веселит...
|
|||
130
pumbaEO
14.12.11
✎
19:19
|
(129) +1 ORM на него нет.
|
|||
131
МишельЛагранж
15.12.11
✎
11:35
|
(127) ну давайте, утверждайте.
из чего состоит объект 1с? (129) это 1-с всю страну веселит... и 1с-ники, не желающие видеть очевидного. |
|||
132
МишельЛагранж
15.12.11
✎
11:47
|
(128) давно убедился, что 1с-ники не знают основ работы того, с чем и на чем работают:
>>Я всегда пишу запросы через соединения пишите. да. соединяете 2 таблицы. а что при соединении таблицы происходит? 1с тащит вдобавок ВСЕ смежные таблицы, которые только могут быть затронуты по ссылкам. ВСЕ. ПОЛНОСТЬЮ (ну там может еще условие фильтра в SQL отработать, но далеко не всегда). Дальше - перетасовывает (на уровне ячеек) все это нагромождение таблиц между собой, чтобы получить искомое. т.е. сначала привозим из БД камаз песка, потом строим куличик размером с ведерко. ну сколько можно объяснять? (125) да уж, 1с-никам невдомек, что COM - это тоже соединение... приношу извинения.... |
|||
133
МишельЛагранж
15.12.11
✎
11:54
|
вообще, 1с-ники такие затейники...
думают, что только они всегда идут верным путем, даже если все объясняется вопреки законам физики или васемогуществом 1с.... причем убежденность фанатическая.... |
|||
134
Serginio1
15.12.11
✎
12:45
|
(132) В терминах С++ это экземпляр класса (по сути это структура в памяти, где поля могут иметь ссылочные типы.) Про основных китов ООП умолчим.
Linq to EF позвляет как ленивую загрузку ссылочных свойств, так и неоложную. А вообще "Учиться,учиться и учиться" как завещал Великий Ленин. Соединнения в контексте запросов, а этот контекс определен в названии топика понятен всем. Если бы в названии говорилось о сантехнике, то ... |
|||
135
ado
15.12.11
✎
13:03
|
(132) Честно говоря, не очень знаком с тем, как 1С транслирует свои запросы в SQL, хотя и подозреваю, что вы слегка сгущаете краски. Но возвращаясь к теме ветки, что мешает нам в прямом запросе получить все нужные данные с помощью соединения _нужных_ таблиц?
|
|||
136
ДенисЧ
15.12.11
✎
13:04
|
(135) мешает, что 1с - *овно. И лично БН Мишелю мозоль в автобусе отдавил...
|
|||
137
ado
15.12.11
✎
13:07
|
(136) Ну, может гуру SQL и правильных ЯП раскроет мне глаза на что-нибудь эдакое ...
|
|||
138
Ёпрст
гуру
15.12.11
✎
14:04
|
(135) нет метапарсера имён для запроса и самое главное - нет типизации в прямом запросе в снеговике.
Если б кто слепил - было бы супер. А так, недозапросы в снеговике немного напрягают. |
|||
139
Ёпрст
гуру
15.12.11
✎
14:05
|
+138 ну и самая большая отмазка - типа в снеговике есть скд.
|
|||
140
МишельЛагранж
15.12.11
✎
14:07
|
(134) либо пишите аналог 1с-сервера, либо - никак.
вообще, сколько дискуссий не было - все ориентируются на возможности SQL, теоретически транслируя их на 1с. 1с - это не sql. был бы sql - было бы все проще безо всяких "клиентов-серверов"... все пишут про "да я могу все!", но никто не задумывается - а почему для подключения базы на sql нужно ставить 1с-сервер... а потому... что ваши теоретизирования не имеют основы в 1с. |
|||
141
МишельЛагранж
15.12.11
✎
14:09
|
(134) кстати, вы очень легко перескочили на Linq, который к 1с отношения не имеет никакого...
совсем... |
|||
142
Сисой
15.12.11
✎
14:13
|
(132) С дуба рухнул?
Только что посмотрел в профайлере запрос. Никакие лишние таблицы не затрагиваются. Хорош врать. |
|||
143
МишельЛагранж
15.12.11
✎
14:19
|
+(141) >>Тоесть совмещать Linq и Sql запросы.(123)
- нельзя совместить то, чего нет. 1с и sql, и LINQ и SQL - это два противоположных направления. (135) >> Но возвращаясь к теме ветки, что мешает нам в прямом запросе получить все нужные данные с помощью соединения _нужных_ таблиц? - теоретически, опираясь на РЕЛЯЦИОННОСТЬ SQL (т.е. прозрачные связи таблиц ака данные) - ничего. но 1с - нереляционная БД. И никогда ею не была. хоть они и не смогли обойтись совсем без - ввели понятия реляционных таблиц/структуры ака "регистры". А регистры и объекты, ссылки/данные на которые они хранят - это разные вещи. Жаль, что ни один "крутой" 1с-ник не может сам понять этих элементарных вещей, и нужны люди из смежных областей. И потому соединения как реляционное хочу-JOIN-данные не имеет смысла в случае 1с, где изначально сделано как хочу-JOIN-ссылка_на_нечто/кусок данных. разница понятна? |
|||
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 "http://forum.mista.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С. Напрмер отлючить проверку функций или дополнять синтаксис позволяя парсеру запросов обходить нужные директивы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |