Класс "ПрямойЗапрос"

Опубликовал Александр Анисков (vandalsvq) в раздел Программирование - Инструментарий

Класс для выполнения запросов к базе данных 1Сv7 (DBF, SQL) с синтаксисом максимально приближенным к синтаксису 1Сv8.

В общем хочу отдать на суд вольным зрителям набор КОП "ПрямойЗапрос" с документацией к нему.
Что он может:
- выполнение запроса на языке подобном 1Cv8
- выполнение запроса на любом формате БД (DBF - SQLite, SQL - ODBCRecordset)
- наличие виртуальных таблиц
- выполнение параметризированных запросов

Что он не умеет:
- не отличает возможные реквизиты объектов метаданных совпадающих с предопределенными реквизитами этих объектов (например: Код, Наименование в справочнике и т.п.)

К классу приложена подробная документация.

Выражаю свою благодарность товарищам:

- тов. berezdetsky за класс AccountsRecordset
- тов. Steban шаблон параметра - это круто
- тов. JohnyDeath за пример ВТ ПодчиненныеДокументы и прочее
- тов. Orefkov за 1sqlite
- тов. Dmitro за практические советы
- всем разработчикам 1С++ за 1С++
- ну и всем остальным кто словом и делом помогал
.

Пример использования:

ТекстЗапроса = "ВЫБРАТЬ
|    Рег.ТекущийДокумент КАК [Документ $Документ]
|    ,Рег.ВидДокумента КАК [Документ_вид $ВидДокумента]
|    ,Рег.Склад КАК [Склад $Справочник.Склады]
|    ,Рег.Номенклатура КАК [Номенклатура $Справочник.Номенклатура]
|    ,Рег.КоличествоНачальныйОстаток КАК ОстатокНач
|    ,Рег.КоличествоОборот КАК Оборот
|    ,Рег.КоличествоПриход КАК Приход
|    ,Рег.КоличествоРасход КАК Расход
|    ,Рег.КоличествоКонечныйОстаток КАК ОстатокКон

|ИЗ $РегистрОстаткиОбороты.ОстаткиТМЦ(:НачПериода
|        ,:КонПериода
|        ,Документ
|        ,ДвиженияИГраницыПериода
|        ,

|        ,(Склад,Номенклатура)
|        ,(Количество)) КАК Рег
";

