Подскажите, с чего начать изучение прямых запросов в 7.7 #535416


#0 by Перелетный косяк
Здрасте. Есть задача (свертка 7.7. dbf базы 6 ГБ - стандартными средствами упираюсь в затык при 1cv7.exe = 2 Гб), для решения которой похоже придется разбираться с темой прямых заросов. Подскажите, хотя б приблизительно, с чего начать. Наверное, это есть на 1cпп.ру но там куча вариантов документации и надо перелопатить большой объем инфы. А хотелось бы небольшую статью по Прямым запросам + пример...
#0 by Перелетный косяк
Здрасте. Есть задача (свертка 7.7. dbf базы 6 ГБ - стандартными средствами упираюсь в затык при 1cv7.exe = 2 Гб), для решения которой похоже придется разбираться с темой прямых заросов. Подскажите, хотя б приблизительно, с чего начать. Наверное, это есть на 1cпп.ру но там куча вариантов документации и надо перелопатить большой объем инфы. А хотелось бы небольшую статью по Прямым запросам + пример...
#1 by Chameleon1980
#2 by Кириллка
с установки v82
#3 by 1Сергей
1cv7.exe = 2 Гб....
#4 by AeDen
с теории по реляционным БД.
#6 by Ork
"1cv7.exe = 2 Гб" Где такую достал? У меня ~ 300 кБ. Если речь за ограничение формата dbf в 2 гБ. Так оно действует независимо от того чем файлик обрабатывается.
#7 by Chameleon1980
упал под стол
#8 by acsent
Есть где то "хауту" по прямым запросам, первым автором которого был я
#9 by Chameleon1980
упал под стол (чет не обратил сначала внимания)
#10 by vS
давай хоть свой :)
#11 by Перелетный косяк
спасибо. про форум на 1cпп не подумал...
#12 by Перелетный косяк
с 7-кой знаком хорошо, но прямые запросы не ваял вопрос - сложно ли окучить данную тему? времени долго уйдет?
#13 by andrewks
дык дбф-ку можно и без прямых запросов порезать нормально. свою обработочку накидать, и вуаля
#14 by VladZ
Зависит от "башковитости"...
#15 by Lepochkin
у тебя дбфка более 2 Гб выросла, а сама база 6 весит???
#16 by Перелетный косяк
не дбф-ка. на сколько я понял ТЗ-шка во время выполнения запроса в памяти разрастается > 2гб. здесь не причем ни размер дбф-ки, ни FAT-система, ни битность Виндов. просто регистр с большой кучей записей по куче измерений сворачивается...
#17 by Ёпрст
результатом выполнения штатного запроса в 1с-ине есть создание временной таблички дбф в темповом каталоге .. и память тут не причем
#18 by Перелетный косяк
как-так не при чем? размер 32-битный процесс может получить доступ к памяти более 2^32?
#19 by Ёпрст
твой примитивный запрос никогда за эти пределы не вылезет. Если ты только не будешь запрос в ТЗ выгружать.
#20 by Перелетный косяк
там несколько сот тысяч строк в результате запроса... валится где-то на 300 000 строке
#21 by Ёпрст
в какой момент ? В момент выполнения запроса ? Или в момент выгрузки запроса в ТЗ ? Если первое - то упёрся на ограничение в 2 гига для дбф-ки..
#22 by Ёпрст
+21 хотя, я сомневаюсь, чтоб у тебя была такая выгрузка.. 300 000 для дбф это очень мало.
#23 by Перелетный косяк
чето недогоняю.. 0. Устанавливаю Microsoft® Visual FoxPro® OLE DB Provider (vfpoledb.dll) v.8.0.0.3117 ////////////////////////////// 1. в глобальнике загружаю ВК 1cpp.dll + ВК 1sqlite.dll ////////////////////////////// 2. Захожу НЕМОНОПОЛЬНО под юзером с админскими правами ////////////////////////////// 3. выполняю текст простейшего запроса из примеров по ссылке : {E:TEMPПРЯМЫЕ ЗАПРОСЫ-1.ERT}: База данных не установлена Не знаю что думать. Ведь если бы строка соединения была неправильной или драйвер не тот, то Рез = База.Соединение(Соединение) возвращало бы 0.. Получается, к базе цепляемся,  неправильно написали текст запроса, хотя я его прямо скопипастил… Подскажите, в чем дело, ибо туплю… Может, стоит отказаться от "OLEDBData" в пользу "ODBCRecordSet"? хотя в руководстве красным по белому сказано «Для DBF версии рекомендуется использовать объект “ OLEDBData”»
#24 by Перелетный косяк
иногда стоит написать чушь, потом ее прочитать, чтобы понять что это чушь...
#25 by НП
А почему именно прямые запросы? Что это дает в данном случае, какие преимущества?
#26 by Перелетный косяк
см ,
#27 by НП
Я свертку совсем не так делаю. Создаю копию базы со справочниками, но без документов. Переношу остатки по OLE. А также (непроведенными) документы из прошлого периода, необходимые для разрешения ссылок. Все.
#28 by Aleksey
Юзай 1SQLite, по крайне мере не придется каждый раз устанавливать Microsoft® Visual FoxPro® OLE DB Provider и проблем с монопольным доступом у нее нет
#29 by НП
Не надо 1sqlite, прямых запросов, CPP и прочих интересных вещей. Нужно решать основную задачу - свертку базы. Для очень больших баз можно делать только, как в . Никаких чудодейственных средств, которые существенно уменьшат время, не меняя метода, не бывает.
#30 by Злопчинский
скулайт не повзволяет апдейтить базу.. поянтно, что это редко надо, но тем - не менее...
#31 by GreyK
Позовите программиста. Изучать прямые, кривые и прочие запросы надо дома под пивко, когда делать нечего.
#32 by Лефмихалыч
наиух семерку - это в целом а по сабжу - вам нужны прямые руки, а не запросы
#33 by НП
А восьмерку обрезать - просто? Вообще, физически реализуемо?
#34 by Aleksey
Есть такое, типа нельзя прямым запросом пометить на удаление кучу объектов
#35 by Chameleon1980
"...наиух семерку - это в целом ..." А че в ветке то забыл?
#36 by toypaul
#37 by Mihenius
Я когда то переделывал с Rainbow на 1с++
#38 by Перелетный косяк
Начал разбираться - возникли вопросы. Зубры, подскажите: возвращает пустую выборку если в тексте запроса параметр задать без модификатора ($Док.Контрагент = :ВыбКонтрагент) - без "~", тогда возвращается выборка документов, в которых ПУСТОЕ ЗНАЧЕНИЕ поля "контрагент". чето я туплю.. подскажите плиз
#39 by SnarkHunter
ВыбКлиент.НайтиПоКоду("00000078") = 0
#40 by Перелетный косяк
нет, там позиционируется на элементе, я проверял.... счас попробую..
#41 by Перелетный косяк
#42 by SnarkHunter
Добавь NOLOCK: --> FROM $Документ.Реализация as Док (NOLOCK)
#43 by Перелетный косяк
а для дбф это можно? и нужно ли?
#44 by Ёпрст
можно.
#45 by Ёпрст
+44 и нужно.
#46 by Перелетный косяк
Народ, объясните плиз нюансы использования УложитьСписокОбъектов13 и УложитьСписокОбъектов через ODBC и OLEBD (в дбф) пробовал по разному - ничего не получается 1. ----------------------------- на выходе имеем выборку с теми накладными, где ПУСТОЙ контрагент 1.2 то же что и 1.1, но --------- виснет намертво на Запрос.УложитьСписокОбъектов 1.3 УложитьСписокОбъектов13 вроде как для olebd нету PS в группе контрагентов не оч. много. проверял - оставлял всего парочку - ничего не менялось
#47 by Перелетный косяк
---------------- вот собственно здесь  имеем "Не смогли уложить..."
#48 by Mikeware
Если ивестно, где и на каких объемах процесс "падает" - не быстрее ли будет сделать этот процесс несколько раз с ограничениями?
#49 by Mikeware
И куда вы "укладываете", позвольте полюбопытствовать?
#50 by Ёпрст
|$Док.Контрагент IN (SELECT val FROM :ВыбКлиентос) ..........
#51 by Перелетный косяк
да там по сути уложить в список 3 значения - дело не в большом объеме можно покидать идентификаторы в строку и сранивать с ней - но хотелось бы разобраться с методом УложитьСписокОбъектов
#52 by Ёпрст
+50 для дбф, для простоты понимания, лучше 1sqlite от А.Орефкова пользовать.
#53 by Перелетный косяк
так тоже пробовал не укладывает
#54 by Ёпрст
врешь.
#55 by Перелетный косяк
а по скорости что быстрее: 1sqlite, olebd, odbc?
#56 by Mikeware
я про то, что "типа не хватает памяти, ТЗ получается с дофига строк".
#57 by Ёпрст
+54.. тест на вшивость:
#58 by Ёпрст
всё зависит от текста запроса. А так, odbc с дбф не очень "дружит", поэтому его никто не использует. А фокс, при "правильном" запросе с попаданием в индекс обгоняет 1sqlite на group by.. Да и, где-то без фокса запрос не слепишь - update/insert/запрос к внешней базе..
#59 by Перелетный косяк
полный кусок кода ГруппаСобственные= СоздатьОбъект("Справочник.Контрагенты"); сообщает ----------- Internal error: State 42000, native 219, message [Microsoft][ODBC Visual FoxPro Driver]Command contains unrecognized phrase/keyword. SELECT FROM    dh294 as Док WHERE    Док.sp295 IN (SELECT val FROM '') ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);                   {E:TEMPПРЯМЫЕ ЗАПРОСЫ-1.ERT}: State 42S02, native 173, message [Microsoft][ODBC Visual FoxPro Driver]File '' does not exist.
#60 by Ёпрст
+58 а так, 1sqlite проще в синтаксисе, не нужно заботится об попадании в индекс, есть "фенечки" типа УложитьТЗ, "штатно" работает в монопольном режиме (для фокса нужно либо dbeng32 патчить, либо провайдер свой ставить) ну и.. еще много чего.
#61 by Перелетный косяк
спасибо на добром слове, но.. еще раз проверил, всякое бывает. группа найдена и спосиционирована
#62 by Ёпрст
еще раз, для дбф пользуй OLEDBData
#63 by Ёпрст
см .
#64 by hohol
уже лет 5 как пора заканчивать.
#65 by iv74
нужно на 200 000 строке сворачитать ТЗ или выгружать частями - и никаких 1C++ не нужно
#66 by Перелетный косяк
с этого и начинал тоже не получается, см "я чувствую, что глуп.." (с)
#67 by Ёпрст
полный текст модуля дай, вместе со строкой подключения.
#68 by Ёпрст
+67, и это, в монопольном режиме поди еще торчишь ? :)))))))))))))))))))))))))))))
#69 by Перелетный косяк
+ там другая ситуация - укладывать-то он укладывает во врем.таблицу, не либо уложил не то, либо условие обрабатывается неправильно
#70 by Ёпрст
че ?
#71 by Перелетный косяк
в монопольном он просто ничего сделать не дает)) полный текст для "OLEDBData": ------------- выдает выборку с ПУСТЫМИ контрагентами ---------- ---------- система вешается намертво
#72 by Ёпрст
п..ц Ты чего, издеваешься ?! ........
#73 by Перелетный косяк
сорри. я думал это для odbc, счас попробую для OLEDBData
#74 by Ёпрст
+72 да, чтоб не позориться при написании вот этого: Достаточно кинуть реквизит диалога на форму и выбрать в него нужное значение справочника.
#75 by Перелетный косяк
да то же самое с OLEDBData --------- если заменить на
#76 by Перелетный косяк
да кидал уже, тот же эффект
#77 by Ёпрст
1cpp какой версии, для начала ?
#78 by Перелетный косяк
1cpp - 3.2.2.0
#79 by Ёпрст
на вот, развлекайся.
#80 by Ёпрст
+79 и там пофик что выберешь - группу или элемент, если что.
#81 by Перелетный косяк
{E:TEMP_ЗАПРОС К ВНЕШНЕЙ БАЗЕ3.ERT}: FAILED! ICommandText::Execute: Function argument value, type, or count is invalid.
#82 by Перелетный косяк
с твоим запросом такая же хрень система вешается намертво(( чую, что-то в дровах..
#83 by Ёпрст
для начала, vfp поставь этот:
#84 by Перелетный косяк
взлетело. дело было в vfpoledb.dll - 8.0.0.3117 на vfpoledb.dll - 9.0.0.5815 работает отлично Ёпрст3, спасибо за помощь
#85 by Ёпрст
не за что.
#86 by Перелетный косяк
В рамках изучения 1sqlite (уже по другому вопросу) возник вопрос – хочу получить обороты по оборотному регистру «Продажи». С остаточными регистрами понятно – | from [РегистрИтоги.ТовОстатки] as ОстаткиТМЦ А что в случае оборотного регистра? Пробую Ругается «no such column: date». А как тогда это поле называется? Пробовал «date», «Period», «idx_date_time_iddoc_lineno_actno». Ткните, где можно почитать про структуру таблиц регистра оборотов.
#87 by ДенисЧ
бесплатный совет: сделай select * и смотри на все поля..
#88 by Перелетный косяк
сделал .. а там нет поля с типом дата. только поля ресурсов, измерений и т.д. + поля ссылки на документ регистратор. получается что надо делать лефтджойн с журналом доков?
#89 by Ёпрст
воткни галку - быстрая обработка движений у регистра, или выстави отбор движений/итогов у одного из измерений регистра - поля и появятся. Это в разы быстрее, чем left join к журналу документов
#90 by Перелетный косяк
а к каким последствиям это может привести на боевой базе? (увеличение объема базы, долгое проведение и т.д.) просто чтоб в лужу не сесть...
#91 by Ёпрст
ни к каким. Быстрее будут отчеты формироваться (даже штатные) и всего лишь
#92 by Обработка
Ага ....проводиться доки будут медленнее и база будет расти быстрее.
#93 by Ёпрст
какая наивность. На производительности это никак не отразится, да и лишнее поле в табличке ну никак не повлечет значительный прирост базы
#94 by Обработка
сделай проще. 1. создай чистую базу перенеси спр-ки 2. перенеси остатки можно по частям. 3. перенеси нужные доки и историю если нужно. Будет быстро и база чище. Удачи. ну а как это сделать найти или написать обработки.
#95 by Обработка
Не наивность это из опыта. В начале 1с-програмерства я часто включал этот флажочек. НО когда одна база стала жутко тормозить при оптимизации снял эти галочки. Резульат был ощутим, хотя и ни сильно... Его можно вклчать тольок  при необходимости если это надо . Все надо ценить для каких целей регистр и как он часто юзается тп.
#96 by Перелетный косяк
база УРБД, объем большой. не приведет ли к тому, что снова выгрузятся все накладные причастные кдвижениям регистра? в принципе сабж уже решен. сейчас просто самообразовываюсь по 1с++ и 1sqlite
#97 by Ёпрст
да уж.. я за размеры базы устал уже говорить. потребуется просто реструктуризация базы. накладные никуда не полетят.
#98 by _KaA
...закладочка...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С