#0
by Aristo
Коллеги, есть проблема. База "Рарус - магазин", однопользовательский вариант, пользователи работают в монопольном режиме. Было бы занятно использовать в этой базе прямые запросы, с использованием 1c++. Пробовал Visual FoxPro Ole DB Driver 9.0, но у него есть ограничения - не работает в монопольном режиме. В связи с этим 2 вопроса: 1. Можно ли вообще с помощью другого драйвера делать эти запросы, находясь в 1С монопольно? 2. Если да, то можно про этот драйвер подробнее ?
#5
by Ёпрст
небольшая подмена dbeng32.dll и всё прекрасно работает сто лет в обед и на фоксовом провайдере.. если что.
#6
by Aristo
Попробую, очень интересно. Спасибо. Пока в уме только сомнения насчет инициализации виртуальной таблицы товаров каждый раз перед запросом.
#9
by Aleksey_3
А поподробнее. Я знаю патчат фоксовую длл vfpoledb.dll, убирают блокировку. Но это не спасает от монопольного режима
#16
by Aleksey_3
Кидай тут. А то там уже таймер обратного отсчета убрали. Видно support уже и не надеяться, что он подниметься
#17
by Aleksey_3
Решение проблемы выполнения прямых запросов в монопольном режиме и исправление ошибки “CodeBase –56” для DBFной версии 1С:Предприятие 7.7. Компонента перехватывает все функции DBEng32.dll. В функциях открытия таблиц выполняет проверку режима запуска сессии 1С. Если 1С запускается в монопольном режиме, то таблицы открываются в эксклюзивном режиме, закрываются и открываются в разделяемом режиме. Для функций, требующих эксклюзивного доступа к таблицам (реиндексация, упаковка, удаление всех записей), таблица закрывается, открывается в эксклюзивном режиме, выполняется “эксклюзивная функция”, закрывается и открывается в разделяемом режиме. Для рабочих таблиц, используемых в штатных запросах, режим открытия не изменяется. (c)
#18
by Aleksey_3
DBEng32 (8.0.0.7, Share) – выполнение прямых запросов в монопольном режиме для DBFной версии 1С:Предприятие 7.7 в среде 1С++
#19
by Ёпрст
вот это оно и есть... качаем это файло... в папке BIN переименовываем в DbEng32.dll в DBEng33.dll и кладем туда скаченное файло. Наслаждаемся.
#22
by orefkov
Но ведь по сути это просто получается обман 1Ски. Обычная работа так и идет в разделяемом режиме, просто 1С считает, что в монопольном. А реальной выгоды, которая бывает от настоящего запуска в монополе - нетути.
#23
by Стрелок
а может наоборот? 1С считает что работа идёт не в монопольно мрежиме хотя на самом деле режим монопольный. или я ошибаюс?
#24
by Стрелок
как это "нетути"? мне например надо чтобы при написании и отладке программы я мог по Ф11 из конфигуратора тсратовать базу и пользоваться быстрыми запросами
#25
by orefkov
Ошибаешься. Хм, у меня уже давно настроено стартовать по F11 не в монополе. А вот то, что все операции выборок и тп в 1С в немонопольном режиме идут медленнее - факт. То есть например, запуск в монополе используют для массового перепроведения, потому как быстрее. При использовании этой прилады скорее всего выигрыша от запуска в монополе не будет. Хотя конечно, разработка хорошая, все-таки тягаться с фоксом в некоторых задачах тяжело. Ну да на 1спп.ру все эти вопросы сравнения с фоксом обсосаны до косточек.
#26
by ДенисЧ
"у меня уже давно настроено стартовать по F11 не в монополе" - рецептом не поделишься?
#28
by orefkov
Сохранить в bin/config/scripts Назначить на нужные кнопки. $NAME Запуск 1С var bNeedRun = 0 function Run1C(mono) { var shell = new ActiveXObject('WScript.Shell') if(MetaData.Modified) { { } } } if(bNeedRun) } }
#30
by Ёпрст
ээх..на наших серверах не особо заметил падения производительности.. Надо бы потестить как-нить. да скачай ты наконец все скрипты к опенконфу в репозитарии.. :)
#31
by orefkov
Вот подтверждение для Создаем справочник Новый1, для простоты - длина кода 0, длина наименования - 25. Заполняем элементами со следующими названиями: Теперь используем непобедимый фокс. Вариант 1, заставим фокс юзать индекс UPPER(DESCR): Получаем три элемента: A lat, B lat, N lat O lat и P lat не попали в выборку, хотя они меньше, чем Z Ну, тогда попробуем запрос без использования фоксом индекса, чего на практике следует избегать. Вариант 2: Теперь получим 5 записей: A lat, B lat, N lat, O lat, P lat Вроде бы как бы и верно. Теперь тот же запрос через 1sqlite: Вариант 3: Получаем в ответ 6 записей: A lat, B lat, N lat, № рус, O lat, P lat Кто прав? Открываем форму списка справочника, включаем сортировку по наименованию, и видим, что с точки зрения 1С прав все-таки запрос 1sqlite. Оба фоксовых запроса вернули неверный результат.
#33
by orefkov
+ А вот самый ужас. На тех же данных запрос через фокс с использованием индекса с проверкой на равенство (что часто применяется в джойнах): Вообще не нашел существующую запись. То есть если раньше считалось, что отличия в порядке сортировки индексов в cdx файлах между 1С и фоксом влияют только при записи (фокс портит 1Сные индексы), то теперь понятно, что это может привести к проблемам и при чтении.
#35
by orefkov
А вот тут надо еще подумать кто казлы. Зачем 1С для codepage 1251 сделала какую-то свою сортировку, отличную от общепринятой?
#37
by orefkov
Ага, это очень "без дыр" - засунуть символ '№' между 'N' и 'O' И ладно бы только его, там таких приколов еще много...
#38
by orefkov
Вот сделай для пустого справочника: А потом посмотри как этот справочник 1С отсортирует в форме списка. А выгрузи все в ТЗ, в ней отсортируй по наименованию - и сравни с формой списка - будешь удивлен.
#39
by Кириллка
не, спасибо, я с фоксом наигрался, когда писал oledb, теперь меня проблемы фокса могут волновать только в страшном сне :)
#41
by Кириллка
кстати, ты как-то светил скрин, в котором у тебя было флотинг окно. Можешь в нескольких предложениях рассказать как ты это делал? :)
#43
by hogik
"...запуск в монополе используют для массового перепроведения..." Скорость выполнения операций в транзакции для разделенного режима, практически, равна скорости выполнения транзакций в монопольном режиме. А скорость чтения данных в локальном режиме (вне транзакции), если запущена одна сессия 1Са, практически, равна скорости чтения в монопольном режиме. Мы, вроде, это уже выяснили... ;-)
#45
by Babay
так вроде в индекс фокс никогда не попадет. kiruha на 1cpp.ru очень плотно исследовал эту тему.
#47
by hogik
Попадает иногда. ;-) Кодировка, действительно, у 1С "своя" - в движке одна, а в оперативной памяти другая. ;-) Но "странный" порядок сортировки в таблицах БД не от 1Са, а от "Sequiter Inc.". Если сравнить DBFные системы: родной 1Совский CodeBase, CodeBase 6.5, Advantage 8.1/9.1, то у них у всех разный порядок сортировки. И у всех порядок не совпадает с порядком сортировки/сравнения символов в оперативной памяти 1Са. Но если говорить о моем предложении из , то оно касается порядка символа "№". И по моим воспоминаниям значение "MACHINE" в FoxPro-подобных системах указывает на двоичное сравнение символов - без преобразования по таблице перекодировки. Что полностью укладывается в проверки от orefkov. Т.е. в индексах данные лежат в одном порядке, а FoxPro предполагает, что в индексах ключи лежат в другом (машинном) порядке и поэтому отрубает выборку раньше времени. При выборке без индекса тоже все логично - так и должно быть (по двоичному значению). P.S. В Advantage символ "№" стоит между символами "N" и "O", а в CodeBase 6.5 - не стоит на этом месте. P.P.S. Интересно, а в MS SQLной версии 1Са порядок в индексах совпадает с порядком сортировки/сравнения символов в оперативной памяти?
#48
by hogik
Странно. Почему в сообщении начало текста выделилось желтым цветом? Я этого не хотел... ;-)
#49
by Babay
А что значит "иногда" попадает в индекс? Я говорил к тому, что ты предлагаешь поставить "Collating Sequence=RUSSIAN" в результате чего мы потеряем главный плюс прямых запросов - скорость, т.к. больше не попадем в индекс и при каждом запросе будет сканироваться вся табличка данных.
#50
by hogik
1) Под "иногда" я понимаю пример теста от orefkov. Результат выборки то у него разный. Т.е., кажись, попал в индексы. ;-) Т.е. потеря данных, начиная с символа "№", связана с тем, что индексы - используются. 2) Я не знал, что установка "RUSSIAN" ломает попадание в индексы. P.S. Наше разночтение сообщений данной темы связано с тем, что я не понял Вашего текста из сообщения "так вроде в индекс фокс никогда не попадет". Т.е., что слово "так" относится именно к моему предложению установить "RUSSIAN". Т.к. в голове у меня была информация по моему сообщению. Извините, виноват...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Запуск 1С SQL на не MS SQL сервере ?
- 1С + MS SQL Прямой запрос на SQL к журналу расчетов на V 7.7
- Ошибка SQL 924 при просмотре процессов SQL 2000 +1C 77
- Как написать SQL запрос на 1С при обращении к другой SQL базе?
- SQL или не SQL ??? как решить ?
- 1cv8 SQL: Имя SQL сервера и имя SQL базы данных
- почему не работает SQL запрос (аналит SQL) ?
- 77 на SQL 2005, добавил константу , а где ее и как искать в SQL MS 2005
- Парралельная установка Sql 2000 и Sql 2005
- Как получить текст запроса SQL имея запрос языка 1С ?
- SQL запрос к DBF базе 1С 7.7 из 1С 8
В этой группе 1С
- Аналог editrekv.ert для восьмерки
- Можно ли использовать информационную базу 1С 8.1 из под SQL в файл-серверном варианте
- Справочник "Контрагенты", контактная информация.
- СКД: Отбор по двум связанным наборам данных
- v8: Настройка ЦФО в УПП
- Как сгруппировать данные в запросе, который формирует временную таблицу?
- "AKS Monitor" откуда скачать? Программа для Hasp
- при сравнении объединении конфигурации "подвисли" объекты никак не срастуться
- Модифицированность документа
- Конвертация: Искать объект приемника по внутреннему идентификатору....
- КД: Перенос справочника Контрагенты, задвоение. Поиск по Коду, наименованию, инн.
- Проектирование: Builder c++ (или Delphi): как добраться до объекта?
- Что за тупость? Обязательность ИТС в удаленном офисе.
- При наличии dsl модема как подключить dir-300 ?
- Firebird + 1c 7.7 как связать?
- Каким правильно в УТ оформлять инкассацию денежных средств?
- Как по номеру USB-ключа определить номер поставки?
- Что будет фирме-франчайзи за продажу ниже цен прайс-листа 1С?
- Как спозиционироваться на нужной строчке табличной части
- Метаданные. не корректно работает метод Содержит. Имхо