Запрос = СоздатьОбъект("ПрямойЗапрос");
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьТекстовыйПараметр("
НачПериода",НачГода(РабочаяДата()));
Запрос.УстановитьТекстовыйПараметр("КонПериода",РабочаяДата());
Запрос.РежимОтладки = 1;

ИТЗРезультат = Запрос.Выполнить();
ИТЗ.ВыбратьСтроку();

Официальная версия: 1.8.3 от 30.12.11 г.

Более полная информация на форуме 1С++.

P.S. данная разработка распространяется бесплатно как для частного, так и для коммерческого использования. Поддержка осуществляется при наличии свободного времени. Возможно сотрудничество на предмет внедрения данной разработки в конкретные конфигурации.

Скачать файлы

Наименование Файл Версия Размер
Документация и классы v1.8.3 от 30.12.11г.
.rar 231,85Kb
18.01.12
333
.rar 231,85Kb 333 Скачать

См. также

Комментарии
1. Евгений Мартыненков (JohnyDeath) 290 03.07.09 18:11 Сейчас в теме
Одна документация чего стоит!
Завидую таким людям!
2. Ёпрст (Ёпрст) 1017 03.07.09 18:40 Сейчас в теме
Офигеть!, на такое описалово, у меня бы месяц, не меньше ушло бы... а тут еще и работать надо..
:)
3. Сергей (Che) Коцюра (CheBurator) 3376 03.07.09 18:46 Сейчас в теме
Да, дока приличная... но использовать это все я бы побоялся, автор и сам пишет - "возможны ошибки"... работа, видимо, проделана большая - но в чем смысл тогда при потенциальном наличии ошибок?
4. Ёпрст (Ёпрст) 1017 03.07.09 18:49 Сейчас в теме
(3) Ошибки со временем исправятся, а вот полученный при работе с данным классом опыт - это бесценно..!
5. Александр Анисков (vandalsvq) 696 04.07.09 19:25 Сейчас в теме
(3) На счет ошибок могу сказать следующее. Это на самом деле вторая версия. Первая была полностью переписана и в виду этого я и пишу "возможны ошибки". Хотя, на текущий момент из того что я использовал ошибок не было обнаружено.
6. Игорь Исхаков (Ish_2) 964 04.07.09 21:05 Сейчас в теме
От Випа недавно первый раз услышал про проект 1с++.
Теперь первый раз увидел пример создания класса в 1с++.
Конечно, здорово !
7. Александр Анисков (vandalsvq) 696 05.07.09 01:23 Сейчас в теме
Добавлена новая версия КОП и обновленная документация.
Готов озвучить часть плана по развитию класса, правда без сроков:
- доработка документации по индексам реализованным в таблицах 1С
- доработка документации по инструкциям языка запросов
- доработка ВТ по бухгалтерским таблицам
- реализация ВТ по регистрам
- реализация ВТ СрезПервых
- реализация различных функций и инструкций
По пути посмотрим что еще будет.
8. Анатолий Ситников (acsent) 1010 05.07.09 02:37 Сейчас в теме
В чем отличие от обычного запроса через 1С++?
9. Александр Анисков (vandalsvq) 696 05.07.09 09:08 Сейчас в теме
Отличий много и не очень одновременно :)
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С++
Ну кажется все что вспомнил.
10. Евгений Мартыненков (JohnyDeath) 290 05.07.09 11:18 Сейчас в теме
+(9) ты главное забыл сказать. Теперь можно не думать о формате БД, в которой работаешь ;)
11. vip (vip) 05.07.09 11:57 Сейчас в теме
(6) Если vip'a поменьше банить будете, много чего еще услышишь (увидишь).
12. Игорь Исхаков (Ish_2) 964 05.07.09 12:13 Сейчас в теме
(11) Если VIP -жизненный статус , то бан даже полезен.
Подталкивает к размышлениям.
13. vip (vip) 05.07.09 12:20 Сейчас в теме
(12) Подталкивает справедливый.
Последний подтолкнул к совсем другим размышлениям.
14. Игорь Исхаков (Ish_2) 964 05.07.09 12:24 Сейчас в теме
(13) Подталкивает любой.
Совсем другие размышления и имелись ввиду.
15. Александр Анисков (vandalsvq) 696 05.07.09 13:44 Сейчас в теме
(10) ну да... спасибо что напомнил :)
Кстати по просьбе Donat-а ВТ по регистрам будет аккурат после документации по индексам и инструкциям языка (те которые не описаны до конца).
16. Ёпрст (Ёпрст) 1017 05.07.09 16:14 Сейчас в теме
(15)
Интересно, сколько времени уходит на документацию ?...Так, для справки.
17. Александр Анисков (vandalsvq) 696 05.07.09 16:44 Сейчас в теме
По разному. Но в среднем на документирование уходит около 20-30% времени от времени разработки. Т.е. если я пишу КОП месяц то документирую обычно около недели. Например у меня есть разработка на которую документация составлена на 30%, а уже 108 страниц текста. Думаю что на данный КОП будет в районе 100 страниц в итоге.
18. Ёпрст (Ёпрст) 1017 05.07.09 16:57 Сейчас в теме
(17) Круто... мне каменты то вломы в модуле постить... а об достойном описаове... эх, не дано :(
19. Евгений Мартыненков (JohnyDeath) 290 05.07.09 18:49 Сейчас в теме
(18) такая же беда. Вот сижу и молча завидую.
У меня на доку уходит больше времени чем на разработку и реализацию. Может потому что это слишком муторно и нудно?
20. Александр Анисков (vandalsvq) 696 06.07.09 10:25 Сейчас в теме
Вышло обновление 1.01.003.
Доработана документация и исправлены ошибки выявленные мною.

Особенно прошу обратить внимание на советы программистам написанные в документации. Надеюсь они помогут избежать ошибок и вопросов.
21. Александр Анисков (vandalsvq) 696 14.07.09 14:47 Сейчас в теме
Небольшие новости с фронта. Закончена разработка ВТ РегистрОстатки, РегистрОбороты, РегистрОстаткиОбороты. Осталось доработать документацию и дотестировать. Сегодня вечером будет выложено обновление.
Тестеры добровольцы приветствуются.
22. Александр Анисков (vandalsvq) 696 14.07.09 15:46 Сейчас в теме
Ну собственно вот и обновление. Сообщаю на период с 15 по 19 меня не будет в сети, поэтому если не буду отвечать не обессудьте. Но в пн как выйду разберусь
23. tok Kuular (tok) 16.07.09 19:04 Сейчас в теме
Молодец, что еще можно сказать. Вот это дело! Чисто и красиво.
Когда-то хотел нечто подобное попытаться сделать. Очень рад за Ваши труды!
обожаю все, что связанное с 1c++. Обязательно посмотрю.



24. Александр Анисков (vandalsvq) 696 19.07.09 00:35 Сейчас в теме
Вернулся чуть раньше.... ни уж то все всё проверили? :) Комментариев то только один добавился и тот положительный :)
25. rasswet (rasswet) 80 21.07.09 14:11 Сейчас в теме
Запрос = СоздатьОбъект("ПрямойЗапрос");
{F:\TEST\ПРЯМОЙ_ЗАПРОС.ERT(11)}: Неудачная попытка создания объекта (ПрямойЗапрос)
подскажите необходимые условия для запуска. Пытаюсь демо-пример реализовать.
Компоненту загружаю. а дальше? или ссылочку на обработку с примером. я копировал из Вашей шапки код.
2.0.3.4 1cp++ и пробовал 3.01.22
Хочется с этим всем разобраться..
26. Александр Анисков (vandalsvq) 696 21.07.09 19:32 Сейчас в теме
Значит ВК 1С++ ты загрузил?
Тогда необходимо подключить классы, для этого почитай тут
http://www.1cpp.ru/docum/icpp/html/classes.html
После подключения КОП можно создавать объект прямой запрос и пробовать писать ;)
27. Александр Анисков (vandalsvq) 696 22.07.09 07:21 Сейчас в теме
Выложил релиз 1.02.002 от 22.07.09 г. Прошу любить и жаловать. ;)
28. Александр Анисков (vandalsvq) 696 29.07.09 14:21 Сейчас в теме
Вышла новая версия. Исправлена критическая ошибка при формировании данных по регистрам с использованием документов как границ расчетов.
Добавлена возможность подключения внешних баз данных.
29. Артур Аюханов (artbear) 859 29.07.09 14:46 Сейчас в теме
По собственному опыту разработки различных классов на разных языках/средах знаю, что проще всего писать документацию совместно с тестами для полной гарантии соответствия доки и класса :)
vandalsvq; +1 Ответить
30. Александр Анисков (vandalsvq) 696 29.07.09 23:24 Сейчас в теме
Ищутся реальные пользователи данного класса.
Интересует где, как, для чего применяете и ваше мнение.
31. Александр Анисков (vandalsvq) 696 30.07.09 13:47 Сейчас в теме
ИСПРАВИЛ КРИТИЧЕСКУЮ ОШИБКУ
Ошибка происходила при формировании ВТ РегистрОбороты (и как следствие ВТ РегистрОстаткиОбороты) если регистр имеет тип Остатки и БыстраяОбработкаДвижений = 0.

