Имя: Пароль:
1C
1С v8
запрос sql как отладить?
0 фросия
 
15.07.14
07:05
Добрый день.
есть у меня база 1сная, и есть внешний запрос sql, который запускает внешняя левая программа.
нужно этот запрос чуток подкорректировать, но для этого узнать что он вообще берет и откуда. как/где это можно глянуть?
второй вопрос- если запрос работает для серверной базы- будет ли для файловой работать?
1 skunk
 
15.07.14
07:07
1)глянуть можно в менеджере скулятины
2)внешний скульный запрос для файловой работать не будет
2 tdm
 
15.07.14
07:08
(0)отладить можно в скуль профайлере (хотя версия скуля у вас какая ?) и для файловой работать не будет естественно
3 andreymongol82
 
15.07.14
07:08
Ну так-то прямые запросы к 8-ке нарушение лицензии.
А так есть Менеджмент студия, где и навигатор и профайлер есть.
Для файловой работать не будет.
4 фросия
 
15.07.14
07:13
ясно. первым делом надо sqlсервер ставить и потом уже все остальное.
ок.
еще такой вопрос:вот в 1ске у меня все таблички, реквизиты и прочее по-русски называются, а запрос этот по англ их обзывает(наверное по именам таблиц?) как узнать какая моя табличка какое имя имеет?
5 Wobland
 
15.07.14
07:15
получить структуру хранения
6 DrZombi
 
гуру
15.07.14
07:16
(0) SQL запросы отлаживают на SQL сервере, в SQL  2000 это был QA, в последующих версия все делается через менеджер SQL :)
7 DrZombi
 
гуру
15.07.14
07:17
(0) Покажи Код запроса SQL...
И задавай конкретные вопросы, коль не можешь понять его буковки :)
8 фросия
 
15.07.14
07:17
еще вопрос: если взять просто выгрузку базы и развернуть её на новом сервере- таблицы переобзовутся? или они всегда одинаковые будут?
9 фросия
 
15.07.14
07:19
(7) да буковки то я понимаю, знать бы где посмотреть. а самый лучший варинат- глянуть результат этого запроса и написать такой же но по-русски.
10 фросия
 
15.07.14
07:19
(5) как?
11 Wobland
 
15.07.14
07:20
(10) программно
12 Wobland
 
15.07.14
07:21
(9) переводил я как-то sqlный запрос на язык 1С. борода в полметра выросла
13 фросия
 
15.07.14
07:24
(11) волшебные слова подскажешь?
14 DrZombi
 
гуру
15.07.14
07:24
(8) Какую выгрузку? SQL?, тогда нет.
Пиши подробнее, нам тут плохо видно, что там у тебя :)
15 Wobland
 
15.07.14
07:25
(13) Возвращает таблицу значений с описаниями структуры таблиц, индексов и полей базы данных в терминах модели базы данных 1С:Предприятия или используемой СУБД, в зависимости от значения параметра "Имена базы данных".
16 DrZombi
 
гуру
15.07.14
07:26
(15) Ты уж дай человеку обработку, которая это возвращает :)
17 фросия
 
15.07.14
07:26
(12) там малюсенький запрос. который просто сальдо по счетам на конец периода выгружает в табличку. мне нужно дописать что б некоторые счета развернутыми по субконто выгружал.
18 Wobland
 
15.07.14
07:26
(16) сейчас кофе допью и немедленно приступлю к творению
19 фросия
 
15.07.14
07:26
(16) не дай, а скажи где взять
20 Wobland
 
15.07.14
07:27
(19) начни поиск с СП
21 фросия
 
15.07.14
07:28
(16) можно просто подсказать: это можно глянуть в 1ске, или - это тебе надо у sql сервера спросить
22 Wobland
 
15.07.14
07:28
(21) это можно глянуть в 1ске
23 Sammo
 
15.07.14
07:28
ленитесь мадам.
Вам еще в 5 сказали

Синтаксис:
ПолучитьСтруктуруХраненияБазыДанных(<ОбъектыМетаданных>, <ИменаБазыДанных>)
24 фросия
 
15.07.14
07:29
(20)ПолучитьСтруктуруХраненияБазыДанных() ща погляжу
25 Wobland
 
15.07.14
07:30
(24) не за что
26 фросия
 
15.07.14
07:31
(25) спасибо
27 skunk
 
15.07.14
07:41
внешний скульный запрос это хорошо конечно, но с восьмёркой может такая опа наступить при его использовании
28 DrZombi
 
гуру
15.07.14
07:43
(19) Где то было

