gifts2017

Прямые запросы 1спп с наложением фильтров

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

Обработка для тестирования прямых запросов, есть множественный фильтр.

Для примера выложена сохраненная таблица запросов для ТиС. Файл: ТЗапросов.Вн2.

Прим! Перед использованием запросов-примеров заполнить фильтр значениями из Вашей базы, иначе результат работы, само собой будет пустым.

Примечание2! Комментарии в TSQL ставятся как двойной дефис  --, если кто не в курсе.То есть если фильтровать не надо, закомментируйте "where".

Примечание3 Для баз в ДБФ формате требуется драйвер vfpoledb от Майкрософта (адрес ссылки меняется, искать, например яндексом  по строке "vfpoledb", для доп информации погуглить по инфостарту) и 1cpp версии 3.0.0.0 и выше. Конструкция УложитьСписокОбъектов() для ДБФ то ли работает, то ли нет, не знаю. 

 

Распаковать  все в одну папку, запустить. Желательно наличие в конфигурации обработки "ПодборОбъектов" 

Очень хочется отзывов о идее, либо ссылок на такое-же уже отлаженное.

 

Обработка предназначена для тестирования прямых запросов с помощью 1cpp
На закладке МФ можно указывать необходимые значения переменных [:Перем] или
временных таблиц [#TempTab]
 
Пример:
  select  * from
$Справочник.Номенклатура as Ном
 where Ном.id in
(sel ect val from #mytemp)

 На Закладке МФ выбирается тип/вид переменной #mytemp
   и в окне списка подбираются отбираемые значения.

Переменные :НачДата и :КонДата  выбираются на закладке Основная,

Пример:
--Отбор непроведенных заявок с НачДата
Sel ect
 Жур.IDDoc as [Заявка $Документ.ЗаявкаПокупателя],
 Жур.$ОбщийРеквизит.Проект [Агент $Справочник.Проекты],
 $Заявка.Контрагент [Контрагент $Справочник.Контрагенты],
 $Заявка.Сумма
FROM
 _1SJourn as Жур            
join $Документ.ЗаявкаПокупателя Заявка
on Заявка.iddoc=Жур.iddoc
WHERE
 Жур.Date_Time_IDDoc > :НачДата  AND
 Жур.IDDocDef = $ВидДокумента.ЗаявкаПокупателя and
    Жур.closed=0

И вот отчет по акциям:

 -- пример отбора Проведнных Реализаций с ценой товара <0,01
Sel ect
 Жур.IDDoc as [Реализация $Документ.Реализация],
-- Жур.$ОбщийРеквизит.Проект [Агент $Справочник.Проекты],
 $Реализация.Контрагент [Контрагент $Справочник.Контрагенты],
 --$Реализация.Сумма
$Докс.Цена Цена,
$Докс.Количество*
$Докс.Коэффициент  КоличествоБаз,
$Докс.Номенклатура [Номенклатура $Справочник.Номенклатура]
FROM
_1SJourn as Жур       (nolock)     
join $Документ.Реализация Реализация  (nolock)     
on Реализация.iddoc=Жур.iddoc
join $ДокументСтроки.Реализация Докс  (nolock)     
on Реализация.iddoc=Докс.iddoc
WHERE
 Жур.Date_Time_IDDoc > :НачДата  AND
 Жур.IDDocDef = $ВидДокумента.Реализация and
   Жур.closed & 1=1
and $Докс.Цена<0.01
and $Докс.Номенклатура in (sel ect val from #myTemp)

2009-09-03

 Добавил новые примеры запроса, убрал нек.баги, добавил новые.

2009-09-08

 Добавил кнопку, для того, чтобы удобнее было копипастить в код/из кода 1с.

2009-09-15

 Специально для не скажу кого, добавил работу с ДБФ форматом и возможность держать несколько таблиц запросов. Интерфейс мне теперь не нравится, буду думать переделать.

 

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

Наименование Файл Версия Размер
- 142
.1251720351 39,00Kb
25.09.09
142
.1251720351 39,00Kb Бесплатно
- 55
.1251983587 8,00Kb
25.09.09
55
.1251983587 8,00Kb Бесплатно
- 58
.1251983595 10,44Kb
25.09.09
58
.1251983595 10,44Kb Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 31.08.09 16:16
Есть QA
Есть Консоль и Конструктор от Berezdetsky
3. david (dav405) 31.08.09 16:22
1,2) Подскажите, как в QA отобрать по конкретной группе номенклатуры?
А консоль отчетов - вообще супер, вот только там я тоже не разобрался, как втыкать конкретные значения из базы.
Вообще все началось с этих долбаных акций. Ну чего писать что-то отдельное, когда запрос набросать две минуты? А фильтр держать в мф.
4. Сергей (Che) Коцюра (CheBurator) 31.08.09 16:54
и есть еще отдельный класс МФ, который реализует типовой МФ
5. Евгений Мартыненков (JohnyDeath) 31.08.09 17:00
(4) фигасебе! Че, ты стал классами пользоваться? ;))))
6. david (dav405) 31.08.09 21:01
(4) Спасибо, только фильтр нифига нетипофой. Лучше бы плюс поставил, мне не хватает 3 плюса и никто не дает. Вот, например, вместо того, чтобы воткнуть хорошую и красивую печать ТЗ от Че. которую не могу скачать сегодня, поставил плохую и ужасТную свою.
А вообще, видимо буду доводить, жуть как удобно получается для ответов на редкие вопросы.
7. Сергей (Che) Коцюра (CheBurator) 31.08.09 21:07
(5) А ты думал!!! у меня уже один класс месяца три вертится! Но как всегда - руки у изготовителей кривые - пришлось допиливать по мелочи... и то одна ошибка выскакивает все время...
9. Донат Каверин (Donat) 31.08.09 21:15
Сделаешь свободный доступ, поставлю плюс :-)

