Переключение на Главную Страницу Страницы: 1 ... 36 37 [38] 39 40 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 480249 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #555 - 09. Апреля 2009 :: 10:38
Печать  
Стабильный релиз еще на шаг ближе Подмигивание
  

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #556 - 09. Апреля 2009 :: 11:24
Печать  
Как вам такая идея:
Реализовать в провайдере дополнительные поля и подзапросы.
На словах пока сложно объяснить, покажу как примерно вижу использование

Код
Выбрать все
ИсточникЗапроса.ОсновнойЗапрос("
|select
|	idx_date_time_iddoc [Ключ],
|	iddoc 		[Док :Документ],
|	iddocdef	[Док_вид :ВидДокументаПредставление],
|	date		[ДатаДок :Дата],
|	docno		[НомерДок],
|	closed		[Флаг]
|from Журнал
|where iddocdef in (:ВидДокумента.ПКО, :ВидДокумента.Реализация, :ВидДокумента.ПоступлениеТМЦ)
|", "Ключ", "Док");

ИсточникЗапроса.ДобавитьПоля("Контрагент, Договор, Сумма,
|СуммаУпрПоКассе, СуммаРубПоКассе, СуммаВалПоКассе");

ИсточникЗапроса.ДобавитьПодзапрос("
|select
|	Контрагент	[Контрагент :Справочник.Контрагенты],
|	Договор		[Договор :Справочник.Договоры],
|	Сумма		[Сумма :Число.15.2]
|from Документ_ПКО
|where iddoc = @Док	-- Подставиться значение из поля Док строки основного запроса
|limit 1", "ПоПКО");

ИсточникЗапроса.ДобавитьПодзапрос("
|select
|	Контрагент	[Контрагент :Справочник.Контрагенты],
|	Договор		[Договор :Справочник.Договоры],
|	СуммаВзаиморасчетов	[Сумма :Число.15.2]
|from Документ_Реализация
|where iddoc = @Док
|limit 1", "ПоРеализация");

ИсточникЗапроса.ДобавитьПодзапрос("
|select
|	Контрагент	[Контрагент :Справочник.Контрагенты],
|	Договор		[Договор :Справочник.Договоры],
|	СуммаВзаиморасчетов	[Сумма :Число.15.2]
|from Документ_ПоступлениеТМЦ
|where iddoc = @Док
|limit 1", "ПоПоступлениеТМЦ");

ИсточникЗапроса.ДобавитьПодзапрос("
|select
|	sum(СуммаВал) [СуммаВалПоКассе :Число.15.2],
|	sum(СуммаРуб) [СуммаРубПоКассе :Число.15.2],
|	sum(СуммаУпр) [СуммаУпрПоКассе :Число.15.2]
|from Регистр_Касса
|where iddoc = @Док
|");

ИсточникЗапроса.ДобавитьВыбирательПодЗапроса("
|case @Док_вид
|when :ВидДокумента.ПКО then 'ПоПКО'
|when :ВидДокумента.Реализация then 'ПоРеализация'
|when :ВидДокумента.ПоступлениеТМЦ then 'ПоПоступлениеТМЦ'
|end
|");

Поставщик.УстановитьИсточникЗапроса(ИсточникЗапроса);
 



Суть в том, что для каждой записи, полученной из основного запроса, вычисляются выражения - "выбиратели подзапросов", которые должны вернуть идентификатор подзапроса, который необходимо выполнить для этой записи.
Подзапросы без идентификаторов выполняются всегда.
Подзапросы должны быть либо "горизонтальные" - возвращают 1 строку, имена полей подзапроса определяют для каких доп.полей они предназначены, либо "вертикальные" - возвращают несколько строк, две колонки: Значение, ИмяДопПоля (ну например выводить остатки по складам в отдельные колонки).

Обсудим?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #557 - 09. Апреля 2009 :: 11:36
Печать  
Я так понимаю, сечас это всё можно сделать в "ПриВыводеСтроки", а данный подход немного упрощает работу?
Это случаем никак с Пользовательскими ф-иями пересечься не может?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #558 - 09. Апреля 2009 :: 11:46
Печать  
Вот, именно чтобы не маятся в ПриВыводеСтроки, выводя это все кодом 1С и задумывается.
Кроме того, значения этих доп-полей будут просто доступны через ТекущиеДанные.
Кроме того, можно еще и доп.фильтры так организовать, для условий, которые задавать в where основного запроса либо геморно, либо очень неоптимально.
А пользовательские функции пока вроде и не причем, но вполне могут пригодится в выбирателях подзапросов.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #559 - 09. Апреля 2009 :: 13:22
Печать  
Идея хорошая жаль только что она в ODBC будет недоступна.
Но это я о своем  Очень довольный о, универсальном  Круглые глаза

И интерфейс который ты написал в принципе понятен и пока нареканий нет, разве что, а дополнительные параметры? кроме тех которые пересекаются с запросом?
Ну что то вроде
SELECT ... FROM ... WHERE iddoc = @doc AND date < :РабочаяДата()
  

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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1sqlite
Ответ #560 - 09. Апреля 2009 :: 13:51
Печать  
orefkov писал(а) 09. Апреля 2009 :: 11:24:
Как вам такая идея:

Идея просто замечательная: где то в глубине души такое хотел очень давно, но (представляя объем работ разработчика) боялся об этом просить.
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #561 - 09. Апреля 2009 :: 16:53
Печать  
Идея охренительная.
Чтобы сказать что-нибудь умное, предлагаю Выбиратель назвать Селектором. Улыбка
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #562 - 10. Апреля 2009 :: 07:39
Печать  
kms писал(а) 09. Апреля 2009 :: 16:53:
Идея охренительная.
Чтобы сказать что-нибудь умное, предлагаю Выбиратель назвать Селектором. Улыбка


Все что не в основном запросе увеличивает время выполнения.
Соответственно данная опция может провоцировать к неэффективному коду.
Потом пойдут вопросы - а чего тормозит.

Или собираешься автоматом конструировать оптимальный запрос ?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #563 - 10. Апреля 2009 :: 08:20
Печать  
Дык если эти данные выводить всё равно надо.
Сейчас это можно делать через "ПриВыводеСтроки". Думаю, что реализация от Орефкова хуже точно не будет.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #564 - 10. Апреля 2009 :: 08:34
Печать  
JohnyDeath писал(а) 10. Апреля 2009 :: 08:20:
Дык если эти данные выводить всё равно надо.
Сейчас это можно делать через "ПриВыводеСтроки". Думаю, что реализация от Орефкова хуже точно не будет.


В восьмерке это реализовано, насколько помню, не в провайдере, а в табличном поле,
в событии ПриПолученииДанных - вызывается один раз при получении данных.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #565 - 10. Апреля 2009 :: 10:53
Печать  
kiruha писал(а) 10. Апреля 2009 :: 08:34:
JohnyDeath писал(а) 10. Апреля 2009 :: 08:20:
Дык если эти данные выводить всё равно надо.
Сейчас это можно делать через "ПриВыводеСтроки". Думаю, что реализация от Орефкова хуже точно не будет.


В восьмерке это реализовано, насколько помню, не в провайдере, а в табличном поле,
в событии ПриПолученииДанных - вызывается один раз при получении данных.

Всё равно не пойму, почему такая реализация будет НЕ оптимальнее события "ПриПолученииДанных".
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: 1sqlite
Ответ #566 - 13. Апреля 2009 :: 07:50
Печать  
2 Александр Орефков
В приложенном архиве два запроса
1. До передачи в поставщика
2. После передачи в поставщике (в режиме отладки)
Классно его отклобасило.
Выкладывать сюда не стал ибо очень большие.

Пы.сы. за то что я в поставщика подсунул в качестве запроса прошу не пинать сильно ногами  Очень довольный
  

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

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


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #567 - 14. Апреля 2009 :: 05:54
Печать  
Исправил.
  

1sqlite_1020_bf3.zip ( 391 KB | Загрузки )
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: 1sqlite
Ответ #568 - 23. Августа 2010 :: 18:04
Печать  
Спасибо. Это я всё изучил... но что-то видимо глубоко в танке сижу... Вожно что-то попроще... может для старта готовые примеры по выбору подчинённых доков и пр.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: 1sqlite
Ответ #569 - 24. Августа 2010 :: 05:50
Печать  
Эээ.. а куда делись странички ?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 36 37 [38] 39 40 ... 79
ОтправитьПечать