Версию не менял.
32. Александр Анисков (vandalsvq) 696 03.08.09 22:20 Сейчас в теме
Вышла новая версия. Описание читать в документации или в топике. Брать наверху.
33. Александр Анисков (vandalsvq) 696 03.08.09 23:32 Сейчас в теме
Исправлена критичная ошибка при формировании ВТ по регистрам. Всем качать обязательно. Описание в документации. Файл в топике.
34. Владислав Цылёв (vet7777) 468 04.08.09 10:53 Сейчас в теме
примеры типовые добавь в конце описания, например, получение остатка по счету на определенную дату и по определенному субконту.
практикум так сказать, чтобы народ быстрее освоил.
35. Александр Анисков (vandalsvq) 696 04.08.09 12:12 Сейчас в теме
(34) для получения остатки по счетам надо чтобы ВТ БИОстатки появилась.
А вот по регистрам вполне возможно и покажу что нибудь. Может через недельку напишу какой нить простенький отчет, или конфу тестовую выложу когда причешу ее нормально.
36. Александр Анисков (vandalsvq) 696 10.08.09 10:13 Сейчас в теме
Выложил версию 1.03.001 (beta).
Почему бета...
1. Проведены работы по оптимизации времени подготовки запроса. В связи с чем необходимо более тщательное тестирование
2. Вирт. таблица БИОстатки для SQL написана "на коленке" по аналогии с DBF. При этом DBF оттестирована и проведены работы по оптимизации времени выполнения запроса, для SQL подобных работ еще не было (планируется исследовать на неделе).
Собственно вот
37. Александр Анисков (vandalsvq) 696 10.08.09 13:51 Сейчас в теме
Обновил файл релиза 1.03.001 (бета). Теперь уже почти не бета версия, а похожа на стабильный релиз.
Отладил и поработал над оптимизацией выполнения запроса в SQL формате БД (спасибо тов. berezdetsky за его КОП AccountRecordset, без него было бы гораздно сложнее).
38. Александр Анисков (vandalsvq) 696 12.08.09 23:09 Сейчас в теме
Обновил планируемый релиз 1.03.001 (beta). Проведены некоторые работы по оптимизации времени подготовки запроса. Файл брать в топике.
39. Александр Анисков (vandalsvq) 696 17.08.09 11:45 Сейчас в теме
Выложена версия 1.03.002 от 17.08.09 г.
Добавлена бета-версия ВТ БИОборотыДтКт. Незначительные изменения по оптимизации подготовки запроса.

Хочу сказать для всех кто сомневается: версия 1.03.002 имеет статус "бета" исключительно из-за добавления в подготовку запроса виртуальных таблиц для работы с бухгалтерской подсистемой. В остальном же версия 1.03.ххх имеет ряд существенных улучшений по сравнению с версией 1.02.ххх и рекомендуется к использованию.
40. Александр Анисков (vandalsvq) 696 18.08.09 13:17 Сейчас в теме
Выложена версия 1.03.003 от 18.08.09 г.
Добавлены новые функции языка запроса: Лево(), Право(), СокрЛ(), СокрП(). Некоторые приватные методы реализованы как публичные с целью возможности разбора виртуальных таблиц вне класса.

Пы.сы. Если на форуме 1С++ активность в теме про класс хоть какая-то. То здесь я не вижу не активности, ни заинтересованности. Что не так? Или разработка показалось "не особо нужной".... странной даже.
41. Александр Анисков (vandalsvq) 696 22.08.09 20:32 Сейчас в теме
Выложил обновление. Исправлена ошибка связанная с подготовкой запроса для dbf формата базы данных если в запросе участвовали объекты с наличием символа "_" в виде объекта (справочник, документа, регистр).
42. Александр Анисков (vandalsvq) 696 02.09.09 17:39 Сейчас в теме
Новая версия: 1.03.004. Смотреть в документацию и продолжать пробовать. Если смельчаки конечно же имеются ;)
43. Александр Анисков (vandalsvq) 696 09.09.09 15:31 Сейчас в теме
Вышла новая версия. 1.03.005.
Добавлена ВТ БИОбороты, существенно проработаны БИОстатки и БИОборотыДтКт.
Исправлены другие мелкие недочеты и недоделки.
44. Александр Анисков (vandalsvq) 696 16.09.09 19:14 Сейчас в теме
Класс заменен без изменения версии. Небольшой багофикс некоторых косячков.
45. Александр Анисков (vandalsvq) 696 27.09.09 23:09 Сейчас в теме
Вышла новая версия. Множество изменений. В том числе пара достаточно нужных и "полезных".

