Переключение на Главную Страницу Страницы: 1 ... 31 32 [33] 34 35 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245556 )
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #480 - 26. Ноября 2012 :: 07:27
Печать  
Никак не могу начать... нужен вот такой запрос...
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Бланк,Дк,1);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Бронь);

если БухИтоги.ВыполнитьЗапрос(РабочаяДата(),РабочаяДата(),БПК,БЛТ,,,,"К")> 0 тогда
БухИтоги.ВыбратьСубконто();
Пока БухИтоги.ПолучитьСубконто()=1 Цикл
ВЗВ=БухИтоги.Субконто(2);
Если (ВЗВ.Вид()="Бронь") Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #481 - 26. Ноября 2012 :: 08:07
Печать  
andrmit писал(а) 26. Ноября 2012 :: 07:27:
Никак не могу начать... нужен вот такой запрос...

База скульная?
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #482 - 26. Ноября 2012 :: 10:28
Печать  
DBF
  
Наверх
 
IP записан
 
Igor YN
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 40
Зарегистрирован: 13. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #483 - 27. Ноября 2012 :: 06:44
Печать  
У меня с правочнике есть "Поиск элемента", там простенький ПрямойЗапрос. Но хочется, чтобы поиск был по вхождению в произвольную ГРУППУ.
Как оптимальнее сделать? Несколько ЛевыхСоединений По Родитель (Родитель.Родитель и т.д)? Или как-то красивше можно?
  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #484 - 29. Ноября 2012 :: 04:45
Печать  
Работа встала... необходим вышеуказанный запрос...
« Последняя редакция: 07. Декабря 2012 :: 05:27 - andrmit »  
Наверх
 
IP записан
 
andrmit
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 24
Зарегистрирован: 23. Августа 2010
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #485 - 09. Декабря 2012 :: 20:07
Печать  
Не попадаю в индекс...  Печаль
     ТекстЗапроса = "
     |ВЫБРАТЬ

     | $Пров.СчетДт КАК [СчетДт $Счет.Основной],
     | $Пров.ТекущийДокумент КАК [ТекущийДокумент $Документ],
     |$Пров.Дата КАК [ДатаДвижения $Дата],
     |$Пров.СчетКт КАК [СчетКт $Счет.Основной],
     |$Пров.Сумма КАК СуммаПроводки,
     |$Пров.Количество КАК Количество,
     |$Пров.СубконтоДт1 КАК [СубконтоДт1 $Субконто],
     |$Пров.ВидСубконтоДт1 КАК СубконтоДт1_вид,
     |$Пров.СубконтоДт2 КАК [СубконтоДт2 $Субконто],
     |$Пров.ВидСубконтоДт2 КАК СубконтоДт2_вид,
     |$Пров.СубконтоКт1 КАК [СубконтоКт1 $Субконто],
     |$Пров.ВидСубконтоКт1 КАК СубконтоКт1_вид,
     |$Пров.СубконтоКт2 КАК [СубконтоКт2 $Субконто],
     |$Пров.ВидСубконтоКт2 КАК СубконтоКт2_вид,
     |$Пров.ПозицияДокумента КАК ПозицияДокумента


     |

     |ИЗ Проводки КАК Пров
     |LEFT JOIN Журнал ON $Пров.ТекущийДокумент = Журнал.IDDOC 
     |
     |
     |ГДЕ
     | ($Пров.СчетДт=:Сч_ДБ) И ($Пров.СубконтоДт1=:К) И ($Пров.СубконтоДт2=:П)
     | ";
  
Наверх
 
IP записан
 
viddik
Junior Member
**
Отсутствует



Сообщений: 37
Зарегистрирован: 22. Октября 2008
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #486 - 28. Декабря 2012 :: 11:02
Печать  
vandalsvq, по поводу твоего новогоднего подарка нам, юзерам твоих классов - спасибо заранее!  Очень довольный И тебя тоже с наступающим 2013-м!

Из недавно замеченного в последнем (и предыдущем) ПрямомЗапросе - для таблиц Регистр.<ИмяРегистра> нет полей $ТекущийДокумент, $ВидДвижения, ну и, вероятно, остальных с $. Приходится писать соответственно IDDOC, DEBKRED. А если это не баг, а фича, то надо доку подправить.
  
Наверх
 
IP записан
 
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #487 - 02. Января 2013 :: 12:27
Печать  
С НОВЫМ ГОДОМ!!!

Нужна помощь в реализации запроса.
Имеется:
Документ.Билет
У этого документа есть табличная часть с реквизитами
ПункОтбытия (Тип: Строка)
ПунктПрибытия (Тип: Строка)

Задача: На выходе получить Индексированную таблицу Вида:
|Билет|РезультирующаяСтрока

Где: РезультирующаяСтрока вычисляется по алгоритму:

Код
Выбрать все
РезультирующаяСтрока = "";
докБилет.ВыбратьСтроки();
Пока докБилет.ПолучитьСтроку() =  1 Цикл
   РезультирующаяСтрока = РезультирующаяСтрока+ПунктОтбытия+ПунктПрибытия;
КонецЦикла; 



Ткните пожалуйста в какую сторону копать

  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #488 - 03. Января 2013 :: 02:39
