Переключение на Главную Страницу Страницы: 1 ... 12 13 [14] 15 16 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245696 )
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #195 - 15. Июля 2011 :: 07:01
Печать  
Доброго времени суток, коллеги!

Снова столкнулся с проблемой. То ли я к концу дня уже не соображаю, то ли чего-то не знаю...
Для краткости приведу небольшой запрос:

Код
Выбрать все
	|ВЫБРАТЬ
	|	Номенклатура.ID КАК [Ссылка $Справочник.Номенклатура]
	|, 	Журнал.$ОбщийРеквизит.Проект КАК [Проект $Справочник.Проекты]
	|, 	Партии.ID КАК [ПартииСсылка $Справочник.Партии]
	|, 	Партии.ПриходныйДокумент		КАК [Документ $Документ]
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	|	Справочник.Партии КАК Партии
	|ПО
	|	Номенклатура.ID = Партии.PARENTEXT
	|ЛЕВОЕ СОЕДИНЕНИЕ
	|	ЖурналДокументов КАК Журнал  
	|ПО
	|	Партии.ПриходныйДокумент = Журнал.IDDOC
	|ГДЕ
	|	(Номенклатура.ID В (ВЫБРАТЬ val ИЗ #сзНоменклатура))";
 



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

Вопрос : Как соединить? Мне нужно из журнала получить значение общего реквизита...
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #196 - 15. Июля 2011 :: 08:41
Печать  
right(Партии.ПриходныйДокумент,9) = Журнал.IDDOC
или
Партии.ПриходныйДокумент = $ВидДокумента36.ВидКонкретногоДокумента + Журнал.IDDOC
  
Наверх
wwwICQ  
IP записан
 
ziflex
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 76
Местоположение: Владивосток
Зарегистрирован: 05. Мая 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #197 - 15. Июля 2011 :: 11:57
Печать  
Так в том то и дело, что там значения равные разным видам документов. и мне нужны все. Печаль
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #198 - 15. Июля 2011 :: 12:52
Печать  
Значит делаешь только так:
Цитата:
right(Партии.ПриходныйДокумент,9) = Журнал.IDDOC
  
Наверх
ICQ  
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #199 - 15. Июля 2011 :: 12:56
Печать  
немного уточнений: $Партии.ПриходныйДокумент
  
Наверх
wwwICQ  
IP записан
 
temrmal
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 42
Зарегистрирован: 13. Января 2011
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #200 - 21. Июля 2011 :: 09:47
Печать  
Доброго дня! База данных sql
Допустим у меня есть запрос к регистру остаткиОбороты.ОстаткиТМЦ
Запрос выводит остатки номенклатуры. Но в каком то своем порядке. Как вывести родителя? и более того - как расположить результат в иерархическом порядке с несколькими уровнями вложенности? Спасибо!
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #201 - 21. Июля 2011 :: 10:37
Печать  
temrmal писал(а) 21. Июля 2011 :: 09:47:
Доброго дня! База данных sql
Допустим у меня есть запрос к регистру остаткиОбороты.ОстаткиТМЦ
Запрос выводит остатки номенклатуры. Но в каком то своем порядке. Как вывести родителя? и более того - как расположить результат в иерархическом порядке с несколькими уровнями вложенности? Спасибо!

1. Запрос выводит так, как ему выдал данные sql-сервер. Нужен твой порядок - ставь Ордер бай в запрос.
2. Для вывода Родителя - соединяешь Запрос к регистру с Номенклатурой, откуда можешь получить ParentID
3. В иерархическом порядке можешь сделать если напишешь суперзапрос, правильно соединишь все таблицы и т.д. А можешь загнать результат запроса в Индескированную ТЗ и там сгруппировать с учетом иерархии (ИТЗ.Группировать("иТовар: &Товар","Количество, Сумма", 1); особенно эффективно, если перед этим вытащить ParentID из п.2 в ИТЗ в колонку "Товар_Родитель")
  
Наверх
ICQ  
IP записан
 
diocompany
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Местоположение: Москва
Зарегистрирован: 11. Сентября 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #202 - 13. Сентября 2011 :: 05:41
Печать  
Доброго времени суток!
А могли бы вы показать пример кода, с использованием класса "ПрямойЗапрос", для запроса к регистру по Партиям, который думаю нужен нууу очень многим.

Формат данных DBF!!!

Суть запроса в следующем:
1. Остатки и обороты
2. Группировка по 1. Номенклатура 2. Документ.
3. Фильтр по номенклатуре (как опция)

В коде 1С это выглядит так:
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Номенклатура = Регистр.ПартииНаличие.Номенклатура;
    |Количество = Регистр.ПартииНаличие.Количество;
    |СуммаРуб = Регистр.ПартииНаличие.СуммаРуб;
    |Функция КоличествоНачОст = НачОст(Количество);
    |Функция КоличествоПриход = Приход(Количество);
    |Функция КоличествоРасход = Расход(Количество);
    |Функция КоличествоКонОст = КонОст(Количество);
    |Функция СуммаНачОст = НачОст(СуммаРуб);
    |Функция СуммаПриход = Приход(СуммаРуб);
    |Функция СуммаРасход = Расход(СуммаРуб);
    |Функция СуммаКонОст = КонОст(СуммаРуб);
    |Группировка Номенклатура упорядочить по Номенклатура.Наименование без групп;
    |Группировка Документ;
    |Условие(Номенклатура в ВыбНоменклатура);
    |"//}}ЗАПРОС
    ;

Если бы увидеть подобный запрос, в виде, с использованием Класса "ПрямойЗапрос", было бы ЗАМЕЧАТЕЛЬНО!
И не только для меня!  Улыбка
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #203 - 13. Сентября 2011 :: 06:08
Печать  
Код
Выбрать все
ВЫБРАТЬ
РегОст.ТекущийДокумент КАК [Документ $Документ]
,РегОст.ВидДокумента КАК Документ_вид
,РегОст.Номенклатура КАК [Номенклатура $Справочник.Номенклатура]
,РегОст.КоличествоНачальныйОстаток КАК КолНачОст
,РегОст.КоличествоПриход КАК КолПриход
,РегОст.КоличествоРасход КАК КолРасход
,РегОст.КоличествоКонечныйОстаток КАК КолКонОст
,РегОст.СуммаНачальныйОстаток КАК СумНачОст
,РегОст.СуммаПриход КАК СумПриход
,РегОст.СуммаРасход КАК СумРасход
,РегОст.СуммаКонечныйОстаток КАК СумКонОст
,$СпрНоменклатура.Наименование КАК НоменклатураНаименование
ИЗ
$РегистрОстаткиОбороты.ПартииНаличие(
:НачПериода,
:КонПериода,
ДОКУМЕНТ,
,
(Номенклатура В (#МассивНоменклатуры)),
(Номенклатура),
(Количество, Сумма),) КАК РегОст
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ПО РегОст.Номенклатура = $СпрНоменклатура.ТекущийЭлемент 



Далее получаешь результат в виде ИТЗ и ИТЗ группируешь ее стандартными методами (читай в доке 1С++), а для сортировки используешь поле "НоменклатураНаименование"

За полноту сведений не отвечаю, писал по памяти просто так чтобы вспомнить не засох ли мозг Улыбка)))), так что дока всегда под рукой внимательно сверять все Подмигивание
  

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