А вот где подсмотрел
v8: Где прочитать про соответствие таблиц SQL и элементов 1С ?
Пост 7

Пример...

&НаКлиенте
Процедура Команда1(Команда)
    // Вставить содержимое обработчика.
    
    ПолучитьНаСервере();
    
КонецПроцедуры

&НаСервере
Процедура ПолучитьНаСервере()
    
    
    ДокМТ = Метаданные.Документы.БагажнаяВедомость;
    ТЗ = ПолучитьСтруктуруХраненияБазыДанных(ДокМТ,Истина);
    
    
    //Вернет ТЗ, вида
    ТЗ              ТаблицаЗначений    ТаблицаЗначений
    Индексы         ИндексыКоллекции    ИндексыКоллекции
    Колонки     КоллекцияКолонокТаблицыЗначений    КоллекцияКолонокТаблицыЗначений
    ИмяТаблицы    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    ИмяТаблицыХранения    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    Индексы    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    Метаданные    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    Назначение    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    Поля    КолонкаТаблицыЗначений    КолонкаТаблицыЗначений
    
КонецПроцедуры
29 Necessitudo
 
15.07.14
07:45
(27) Какая?
30 DrZombi
 
гуру
15.07.14
07:46
(29) 8-ая 1С хранить совместно с обычными данными еще и Двоичные данные.
А так, можно и на прямых писать, если Структура данных не с ложная :)
31 skunk
 
15.07.14
07:47
(29)ну например решишь ты сделать новую базу или узел выделить ... и в 90% случаях внешний скульный запрос работать не будет
32 фросия
 
15.07.14
07:47
(7) код говоришь...
вот кусочек который мне совсем не понятен:

/*SELECT  ...
month(t1._Period) as FiscalMonth, '20'+right(year(t1._Period),2) as FiscalYear, 'Tenge' as LocCurr,...
FROM         Base2013.dbo._AccRg10534 AS t1 LEFT OUTER JOIN
                      Base2013.dbo._Acc10 AS t2 ON t1._AccountDtRRef = t2._IDRRef /* and t1._AccountCtRRef = t2._IDRRef*/
/*LEFT OUTER JOIN
                    Base2013.dbo._Reference66 AS t2 ON t1._Fld9528RRef = t2._IDRRef*/

where year(t1._Period)=4014
and month(t1._Period)=06
and day(t1._Period)=11*/

почему год 4014?
33 skunk
 
15.07.14
07:48
(32)это они так хитро решили проблему 2000 года
34 фросия
 
15.07.14
07:48
(27) он просто данные считывает, в базе ничего не меняет.
35 фросия
 
15.07.14
07:48
(33) что за проблема 2000 года?
36 DrZombi
 