Печать  
artamir писал(а) 02. Января 2013 :: 12:27:
У этого документа есть табличная часть с реквизитами
ПункОтбытия (Тип: Строка)
ПунктПрибытия (Тип: Строка)


Строка неограниченной длины?
Если ограниченной - то вот так примерно
Код
Выбрать все
	ПЗ=СоздатьОбъект("ПрямойЗапрос");
	ПЗ.БухгалтерскийУчет = 0;
	ПЗ.ПериодическиеЗначения = 0;
	ПЗ.РежимОтладки = 1;
	ТекстЗапроса="
	|ВЫБРАТЬ
	|	$ДокБилетСтроки.ТекущийДокумент КАК [Билет $Документ.Билет]
	|	,СОКРП($ДокБилетСтроки.ПункОтбытия)||СОКРП($ДокБилетСтроки.ПункПрибытия) КАК [РезультирующаяСтрока $Строка]
	|ИЗ
	|	ДокументСтроки.Билет КАК ДокБилетСтроки $nolock
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	ЖурналДокументов КАК Жур $nolock
	|ПО $Жур.ТекущийДокумент = $ДокБилетСтроки.ТекущийДокумент
	|	И $Жур.ДатаДокумента МЕЖДУ :лНачДата И :лКонДата~";
	ПЗ.УстановитьТекстовыйПараметр("лНачДата", ДатаНач);
	ПЗ.УстановитьТекстовыйПараметр("лКонДата", ДатаКон);
	тзРез = ПЗ.Выполнить(,ТекстЗапроса);
 


З.Ы. С Новым Годом! Подмигивание
« Последняя редакция: 03. Января 2013 :: 07:26 - Dolly_EV »  
Наверх
ICQ  
IP записан
 
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #489 - 03. Января 2013 :: 08:45
Печать  
Dolly_EV писал(а) 03. Января 2013 :: 02:39:
artamir писал(а) 02. Января 2013 :: 12:27:
У этого документа есть табличная часть с реквизитами
ПункОтбытия (Тип: Строка)
ПунктПрибытия (Тип: Строка)


Строка неограниченной длины?
Если ограниченной - то вот так примерно
Код
Выбрать все
	ПЗ=СоздатьОбъект("ПрямойЗапрос");
	ПЗ.БухгалтерскийУчет = 0;
	ПЗ.ПериодическиеЗначения = 0;
	ПЗ.РежимОтладки = 1;
	ТекстЗапроса="
	|ВЫБРАТЬ
	|	$ДокБилетСтроки.ТекущийДокумент КАК [Билет $Документ.Билет]
	|	,СОКРП($ДокБилетСтроки.ПункОтбытия)||СОКРП($ДокБилетСтроки.ПункПрибытия) КАК [РезультирующаяСтрока $Строка]
	|ИЗ
	|	ДокументСтроки.Билет КАК ДокБилетСтроки $nolock
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	ЖурналДокументов КАК Жур $nolock
	|ПО $Жур.ТекущийДокумент = $ДокБилетСтроки.ТекущийДокумент
	|	И $Жур.ДатаДокумента МЕЖДУ :лНачДата И :лКонДата~";
	ПЗ.УстановитьТекстовыйПараметр("лНачДата", ДатаНач);
	ПЗ.УстановитьТекстовыйПараметр("лКонДата", ДатаКон);
	тзРез = ПЗ.Выполнить(,ТекстЗапроса);
 


З.Ы. С Новым Годом! Подмигивание


Если у меня в документе 5 строк в табличной части, то и в результирующей таблице я получаю 5 строк.

Вопрос в том: как из всех строк табличной получить одну результирующую строку
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #490 - 03. Января 2013 :: 09:07
Печать  
У SQLite есть функция конкатенации строк, у SQL ее нет. - некорректно выразился
Универсальный метод - перебор результата запроса т.е. почти как у тебя счас.
  

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


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #491 - 03. Января 2013 :: 09:10
Печать  
vandalsvq писал(а) 03. Января 2013 :: 09:07:
У SQLite есть функция конкатенации строк, у SQL ее нет.
Универсальный метод - перебор результата запроса т.е. почти как у тебя счас.


Спасибо
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #492 - 03. Января 2013 :: 09:18
Печать  
Для DBF можно использовать group_concat.
Приблизительно это выглядит так:
Код
Выбрать все
select
    t.ТекущийДокумент as doc,
    group_concat(t.ПункОтбытия, t.ПунктПрибытия) as str
from
    ДокументСтроки.ТвойДокумент as t
group by
    t.ТекущийДокумент 

  

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #493 - 04. Января 2013 :: 04:54
Печать  
а есть русский хелп по sqlite? именно по функциям? где-то здесь было в топике - но там ссылка дохлая. Погуглил - сходу ничего не нашел
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #494 - 04. Января 2013 :: 05:06
Печать  
vandalsvq писал(а) 03. Января 2013 :: 09:18:
Для DBF можно использовать group_concat.

Блин, какая четкая функция!!!
вот аналог для sql: http://www.cyberforum.ru/sql-server/thread160915.html
но сточки зрения универсальности - проще уж действительно потом итз перебрать и соединить в строку
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 31 32 [33] 34 35 ... 51
ОтправитьПечать