1C++ rocks!

Сообщений: 4
Местоположение: Москва
Зарегистрирован: 11. Сентября 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #204 - 13. Сентября 2011 :: 06:57
Печать  
vandalsvq писал(а) 13. Сентября 2011 :: 06:08:
Далее получаешь результат в виде ИТЗ и ИТЗ группируешь ее стандартными методами (читай в доке 1С++), а для сортировки используешь поле "НоменклатураНаименование"

За полноту сведений не отвечаю, писал по памяти просто так чтобы вспомнить не засох ли мозг Улыбка)))), так что дока всегда под рукой внимательно сверять все Подмигивание


ПРЕМНОГО БЛАГОДАРЕН!!!  Очень довольный
Спасибо за помощь!
Буду разбираться!!!
  
Наверх
 
IP записан
 
diocompany
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Местоположение: Москва
Зарегистрирован: 11. Сентября 2011
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #205 - 13. Сентября 2011 :: 10:09
Печать  
vandalsvq писал(а) 13. Сентября 2011 :: 06:08:
Далее получаешь результат в виде ИТЗ и ИТЗ группируешь ее стандартными методами (читай в доке 1С++), а для сортировки используешь поле "НоменклатураНаименование"

За полноту сведений не отвечаю, писал по памяти просто так чтобы вспомнить не засох ли мозг Улыбка)))), так что дока всегда под рукой внимательно сверять все Подмигивание