Кстати очень интересным получилась возможность использования данного класса в совокупности с решением "ПоставщикДанных".
Информацию о данной "разработке" можно "подсмотреть" на 1С++.
http://www.1cpp.ru/forum/YaBB.pl?num=1248941896
46. Сергей (Che) Коцюра (CheBurator) 3376 28.09.09 02:09 Сейчас в теме
Очень приветствуется наличие в составе "инсталлятора" примеров каких-нибудь типовых отчетов (ну, например, для Типовой ТиС) - остатки ТМЦ, ведомость по остаткам ТМЦ и т.д. - переделанных с учетом исапользования данного класса - будет все нагляднее...
47. Сергей (Che) Коцюра (CheBurator) 3376 28.09.09 02:17 Сейчас в теме
ух, чувствую надо плотно садится на прямые запросы и поставщика данных... а "табличное поле" - это что?
48. Сергей (Che) Коцюра (CheBurator) 3376 28.09.09 02:21 Сейчас в теме
просто вдогонку: очень хочется чтобы работа, которую проделывает автор была "завершена", т.е. сабж "зафксирован" (с описанием известных багов и фич), существовала содержательная документация и т.д. - то есть чтобы был ПРОДУКТ. Отрадно видеть, что автор - делает "правильно". От использования возможностей 1С++ лично меня удерживают тоько небрежности и глюки, встреченные в том, что пришлось использовать... Простба побоьше примеров (конфигурация?)
49. Александр Анисков (vandalsvq) 696 28.09.09 10:42 Сейчас в теме
(46)
Инсталлятор в данном случае получиться "неуниверсальным". Те кто пользуются классами уже имеют определенную иерархию, те кто не пользуется, велика вероятность что не будут. Я думаю достаточно "демо-конфигурации" и небольшого "фака" в документации как подключить, как использовать и т.д. Это я напишу. Спасибо за идею ;)
(47)
Табличное поле - это интерфейсный объект реализованный в 1С++ который позволяет на форме отображать табличное поле во многом идентичное 8-ке. Вообще примеры использования ТП я встречал и на данном ресурсе. Можно поискать. Если интересно то скорее надо уже на форум 1С++
(48)
Странно слышать про глюки. Насколько я использую 1С++ (а это практически все что в ней есть) большинство, если не почти все уже пофиксены.
Что касается примеров. В ближайшее время для ТиС я наверное перепишу пару отчетов. К сожалению текущая загруженность не позволяет уделять большое внимание "непроизводственным" вопросам :). Время, время, время.
Кстати что касается документации, то я думаю в данной разработке вопросов особых не должно быть, очень подробная дока получилась.
50. Сергей (Che) Коцюра (CheBurator) 3376 28.09.09 10:48 Сейчас в теме
(49) спсб за ответ.
по (46) те кто уже пользуется - они не будут, а те кто заинтересован с нуля - будут. А то получается - 1.почему так мало откликов и 2.кто не использовал - тому и не надол, а кто использовал они и так все знают... ;-)
по (48) речь не про глюки 1С++, а про прикладные выкладываемые решения.
51. Александр Анисков (vandalsvq) 696 28.09.09 12:09 Сейчас в теме
(50) реклама - двигатель торговли ;). А на мой взгляд хорошего фака+демо конфигурация будет достаточно. ;)
52. Александр Анисков (vandalsvq) 696 02.12.09 09:33 Сейчас в теме
Выложена версия 1.05.001 от 02.12.09 г. Кому надо смотреть.
53. Александр Анисков (vandalsvq) 696 07.12.09 18:13 Сейчас в теме
Выложена версия 1.05.002 от 07.12.09 г.
54. Александр Анисков (vandalsvq) 696 10.05.10 23:15 Сейчас в теме
Выложена версия 1.06.005 от 11.05.10 г.
55. Александр Анисков (vandalsvq) 696 11.05.10 17:29 Сейчас в теме
Выложена версия 1.06.006 от 11.05.10 г.
Брать обязательно.
56. Александр Анисков (vandalsvq) 696 30.05.10 10:56 Сейчас в теме
Давненько я здесь не появлялся. В общем очень много изменений произошло. Как всегда отражаю в топе только последние. А вообще с версии 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. Александр Анисков (vandalsvq) 696 30.05.10 10:57 Сейчас в теме
Ну, начнем-с?
Предлагаю задавать вопросы относительно использования класса здесь.
58. Александр Орефков (orefkov) 1455 01.06.10 13:24 Сейчас в теме
(57)
Узок был их круг. Страшно далеки они были от народа (с)
59. Александр Анисков (vandalsvq) 696 01.06.10 15:06 Сейчас в теме
(58) да уж... тут активность близка в нулю
60. Роман Осадченко (cleaner_it) 209 01.08.10 12:35 Сейчас в теме
Крутая вещь! Попробую применить в http://infostart.ru/public/72778, потом напишу что получилось:) 134 страницы документации за вечер не освоить:)
61. Александр Анисков (vandalsvq) 696 03.08.10 10:57 Сейчас в теме
(60) если решишь пользоваться бери с форума 1С++ новую версию. А то тут давненько не обновлял. И потом расскажи об успехах :).
62. Антон (anton.fly7) 134 03.08.10 11:21 Сейчас в теме
как сделать чтоб на DBF базе работала не через SQLite а через VFPOLEDB? такое вообще возможно?
63. Антон (anton.fly7) 134 03.08.10 11:32 Сейчас в теме
(62) разобрался
нашел 1sqlite.dll, вопрос снимается )
64. Роман Осадченко (cleaner_it) 209 03.08.10 12:38 Сейчас в теме
(61) На работе до сих пор пользуюсь версией 2.5, нареканий нет:) На сайте последняя 3.2.1.0, конечно ее получше использовать в новых наработках (ошибок много пофиксено). На работе боязно, работает - не трогай:) Только после многократного тестирования:)
65. Александр Анисков (vandalsvq) 696 03.08.10 13:56 Сейчас в теме
(64) последняя счас не 3.2.1.0, а 3.2.1.17. Исправлений там на самом деле много. Переезд в принципе безболезнен, а вот возможности... особенно в части табличного поля.
66. Роман Осадченко (cleaner_it) 209 04.09.10 15:50 Сейчас в теме
(0) а автоматический подбор индексов - твоя работа или Orefkov?
Выбран индекс ACDATETIM: DTOS(DATE)+TIME+IDDOC


А вообще - уже очень-очень нравится, пользоваться классом удобно:)
67. Роман Осадченко (cleaner_it) 209 04.09.10 16:17 Сейчас в теме
(61) Результаты:

VFPOLEDB
- Для DBF делал развертку виртуальной таблицы остатков (итоги+движения). Потратил 2 дня на разбор полетов

Класс ПрямойЗапрос
- Для DBF написал запрос. Потратил 1 час, вместе с чтением документации на 1sqlite и класс ПрямойЗапрос. Скорость выполнения увеличилась даже визуально!

Итог: класс использовать нужно! Рекомендую всем, кто не хочет мучений при написании прямых запросов к DBF