гуру
15.07.14
07:49
(32) /* - Эир комментарий :)
37 DrZombi
 
гуру
15.07.14
07:49
+(36) Это
38 skunk
 
15.07.14
07:49
(34)да без разницы ... все равно работать не будет
39 DrZombi
 
гуру
15.07.14
07:49
>>> почему год 4014?

Он закомментирован ;)
40 фросия
 
15.07.14
07:50
то, что не закомменитровано- тоже самое там.
41 skunk
 
15.07.14
07:51
42 фросия
 
15.07.14
07:51
(31) думаю для новой базы можно просто новые имена табличек прописать и все будет работать.
43 Sammo
 
15.07.14
07:52
(35) Подсказка. При создании базы спрашивает - какое указать смещение (0 или 2000)
44 skunk
 
15.07.14
07:52
(42)не только табличек, еще и полей ... но если все сделаешь правильно то работать будет ... просто это придется делать каждый раз
45 фросия
 
15.07.14
07:53
(44) тот, кто сделал это один раз сделает еще раз. я так думаю.
46 фросия
 
15.07.14
07:54
(43) уже объяснили, спс
47 DrZombi
 
гуру
15.07.14
07:54
(42) А зачем вообще там прямой запрос?
48 skunk
 
15.07.14
07:55
(45)а для чего такой геморрой? ... такой запрос и в самой 1с нормально отработает
49 DrZombi
 
гуру
15.07.14
07:55
(45) Еще подумай, Может тот кто это навоял, уже на другом рабочем месте :)
50 DrZombi
 
гуру
15.07.14
07:56
(48) ... Приходит только одна "Телепатическая" мысль.
Они не захотели заморачиваться КОМ соединением :)
51 DrZombi
 
гуру
15.07.14
07:56
+(50) Видимо платформы 1С серверов разные :)
52 фросия
 
15.07.14
07:59
(47) (50) потому что тот, кто писал запрос этот 1с ку вообще не знает.
53 skunk
 
15.07.14
07:59
(50)тоже такая мысля есть ... возможно даже не из 1с будут его выполнять ... особенно при вопросе "будет ли для файловой работать"
54 skunk
 
15.07.14
07:59
(52)бугага )))) ... я не могу ... ну развеселила)))
55 фросия
 
15.07.14
08:00
(49)неважно
56 фросия
 
15.07.14
08:04
(54) честно. он даже не знает что в 1ске аналитический учет ведется не только по счетам но и по субконто. и предложил завести куеву тучу забалансовых счетов для каждой статьи затрат, и прочего...
57 DrZombi
 
гуру
15.07.14
08:04
(52) Ага... а Поля он наугад указывал, а теперь ты тут голову ломаешь про 4014 год :)
58 skunk
 
15.07.14
08:05
(56)ну так переделай в 1с и не парься)))
59 фросия
 
15.07.14
08:06
(57) по 4014 год я не ломала голову- я просто не поняла зачем такой огород городить.
а поля... в sql поглядел наверное. не знаю
60 skunk
 
15.07.14
08:06
(57)ну год можно в менеджере глянуть(некоторые даже ругаются, что за "хня") ... а вот с полями да ... как минимум про получить структуру знал
61 МихаилМ
 
15.07.14
08:06
за

where year(t1._Period)=4014
and month(t1._Period)=06
and day(t1._Period)=11

надо кастрировать автора запроса. животное не знает , что такое индекс.
62 фросия
 
15.07.14
08:08
(58)что б переделать- мне надо посмотреть что там получается в итоге- у меня таких запросов- несколько.
потому и спрашивала- как поглядеть что запрос этот тащит
63 фросия
 
15.07.14
08:09
(60) хз как там было.
64 МихаилМ
 
15.07.14
08:11
начиная с 14 релиза. 1с стала сохранять оригинальные имена таблиц при выгрузке-загрузке из dt.

но при смене платформы с 8.2 на 8.3
названия некоторых полей изменены.

соответствия названий полей метаданных и бд хранится в таблице params, записи dbmames
65 skunk
 
15.07.14
08:12
(63)получаешь структуру ... и дальше вместо полей и таблиц в скуле ставишь 1с имена ...
66 МихаилМ
 
15.07.14
08:15
(60)
смещение хранится в таблице _YearOffset
67 МихаилМ
 
15.07.14
08:17
если автор имеет доступ к базе 1с через 1с.

то логичнее было бы переписать запрос обратно на запрос 1с.
и вызывать его по  COM
68 DrZombi
 
гуру
15.07.14
08:19
(60) Вот и я так подумал. Коль получил структуру, значит получил Обработку, может и не сам. Но получил :)
69 skunk
 
15.07.14
08:20
(66)я знаю где и что хранится ... а вот человек рисующий внешний запрос мог не знать, ... и скорее всего не знал
70 DrZombi
 
гуру
15.07.14
08:20
(63) Перепиши все на КОМ соединение, если конечно не окажется так, что сервера вообще на разных континентах :)
71 фросия
 
15.07.14
08:28
(67) в том то и дело что не 1с-1с
72 DrZombi
 
гуру
15.07.14
08:28
(66) А оно там в каком виде?
73 фросия
 
15.07.14
08:29
(70) кстати не исключено. так что помучаюсь, и что-нибудь придумаю. ушла думать
74 DrZombi
 
гуру
15.07.14
08:29
(71) Тогда что это, коль не 1С?
Напиши хоть, что с чем связывается?

К примеру:

FoxPRO обращается к 1С БД через SQL.... и мы поймем :)
75 фросия
 
15.07.14
08:36
(74) sap. или какаято ещё программа.
76 skunk
 
15.07.14
08:51
(75)вы через xi сапоский общаетесь?
77 фросия
 
15.07.14
08:52
(76) мы вообще не общаемся
78 skunk
 
15.07.14
09:01
(77)я имел ввиду твой сап к 1с как обращается
79 Sammo
 
15.07.14
09:23
(71) Если поддерживает ком, то вызов через ком 1с, которая может предоставить необходимые данные в другую базу.
Если кома нет, то можно сделать через промежуточную скулевую базу, когда 1с-ка периодически опрашивает, как увидела параметры - делает запрос и результат выкладывает.
И прочая...

Но прямой доступ к базе, имхо, некамильфо.
80 Dionis Sergeevich
 
15.07.14
09:24
sql navigator например
81 фросия
 
15.07.14
09:34
(78) это не мой сап, я  даже не уверена что это сап.
не знаю как,  знаю только что как-то обращается.