:: Вопросы по 1С
Re: Создание курсоров через ADO
nikepopov

Сообщений: 10
Дата регистрации: 14.03.2018
Ну, во встроенными объектами есть трудности:
Если использовать объект XBase:
1. Скорость чтения просто колоссально низкая
2. У меня таблицы очень большие, памяти на создание аналога в 1С (ТаблицаЗначений) для того, чтобы при помощи связей отобрать нужные не хватит
Если говорить про объект "ВнешниеИсточникиДанных", то
1. Нужно снимать конфигурацию с поддержки
2. Дополнительных преимуществ нет, так как это обычная работа через OLEDB.

Так что вариант с работой через стандартный ODBC вроде самый разумный.
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если количество "выбираемых" элементов не большое (в пределах пары десятков), то можно:
- динамически формировать текст запроса к основной таблице, подсовывая в условие
WHERE id_или_что_там IN ('0001', '0002', '0005', ...)

- тупо сделать цикл, вынимая по 1 записи (или группе записей) из мега-таблицы на каждом проходе, и сливая всё это вместе уже на стороне 1с.

Варианты, конечно, не супер, но вполне рабочие (первый тоже оптимизируем по индексу - конечно если индекс таки есть, и он структурный cdx - т.е. автоматом подключается и используется).

Во всяком случае это уж лучше чем пытаться не поддерживаемый синтаксис изподвыподверта использовать


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
Foxtrot
Автор

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
мне почемуто видится если по аналогии с фоксом, что вместо того чтобы писать USE mytable ты пытаешься использовать CRATEOBJECT(
возможно я ошибаюсь и чегото проглядел


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
nikepopov

Сообщений: 10
Дата регистрации: 14.03.2018
Igor Korolyov
Если количество "выбираемых" элементов не большое (в пределах пары десятков), то можно:
- динамически формировать текст запроса к основной таблице, подсовывая в условие
WHERE id_или_что_там IN ('0001', '0002', '0005', ...)

- тупо сделать цикл, вынимая по 1 записи (или группе записей) из мега-таблицы на каждом проходе, и сливая всё это вместе уже на стороне 1с.

Пробовал. Иногда проходит, но в некоторых случаях появлялась ошибка недопустимой длинны команды. Я отказался от метода, так как надёжность превыше всего.
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
nikepopov

Сообщений: 10
Дата регистрации: 14.03.2018
Foxtrot
мне почемуто видится если по аналогии с фоксом, что вместо того чтобы писать USE mytable ты пытаешься использовать CRATEOBJECT(
возможно я ошибаюсь и чегото проглядел

Я когда писал всё это был как в бреду. Много синтаксиса не пропускает OLEDB провайдер. Это было скорее похоже на "угадай команду". В Fox-e команда проходит, а через провайдер - ни под каким соусом. Но про CRATEOBJECT я даже не читал. Такого я ещё не видел.
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
Foxtrot
Автор

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
как я и предсказывал, все на много проще. к примеру такой вариант
создаешь в 1це таблицу, пихаешь в нее все что душе угодно
пишешь прогу на фоксе, которая создасть вторую таблицу на основе всех твоих ухищрений
вызываешь сие творение из 1це
открываешь результаты в 1це
профит!


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
nikepopov
Пробовал. Иногда проходит, но в некоторых случаях появлялась ошибка недопустимой длинны команды.
Ну так следить надо за размером генерируемой строки В 9-м фоксе сняли лимит на число элементов в in, а до того вроде бы 24 только можно было перечислять.
Максимальный размер команды в самом фоксе 8Кб, сколько в провайдере даже и не знаю... И да, там ещё есть SYS(3055) задающая, если очень грубо, количество условия в WHERE - каждый элемент в IN по сути это одно условие, и по умолчанию SYS(3055)=320 что должно соответствовать 40 условиям. Может ещё и это мешало.
И да, использовать надо крайние версии ПО - VFP OLE DB провайдер уровня VFP9 SP2.

Что мешает делать запрос по частям (ограничивая в пределе каждую часть одним условием) и потом объединять результат на стороне 1с - тоже неясно. Не должно оно быть очень уж медленно для разумных размеров выборок.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Можно сделать очень тупой COM-Server на фоксе. Причем сариализовать в структуру, которую 1С умеет десериализовывать: либо XML, либо ЗначениеИзСтрокиВнутр().
Ratings: 0 negative/0 positive
Re: Создание курсоров через ADO
Foxtrot
Автор

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
тож ведь так думал
но ежели нет опыта, то это только усложнит задачу исполнителю


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 2 (Гостей: 2)

© 2000-2024 Fox Club 
Яндекс.Метрика