На заметку: Конструктор qryConsole по умолчанию ставит между параметром и модификатором пробел ":ДатаПолученияОстатков ~", при использовании класса текст запроса необходимо править - убирать пробел: ":ДатаПолученияОстатков~"
68. Роман Осадченко (cleaner_it) 209 05.09.10 08:55 Сейчас в теме
Небольшой пример для тех, кто только начинает переходить на ПрямойЗапрос:

	ТекстЗапросаДвижений =
	"SELECT 
	|	  $Жур.ТекущийДокумент КАК [Документ $Документ]
	//|	  Журнал.IDDOC as [Документ $Документ]
	|	, $Жур.ВидДокумента КАК Документ_вид
	//|	, Журнал.IDDOCDef as Документ_вид
	|	, $Жур.ДатаДокумента КАК [ДатаДок $Дата]	
	//|	, "+?(БазаSQL = 0,"Журнал.DATE","$НачалоПериода.День(Журнал.DATE_TIME_IDDOC)")+" as ДатаДок
	|	
	|	, $СпрДоговора.ТекущийЭлемент КАК [Договор $Справочник.Договоры]
	//|	, СпрДоговора.ID КАК [Договор $Справочник.Договоры]
	|	, $СпрКонтрагенты.ТекущийЭлемент КАК [Покупатель $Справочник.Контрагенты]
	//|	, СпрКонтрагенты.ID КАК [Покупатель $Справочник.Контрагенты]
	|
	|	, $НаименованиеРегистра.ВидДвижения КАК ПриходРасход
	//|	, НаименованиеРегистра.DEBKRED КАК ПриходРасход
	|
	|	, НаименованиеРегистра.Фирма КАК [Фирма $Справочник.Фирмы]
	|	, НаименованиеРегистра.ВидДолга КАК [ВидДолга $Перечисление.ВидыДолга]
	|	, НаименованиеРегистра.КредДокумент КАК [КредДокумент $Документ]
	|	, НаименованиеРегистра.ДокументОплаты КАК [ДокументОплаты $Документ]
	|	, НаименованиеРегистра.КодОперации КАК [КодОперации $Перечисление.КодыОпераций]
	|
	|	, НаименованиеРегистра.СуммаРуб*(1 - $НаименованиеРегистра.ВидДвижения * 2) КАК СуммаВзаиморасчетовВВалютеБухУчета
	//|	, $НаименованиеРегистра.СуммаРуб*(1 - НаименованиеРегистра.DEBKRED * 2) КАК СуммаВзаиморасчетовВВалютеБухУчета
	|
	|	, Жур.$ОбщийРеквизит.Автор  КАК [Автор $Справочник.Пользователи]
	|	, Жур.$ОбщийРеквизит.Проект КАК [Проект $Справочник.Проекты]
	|	, Жур.$ОбщийРеквизит.ЮрЛицо КАК [ЮрЛицо $Справочник.СвоиЮрЛица]
	|
	|FROM Регистр."+НаименованиеРегистра+" КАК НаименованиеРегистра
	//|FROM $Регистр."+НаименованиеРегистра+" КАК НаименованиеРегистра
	|	INNER JOIN ЖурналДокументов КАК Жур ON $НаименованиеРегистра.ТекущийДокумент = $Жур.ТекущийДокумент
	//|	INNER JOIN "+?(БазаSQL = 0,"1SJOURN","_1SJOURN")+" AS Журнал "+?(БазаSQL = 0,"","With (NOLOCK)")+" ON НаименованиеРегистра.IDDOC = Журнал.IDDOC
	|	LEFT JOIN Справочник.Договоры КАК СпрДоговора ON $СпрДоговора.ТекущийЭлемент = НаименованиеРегистра.Договор
	//|	LEFT JOIN $Справочник.Договоры КАК СпрДоговора ON СпрДоговора.ID = $НаименованиеРегистра.Договор
	|	LEFT JOIN Справочник.Контрагенты КАК СпрКонтрагенты ON $СпрКонтрагенты.ТекущийЭлемент = СпрДоговора.ParentExt
	//|	LEFT JOIN $Справочник.Контрагенты КАК СпрКонтрагенты ON СпрКонтрагенты.ID = СпрДоговора.ParentExt
	|
	|WHERE $Жур.ДатаДокумента BETWEEN :ВыбНачПериода AND :ВыбКонПериода~
	//|WHERE ("+?(БазаSQL = 0,"Журнал.DATE","Журнал.DATE_TIME_IDDOC")+" BETWEEN :ВыбНачПериода"+?(БазаSQL = 0,"~~","")+" AND :ВыбКонПериода"+?(БазаSQL = 0,"~~","~")+")
	|
	|";
...Показать Скрыть


В примере показано, что меняется. Старый вариант запроса для DBF (VFPOLEDB ) и SQL закомментирован
69. Александр Анисков (vandalsvq) 696 06.09.10 15:50 Сейчас в теме
(66) Подбор индексов - это работа 1sqlite, т.е. Саши Орефкова.
(67) по поводу модификатора посмотрю чтобы пробелы не учитывались.
(68) я на 1С++ писал что есть некоторые недоработки.
Цитата: "В частности Жур.$ОбщийРеквизит.ИмяРеквизита можно писать как $Жур.ИмяРеквизита, а $nolock вообще отсутствует везде.
Ну и сравнение "WHERE $Жур.ДатаДокумента"... тут такое дело что сравнивать left(date_time_iddoc,8) (для SQL будет так) не самое хорошее решение. Проще после кода поставить проверку, если это ПрямойЗапрос.ЭтоSQL = 1 то данную часть заменить на $Жур.ПозицияДокумента. Т.е. ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,"WHERE $Жур.ДатаДокумента","WHERE $Жур.ПозицияДокумента");". 8-)
70. Роман Осадченко (cleaner_it) 209 06.09.10 16:03 Сейчас в теме
ПрямойЗапрос.Текст = СтрЗаменить(ПрямойЗапрос.Текст,"WHERE $Жур.ДатаДокумента","WHERE $Жур.ПозицияДокумента");"

обязательно сделаю такую проверку

А по поводу $nolock я прочитал в твоей документации, что происходит подстановка автоматическая для SQL, а для 1sqlite это и не нужно. Или я не так понял?

Ну, раз уж на то пошло - можно вернуть знак $ перед регистрами движений? Не очень удобно править руками запрос qryConsole, первый раз я даже долго искал в своем запросе ошибку (спасибо Орефкову за консоль запросов 1sqlite, помогла разобраться)
71. Роман Осадченко (cleaner_it) 209 07.09.10 04:18 Сейчас в теме
(70) больше не буду дублировать:) дальнейшая переписка на http://www.1cpp.ru/forum/YaBB.pl?num=1246429625
72. Владимир Большов (BlueWind) 27.11.10 19:16 Сейчас в теме
Поставлена задача оживить большую распределенную базу на бухгалтерской компоненте - центральная SQL и периферийные на DBF. С этой целью начал исследование возможностей 1с++ и класса ПрямойЗапрос... Начать было сложновато, но уже что-то получается, и результаты очаровывают настолько, что я для себя решил, что когда заброшу 1с и займусь скульптурой, первым делом наваяю памятник человеку, придумавшему колготки (это просто было уже решено раньше на основе весенних впечатлений), и сразу за ним - бюсты создателей 1с++ и этого класса! Ибо это - вещь!! Спасибо vandalsvq и за класс и за основательную документацию! Похоже, я буду активно его использовать..

