|
1С++ Как подключиться из одной базы 1С к другой? | ☑ | ||
---|---|---|---|---|
0
DCKiller
02.06.10
✎
07:29
|
Возможно такое? У объекта "ODBCDatabase" есть метод УстБД(), насколько я понял, он позволяет подключиться из текущей БД к любой другой, помимо родной, БД 1С. Вопрос только, как именно это сделать? Предположительно, подключение возможно как к файловой, так и к SQL-базе.
|
|||
1
VoditelKobyly
02.06.10
✎
08:05
|
ИБ=СоздатьОбъект("ODBCDataBase");
Попытка ИБ.ПрисоединитьИБ(КаталогБазы,ПользовательБазы,ПарольПользователя); Исключение Сообщить("Неудалось подключиться к другой базе"); Возврат; КонецПопытки; |
|||
2
VoditelKobyly
02.06.10
✎
08:07
|
КаталогБазы="\\server-term\sqldb\Torg\";
ПользовательБазы="Иванов_А_А"; ПарольПользователя="дурдом"; |
|||
3
VoditelKobyly
02.06.10
✎
08:10
|
Если ИБ.ЕстьСоединение()=0 Тогда
Сообщить("Не выполнено подключение к базе"+ИБ.ПолучитьОписаниеОшибки)); Возврат; КонецЕсли; РС=СоздатьОбъект("ODBCRecordset"); РС.УстБД(ИБ); |
|||
4
VoditelKobyly
02.06.10
✎
08:11
|
Естественно (2) должно быть раньше чем (1)
|
|||
5
DCKiller
02.06.10
✎
08:21
|
Спс
Для баз обоих типов способ подключения один? |
|||
6
VoditelKobyly
02.06.10
✎
08:23
|
Для ДБФ:
База = СоздатьОбъект("OLEDBData"); Кат=СокрЛП(КаталогБух); DBpath = ?(Прав(Кат, 1) <> "\", Кат+"\", Кат); Соединение = "Provider=VFPOLEDB.1;Data Source=" + DBpath + ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN="""; База.ПрисоединитьИБ(DBpath); Запрос = База.СоздатьКоманду(); ТекстЗапроса=" |SELECT | СпрКА.Descr as [НаименованиеКлиента], | $СпрКА.ИНН as [ИННКлиента], |FROM $Справочник.Контрагенты as СпрКА |WHERE СпрКА.ISFOLDER = 2 |"; ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); |
|||
7
DCKiller
02.06.10
✎
08:57
|
(6) Не вижу, где в примере используется переменная "Соединение"
|
|||
8
DCKiller
02.06.10
✎
09:00
|
+(7) Пробовал в метод ПрисоединитьИБ() в качестве параметра передать строку соединения, выдается ошибка:
Ошибка загрузки метаданных |
|||
9
VoditelKobyly
02.06.10
✎
09:03
|
Пробуй так:
База = СоздатьОбъект("OLEDBData"); Кат=СокрЛП(КаталогБазы); DBpath = ?(Прав(Кат, 1) = "\", Лев(Кат, СтрДлина(Кат) - 1), Кат); Соединение = "Provider=VFPOLEDB.1;Data Source=" + DBpath + ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN="""; Рез = База.Соединение(Соединение); Запрос = База.СоздатьКоманду(); |
|||
10
DCKiller
02.06.10
✎
09:13
|
(9) Такой вариант вроде пашет.
А вот для скульной базы почему-то (1), (2) и (3) - не работают. Когда использовал "ПрисоединитьИБ", ругался "Общая файловая ошибка при доступе к файлу users.usr". Поменял "ПрисоединитьИБ()" на "Открыть()" - соединение все равно не устанавливается. Какие еще м.б. варианты? |
|||
11
DCKiller
02.06.10
✎
09:32
|
(10) Блин, я тормоз! Слэш пропустил :) сорри
|
|||
12
DCKiller
02.06.10
✎
09:44
|
Делаю запрос к той базе, к котрой подключился.
"SELECT | Жур.IDDoc As [Док $Документ.ПоступлениеТМЦ] |FROM | _1SJourn As Жур |WHERE | Жур.IDDocDef = $ВидДокумента.ПоступлениеТМЦ AND | Жур.$ОбщийРеквизит.Фирма IN (SELECT val FROM #Фирма) AND | Жур.Closed&1 = 1 |ORDER BY | Жур.Date_Time_IDDoc"; В результирующей таблице выводится колонка с документами, но там многие строки имеют вид: <Объект не найден (....)> В чем причина этого? |
|||
13
also
02.06.10
✎
09:45
|
(12) битые ссылки вестимо
|
|||
14
also
02.06.10
✎
09:46
|
Сделай ТИИ
|
|||
15
DCKiller
02.06.10
✎
09:47
|
(13) Странно. Когда делал тот же самый запрос непосредственно в родной скулевой базе, то никаких битых ссылок в результат не попадало...
|
|||
16
orefkov
02.06.10
✎
09:52
|
(13)
А ты думал? Ты же тянешь данные из ЧУЖОЙ базы, и пытаешься, чтобы 1С их типизировала в значения РОДНОЙ базы. Так не получиться, тащить из чужой базы можно только "сырые" данные, строки, числа, даты. Типизация не сработает. |
|||
17
also
02.06.10
✎
09:54
|
(16) не подумал..что то не прочитал что это запрос к другой базе
|
|||
18
DCKiller
02.06.10
✎
09:57
|
(16) Так это битые ссылки или что? Я же говорю, некоторые доки имеют нормальный вид, некоторые - см. (12)
|
|||
19
trad
02.06.10
✎
10:01
|
(18) "некоторые доки имеют нормальный вид"
не верь глазам своим. типизация "чужих" ссылок невозможна. |
|||
20
DCKiller
02.06.10
✎
10:02
|
(19) Хм... А что же тогда это такое?
|
|||
21
VoditelKobyly
02.06.10
✎
11:13
|
(20) Это случайное совпадение.
|
|||
22
DCKiller
02.06.10
✎
11:16
|
(21) С данными родной базы? Интересно, как она то определяет, по номеру дока? Или по ИД?
|
|||
23
DCKiller
02.06.10
✎
11:24
|
Если все так, то и задача идет ф топку :( Но за информацию - все равно спасибо, думаю, в дальнейшем пригодится.
|
|||
24
VoditelKobyly
02.06.10
✎
11:26
|
(22) По ИДД.
|
|||
25
VoditelKobyly
02.06.10
✎
11:28
|
(23) Смотря какая задача. Ты же не объяснил. Объекты в понимании 1с ты не получишь, а вот всю информацию о них - легко.
В чем состоит задача? Спроси может найдутся знающие люди. |
|||
26
DCKiller
02.06.10
✎
11:31
|
(25) Задача в том, чтобы юзеру вывалить на экран все документы из базы, к которой подключаемся, за заданный период в виде списка. Из них юзер отберет те, которые нужно загрузить в текущую ИБ, и вот с ними уже будет дальнейшая работа.
|
|||
27
VoditelKobyly
02.06.10
✎
11:39
|
(26) Ну и зачем тебе тогда нужны ссылки?
Бери даты, названия документов и номера , показывай и пусть ставит галки. По выбранным формируй список ИДД и по ним таким же запросом делай выборку. Обрабатывая таблицы выборки создавай в своей базе нужные документы. Тебе эта самая тема! Всё будет очень быстро делаться. |
|||
28
DCKiller
02.06.10
✎
12:15
|
(27) Сделал. В список СпДокументы поместил ИД отобранных доков. Сейчас выполняю второй запрос к базе, где в качестве условия выборки устанавливаю только эти, отобранные пользователем документы:
Запрос.УложитьСписокОбъектов(СпДокументы, "#TmpDocs"); "SELECT | ДокСтр.IDDoc As [Док $Документ.ПоступлениеТМЦ], | $ДокСтр.СтавкаНДС As [СтавкаНДС $Перечисление.СтавкиНДС], | $ДокСтр.Сумма As Сумма, | $ДокСтр.Количество As КолВо, | $ДокСтр.СуммаНДС As СуммаНДС |FROM | $ДокументСтроки.ПоступлениеТМЦ As ДокСтр |WHERE | ДокСтр.IDDoc IN (SELECT val FROM #TmpDocs)" В результате возвращается пустая таблица, хотя в списке отобранных документов данные точно есть. В чем причина? |
|||
29
antoneus
02.06.10
✎
12:23
|
Опять объекты укладываешь в родной базе?
|
|||
30
antoneus
02.06.10
✎
12:24
|
передавай строку с iddoc'ами, которую сформируешь из таблицы
|
|||
31
VoditelKobyly
02.06.10
✎
12:43
|
Вот так дает таблицу?
"SELECT | ДокСтр.IDDoc As [ИддДок], | $ДокСтр.СтавкаНДС As [СтавкаНДС], | $ДокСтр.Сумма As Сумма, | $ДокСтр.Количество As КолВо, | $ДокСтр.СуммаНДС As СуммаНДС |FROM | $ДокументСтроки.ПоступлениеТМЦ As ДокСтр |WHERE | ДокСтр.IDDoc IN (SELECT val FROM #TmpDocs)" |
|||
32
VoditelKobyly
02.06.10
✎
12:47
|
(28) Что то я сомневаюсь, что у тебя
Запрос.УложитьСписокОбъектов(СпДокументы, "#TmpDocs"); сработает как надо. Ты отрабатываешь версию в ДБФ? |
|||
33
VoditelKobyly
02.06.10
✎
12:52
|
(28) Временная таблица точно создается не пустая? Посмотрел?
|
|||
34
DCKiller
02.06.10
✎
12:54
|
(31) да, но пустую
(32) Из файловой подключаюсь к скуль-версии. |
|||
35
VoditelKobyly
02.06.10
✎
13:01
|
(34) Можешь для отладки убрать решетку с таблички "#TmpDocs" и через QA в SQL
глянуть на эту табличку. Потом её там же прибьешь. Таблица должна быть не пустая. |
|||
36
DCKiller
02.06.10
✎
13:10
|
(35) Простите мое невежество, но что такое QA и как с ним работать? Просто раньше этой темы особо касаться не приходилось.
|
|||
37
VoditelKobyly
02.06.10
✎
13:13
|
QA - QueryAnalazer программная среда для работы с базами данных SQL. Поставляется вместе с самой субд SQL
SQL надо расшифровать? |
|||
38
DCKiller
02.06.10
✎
13:13
|
(37) SQL расшифровывать не надо :)
|
|||
39
VoditelKobyly
02.06.10
✎
13:14
|
На SQL у тебя доступ есть?
|
|||
40
VoditelKobyly
02.06.10
✎
13:15
|
1с же ты както там запускаешь.
|
|||
41
DCKiller
02.06.10
✎
13:15
|
(40) Через ярлык :)))
|
|||
42
VoditelKobyly
02.06.10
✎
13:17
|
А в конфигураторе в парметрах базы данных SQL можешь глянуть?
Ты там вообще местный или пришлый? |
|||
43
los_hooliganos
02.06.10
✎
13:18
|
(35) Он её не увидит, т.к. локальная временная таблица видна только в рамках одного @@SPID, а QA будет с @@SPID отличным от 1совского.
|
|||
44
VoditelKobyly
02.06.10
✎
13:19
|
(43) Значит надо её делать самому без метода УложитьСписокОбъектов()
|
|||
45
DCKiller
02.06.10
✎
13:20
|
(42) Что именно там смотреть? "Сервер", "База данных", "Пользователь", "Пароль" - все, что там есть.
|
|||
46
los_hooliganos
02.06.10
✎
13:20
|
(44) ну её можно сделать глобальной)))
|
|||
47
VoditelKobyly
02.06.10
✎
13:21
|
А ешё лучше изучать постепенно и на каждый выбранный документ посылать свой запрос. Тогда можно будет обойтись без временных таблиц. Скорость всё равно будет достаточной, а основные тормоза будут на проведении вновь созданных документов в своей базе.
|
|||
48
jj_mail
02.06.10
✎
13:22
|
а не проще ли просто написать "ВыполнитьИнструкцию(ТекстЗапроса,ТЗ,1)", где ТЗ- таблица значений ?
|
|||
49
VoditelKobyly
02.06.10
✎
13:24
|
(45) На сервер где установлен SQL у тебя есть доступ?
Надо будет запустить там QA и посмотреть таблички базы данных |
|||
50
VoditelKobyly
02.06.10
✎
13:25
|
(45) Смотри (47), тебе это будет проще реализовать. Потом будешь оптимизировать (если захочешь)
|
|||
51
DCKiller
02.06.10
✎
13:26
|
(49) Доступ есть. Как QA там запустить?
|
|||
52
VoditelKobyly
02.06.10
✎
13:28
|
Тогда будет твой запрос типа этого:
ВыбДок=СписокДок.ПолучитьЗначение(инд); "SELECT | ДокСтр.IDDoc As [ИддДок], | $ДокСтр.СтавкаНДС As [СтавкаНДС], | $ДокСтр.Сумма As Сумма, | $ДокСтр.Количество As КолВо, | $ДокСтр.СуммаНДС As СуммаНДС |FROM | $ДокументСтроки.ПоступлениеТМЦ As ДокСтр |WHERE | ДокСтр.IDDoc ='"+ВыбДок+"' |"; Ставишь его в цикл по списку выбранных документов и не надо лазить в QA |
|||
53
DCKiller
02.06.10
✎
13:30
|
(52) так не работает, сейчас проверил...
|
|||
54
VoditelKobyly
02.06.10
✎
13:32
|
(53) Понятно. Надо же все остальное добавить.
|
|||
55
VoditelKobyly
02.06.10
✎
13:32
|
(53) Приведи в соответствие со своей программой
|
|||
56
DCKiller
02.06.10
✎
13:33
|
(54) Что остальное?
(55) Да приведен он и так. Таблица все равно пустая. |
|||
57
VoditelKobyly
02.06.10
✎
13:36
|
Покажи весь код.
Как получаешь ИдДок из соседней базы? Как накидываешь список? Как даешь пользователю на отметку? Как потом катишься по этому списку и берешь ИдДок в запрос? Чё мы тут должны гадать-то? |
|||
58
DCKiller
02.06.10
✎
13:40
|
(57) Поправочка: по одному доку все-таки работает, так что вариант в (52) в принципе применим. Хотелось бы, правда, красивее сделать...
|
|||
59
VoditelKobyly
02.06.10
✎
13:43
|
(58) Ну вот, а то всё мама, да мама...
Красивее уже и сам сможешь. Ещё раз учти, что основные потери времени будут не на запросы к соседней базе, а на проведение вновь создаваемых документов в своей. Поэтому: а надо ли оно красивее конкретно тебе? |
|||
60
VoditelKobyly
02.06.10
✎
13:45
|
(58),(51) QA запускается через кнопку Пуск\Программы\Microsoft SQL Server\QueryAnalazer
|
|||
61
VoditelKobyly
02.06.10
✎
13:46
|
У меня рабочий день заканчивается дальше пытай других.
|
|||
62
DCKiller
02.06.10
✎
13:48
|
(61) спасибо за помощь! :)
Да у меня, собственно, тоже :) |
|||
63
VoditelKobyly
02.06.10
✎
13:49
|
А у тебя какой город? В личке нет.
|
|||
64
DCKiller
02.06.10
✎
13:50
|
(63) Столица Мира :)
|
|||
65
VoditelKobyly
02.06.10
✎
13:51
|
(64)Сиб?
|
|||
66
VoditelKobyly
02.06.10
✎
13:52
|
(64) Стесняешься название произносить? Или не выговариваешь всех букв?
|
|||
67
DCKiller
02.06.10
✎
13:54
|
(66) Да нет, почему, просто многие знают уже, что такое "Столица мира". Собственно, Барнаул :)
|
|||
68
VoditelKobyly
02.06.10
✎
13:55
|
(66) А-а. Я не знал, что она теперь туда переехала. Буду знать.
У меня там однокласник есть. |
|||
69
DCKiller
02.06.10
✎
13:57
|
(68) Она никуда не переезжала. Она всегда тут была :)
|
|||
70
VoditelKobyly
02.06.10
✎
13:58
|
(69) Ну была и пусть дальше стоит. Мне и в моей деревне хорошо.
|
|||
71
DCKiller
03.06.10
✎
05:46
|
(59) Нашел решение, как вытащить из соседней БД только выбранные юзером доки ОДНИМ запросом.
Вместо "УложитьСписокОбъектов()" здесь нужно использовать предв. создание врем. таблицы. Запрос.Выполнить("create table #TmpDocs(iddoc char(9) primary key)"); Для а = 1 По СпДокументы.РазмерСписка() Цикл ИДДокумента = СпДокументы.ПолучитьЗначение(а); Запрос.Выполнить("insert into #TmpDocs (iddoc) values ('"+ИДДокумента+"')"); КонецЦикла; ТекстЗапроса = "SELECT | ДокСтр.IDDoc As [Док $Документ.ПоступлениеТМЦ], | $ДокСтр.СтавкаНДС As [СтавкаНДС $Перечисление.СтавкиНДС], | SUM($ДокСтр.Сумма) As Сумма, | SUM($ДокСтр.Количество) As КолВо, | SUM($ДокСтр.СуммаНДС) As СуммаНДС |FROM | $ДокументСтроки.ПоступлениеТМЦ As ДокСтр |WHERE | ДокСтр.IDDoc IN (SELECT iddoc FROM #TmpDocs) |GROUP BY | ДокСтр.IDDoc, | $ДокСтр.СтавкаНДС |ORDER BY | ДокСтр.IDDoc"; |
|||
72
VoditelKobyly
03.06.10
✎
05:49
|
(71) Ну и молодец. Я тебе про это же и говорил.
|
|||
73
VoditelKobyly
03.06.10
✎
05:49
|
(71) Утро вечера мудреннее.
|
|||
74
DCKiller
03.06.10
✎
05:56
|
(72) :)
|
|||
75
VoditelKobyly
03.06.10
✎
06:04
|
(74) Перегружаешь в бухгалтерию со свёрткой по ставкам НДС?
А в бухгалтерии формируешь документы или операции? |
|||
76
DCKiller
03.06.10
✎
06:05
|
(75) Документы
|
|||
77
VoditelKobyly
03.06.10
✎
06:15
|
(76) Следующий шаг реализация.
Тока не понятно почему у вас торговля SQL, а бухгалтерия ДБФ. |
|||
78
DCKiller
03.06.10
✎
06:20
|
(77) А что не так?
|
|||
79
VoditelKobyly
03.06.10
✎
06:34
|
(78) Имея SQL и соответственно всё администрирование по нему работаете с менее надежной системой хранения на ДБФ.
|
|||
80
Кириллка
03.06.10
✎
07:11
|
триллер какой-то
|
|||
81
DCKiller
03.06.10
✎
07:13
|
(80) Сейчас будет 2-я часть :)
|
|||
82
DCKiller
03.06.10
✎
07:14
|
Теперь нужно бы проделать то же самое, но уже для базы ДБФ. Тоже интересно, каким образом передать сторонней базе список ИД доков, полученных тем же образом, что было описано ранее.
|
|||
83
Кириллка
03.06.10
✎
07:15
|
(81)тыб матчасть подтянул на досуге, будет легче.
|
|||
84
VoditelKobyly
03.06.10
✎
07:17
|
(52) Точно также. Фомируй временную таблицу и в запросе присоединяй условие
|
|||
85
DCKiller
03.06.10
✎
07:18
|
(83) дык мало у меня его... досуга-то :)
(84) создание ВТ для файловой БД? Прокатит? Вроде был случай, что матюгалась 1с... |
|||
86
VoditelKobyly
03.06.10
✎
07:19
|
Можешь использовать:
RS.УстановитьКаталогВремТаблиц(КаталогВремФайлов); И даже сможешь глянуть его. |
|||
87
VoditelKobyly
03.06.10
✎
07:20
|
(85) Не сможешь у тебя есть объект XBASE. Сделай времянку через него.
|
|||
88
VoditelKobyly
03.06.10
✎
07:21
|
(87)+ Если не сможешь, то ...
|
|||
89
DCKiller
03.06.10
✎
07:23
|
ОК, сейчас проверим
|
|||
90
VoditelKobyly
03.06.10
✎
07:35
|
Вот нашел тебе кусок кода, где врем. таблица делается через XBASE:
СпрТов=СоздатьОбъект("Справочник.Товары"); //Делаем врем.таблицу ИмяТаблицыМатрицы=КаталогВремФайлов+"Ассорт.dbf"; Если ФС.СуществуетФайл(ИмяТаблицыМатрицы)=1 Тогда ФС.УдалитьФайл(ИмяТаблицыМатрицы); КонецЕсли; АМ=СоздатьОбъект("XBase"); АМ.ДобавитьПоле("VAL","C",9,); АМ.ДобавитьПоле("ISFOLDER","N",2,0); АМ.СоздатьФайл(ИмяТаблицыМатрицы,); Если АМ.Открыта()=0 Тогда Предупреждение("Ошибка создания файла обязательных товаров"); Возврат; КонецЕсли; ТаблТоваров.ВыбратьСтроки("КодТовара"); Пока ТаблТоваров.ПолучитьСтроку("КодТовара")=1 Цикл Если СпрТов.НайтиПоКоду(ТаблТоваров.КодТовара)=1 Тогда АМ.Добавить(); АМ.VAL=МД.ЗначениеВСтрокуБД(СпрТов.ТекущийЭлемент()); АМ.ISFOLDER=2; АМ.Записать(); КонецЕсли; КонецЦикла; АМ.ЗакрытьФайл(); ТекстЗапросаУсл=""; Условие=""; Если ПустоеЗначение(ВыбТовар)=0 Тогда Если ВыбТовар.ЭтоГруппа()=0 Тогда Загол=Загол+"По товару: "+ВыбТовар+". "; Условие=" AND $Докум.Товар =:ВыбТовар"; RS.УстановитьТекстовыйПараметр("ВыбТовар", ВыбТовар); Иначе Загол=Загол+"По товарам группы: "+ВыбТовар; RS.УложитьСписокОбъектов(ВыбТовар,ИмяТаблицыТоваров, "Товары"); Условие=" AND $Докум.Товар IN (SELECT Val FROM "+ИмяТаблицыТоваров+")"; КонецЕсли ИначеЕсли ЕстьФильтр("Товар",Сп)=1 Тогда Загол=Загол+"По товарам из списка. "; RS.УложитьСписокОбъектов(Сп,ИмяТаблицыТоваров, "Товары"); Условие=" AND $Докум.Товар IN (SELECT Val FROM "+ИмяТаблицыТоваров+")"; КонецЕсли; ТекстЗапросаУсл=ТекстЗапросаУсл+Условие; Если (ОбязательныйАссортимент=1) И (ТаблТоваров.КоличествоСтрок()>0) Тогда Загол=Загол+"Только обязательный ассортимент. "; //ИмяТаблицыТоваровМатрицы="#ВыбТоварМатрицы"; //RS.УложитьСписокОбъектов(СписокТоваровМатрицы, ИмяТаблицыТоваровМатрицы, "Товары"); Условие=" AND $Докум.Товар IN (SELECT Val FROM "+ИмяТаблицыМатрицы+")"; ТекстЗапросаУсл=ТекстЗапросаУсл+Условие; КонецЕсли; |
|||
91
Ёпрст
03.06.10
✎
08:55
|
делай времянку через сам фокс..
Хотя, можно просто заполненый список уложить и всё.. ЗЫ: или лучше 1qlite используй - там есть временные таблички и всё такое + супер метод УложитьТЗ |
|||
92
DCKiller
03.06.10
✎
08:58
|
(91) "делай времянку через сам фокс.. "
А примерчик можно? |
|||
93
Ёпрст
03.06.10
✎
09:01
|
||||
94
orefkov
03.06.10
✎
09:03
|
(91)
1sqlite работает только в родной базе. |
|||
95
Ёпрст
03.06.10
✎
09:07
|
(94) ну..можне же напрямую указать что за файлик используем ? + все поля с него "руками", без метапарсера.
|
|||
96
Это_mike
03.06.10
✎
09:15
|
(94) Александр, а исходниками на Status1C не поделишься? А то с итланда не скачать, он еле шевелится и регистрация там похоже слетела...
|
|||
97
DCKiller
03.06.10
✎
09:16
|
(93) Вот эта вещь рулит:
ОлеДБКоманда.ВыполнитьИнструкцию("EXECSCRIPT('SELECT * INTO CURSOR TmpTable NOFILTER from sc33 as WW ')"); Только нельзя ли вместо имени файла использовать метаимя? |
|||
98
Ёпрст
03.06.10
✎
09:29
|
(97) ну там же есть пример - там во всю используется метапарсер
|
|||
99
DCKiller
03.06.10
✎
10:31
|
Кстати, а как в запросе типа того, что в (52) проверить, какая ставка НДС в данном конкретном случае представлена? Дело в том, что в соседней базе, к которой подключаемся, ставка НДС имеет тип "Перечисление", и непонятно, как определить, где какая ставка...
|
|||
100
VoditelKobyly
03.06.10
✎
10:34
|
А что их много?
Сделай документ со всеми ставками и посмотри результаты запроса. |
|||
101
Ёпрст
03.06.10
✎
10:34
|
(99) заранее слепить табличку соответствия "перечисление - его ид..", её и пихать в запрос, например.
|
|||
102
DCKiller
03.06.10
✎
10:36
|
(100) 9 штук всего
(101) Т.е. предварительно узнать ИД всех значений ставок НДС и их запихнуть, а потом в запросе проверять? |
|||
103
Ёпрст
03.06.10
✎
10:38
|
(102) тебе условие на ставку нужно влепить, или ты хочешь нормальное отображение значения перечисления ?
|
|||
104
VoditelKobyly
03.06.10
✎
10:38
|
(102) А используется у тебя и того меньше
|
|||
105
VoditelKobyly
03.06.10
✎
10:40
|
Что дает?
"SELECT distinct | $ДокСтр.СтавкаНДС As [СтавкаНДС] |FROM | $ДокументСтроки.ПоступлениеТМЦ As ДокСтр" |
|||
106
DCKiller
03.06.10
✎
10:41
|
(103) Только условие
|
|||
107
VoditelKobyly
03.06.10
✎
10:42
|
(106) с QA разобрался? запускал?
|
|||
108
DCKiller
03.06.10
✎
10:42
|
(107) угу
|
|||
109
Ёпрст
03.06.10
✎
10:47
|
(106) через метадатаворк узнаешь ид объекта, предварительно присоединив нужный md, его и используешь в условии.
|
|||
110
VoditelKobyly
03.06.10
✎
10:48
|
(108) Ну дык, там и добани селект к своим документам и узнаешь все возможные значения ставок НДС.
|
|||
111
DCKiller
03.06.10
✎
10:56
|
(109) А как присоединиться к МД соседней базы?
|
|||
112
Ёпрст
03.06.10
✎
10:58
|
||||
113
DCKiller
03.06.10
✎
12:19
|
Такой момент вылез: почему-то при объявлении пути к базе в таком виде \\server\C$\Base_1C\test, если подключаешься к файловой БД, то не работает в запросах метапарсер имен (в скулевой все в порядке). В чем причина?
|
|||
114
DCKiller
03.06.10
✎
12:34
|
Вопрос остается
|
Форум | Правила | Описание | Реклама | Секции | Поиск | Книга знаний | Вики-миста |