Я дико извиняюсь, но есть ещё один вопрос.

(Номенклатура В (#МассивНоменклатуры)),

Если у меня выбрана группа ВыбНоменклатура, то что надо передать в вышеуказанное условие?

Пытался через
RS.УложитьСписокОбъектов(ВыбНоменклатура, МассивНоменклатуры, "Номенклатура");

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #206 - 13. Сентября 2011 :: 15:42
Печать  
Попробуй так, вообще внимательно читай доку, ну и форум тут примеров очень много.

Код
Выбрать все
ПрямойЗапрос.УложитьСписокОбъектов(ВыбГруппаНоменклатура, "#МассивНоменклатуры", "Номенклатура")  

  

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #207 - 29. Сентября 2011 :: 06:34
Печать  
Хелп!
Код
Выбрать все
ТекстЗапроса = "
|ВЫБРАТЬ
|  РегВз.Контрагент КАК [Контрагент $Справочник.Контрагенты],
|  РегВз.Проект КАК [Проект $Справочник.Проекты],
|  РегВз.СуммаНачальныйОстаток КАК ВзНачОст,
|  РегВз.СуммаПриход КАК ВзПриход,
|  РегВз.СуммаРасход КАК ВзРасход,
|  РегВз.СуммаКонечныйОстаток КАК ВзКонОст
|ИЗ
|  $РегистрОстаткиОбороты.Взаиморасчеты(:зНачДата,
|						:зКонДата,
|						ПЕРИОД,
|						,
|						(Фирма=:зФирма И Контрагент В (ВЫБРАТЬ val ИЗ #ВыбКонтрагенты)),
|						(Контрагент,Проект),
|						(Сумма)) КАК РегВз";
Запрос.УстановитьТекстовыйПараметр("зНачДата", НачДата);
Запрос.УстановитьТекстовыйПараметр("зКонДата", КонДата1);
Запрос.УстановитьТекстовыйПараметр("зФирма", ВыбФирма.ТекущийЭлемент());
Запрос.УложитьСписокЗначений(ВыбКонтрагенты,"#ВыбКонтрагенты");
тзВз = Запрос.Выполнить(,ТекстЗапроса);
 



если НачДата<=НачМесяца И КонДата1<=КонМесяца
по ВзПриход,ВзРасход цепляются НЕ ВСЕ СУММЫ
(соответственно остатки тоже кривые, логику незацепления проследить не могу)

если НачДата<=НачМесяца И КонДата1>КонМесяца (т.е. ПЕРИОД больше периодичности регистра)
все Ок.... где копать? Печаль (ИБ=dbf)
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #208 - 29. Сентября 2011 :: 06:53
Печать  
Вот тут:
Код
Выбрать все
:зКонДата~ 

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


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #209 - 29. Сентября 2011 :: 07:10
Печать  
leshik писал(а) 29. Сентября 2011 :: 06:53:
Вот тут:
Код
Выбрать все
:зКонДата~ 



СПАСИБО ДОБРЫЙ ЧЕЛОВЕК! Очень довольный
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 12 13 [14] 15 16 ... 51
ОтправитьПечать