Использую КОП ПрямойЗапрос 1.7.21, 1с++ 3.2.3.1

Вот такой запрос:
ТекстЗапроса = "
|ВЫБРАТЬ *
|ИЗ
|$БИОстатки.Основной(:КонДата~,, (Подразделения, Товары), (Количество, Сумма), ((Субконто1 = :ВыбПодразделение) И (Счет = :Счет411)),)
|КАК Би
|";

дает ошибку "В метод необходимо передавать непустые объекты типа метаданных". Если между идентификаторами видов субконто убрать пробел - все нормально. Если вместо (Подразделения, Товары) задать через пробел (Субконто1, Субконто2) - ошибки не возникает. В документации по $БИОстатки, впрочем, так и указано: "Т.е. например (Субконто1, Субконто3) или (Контрагенты,Договоры).", но при возможности влияние пробела хорошо было бы исключить..

В документации по $БИОстатки, Параметр КонецПериода сказано: "Параметр со значением даты или документа, до которого необходимо рассчитать остатки (условие <, т.е. не входит в сумму остатков). " Здесь закрались сомнения, и экспериментально установлено, что "<" справедливо для документа (т.е. остатки на начало документа), а для даты верно "<=", т.е. на конец дня.

Хотелось бы еще при выполнении запросов классом вместо "Выполняется обработка" в строке состояния наблюдать информацию именно о выполнении запроса с указанием даты - что-то вроде "Расчет итогов: 27.11.10" по аналогии с 1с..
73. Владимир Большов (BlueWind) 27.11.10 22:16 Сейчас в теме
(72) По поводу параметра КонецПериода разобрался - если в запросе параметр КонецПериода типа Дата установлен с модификатором (:КонДата~) тогда остатки рассчитываются на конец дня, если без модификатора (:КонДата) - тогда на начало дня. В документации про влияние модификатора сказано, но хорошо бы уточнить - каким образом.

И еще вопрос: als и ints файлы для КОП ПрямойЗапрос существуют?
74. eremin (mybracho) 23.11.11 11:20 Сейчас в теме
Ребята, скиньте ссылку где взять построитель для прямого запроса
75. Татьяна Иксанова (iksanova) 19.12.11 06:58 Сейчас в теме
Документация достаточно большая.
Пользоваться своим классом - это круто!
Заинтересовалась!
76. jojo nll (nll.jojo) 20.01.12 15:21 Сейчас в теме
77. andrey P (andrey314) 10 22.09.13 14:37 Сейчас в теме
Круто. Понимаю что наглею, но было бы еще круче если бы в составе документации были примеры для работы с БИ.
78. Александр Анисков (vandalsvq) 696 22.09.13 15:38 Сейчас в теме
Данный вопрос лучше всего задать в теме на форуме 1С++ (см. тут - http://www.1cpp.ru/forum/YaBB.pl?num=1285352210). Я достаточно сильно от 7.7 отошел и очень много проектов которые сейчас веду, чтобы браться за помощь :).
79. Сергей Толмачев (sss999) 35 12.11.13 08:48 Сейчас в теме
Круто конечно,но если бы мне сказали как,я бы весь синтаксис переделал под восьмерочный,ну не понятно нафига было делать какой то другой синтаксис,как будто людям делать нечего как сидеть и изучать новые языки.Документацию такую же делать нужно как и в 1с 8,при том вполне возможно даже выпустить небольшую книженцию страниц 50 и сделать небольшие денежки на этом проекте,опять же если синтаксис приведете к восьмерочному и уберете баги.Не нужен весь язык запросов,хотя бы основное для выборок.
80. Сергей Толмачев (sss999) 35 12.11.13 09:38 Сейчас в теме
Там в запросе можно обойтись и без всяких там долларов,двоеточий и квадратных скобок,все это можно отследить,а так я смотрю и не понимаю что это за конструкция в скобках что за синоним такой с пробелом и долларом и еще и с точкой.И еще тут же написать минимальную инструкцию,или сделать два варианта расширенный синтаксис и краткое начало работы с краткой справкой.
81. Александр Анисков (vandalsvq) 696 16.11.13 18:39 Сейчас в теме
(79) sss999, конкрентной цели монетизации проекта не было, я делал для своих нужд, а то что синтаксис такой, за основу был взять синтаксис 1C++. На тот момент достаточно распространенный среди знатоков прямых запросов. Синтаксис к 8-му приводить не вижу смысла, вот буквально пару дней назад пользовался разработкой для написания сложных сборов данных и знаешь, мне нравится результат который получился и процесс не вызвал больших проблем. Не хватает конструктора - вот что надо было бы точно.
По документации: если посмотришь то увидишь что документация там точно за 50 страниц выпадает, не хватает конкретных примеров - это да, но описание я считаю минимально достаточным.
И еще по поводу синтаксиса, я не вижу слишком больших отличий от 8-ки. Необходимость переименования и определения вида в запросе... ну что ж... А двоеточния или @ - очень сильно нужны. Например: в коде Т.ТекущийЭлемент = :Ссылка точно видно что "Ссылка" это именно текстовый параметр который надо подставить соответствующим образом. А в коде Т.ТекущийЭлемент = @Ссылка понятно что "Ссылка" это подставляемый параметр который необходимо задавать отличным от предыдущего примера видом, и при этом понятно что запрос параметризированный и выполнение его происходит отлично от обычного запроса.
82. Сергей Толмачев (sss999) 35 18.11.13 08:18 Сейчас в теме
А подскажите как подключить ваш класс
83. Сергей Толмачев (sss999) 35 18.11.13 08:27 Сейчас в теме
А на форуме 1cpp там помойка ,два дня нужно рыться что бы найти что то,больше половины старья которое уже не актуально ввиду выхода новых версий,а норм никто не может написать инструкции.
84. Сергей Толмачев (sss999) 35 26.02.14 10:32 Сейчас в теме
не подскажешь что за ошибка?Я посмотрел выходит в момент создания объекта 0,что за объект такой?в этом тексте типобъекта =0,я посмотрел он передается через параметр,а там стоит и вправду 0.
// определяем время подготовки запроса
ВремяПодготовки = _GetPerformanceCounter();

// создаем объект для получения результата запроса
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);