Хотя, ладно, авансом...
10. david (dav405) 31.08.09 21:32
(9)Йееес.
А я сначала в свободный поставил - без энтузазизма восприняли. Тем более надобно доводить все равно до ума. Заторопился. бо сама идея парсить переменные для фильтра (да и типы) прямо из запроса меня утром очаровала, аж невтерпежж.
(8) http://www.infostart.ru/projects/386/
Да,были люди в наше время.... Буду посмотреть
11. Сергей (Che) Коцюра (CheBurator) 31.08.09 21:34
(10) по (8) отпишись по факту внедрежа
12. Александр Анисков (vandalsvq) 01.09.09 23:23
(7) один класс... три месяца... хотя уже хорошо ))))))))))
Автору плюс за разбирательство с прямыми запросами. ;)
13. Артур Аюханов (artbear) 02.09.09 08:38
(7) У меня порядка 100 классов в свое время крутилось, и на некоторых зарплатных и бухгалтерских базах до сих пор крутится.

ЗЫ некоторые классы совсем простые и маленькие, но свое дело делают :)
14. rasswet (rasswet) 02.09.09 11:08
толи я туплю, толи ленюсь.. с одной стороны тема конечно интересная
15. rasswet (rasswet) 02.09.09 11:17
РекордСет.УложитьСписокОбъектов(Эл,Пар,Вид);
{\QUERY1CPPANDMF\ЗАПРОСПП_С_МФ.ERT(143)}: База данных не установлена
запустил, на множ фильтре очистил, тип указал справочник. хз что она ещё хочет. видимо для продвинутых.
16. david (dav405) 02.09.09 11:23
(15) Значения для фильтра выбери, либо убери # и поставь -- в начале строки, тогда будет по всем отбирать.
Хотя ты прав, похоже птичку включать-невключать надо будет добавить. Осталось придумать как.
17. rasswet (rasswet) 02.09.09 13:01
(16) да ничего не получается. да не парься. фиг с ним.
18. david (dav405) 03.09.09 17:15
19. rasswet (rasswet) 04.09.09 08:58
(18) хз где там ставить --. нет так нет. обожаю обработки в которых открываешь и нажимаешь сформировать и видишь хоть какие-то данные. а те где сначала надо заполнить 25 параметров причем хз как и без установки хоть одного не взлетает, такие в топку.
20. david (dav405) 04.09.09 09:23
Забудь про прямые запросы, там многабукф )
21. david (dav405) 16.09.09 09:40
(19) Не мог спать спокойно, добавил работу с ДБФ (! немонопольно)
22. rasswet (rasswet) 16.09.09 10:35
(21)это в который файл? их три. и какой о чем не понятно(
23. david (dav405) 16.09.09 11:18
(22) Главный - первый файл. Второй - просто вывод таблицы результата на печать -необязателен. Третий - таблица примеров запросов. В Твоем случае, она все равно не сработает, потому что под скуль. Т.е. тебе, чтобы посмотреть хоть какой-то результат надо скачать первый файл, проставить на машину фоксовые дрова (vfpoledb), и написать в поле ввода (большое такое) что-то вроде sel ect * from $Справочник.Номенклатура, после чего нажать "Сформировать". А потом могешь более эксперементировать с запросами и результатами. Когда нажимаешь "сохранить" - запрос запоминается под именем, которое в "описании", т.е. можно по-очереди делать и проверять запросы, сохраняя их историю. //Черновики потом удаляешь. Я-то прикололся, но подозреваю, что интерфейс жутко кривой :).
После того, как запрос нравится - нажимаешь копипаст - и из окна сообщений копируешь текст запроса в код "настоящей" обработки.
24. rasswet (rasswet) 16.09.09 13:06
3, 0, 1, 22
ОлеДБ.ПрисоединитьИБ(КаталогИБ());
{F:\_С ИНЕТА\ЗАПРОСПП_С_МФ2.ERT(180)}: FAILED! IDataInitialize::GetDataSource(): Класс не зарегистрирован
это из-за дров фоксовых?
25. Епрст (Ёпрст) 16.09.09 14:06
(24) Эту строчку нужно заремить..
+ нет строки подключения для дбф..
+ весьма забавный метод определения , что это файловая версия (при наличии спец. метода в самой компоненте)
Короче, в дбф не работает.
26. david (dav405) 16.09.09 16:54

(25) Уважаемый будет смеятся, однако работает.
(24) да, после установки должно заработать.
(25)+ Канэшно забавный, а вай нот, дело то в том, что версия мне понадобилась попозжее, ну и номер версии - если видишь, определяю странно, потому как в том 1срр, который у меня сейчас метод "версия()" возвращает непойму что. А теперича они(1срр) по умолчанию втыкают строку для подключения к текущей базе. Мало того, насколько я понимаю, (по изменяющейся документациина 1cpp.ru) авторы работают над поддержанием уложитьсписокобъектов() для дбф.
27. Епрст (Ёпрст) 16.09.09 17:17
(26) Работает, но медленно, ибо строка подключения в методе ПрисоединитьИБ устаревшая..
28. Епрст (Ёпрст) 16.09.09 17:18
>>>который у меня сейчас
Это какой ?
3.0.1.23 если что пользуй.
29. rasswet (rasswet) 16.09.09 18:20
ругнулось на
ИмяФайлаТЗ=СписокСохраненныхТаблиц.ПолучитьЗначение(лТекПоз,);
{N:\СИНЕТА\ЗАПРОСПП_С_МФ2.ERT(318)}: Индекс не входит в границы списка значений.
30. rasswet (rasswet) 16.09.09 18:43
на закладку множ фильт не переходит 29-ошибка.
но после установки фоксовых дров заработало. теперь можно дальше думать..что с этим делать))
залил
http://narod.ru/disk/13204508000/VFPOLEDBSetup.msi.html -фоксовые дрова
кому надо не ищите по инету. качайте по ссылкам
3.0.1.23 тут http://narod.ru/disk/13204616000/Icpp-latest-3.0.1.23.rar.html
31. rasswet (rasswet) 16.09.09 19:16
сделал конструктором запрос
SEL ECT $АвансовыйОтчет.Сотрудник [Сотрудник $Справочник.Сотрудники]
, $АвансовыйОтчет.ПриложеноДок ПриложеноДок
, $АвансовыйОтчет.НаименованиеАванса НаименованиеАванса
FROM $Документ.АвансовыйОтчет AS АвансовыйОтчет
не сработало. а есть какой-то конструктор, которым можно запросы делать и в эту твою штуку вставлять?
пробовал http://infostart.ru/projects/1081/ этим делать
32. david (dav405) 16.09.09 19:27
(27) Ну, может медленно, у меня-то и клиентов на дбф не осталось, не гонял.
(30) Сохрани запрос - должен создавать таблицы,(в т.ч. и мф), но да, поправлю проверку.
33. david (dav405) 16.09.09 20:24
(31) Глянь в той теме http://infostart.ru/projects/1081/ 4-й коммент от JonniDeath
34. david (dav405) 16.09.09 20:26
(31)+ Там, кстати выдернутые запросы из кода можно втыкать, потом кнопка копипаст - делает две версии - в поле ввода убирает "|", в окне сообщений - наоборот добавляет.
Конечно уродство, но удобно.
35. david (dav405) 16.09.09 20:47
(27) Она еще и casesensitive, блин. Поменяю.
36. rasswet (rasswet) 16.09.09 21:28
(32) сохрани запрос-это не понял. (33) с AS понял. работает!
копипаст-тоже понял.
SEL ECT $АвансовыйОтчет.Сотрудник AS [Сотрудник $Справочник.Сотрудники]
, $АвансовыйОтчет.ПриложеноДок AS ПриложеноДок
, $АвансовыйОтчет.НаименованиеАванса AS НаименованиеАванса
FROM $Документ.АвансовыйОтчет AS АвансовыйОтчет
это работает.
на закладку всё равно не переходит. буду копипастить из конструктора.
in (sel ect val from #myTemp) это мне тогда не надо?
табл с рисунка 6406 не выводит. выводит в виде ТЗ.ВыбратьСтроку()
37. david (dav405) 16.09.09 22:42
(36) Там кнопка Добавить/обновить - она сохранят текст запроса в файл для дальнейшего использования, она же должна создавать МФ.
#MyTemp в дбф пока не работает
Табл с рисунка получается, если в каталог обработки положить второй файл (ПечатьТЗ2.ert)
С датой из общего журнала, смотрю пока неудобненько, переделаю завтра, чтобы для дбф клал дату по-другому.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа