Переключение на Главную Страницу Страницы: [1] 2 3 ... 50 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 188188 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
24. Сентября 2010 :: 18:16
Печать  
В данной теме обсуждается КОП "ПрямойЗапрос".

Что он может:
- выполнение запроса на языке подобном 1Cv8
- выполнение запроса независимо от формата БД (DBF - 1sqlite, SQL - ODBCRecordset)
- наличие виртуальных таблиц, вроде Остатки, Обороты и ОстаткиОбороты по БухИтогам и Регистрам

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

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

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

Обновления брать тут

Версии внешних компонент рекомендованные к использованию:
1. 1C++
2. 1sqlite. Версия 1.0.2.3 и выше.


Часть № 1: - тут

Поскольку иногда ветки имеют свойство ломаться, настоятельно рекомендую обсуждение продолжать вести в этой теме. Все вопросы оставшиеся при переходе прошу продублировать сюда.
« Последняя редакция: 11. Марта 2012 :: 19:41 - vandalsvq »  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #1 - 24. Сентября 2010 :: 18:29
Печать  
Первым перешедшим вопросом будет модификация параметра Периодичность.

Предполагается реализовать функционал таким образом чтобы можно было дополнять таблицу периодами входящими в указанные границы, но не имеющими оборота. Для периодичности Документ и Период ДОПОЛНЕНИЕ будет проигнорировано.

Возникает следующий вопрос: суть в том что как должна дополняться таблица? Например есть период n, у которого есть обороты по пересечению измерений 1 и 2. У периода n+1 оборотов по данным пересечениям нет.
Так вот таблица должна дополняться только датой (и пустыми значениями измерений) или иметь дату и весь набор пересечений со значением оборотов = 0?

Т.е. есть таблица
01.01.10 | КонтрА | ОснДог | 100
01.01.10 | КонтрБ | ОснДог | 100
Обороты за 02.01.10 отсутствуют.

Дополненная таблица №1:
01.01.10 | КонтрА | ОснДог | 100
01.01.10 | КонтрБ | ОснДог | 100
02.01.10 |            |             | 0

Дополненная таблица №2:
01.01.10 | КонтрА | ОснДог | 100
01.01.10 | КонтрБ | ОснДог | 100
02.01.10 | КонтрА | ОснДог | 0
02.01.10 | КонтрБ | ОснДог | 0

Что-то мне подсказывает что будет выбран вариант №2.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 819
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #2 - 24. Сентября 2010 :: 18:44
Печать  
Однозначно вариант 2
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3042
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #3 - 24. Сентября 2010 :: 18:48
Печать  
Цитата:
Что-то мне подсказывает что будет выбран вариант №2.
угу.
В моей голове почему то результат представляется так: Измерения, Период, Ресурсы.
А следовательно:
КонтрА | 01.01.10 | 100
КонтрА | 02.01.10 | 0
КонтрА | 03.01.10 | 0
КонтрА | 04.01.10 | 100
КонтрА | 05.01.10 | 0
КонтрБ | 01.01.10 | 0
КонтрБ | 02.01.10 | 200
КонтрБ | 03.01.10 | 0
КонтрБ | 04.01.10 | 200
КонтрБ | 05.01.10 | 0
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #4 - 26. Сентября 2010 :: 11:41
Печать  
В общем я рассчитываю на бутылку от всех кто домогался до меня по поводу данных доработок  Смех.
И так встречайте первую бету:

1.07.018 от 26.09.10 г.
- Исправлена ошибка, при которой не правильно подготавливались ВТ если в параметре «Измерения» присутствуют пробелы.
- Изменен параметр «Периодичность» ВТ «РегистрОстаткиОбороты. Добавлена возмозможность указывать необходимость дополнения таблицы всеми периодами независимо от наличия и отсутствия остатков и/или движений.

Как пример текст запроса с дополнением:
Код
Выбрать все
"select *
|from $РегистрОстаткиОбороты.ТМЦ(
|		:НачПериода,
|		:КонПериода,
|		ДЕНЬ ДОПОЛНЕНИЕ,
|		,
|		,
|		(Контрагент,Договор),
|		(Количество)) as ОстаткиОбороты
|order by
|	Контрагент, Договор, НачалоПериода" 


Периодичность: День, Неделя, Месяц, Квартал, Год.

ПЫ.СЫ. Большое спасибо тов. leshik-у за участие в процессе появления данного функционала.
  