ПрямойЗапрос::Выполнить(Число ТипОбъекта=0, Строка ТекстВыполнения=, Число БезПодготовки=0) : Неудачная попытка создания объекта
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
{C:\Base77\База\ПрямойЗапрос.ert(13386) }

тЗапроса = Запрос.Выполнить(0);
{F:\SQLЗАПРОС2.ERT(183)}: ПрямойЗапрос::Выполнить(Число ТипОбъекта=0, Строка ТекстВыполнения=, Число БезПодготовки=0) : Неудачная попытка создания объекта
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
{C:\Base77\База\ПрямойЗапрос.ert(13386) }
85. Сергей Толмачев (sss999) 35 26.02.14 10:48 Сейчас в теме
ПрямойЗапрос::СоздатьОбъектыЗапроса(Строка ПутьКБазеSQL=:memory:) : Неудачная попытка создания объекта
БазаSQLite = СоздатьОбъект("SQLiteBase");
{C:\Base77\База\ПрямойЗапрос.ert(1057) }

Запрос = СоздатьОбъект("ПрямойЗапрос");
{F:\SQLЗАПРОС2.ERT(146)}: ПрямойЗапрос::СоздатьОбъектыЗапроса(Строка ПутьКБазеSQL=:memory:) : Неудачная попытка создания объекта
БазаSQLite = СоздатьОбъект("SQLiteBase");
{C:\Base77\База\ПрямойЗапрос.ert(1057) }

Хотя dll лежит sqllite
86. Александр Анисков (vandalsvq) 696 26.02.14 10:52 Сейчас в теме
(85) sss999, посмотри, может в коде при выполнении запроса вызываешь Выполнить с неправильными параметрами. Потому что 0 может быть только если он извне пришел именно так. А вообще там должно быть ИндексированнаяТаблица или ТаблицаЗначений. В общем в документацию посмотри.
Что же касается sqlite, может версия компоненты старая? Может не загрузилась ВК? Отдельно попробуй объект создать, проходит/нет.
87. Сергей Толмачев (sss999) 35 26.02.14 11:35 Сейчас в теме
отредактировал,обработку твою,запрос отработал.Для дбф.
Текст заменил так
было:
ИначеЕсли ЭтоSQL = 0 Тогда
ЗапросSQLite.Отладка(РежимОтладкиЗапроса);
ЗапросSQLite.ВыполнитьЗапрос(ТекстЗапроса,ПолучательЗапроса=);
КонецЕсли;
стало:
ИначеЕсли ЭтоSQL = 0 Тогда
ЗапросSQLite.Отладка(РежимОтладкиЗапроса);
ПолучательЗапроса=ЗапросSQLite.ВыполнитьЗапрос(ТекстЗапроса);
КонецЕсли;
и перед этим поменял
ПолучательЗапроса = СоздатьОбъект(ТипОбъекта);
заменил на
ПолучательЗапроса=0;
88. Сергей Толмачев (sss999) 35 26.02.14 12:31 Сейчас в теме
а то что не создавался СоздатьОбъект("SQLiteBase"); это видно проблема консоли,открыл другую обработку в которой объект создается и консоль заработала.
89. Александр Анисков (vandalsvq) 696 26.02.14 12:33 Сейчас в теме
(87) sss999, в итоге у тебя всегда результат будет в ИТ. Смотри сам, но проблема была не в коде класса, а в твоем коде.
90. Сергей Толмачев (sss999) 35 26.02.14 14:19 Сейчас в теме
(89) vandalsvq, ну вот так консоль захотела только через такой код работать,а обработка работает через старый код,проблемы в консоли как я понял
91. Сергей Толмачев (sss999) 35 26.02.14 14:20 Сейчас в теме
а зачем создается объект такой? ПолучательЗапроса = СоздатьОбъект(ТипОбъекта); у меня в типеобъекта стояло 0 и не отрабатывало через консоль
92. Александр Анисков (vandalsvq) 696 26.02.14 15:45 Сейчас в теме
(91) sss999, я не совсем понимаю про какую консоль ты говоришь? А в "СоздатьОбъект(ТипОбъекта)" не совсем понятно почему ноль приходит, туда должна приходить строка, с указанием типа объекта для получения результата запроса. Вероятнее всего проблема в вызове "Выполнить", посмотри параметры согласно документации, сравни с параметрами которые передаются, там ошибка.
93. Korpas (korpas) 03.06.15 13:37 Сейчас в теме
При попытке выполнить запрос появляются сообщения:

Процедура не обнаружена (вирт)
Процедура не обнаружена (я)
и
Внимание! Инициализация класса: ПрямойЗапрос закончилась неудачно!

В файле ПрямойЗапрос.ert не вижу, где объявляются процедуры вирт() и я()...

