|
v7: 77, 1с++ и updts | ☑ | ||
---|---|---|---|---|
0
ДенисЧ
25.09.15
✎
08:49
|
Понимаю, что выгляжу не очень, но....
Дайте примеры, у кого есть а) подключения 1с++ к _файловой_ 1с б) получения объекта из updts по тамошним данным и нужному коду периферийки... А то из памяти уже всё давно и прочно вылетело.... |
|||
1
varelchik
25.09.15
✎
08:50
|
Упс.
1sqlite. |
|||
2
varelchik
25.09.15
✎
08:50
|
может работать и в монопольном режиме.
|
|||
3
ДенисЧ
25.09.15
✎
08:51
|
(1) такие страшные слова я знаю...
Мне бы конкретно... с кусками кода... |
|||
4
oslokot
25.09.15
✎
08:57
|
Ишь чего захотел, продавец СП
|
|||
5
ДенисЧ
25.09.15
✎
08:57
|
(4) В СП нет таких примеров кода )))
|
|||
6
varelchik
25.09.15
✎
09:03
|
(0)
Структура 1supdts dbsign код базы. typeid ид объекта (число) objid ид объекта. Это то что тебе надо. |
|||
7
varelchik
25.09.15
✎
09:04
|
хотя где тута было даже без 1с++ разборка данных из 1supdts.
поищи по урбд. |
|||
8
ДенисЧ
25.09.15
✎
09:04
|
(6) структуру я знаю.
(7) меня в гугле забанили... ( |
|||
9
varelchik
25.09.15
✎
09:14
|
стучись в аську пообщаемся.
|
|||
10
ДенисЧ
25.09.15
✎
09:16
|
(9) Вот динозварт-то нашёлся... Где ж я её возьму?
Просто пару кусков кода приведи... Я в отдельных местах умный, разберусь... |
|||
11
varelchik
25.09.15
✎
09:22
|
||||
12
ДенисЧ
25.09.15
✎
09:25
|
(11) Ссылка весёлая, если бы не одно но
XBase к живой базе с пользователями - не подключится. |
|||
13
varelchik
25.09.15
✎
09:26
|
Блин.
ну так переведи все на прямые запросы. тебе что все разжовывать? |
|||
14
varelchik
25.09.15
✎
09:26
|
ты просил пример.
|
|||
15
ДенисЧ
25.09.15
✎
09:35
|
(13) Мне всё не надо.
Мне нужно только периодически читать обновления урбд... Вот такое написал DataBase = СоздатьОбъект("ODBCDatabase"); DataBase.Attach1C(); RecordSet = СоздатьОбъект("ODBCRecordSet"); RecordSet.SetDatabase(DataBase); Если Recordset.Открыть("SELECT * FROM 1supdts") = 0 Тогда Ошибка = Recordset.ПолучитьОписаниеОшибки(); Если ПустоеЗначение(Ошибка) = 0 Тогда Сообщить(Ошибка); КонецЕсли; КонецЕсли; тз = СоздатьОбъект("ТаблицаЗначений"); Recordset.ПолучитьРезультатыВ_ТЗ(тз, 1); тз.ВыбратьСтроку(); тз пустая. Хотя глазами смотрю - записи есть. Где я не прав? Ошибок при исполнении нет |
|||
16
Ёпрст
25.09.15
✎
09:44
|
(15) >>>Где я не прав?
1.ODBCRecordSet 2.ПолучитьРезультатыВ_ТЗ це дбф, тут нужен как минимум, другой провайдер |
|||
17
ДенисЧ
25.09.15
✎
09:45
|
(16) Хорошо.
Ты можешь показать простейший пример подключения? По сайту 1спп я не смог сделать такого... А с табличкой - ладно, уж сам разберусь... |
|||
18
oslokot
25.09.15
✎
09:49
|
Пример запроса с дбф нужен чтоли?
Вот, покопался в своих старых записях Процедура ОтфильтроватьНоменклатуруПриСжатииПоМаркам(СодержитТМ) Попытка базаДанных = СоздатьОбъект("SQLiteBase"); Исключение ЗагрузитьВнешнююКомпоненту("1sqlite.dll"); базаДанных = СоздатьОбъект("SQLiteBase"); КонецПопытки; базаДанных.Открыть(":memory:"); запрос = базаДанных.НовыйЗапрос(); запрос.ВыполнитьЗапрос("create virtual table Товары using dbeng(Справочник.Номенклатура)"); СтрокаСодержит = СодержитТМ; Текст="SELECT |descr Наименование, |id [Номенклатура :Справочник.Номенклатура] |FROM Товары |WHERE isfolder=2 and ismark <> '*' "; Если ПустаяСтрока(СтрокаСодержит) = 0 Тогда текст=текст+" |AND ("; Для Номер = 1 По СтрЧислоВхождений(СтрокаСодержит, ";") Цикл Значение = СтрокаСодержит; Если Найти(Значение, ";") > 0 Тогда Значение = Сред(Значение, 1, Найти(Значение, ";") - 1); СтрокаСодержит = Сред(СтрокаСодержит, Найти(СтрокаСодержит, ";") + 1); Если ПустоеЗначение(Значение)=0 Тогда Текст = Текст + " |descr LIKE '%"+Значение+"%'"; Если Номер < СтрЧислоВхождений(СодержитТМ, ";") Тогда // Есть еще строка после разделителя ; добавляем оператор в условие Текст = Текст + " OR "; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; Текст = Текст + ") "; КонецЕсли; Текст = Текст + " |ORDER BY descr"; Попытка тз=запрос.ВыполнитьЗапрос(текст); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; тз.Выгрузить(ТЗ_ТН); тпТН.ОбновитьСтроки(); КонецПроцедуры // ОтфильтроватьНоменклатуруПриСжатииПоМаркам |
|||
19
Ёпрст
25.09.15
✎
09:50
|
(17)
ОлеДБ = СоздатьОбъект("OLEDBData"); Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Mode=ReadWrite;Collating Sequence=MACHINE"; Рез = ОлеДБ.Соединение(Соединение); Запрос = ОлеДБ.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Запрос.Выполнить("EXECSCRIPT('SET REPROCESS TO 60 SECONDS')"); Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')"); Запрос = ОлеДБ.СоздатьКоманду(); ТекстЗапроса = " SELECT * FROM 1supdts"; ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроку(); |
|||
20
Ёпрст
25.09.15
✎
09:50
|
(18) да уж...
|
|||
21
oslokot
25.09.15
✎
09:50
|
эт прямой запрос к справочнику, с кое-какими условиями
|
|||
22
ДенисЧ
25.09.15
✎
09:51
|
(19) База = СоздатьОбъект("OLEDBData");
Соединение = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source=""" + КаталогИБ()+ """;"; сообщить(соединение); Рез = База.Соединение(Соединение); Запрос = База.СоздатьКоманду(); FAILED! IDataInitialize::GetDataSource(): Формат строки инициализации не соответствует спецификации OLE DB. |
|||
23
oslokot
25.09.15
✎
09:51
|
(20) о да, эт мой первый прямой запрос))) 5 летней выдержки
|
|||
24
Ёпрст
25.09.15
✎
09:53
|
(22) скачай vfpoledb провайдер, для начала
|
|||
25
Ёпрст
25.09.15
✎
09:55
|
||||
26
ДенисЧ
25.09.15
✎
09:58
|
(24) (25) дык того уже давно. И установил.
|
|||
27
Ёпрст
25.09.15
✎
09:59
|
И ?
|
|||
28
Ёпрст
25.09.15
✎
09:59
|
прям тот, что в (25) установил ?
|
|||
29
Ёпрст
25.09.15
✎
10:00
|
+ в (22) как бэ не совсем та строка, что в (19).
:) |
|||
30
Ёпрст
25.09.15
✎
10:01
|
ибо кавычек там поболее будет.
|
|||
31
Ёпрст
25.09.15
✎
10:01
|
ну и коллэйшен не указан
|
|||
32
ДенисЧ
25.09.15
✎
10:03
|
(28) Именно тот. ещё раз даже специально переустановил...
|
|||
33
Ёпрст
25.09.15
✎
10:05
|
(32) ну, тогда копипасте того что (19) пробуй, сперва
|
|||
34
ДенисЧ
25.09.15
✎
10:05
|
(30) убрал кавычки (просто у меня в пути пробелы), поставил коллейшн.
Всё то же самое. |
|||
35
Ёпрст
25.09.15
✎
10:06
|
ну не верю :)
|
|||
36
ДенисЧ
25.09.15
✎
10:06
|
(33) Ей что, deleted не понравилась? Вот ведь...
|
|||
37
Ёпрст
25.09.15
✎
10:07
|
если че, у меня в пути тоже есть пробелы и русские символы и (19) работает
|
|||
38
ДенисЧ
25.09.15
✎
10:07
|
(37) Ну, то заработало... Что ей не нравилось?
|
|||
39
Ёпрст
25.09.15
✎
10:08
|
(38) делетед видать :)
|
|||
40
ДенисЧ
25.09.15
✎
10:10
|
Ладно, усем спасибо.
Вроде начало работать. дальше уже сам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |