В общем хочу отдать на суд вольным зрителям набор КОП «ПрямойЗапрос» с документацией к нему.
Что он может:
— выполнение запроса на языке подобном 1Cv8
— выполнение запроса на любом формате БД (DBF — SQLite, SQL — ODBCRecordset)
— наличие виртуальных таблиц
— выполнение параметризированных запросов
Что он не умеет:
— не отличает возможные реквизиты объектов метаданных совпадающих с предопределенными реквизитами этих объектов (например: Код, Наименование в справочнике и т.п.)
К классу приложена подробная документация.
Выражаю свою благодарность товарищам:
— тов. berezdetsky за класс AccountsRecordset
— тов. Steban шаблон параметра — это круто
— тов. JohnyDeath за пример ВТ ПодчиненныеДокументы и прочее
— тов. Orefkov за 1sqlite
— тов. Dmitro за практические советы
— всем разработчикам 1С++ за 1С++
— ну и всем остальным кто словом и делом помогал.
Пример использования:
ТекстЗапроса = «ВЫБРАТЬ
| Рег.ТекущийДокумент КАК [Документ $Документ]
| ,Рег.ВидДокумента КАК [Документ_вид $ВидДокумента]
| ,Рег.Склад КАК [Склад $Справочник.Склады]
| ,Рег.Номенклатура КАК [Номенклатура $Справочник.Номенклатура]
| ,Рег.КоличествоНачальныйОстаток КАК ОстатокНач
| ,Рег.КоличествоОборот КАК Оборот
| ,Рег.КоличествоПриход КАК Приход
| ,Рег.КоличествоРасход КАК Расход
| ,Рег.КоличествоКонечныйОстаток КАК ОстатокКон
|ИЗ $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачПериода
| ,:КонПериода
| ,Документ
| ,ДвиженияИГраницыПериода
| ,
| ,(Склад,Номенклатура)
| ,(Количество)) КАК Рег«;
Запрос = СоздатьОбъект(«ПрямойЗапрос»);
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьТекстовыйПараметр(«НачПериода«,НачГода(РабочаяДата()));
Запрос.УстановитьТекстовыйПараметр(«КонПериода«,РабочаяДата());
Запрос.РежимОтладки = 1;
ИТЗРезультат = Запрос.Выполнить();
ИТЗ.ВыбратьСтроку();
Официальная версия: 1.8.3 от 30.12.11 г.
Более полная информация на форуме 1С++.
P.S. данная разработка распространяется бесплатно как для частного, так и для коммерческого использования. Поддержка осуществляется при наличии свободного времени. Возможно сотрудничество на предмет внедрения данной разработки в конкретные конфигурации.
Одна документация чего стоит!
Завидую таким людям!
Офигеть!, на такое описалово, у меня бы месяц, не меньше ушло бы… а тут еще и работать надо..
🙂
Да, дока приличная… но использовать это все я бы побоялся, автор и сам пишет — «возможны ошибки»… работа, видимо, проделана большая — но в чем смысл тогда при потенциальном наличии ошибок?
(3) Ошибки со временем исправятся, а вот полученный при работе с данным классом опыт — это бесценно..!
(3) На счет ошибок могу сказать следующее. Это на самом деле вторая версия. Первая была полностью переписана и в виду этого я и пишу «возможны ошибки». Хотя, на текущий момент из того что я использовал ошибок не было обнаружено.
От Випа недавно первый раз услышал про проект 1с++.
Теперь первый раз увидел пример создания класса в 1с++.
Конечно, здорово !
Добавлена новая версия КОП и обновленная документация.
Готов озвучить часть плана по развитию класса, правда без сроков:
— доработка документации по индексам реализованным в таблицах 1С
— доработка документации по инструкциям языка запросов
— доработка ВТ по бухгалтерским таблицам
— реализация ВТ по регистрам
— реализация ВТ СрезПервых
— реализация различных функций и инструкций
По пути посмотрим что еще будет.
В чем отличие от обычного запроса через 1С++?
Отличий много и не очень одновременно 🙂
1. Источники данных связанные с таблицами 1С указываются без символа $. Например: Справочник.Контрагенты, Документ.Выписка, ДокументСтроки.ПоступлениеМатериалов
2. Возможность поименования таблиц не имеющих метаимен. Например: в тексте запроса можно писать «ЖурналДокументов» вместо _1sjourn, или «Проводки» вместо _1sentry.
3. Можно не использовать конструкцию $ОбщийРеквизит. А вместо $ФлагРегистра необходимо писать Регистр<ИдентификаторРегистра>. Например: $Жур.Комментарий вместо Жур.$ОбщийРеквизит.Комментарий.
4. Внутренние идентификаторы подставляются самостоятельно классом. Более того их необходимо объявлять не через «$», а через «:». Так же для DBF формата БД всегда подставляется 36-тиричное представление, а для SQL (как правило) 10-чное, + если указать модификатор после идентификатора то 36-тиричное. Т.е. конструкции вроде ВидСправочника36 нет, вместо нее :ВидСправочника.ОсновныеСредства~.
5. Наличие ВТ $ПодчиненныеДокументы, $СрезПоследних
6. Урезанные параметры у вирт. значения $ПоследнееЗначение
7. $ПоследнееЗначение как и $Константа возвращают подготовленные значенияю. Т.е. для числа это Numeric(n,m), для даты это DateTime или формат ГГГГММДД, для прочих — CHAR(n) длинной в зависимости от реквизита. (может 1С++ также делает я не помню)
8. Модификаторы текстовых параметров пользователя слегка отличаются от 1С++
Ну кажется все что вспомнил.
+(9) ты главное забыл сказать. Теперь можно не думать о формате БД, в которой работаешь 😉
(6) Если vip’a поменьше банить будете, много чего еще услышишь (увидишь).
(11) Если VIP -жизненный статус , то бан даже полезен.
Подталкивает к размышлениям.
(12) Подталкивает справедливый.
Последний подтолкнул к совсем другим размышлениям.
(13) Подталкивает любой.
Совсем другие размышления и имелись ввиду.
(10) ну да… спасибо что напомнил 🙂
Кстати по просьбе Donat-а ВТ по регистрам будет аккурат после документации по индексам и инструкциям языка (те которые не описаны до конца).
(15)
Интересно, сколько времени уходит на документацию ?…Так, для справки.
По разному. Но в среднем на документирование уходит около 20-30% времени от времени разработки. Т.е. если я пишу КОП месяц то документирую обычно около недели. Например у меня есть разработка на которую документация составлена на 30%, а уже 108 страниц текста. Думаю что на данный КОП будет в районе 100 страниц в итоге.
(17) Круто… мне каменты то вломы в модуле постить… а об достойном описаове… эх, не дано 🙁
(18) такая же беда. Вот сижу и молча завидую.
У меня на доку уходит больше времени чем на разработку и реализацию. Может потому что это слишком муторно и нудно?
Вышло обновление 1.01.003.
Доработана документация и исправлены ошибки выявленные мною.
Особенно прошу обратить внимание на советы программистам написанные в документации. Надеюсь они помогут избежать ошибок и вопросов.
Небольшие новости с фронта. Закончена разработка ВТ РегистрОстатки, РегистрОбороты, РегистрОстаткиОбороты. Осталось доработать документацию и дотестировать. Сегодня вечером будет выложено обновление.
Тестеры добровольцы приветствуются.
Ну собственно вот и обновление. Сообщаю на период с 15 по 19 меня не будет в сети, поэтому если не буду отвечать не обессудьте. Но в пн как выйду разберусь
Молодец, что еще можно сказать. Вот это дело! Чисто и красиво.
Когда-то хотел нечто подобное попытаться сделать. Очень рад за Ваши труды!
обожаю все, что связанное с 1c++. Обязательно посмотрю.
Вернулся чуть раньше…. ни уж то все всё проверили? 🙂 Комментариев то только один добавился и тот положительный 🙂
Запрос = СоздатьОбъект(«ПрямойЗапрос»);
{F:TESTПРЯМОЙ_ЗАПРОС.ERT(11)}: Неудачная попытка создания объекта (ПрямойЗапрос)
подскажите необходимые условия для запуска. Пытаюсь демо-пример реализовать.
Компоненту загружаю. а дальше? или ссылочку на обработку с примером. я копировал из Вашей шапки код.
2.0.3.4 1cp++ и пробовал 3.01.22
Хочется с этим всем разобраться..
Значит ВК 1С++ ты загрузил?
http://www.1cpp.ru/docum/icpp/html/classes.html
Тогда необходимо подключить классы, для этого почитай тут
После подключения КОП можно создавать объект прямой запрос и пробовать писать 😉
Выложил релиз 1.02.002 от 22.07.09 г. Прошу любить и жаловать. 😉
Вышла новая версия. Исправлена критическая ошибка при формировании данных по регистрам с использованием документов как границ расчетов.
Добавлена возможность подключения внешних баз данных.
По собственному опыту разработки различных классов на разных языках/средах знаю, что проще всего писать документацию совместно с тестами для полной гарантии соответствия доки и класса 🙂
Ищутся реальные пользователи данного класса.
Интересует где, как, для чего применяете и ваше мнение.
ИСПРАВИЛ КРИТИЧЕСКУЮ ОШИБКУ
Ошибка происходила при формировании ВТ РегистрОбороты (и как следствие ВТ РегистрОстаткиОбороты) если регистр имеет тип Остатки и БыстраяОбработкаДвижений = 0.
Версию не менял.
Вышла новая версия. Описание читать в документации или в топике. Брать наверху.
Исправлена критичная ошибка при формировании ВТ по регистрам. Всем качать обязательно. Описание в документации. Файл в топике.
примеры типовые добавь в конце описания, например, получение остатка по счету на определенную дату и по определенному субконту.
практикум так сказать, чтобы народ быстрее освоил.
(34) для получения остатки по счетам надо чтобы ВТ БИОстатки появилась.
А вот по регистрам вполне возможно и покажу что нибудь. Может через недельку напишу какой нить простенький отчет, или конфу тестовую выложу когда причешу ее нормально.
Выложил версию 1.03.001 (beta).
Почему бета…
1. Проведены работы по оптимизации времени подготовки запроса. В связи с чем необходимо более тщательное тестирование
2. Вирт. таблица БИОстатки для SQL написана «на коленке» по аналогии с DBF. При этом DBF оттестирована и проведены работы по оптимизации времени выполнения запроса, для SQL подобных работ еще не было (планируется исследовать на неделе).
Собственно вот
Обновил файл релиза 1.03.001 (бета). Теперь уже почти не бета версия, а похожа на стабильный релиз.
Отладил и поработал над оптимизацией выполнения запроса в SQL формате БД (спасибо тов. berezdetsky за его КОП AccountRecordset, без него было бы гораздно сложнее).
Обновил планируемый релиз 1.03.001 (beta). Проведены некоторые работы по оптимизации времени подготовки запроса. Файл брать в топике.
Выложена версия 1.03.002 от 17.08.09 г.
Добавлена бета-версия ВТ БИОборотыДтКт. Незначительные изменения по оптимизации подготовки запроса.
Хочу сказать для всех кто сомневается: версия 1.03.002 имеет статус «бета» исключительно из-за добавления в подготовку запроса виртуальных таблиц для работы с бухгалтерской подсистемой. В остальном же версия 1.03.ххх имеет ряд существенных улучшений по сравнению с версией 1.02.ххх и рекомендуется к использованию.
Выложена версия 1.03.003 от 18.08.09 г.
Добавлены новые функции языка запроса: Лево(), Право(), СокрЛ(), СокрП(). Некоторые приватные методы реализованы как публичные с целью возможности разбора виртуальных таблиц вне класса.
Пы.сы. Если на форуме 1С++ активность в теме про класс хоть какая-то. То здесь я не вижу не активности, ни заинтересованности. Что не так? Или разработка показалось «не особо нужной»…. странной даже.
Выложил обновление. Исправлена ошибка связанная с подготовкой запроса для dbf формата базы данных если в запросе участвовали объекты с наличием символа «_» в виде объекта (справочник, документа, регистр).
Новая версия: 1.03.004. Смотреть в документацию и продолжать пробовать. Если смельчаки конечно же имеются 😉
Вышла новая версия. 1.03.005.
Добавлена ВТ БИОбороты, существенно проработаны БИОстатки и БИОборотыДтКт.
Исправлены другие мелкие недочеты и недоделки.
Класс заменен без изменения версии. Небольшой багофикс некоторых косячков.
Вышла новая версия. Множество изменений. В том числе пара достаточно нужных и «полезных».
Кстати очень интересным получилась возможность использования данного класса в совокупности с решением «ПоставщикДанных».
http://www.1cpp.ru/forum/YaBB.pl?num=1248941896
Информацию о данной «разработке» можно «подсмотреть» на 1С++.
Очень приветствуется наличие в составе «инсталлятора» примеров каких-нибудь типовых отчетов (ну, например, для Типовой ТиС) — остатки ТМЦ, ведомость по остаткам ТМЦ и т.д. — переделанных с учетом исапользования данного класса — будет все нагляднее…
ух, чувствую надо плотно садится на прямые запросы и поставщика данных… а «табличное поле» — это что?
просто вдогонку: очень хочется чтобы работа, которую проделывает автор была «завершена», т.е. сабж «зафксирован» (с описанием известных багов и фич), существовала содержательная документация и т.д. — то есть чтобы был ПРОДУКТ. Отрадно видеть, что автор — делает «правильно». От использования возможностей 1С++ лично меня удерживают тоько небрежности и глюки, встреченные в том, что пришлось использовать… Простба побоьше примеров (конфигурация?)
(46)
Инсталлятор в данном случае получиться «неуниверсальным». Те кто пользуются классами уже имеют определенную иерархию, те кто не пользуется, велика вероятность что не будут. Я думаю достаточно «демо-конфигурации» и небольшого «фака» в документации как подключить, как использовать и т.д. Это я напишу. Спасибо за идею 😉
(47)
Табличное поле — это интерфейсный объект реализованный в 1С++ который позволяет на форме отображать табличное поле во многом идентичное 8-ке. Вообще примеры использования ТП я встречал и на данном ресурсе. Можно поискать. Если интересно то скорее надо уже на форум 1С++
(48)
Странно слышать про глюки. Насколько я использую 1С++ (а это практически все что в ней есть) большинство, если не почти все уже пофиксены.
Что касается примеров. В ближайшее время для ТиС я наверное перепишу пару отчетов. К сожалению текущая загруженность не позволяет уделять большое внимание «непроизводственным» вопросам :). Время, время, время.
Кстати что касается документации, то я думаю в данной разработке вопросов особых не должно быть, очень подробная дока получилась.
(49) спсб за ответ.
по (46) те кто уже пользуется — они не будут, а те кто заинтересован с нуля — будут. А то получается — 1.почему так мало откликов и 2.кто не использовал — тому и не надол, а кто использовал они и так все знают… 😉
по (48) речь не про глюки 1С++, а про прикладные выкладываемые решения.
(50) реклама — двигатель торговли ;). А на мой взгляд хорошего фака+демо конфигурация будет достаточно. 😉
Выложена версия 1.05.001 от 02.12.09 г. Кому надо смотреть.
Выложена версия 1.05.002 от 07.12.09 г.
Выложена версия 1.06.005 от 11.05.10 г.
Выложена версия 1.06.006 от 11.05.10 г.
Брать обязательно.
Давненько я здесь не появлялся. В общем очень много изменений произошло. Как всегда отражаю в топе только последние. А вообще с версии 1.06.006 вот полный список изменений:
1.07.005 от 28.05.10 г.
— Исправлена ошибка при расчете конечной даты ВТ РегистрОбороты (для регистра с типом Обороты) если дата совпадает с датой начала периода хранения оборотов.
1.07.004 от 24.05.10 г.
— Исправлена ошибка подстановки предопределенных текстовых параметров с количеством слов разделенными запятыми более 2-х.
1.07.003 от 21.05.10 г.
— Исправлена ошибка подстановки текстовых параметров с модификаторами.
— Исправлена «плавающая» ошибка парсинга ВТ без указания параметров.
1.07.002 от 18.05.10 г.
— Исправлена ошибка при формировании ВТ РегистрОстатки (по регистру с типом «Остатки») если дата получения остатков очень близка к ТА.
— Исправлена ошибка при формировании ВТ РегистрОбороты (по регистру с типом Обороты) если граница окончания получения оборотов близка к ТА. Оптимизирован расчет границ для сбора данных.
— Добавлена возможность обратной совместимости с версией 1.06.ххх. Все параметры ВТ не являются обязательными. Подставляются значения по умолчанию.
1.07.001 от 14.05.10 г. (beta)
— Добавлен новый параметр «Соединения» виртуальной таблицы РегистрОстатки.
— Добавлен новый параметр «Соединения» виртуальной таблицы РегистрОбороты.
— Добавлен новый параметр «Соединения» виртуальной таблицы РегистрОстаткиОбороты.
— Добавлен новый параметр «Соединения» виртуальной таблицы БИОстатки.
— Добавлен новый параметр «Соединения» виртуальной таблицы БИОборотыДтКт.
— Добавлен новый параметр «Соединения» виртуальной таблицы БИОбороты.
— Добавлен новый параметр «Соединения» виртуальной таблицы БИОстаткиОбороты.
— Возможна потеря обратной совместимости по всем измененным виртуальным таблицам с более ранними версиями.1.06.007 от 14.05.10 г.
— Исправлена ошибка виртуальной таблицы РегистрОбороты при формировании по регистру с типом «Обороты» и периодичностью Декада.
— Исправлена ошибки формирования виртуальных таблиц по бухгалтерской подсистеме при наличии более 1-го плана счетов.
Ну, начнем-с?
Предлагаю задавать вопросы относительно использования класса здесь.
(57)
Узок был их круг. Страшно далеки они были от народа (с)
(58) да уж… тут активность близка в нулю
Крутая вещь! Попробую применить вhttp://infostart.ru/public/72778 , потом напишу что получилось:) 134 страницы документации за вечер не освоить:)
(60) если решишь пользоваться бери с форума 1С++ новую версию. А то тут давненько не обновлял. И потом расскажи об успехах :).
как сделать чтоб на DBF базе работала не через SQLite а через VFPOLEDB? такое вообще возможно?
(62) разобрался
нашел 1sqlite.dll, вопрос снимается )
(61) На работе до сих пор пользуюсь версией 2.5, нареканий нет:) На сайте последняя 3.2.1.0, конечно ее получше использовать в новых наработках (ошибок много пофиксено). На работе боязно, работает — не трогай:) Только после многократного тестирования:)
(64) последняя счас не 3.2.1.0, а 3.2.1.17. Исправлений там на самом деле много. Переезд в принципе безболезнен, а вот возможности… особенно в части табличного поля.
(0) а автоматический подбор индексов — твоя работа или Orefkov?
А вообще — уже очень-очень нравится, пользоваться классом удобно:)
(61) Результаты:
VFPOLEDB
— Для DBF делал развертку виртуальной таблицы остатков (итоги+движения). Потратил 2 дня на разбор полетов
Класс ПрямойЗапрос
— Для DBF написал запрос. Потратил 1 час, вместе с чтением документации на 1sqlite и класс ПрямойЗапрос. Скорость выполнения увеличилась даже визуально!
Итог: класс использовать нужно! Рекомендую всем, кто не хочет мучений при написании прямых запросов к DBF
На заметку: Конструктор qryConsole по умолчанию ставит между параметром и модификатором пробел «:ДатаПолученияОстатков ~», при использовании класса текст запроса необходимо править — убирать пробел: «:ДатаПолученияОстатков~»
Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:
Показать
В примере показано, что меняется. Старый вариант запроса для DBF (VFPOLEDB ) и SQL закомментирован
(66) Подбор индексов — это работа 1sqlite, т.е. Саши Орефкова.
(67) по поводу модификатора посмотрю чтобы пробелы не учитывались.
(68) я на 1С++ писал что есть некоторые недоработки.
Цитата: «В частности Жур.$ОбщийРеквизит.ИмяРеквизита можно писать как $Жур.ИмяРеквизита, а $nolock вообще отсутствует везде.
Ну и сравнение «WHERE $Жур.ДатаДокумента»… тут такое дело что сравнивать left(date_time_iddoc,8) (для SQL будет так) не самое хорошее решение. Проще после кода поставить проверку, если это ПрямойЗапрос.ЭтоSQL = 1 то данную часть заменить на $Жур.ПозицияДокумента. Т.е. ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,»WHERE $Жур.ДатаДокумента»,»WHERE $Жур.ПозицияДокумента»);». 😎
обязательно сделаю такую проверку
А по поводу $nolock я прочитал в твоей документации, что происходит подстановка автоматическая для SQL, а для 1sqlite это и не нужно. Или я не так понял?
Ну, раз уж на то пошло — можно вернуть знак $ перед регистрами движений? Не очень удобно править руками запрос qryConsole, первый раз я даже долго искал в своем запросе ошибку (спасибо Орефкову за консоль запросов 1sqlite, помогла разобраться)
(70) больше не буду дублировать:) дальнейшая переписка наhttp://www.1cpp.ru/forum/YaBB.pl?num=1246429625
Поставлена задача оживить большую распределенную базу на бухгалтерской компоненте — центральная SQL и периферийные на DBF. С этой целью начал исследование возможностей 1с++ и класса ПрямойЗапрос… Начать было сложновато, но уже что-то получается, и результаты очаровывают настолько, что я для себя решил, что когда заброшу 1с и займусь скульптурой, первым делом наваяю памятник человеку, придумавшему колготки (это просто было уже решено раньше на основе весенних впечатлений), и сразу за ним — бюсты создателей 1с++ и этого класса! Ибо это — вещь!! Спасибо vandalsvq и за класс и за основательную документацию! Похоже, я буду активно его использовать..
Использую КОП ПрямойЗапрос 1.7.21, 1с++ 3.2.3.1
Вот такой запрос:
ТекстЗапроса = »
|ВЫБРАТЬ *
|ИЗ
|$БИОстатки.Основной(:КонДата~,, (Подразделения, Товары), (Количество, Сумма), ((Субконто1 = :ВыбПодразделение) И (Счет = :Счет411)),)
|КАК Би
|»;
дает ошибку «В метод необходимо передавать непустые объекты типа метаданных». Если между идентификаторами видов субконто убрать пробел — все нормально. Если вместо (Подразделения, Товары) задать через пробел (Субконто1, Субконто2) — ошибки не возникает. В документации по $БИОстатки, впрочем, так и указано: «Т.е. например (Субконто1, Субконто3) или (Контрагенты,Договоры).», но при возможности влияние пробела хорошо было бы исключить..
В документации по $БИОстатки, Параметр КонецПериода сказано: «Параметр со значением даты или документа, до которого необходимо рассчитать остатки (условие <, т.е. не входит в сумму остатков). » Здесь закрались сомнения, и экспериментально установлено, что «<» справедливо для документа (т.е. остатки на начало документа), а для даты верно «<=», т.е. на конец дня.
Хотелось бы еще при выполнении запросов классом вместо «Выполняется обработка» в строке состояния наблюдать информацию именно о выполнении запроса с указанием даты — что-то вроде «Расчет итогов: 27.11.10» по аналогии с 1с..
(72) По поводу параметра КонецПериода разобрался — если в запросе параметр КонецПериода типа Дата установлен с модификатором (:КонДата~) тогда остатки рассчитываются на конец дня, если без модификатора (:КонДата) — тогда на начало дня. В документации про влияние модификатора сказано, но хорошо бы уточнить — каким образом.
И еще вопрос: als и ints файлы для КОП ПрямойЗапрос существуют?
Ребята, скиньте ссылку где взять построитель для прямого запроса
Документация достаточно большая.
Пользоваться своим классом — это круто!
Заинтересовалась!
заинтригованннн
Круто. Понимаю что наглею, но было бы еще круче если бы в составе документации были примеры для работы с БИ.
Данный вопрос лучше всего задать в теме на форуме 1С++ (см. тут —http://www.1cpp.ru/forum/YaBB.pl?num=1285352210) . Я достаточно сильно от 7.7 отошел и очень много проектов которые сейчас веду, чтобы браться за помощь :).
Круто конечно,но если бы мне сказали как,я бы весь синтаксис переделал под восьмерочный,ну не понятно нафига было делать какой то другой синтаксис,как будто людям делать нечего как сидеть и изучать новые языки.Документацию такую же делать нужно как и в 1с 8,при том вполне возможно даже выпустить небольшую книженцию страниц 50 и сделать небольшие денежки на этом проекте,опять же если синтаксис приведете к восьмерочному и уберете баги.Не нужен весь язык запросов,хотя бы основное для выборок.
Там в запросе можно обойтись и без всяких там долларов,двоеточий и квадратных скобок,все это можно отследить,а так я смотрю и не понимаю что это за конструкция в скобках что за синоним такой с пробелом и долларом и еще и с точкой.И еще тут же написать минимальную инструкцию,или сделать два варианта расширенный синтаксис и краткое начало работы с краткой справкой.
(79) sss999, конкрентной цели монетизации проекта не было, я делал для своих нужд, а то что синтаксис такой, за основу был взять синтаксис 1C++. На тот момент достаточно распространенный среди знатоков прямых запросов. Синтаксис к 8-му приводить не вижу смысла, вот буквально пару дней назад пользовался разработкой для написания сложных сборов данных и знаешь, мне нравится результат который получился и процесс не вызвал больших проблем. Не хватает конструктора — вот что надо было бы точно.
По документации: если посмотришь то увидишь что документация там точно за 50 страниц выпадает, не хватает конкретных примеров — это да, но описание я считаю минимально достаточным.
И еще по поводу синтаксиса, я не вижу слишком больших отличий от 8-ки. Необходимость переименования и определения вида в запросе… ну что ж… А двоеточния или @ — очень сильно нужны. Например: в коде Т.ТекущийЭлемент = :Ссылка точно видно что «Ссылка» это именно текстовый параметр который надо подставить соответствующим образом. А в коде Т.ТекущийЭлемент = @Ссылка понятно что «Ссылка» это подставляемый параметр который необходимо задавать отличным от предыдущего примера видом, и при этом понятно что запрос параметризированный и выполнение его происходит отлично от обычного запроса.
А подскажите как подключить ваш класс
А на форуме 1cpp там помойка ,два дня нужно рыться что бы найти что то,больше половины старья которое уже не актуально ввиду выхода новых версий,а норм никто не может написать инструкции.
не подскажешь что за ошибка?Я посмотрел выходит в момент создания объекта 0,что за объект такой?в этом тексте типобъекта =0,я посмотрел он передается через параметр,а там стоит и вправду 0.
// определяем время подготовки запроса
ВремяПодготовки = _GetPerformanceCounter();
// создаем объект для получения результата запроса
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
ПрямойЗапрос::Выполнить(Число ТипОбъекта=0, Строка ТекстВыполнения=, Число БезПодготовки=0) : Неудачная попытка создания объекта
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
{C:Base77БазаПрямойЗапрос.ert(13386) }
тЗапроса = Запрос.Выполнить(0);
{F:SQLЗАПРОС2.ERT(183)}: ПрямойЗапрос::Выполнить(Число ТипОбъекта=0, Строка ТекстВыполнения=, Число БезПодготовки=0) : Неудачная попытка создания объекта
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
{C:Base77БазаПрямойЗапрос.ert(13386) }
ПрямойЗапрос::СоздатьОбъектыЗапроса(Строка ПутьКБазеSQL=:memory:) : Неудачная попытка создания объекта
БазаSQLite = СоздатьОбъект(«SQLiteBase»);
{C:Base77БазаПрямойЗапрос.ert(1057) }
Запрос = СоздатьОбъект(«ПрямойЗапрос»);
{F:SQLЗАПРОС2.ERT(146)}: ПрямойЗапрос::СоздатьОбъектыЗапроса(Строка ПутьКБазеSQL=:memory:) : Неудачная попытка создания объекта
БазаSQLite = СоздатьОбъект(«SQLiteBase»);
{C:Base77БазаПрямойЗапрос.ert(1057) }
Хотя dll лежит sqllite
(85) sss999, посмотри, может в коде при выполнении запроса вызываешь Выполнить с неправильными параметрами. Потому что 0 может быть только если он извне пришел именно так. А вообще там должно быть ИндексированнаяТаблица или ТаблицаЗначений. В общем в документацию посмотри.
Что же касается sqlite, может версия компоненты старая? Может не загрузилась ВК? Отдельно попробуй объект создать, проходит/нет.
отредактировал,обработку твою,запрос отработал.Для дбф.
Текст заменил так
было:
ИначеЕсли ЭтоSQL = 0 Тогда
ЗапросSQLite.Отладка(РежимОтладкиЗапроса);
ЗапросSQLite.ВыполнитьЗапрос(ТекстЗапроса,ПолучательЗапроса=);
КонецЕсли;
стало:
ИначеЕсли ЭтоSQL = 0 Тогда
ЗапросSQLite.Отладка(РежимОтладкиЗапроса);
ПолучательЗапроса=ЗапросSQLite.ВыполнитьЗапрос(ТекстЗапроса);
КонецЕсли;
и перед этим поменял
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
заменил на
ПолучательЗапроса=0;
а то что не создавался СоздатьОбъект(«SQLiteBase»); это видно проблема консоли,открыл другую обработку в которой объект создается и консоль заработала.
(87) sss999, в итоге у тебя всегда результат будет в ИТ. Смотри сам, но проблема была не в коде класса, а в твоем коде.
(89) ну вот так консоль захотела только через такой код работать,а обработка работает через старый код,проблемы в консоли как я понял
а зачем создается объект такой? ПолучательЗапроса = СоздатьОбъект(ТипОбъекта); у меня в типеобъекта стояло 0 и не отрабатывало через консоль
(91) sss999, я не совсем понимаю про какую консоль ты говоришь? А в «СоздатьОбъект(ТипОбъекта)» не совсем понятно почему ноль приходит, туда должна приходить строка, с указанием типа объекта для получения результата запроса. Вероятнее всего проблема в вызове «Выполнить», посмотри параметры согласно документации, сравни с параметрами которые передаются, там ошибка.
При попытке выполнить запрос появляются сообщения:
Процедура не обнаружена (вирт)
Процедура не обнаружена (я)
и
Внимание! Инициализация класса: ПрямойЗапрос закончилась неудачно!
В файле ПрямойЗапрос.ert не вижу, где объявляются процедуры вирт() и я()…
P.S. Видимо надо обновить 1cpp до 3ей версии…
(93) korpas, советую за более актуальной версией, а также сборками с необходимыми dll и другими компонентами ходить на 1cpp.ru. В частности тут —http://www.1cpp.ru/forum/YaBB.pl?num=1273512019 , выкладываются последние сборки. Правда давненько их не было и я не уверен что с моим авторством еще будут. Но кто знает. Сейчас функционал весьма стабилен и очень даже работоспособен.
В общем, ищите инфу на 1С++, тут я редко пишу ответы.
маленький глюк:
В $РегистрОстаткиОбороты.ОстаткиТМЦ() Условия приходится писать в одной строке, с новой строки выдаёт ошибки
Meta name parser error: не указан параметр «:rg_405»
Хочу совета!
Показать
дает ошибку
near «AS»: syntax error
Собственно, менял условия соединения и на ЛЕВОЕ СОЕДИНЕНИЕ $Справочник.Фирмы Как Фирмы
ПО Рег.Фирма= $Фирмы.ТекущийЭлемент, и т.п. — та же ошибка.
Классы обновил на версию от 22.05.13
в режиме отладки выдает текст, который визуально ошибок не имеет
без левого соединения (сама ВТ) работает….
база- ДБФ.
(97) Mikeware, отправь на почту или в скайп текст отладочного режима, хочу посмотреть, поскольку так с ходу не видно в чем проблема может быть.
(98) спасибо, я сам разобрался. накосячил с типизацией. она немного отличается от «классической», привычной в одбсшных…