P.S. Видимо надо обновить 1cpp до 3ей версии...
94. Александр Анисков (vandalsvq) 696 30.06.15 09:31 Сейчас в теме
(93) korpas, советую за более актуальной версией, а также сборками с необходимыми dll и другими компонентами ходить на 1cpp.ru. В частности тут - http://www.1cpp.ru/forum/YaBB.pl?num=1273512019, выкладываются последние сборки. Правда давненько их не было и я не уверен что с моим авторством еще будут. Но кто знает. Сейчас функционал весьма стабилен и очень даже работоспособен.
В общем, ищите инфу на 1С++, тут я редко пишу ответы.
95. Иван Сидоров (succub1_5) 29 12.11.15 17:00 Сейчас в теме
Здравствуйте, создал примерно такой же запрос:
Запрос = СоздатьОбъект("ODBCRecordset");    
    ТекстЗапроса = "
    |SELECT
    |    CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 4111 THEN
    |        '         Отчет кассовой смены №'
    |    ELSE
    |        CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 239 THEN
    |            '         Перемещение №'
    |        ELSE
    |            CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 434 THEN
    |                '         Приходная накладная №'
    |            ELSE
    |                CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 297 THEN
    |                    '         Списание №'
    |                ELSE
    |                    CASE WHEN РегистрОстаткиТоваров.ВидДокумента = 4093 THEN
    |                        '         Оприходование излишков №'
    |                    ELSE
    |                        '         ' + CAST(РегистрОстаткиТоваров.ВидДокумента AS varchar(9))
    |                    END
    |                END
    |            END
    |        END
    |    END + RTRIM(Журнал.DOCNO) + ' от ' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 7, 2) + '.' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 5, 2) + '.' + SUBSTRING(РегистрОстаткиТоваров.ПозицияДокумента, 3, 2) AS ВидДокумента,
    |    РегистрОстаткиТоваров.ОстатокТовараНачальныйОстаток,
    |    РегистрОстаткиТоваров.ОстатокТовараПриход,
    |    РегистрОстаткиТоваров.ОстатокТовараРасход,
    |    РегистрОстаткиТоваров.ОстатокТовараКонечныйОстаток,
    |    '4!' + CAST(РегистрОстаткиТоваров.ВидДокумента AS varchar(9)) + '!' + RIGHT(РегистрОстаткиТоваров.ПозицияДокумента, 9) 
    |FROM                                
    |    $РегистрОстаткиОбороты.ОстаткиТоваров(:НачДата, :КонДата~, Документ, Движения, , Фирма = :Фирма AND Склад = :Склад AND Товар = :Расшифровка, Товар, ОстатокТовара) AS РегистрОстаткиТоваров
    |LEFT JOIN
    |    _1SJOURN AS Журнал
    |    ON Журнал.IDDOC = RIGHT(РегистрОстаткиТоваров.ПозицияДокумента, 9)
    |ORDER BY
    |    LEFT(РегистрОстаткиТоваров.ПозицияДокумента, 8)
    |";
    
    // параметры запроса
    НачДата = ДатаНач;
    КонДата = ДатаКон;
    СкладИД = "     J   ";
    Расшифровка = "  1DTL   ";
    Запрос.УстановитьТекстовыйПараметр("НачДата", НачДата);
    Запрос.УстановитьТекстовыйПараметр("КонДата", КонДата);
    Запрос.УстановитьТекстовыйПараметр("Фирма", "     0   "); // пустая фирма
    Запрос.УстановитьТекстовыйПараметр("Склад", СкладИД);
    Запрос.УстановитьТекстовыйПараметр("Расшифровка", Расшифровка);
    
    Запрос.Отладка(1);  
    
    Результат = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);   
    Сообщить(Результат.КоличествоСтрок());
    
    Если Результат.КоличествоСтрок() > 0 Тогда            
        Результат.ВыбратьСтроки();
        Пока Результат.ПолучитьСтроку() = 1 Цикл
            Сообщить("" + Результат.ВидДокумента + " - " + Результат.ОстатокТовараНачальныйОстаток + " " + Результат.ОстатокТовараПриход + " " + Результат.ОстатокТовараРасход + " " + Результат.ОстатокТовараКонечныйОстаток);    
        КонецЦикла;
    КонецЕсли;
...Показать Скрыть

Удаленное подключение, с драйверами SQL SERVER все настроено, но почему под Win 7 и 2003 работает без проблем, а под XP выдает ошибку: Meta name parser error: это метаимя разрешить невозможно "$РегистрОстаткиОбороты.ОстаткиТоваров"
96. Александр Никитин (ManyakRus) 266 31.03.16 17:47 Сейчас в теме
маленький глюк:
В $РегистрОстаткиОбороты.ОстаткиТМЦ() Условия приходится писать в одной строке, с новой строки выдаёт ошибки
Meta name parser error: не указан параметр ":rg_405"
97. Михаил (Mikeware) 33 07.04.16 16:24 Сейчас в теме
Хочу совета!
ВЫБРАТЬ
    Рег.ТекущийДокумент КАК [Документ $Документ]
    ,Рег.ВидДокумента КАК [Документ_вид $ВидДокумента]
    ,Рег.Фирма КАК [Фирма $Справочник.Фирмы]
    ,Рег.Договор КАК [Договор $Справочник.Договоры]
    ,Рег.СуммаРубНачальныйОстаток КАК ОстатокНач
    ,Рег.СуммаРубОборот КАК Оборот
    ,Рег.СуммаРубПриход КАК Приход
    ,Рег.СуммаРубРасход КАК Расход
    ,Рег.СуммаРубКонечныйОстаток КАК ОстатокКон
,СпрФирмы.ТекущийЭлемент КАК [ФирмаСпр ]
ИЗ $РегистрОстаткиОбороты.Покупатели(:НачПериода
        ,:КонПериода
        ,Документ
        ,ДвиженияИГраницыПериода
        ,        ,(Фирма,Договор)
        ,(СуммаРуб)) КАК Рег

ЛЕВОЕ СОЕДИНЕНИЕ $Справочник.Фирмы   Как Фирмы 
ПО   Рег.Фирма= Фирмы.id
...Показать Скрыть

дает ошибку
near "AS": syntax error


Собственно, менял условия соединения и на ЛЕВОЕ СОЕДИНЕНИЕ $Справочник.Фирмы Как Фирмы
ПО Рег.Фирма= $Фирмы.ТекущийЭлемент, и т.п. - та же ошибка.
Классы обновил на версию от 22.05.13
в режиме отладки выдает текст, который визуально ошибок не имеет
без левого соединения (сама ВТ) работает....
база- ДБФ.
98. Александр Анисков (vandalsvq) 696 07.04.16 20:58 Сейчас в теме
(97) Mikeware, отправь на почту или в скайп текст отладочного режима, хочу посмотреть, поскольку так с ходу не видно в чем проблема может быть.
99. Михаил (Mikeware) 33 08.04.16 16:53 Сейчас в теме
(98) спасибо, я сам разобрался. накосячил с типизацией. она немного отличается от "классической", привычной в одбсшных...
Оставьте свое сообщение