1Cv7_query_009.rar ( 219 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 819
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #5 - 26. Сентября 2010 :: 12:11
Печать  
Гип-гип ура!
Пошел тестировать Улыбка
  
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #6 - 26. Сентября 2010 :: 16:39
Печать  
В общем функционал дополнений периодичности выполнен в полном объеме для всех ВТ ОстаткиОбороты. На длительное время я ушел в запой писанину на 8.2. Всех прошу простить.
Ошибки исправляться будут, нового функционала пока нет.

1.07.018 от 26.09.10 г.
- Исправлена ошибка, при которой не правильно подготавливались ВТ если в параметре «Измерения» присутствуют пробелы.
- Изменен параметр «Периодичность» ВТ «РегистрОстаткиОбороты» и «БИОстаткиОбороты». Добавлена возмозможность указывать необходимость дополнения таблицы всеми периодами независимо от наличия и отсутствия остатков и/или движений.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #7 - 27. Сентября 2010 :: 08:09
Печать  
vandalsvq писал(а) 26. Сентября 2010 :: 16:39:
В общем функционал дополнений периодичности выполнен в полном объеме для всех ВТ ОстаткиОбороты. На длительное время я ушел в запой писанину на 8.2. Всех прошу простить.
Ошибки исправляться будут, нового функционала пока нет.

1.07.018 от 26.09.10 г.
- Исправлена ошибка, при которой не правильно подготавливались ВТ если в параметре «Измерения» присутствуют пробелы.
- Изменен параметр «Периодичность» ВТ «РегистрОстаткиОбороты» и «БИОстаткиОбороты». Добавлена возмозможность указывать необходимость дополнения таблицы всеми периодами независимо от наличия и отсутствия остатков и/или движений.

Пасиб! Первый пункт подтверждаю - баг ушел.
А по поводу Дополнения - извини что морочил голову, но то что мне нужно получить действительно не так просто как мне казалось Печаль Немного поразмыслив понял это.... теперь еще нужно немного поразмыслить, чтобы понять как это таки получить Улыбка
  
Наверх
ICQ  
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #8 - 09. Октября 2010 :: 19:34
Печать  
Может кто помочь в вопросе...
А как максимально быстро можно получить документы определённого вида с определённым значением реквизита шапка/табличной части?
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #9 - 10. Октября 2010 :: 08:30
Печать  
Табличные части документов хранятся в таблице "ДОкументСтроки.ВидДокумента", шапка хранится в "Документ.ВидДокумента". Общие реквизиты с признаком отбор, а также поля вроде Дата, НОмер, Проведен хранятся в общей таблице "ЖурналДокументов". Соединение происходит по полю $ПредставлениеТаблицы.ТекущийДокумент.
А отборы и прочее это в секции "ГДЕ" описываешь и все.

Как правило текст будет выглядеть так:

Код
Выбрать все
ВЫБРАТЬ [Поля выбора]
ИЗ ДокументСтроки.ВидДокумента КАК ДокументСтроки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВидДокумента КАК Документ
ПО $ДокументСтроки.ТекущийДокумент = $Документ.ТекущийДокумент
ЛЕВОЕ СОЕДИНЕНИЕ ЖурналДокументов КАК ЖурналДокументов
ПО $ДокументСтроки.ТекущийДокумент = $ЖурналДокументов.ТекущийДокумент
И $ЖурналДокументов.ВидДокумента = :ВидДокумента.ИмяВидаДокумента
ГДЕ [Описание условий] 

  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 819
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #10 - 10. Октября 2010 :: 08:35
Печать  
Хотелось бы дополнить что для отбора есть еще графы отбора по которым также можно более эффективно наложить фильтр чем просто по реквизиту шапки или табличной части.
Если нужен пример кода - пишите выложу.
  
Наверх
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #11 - 10. Октября 2010 :: 18:32
Печать  
Пишу... Можно посмотреть?  Подмигивание
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #12 - 10. Октября 2010 :: 19:02
Печать  
vandalsvq писал(а) 10. Октября 2010 :: 08:30:
Табличные части документов хранятся в таблице "ДОкументСтроки.ВидДокумента", шапка хранится в "Документ.ВидДокумента". Общие реквизиты с признаком отбор, а также поля вроде Дата, НОмер, Проведен хранятся в общей таблице "ЖурналДокументов". Соединение происходит по полю $ПредставлениеТаблицы.ТекущийДокумент.
А отборы и прочее это в секции "ГДЕ" описываешь и все.

Как правило текст будет выглядеть так:

Код
Выбрать все
ВЫБРАТЬ [Поля выбора]
ИЗ ДокументСтроки.ВидДокумента КАК ДокументСтроки
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВидДокумента КАК Документ
ПО $ДокументСтроки.ТекущийДокумент = $Документ.ТекущийДокумент
ЛЕВОЕ СОЕДИНЕНИЕ ЖурналДокументов КАК ЖурналДокументов
ПО $ДокументСтроки.ТекущийДокумент = $ЖурналДокументов.ТекущийДокумент
И $ЖурналДокументов.ВидДокумента = :ВидДокумента.ИмяВидаДокумента
ГДЕ [Описание условий] 


А можно конкретный пример с отбором по реквизиту шапки... Извините за назойливость...
  
Наверх
 
IP записан
 
vi-sa
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 28. Сентября 2010
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #13 - 11. Октября 2010 :: 11:32
Печать  
Очень, очень хочется видеть в комплекте набор примеров (запросы простые и сложные)
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 819
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #14 - 11. Октября 2010 :: 11:35
Печать  
Прошу у Вас прощения за отсутствие времени на консультации - алкогольные декларации. Как только освобожусь сразу же дополнительно приведу примеры.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 ... 50
ОтправитьПечать