Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Выбор из оборотного региста (число прочтений - 11005 )
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Выбор из оборотного региста
14. Мая 2009 :: 11:28
Печать  
Есть текст прямого запроса:
ТекстЗапроса = "-- qryMaker:Отчет1.2009.05.13.17.45.24
     |SELECT Рег.Покупатель [Покупатель $Справочник.Контрагенты]
     |      , Рег.ТорговаяТочка [ТорговаяТочка $Справочник.ТорговыеТочки]
     |      , Рег.ФормаОплаты [ФормаОплаты $Перечисление.ФормыОплаты]
     |      , Рег.ТМЦ [ТМЦ $Справочник.ТМЦ]
     | , Рег.IDDoc [Док $Документ]
     |      , Рег.РасходСумОборот ОтгруженоСумма
     |      , Рег.РасходКвоОборот ОтгруженоКво
     |      , Рег.ДоходОборот Доход
     |FROM $РегистрОбороты.Обороты(:НачДата,
     |            :КонДата,,,
     |            (Фирма = :ВыбФирма)
     |            AND (Покупатель = :ВыбКонтрагент)
     |            AND (ТорговаяТочка = :ВыбТТ)
     |            AND (ТМЦ = :ВыбТМЦ),
     |            (Покупатель, ТорговаяТочка, ФормаОплаты, ТМЦ),
     |            (РасходСум, РасходКво, Доход)) AS Рег
     |";

При попытке его выполнить выдает ошибку:
Meta name parser error: недопустимое значение параметра "$РегистрОбороты.Обороты" (2)
Подскажите, где ошибка?
Опыта написания прямых запросов можно сказать что нет.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #1 - 14. Мая 2009 :: 11:45
Печать  
УстановитьТекстовыйПараметр("КонДата",ТутЧто?)
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #2 - 14. Мая 2009 :: 11:47
Печать  
, Рег.IDDoc [Док $Документ]
будет ошибка - нет такого поля
  

1&&2&&3
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #3 - 14. Мая 2009 :: 11:53
Печать  
trad писал(а) 14. Мая 2009 :: 11:45:
УстановитьТекстовыйПараметр("КонДата",ТутЧто?)

рс.УстановитьТекстовыйПараметр("ВыбФирма", ВыбФирма);
рс.УстановитьТекстовыйПараметр("ВыбКонтрагент", ВыбКонтрагент);
рс.УстановитьТекстовыйПараметр("ВыбТТ", ВыбТТ);
рс.УстановитьТекстовыйПараметр("ВыбТМЦ", ВыбТМЦ);
рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
рс.УстановитьТекстовыйПараметр("КонДата", КонДата);

Это реквизиты диалога - КонДата - это дата
  
Наверх
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #4 - 14. Мая 2009 :: 11:59
Печать  
trad писал(а) 14. Мая 2009 :: 11:47:
, Рег.IDDoc [Док $Документ]
будет ошибка - нет такого поля


А как выбрать документ-движения?
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #5 - 14. Мая 2009 :: 13:03
Печать  
Winter писал(а) 14. Мая 2009 :: 11:53:
рс.УстановитьТекстовыйПараметр("КонДата", КонДата);

Это реквизиты диалога - КонДата - это дата

проверь все же
Сообщить(ТипЗначенияСтр(КонДата));

ps
если нужны обороты по конец КонДата, то добавь модификатор :КонДата~
  

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



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #6 - 14. Мая 2009 :: 13:05
Печать  
Winter писал(а) 14. Мая 2009 :: 11:59:
trad писал(а) 14. Мая 2009 :: 11:47:
, Рег.IDDoc [Док $Документ]
будет ошибка - нет такого поля


А как выбрать документ-движения?

во-первых использовать периодичность Документ в ВТ
во-вторых в селекте написать:
right(Рег.ПозицияДокумента,9) [Док $Документ],
Рег.ВидДокумента Док_вид,
  

1&&2&&3
Наверх
 
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #7 - 14. Мая 2009 :: 13:12
Печать  
Winter писал(а) 14. Мая 2009 :: 11:59:
А как выбрать документ-движения?

Почитать хелп, там это написано.
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #8 - 14. Мая 2009 :: 13:15
Печать  
trad писал(а) 14. Мая 2009 :: 13:03:
Winter писал(а) 14. Мая 2009 :: 11:53:
рс.УстановитьТекстовыйПараметр("КонДата", КонДата);

Это реквизиты диалога - КонДата - это дата

проверь все же
Сообщить(ТипЗначенияСтр(КонДата));

ps
если нужны обороты по конец КонДата, то добавь модификатор :КонДата~


У меня "Обороты" - оборотный регистр. И мне нужно выбрать документы движения по выбранному товару за выбранный период, по выбранному контрагенту
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #9 - 14. Мая 2009 :: 13:29
Печать  
Winter писал(а) 14. Мая 2009 :: 13:15:
У меня "Обороты" - оборотный регистр.
а что, для оборотного регистра понятие "граница конца периода" отменили ?..
дык вот эта граница может быть определена как начало даты, так и как конец даты
  

1&&2&&3
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Выбор из оборотного региста
Ответ #10 - 14. Мая 2009 :: 13:36
Печать  
имхо тут без ВТ проще
Код
Выбрать все
select
 j.iddoc     [Документ $Документ],
 j.iddocdef  [Документ_вид],
 j.date_time_iddoc
from
 $Регистр.Обороты рег (nolock)
inner join
 _1sjourn j (nolock) on j.iddoc = рег.iddoc /*это если нет флага БыстраяОбработкаДвижений*/
where
 j.date_time_iddoc between :НачДата and :КонДата~ and
 $рег.Фирма = :ВыбФирма and
 $рег.Покупатель = :ВыбКонтрагент and
 $рег.ТорговаяТочка = :ВыбТТ and
 $рег.ТМЦ = :ВыбТМЦ
group by
 j.iddoc,j.iddocdef,j.date_time_iddoc
order by
 j.date_time_iddoc 


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


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #11 - 14. Мая 2009 :: 14:31
Печать  
alexdd писал(а) 14. Мая 2009 :: 13:36:
имхо тут без ВТ проще



Попробовал твой код, ругается:
Meta name parser error: модификатор не определен для типа ":КонДата~"

Хотя написал

рс.УстановитьТекстовыйПараметр("КонДата", КонДата);
  
Наверх
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Выбор из оборотного региста
Ответ #12 - 14. Мая 2009 :: 14:41
Печать  
ну вот в этом и проблема и для запроса в первом посте,
как уже писали, нужно проверить ТипЗначенияСтр(КонДата). Тип значения должен быть "Дата"
  
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #13 - 14. Мая 2009 :: 15:06
Печать  
Конечно дата.
  
Наверх
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Выбор из оборотного региста
Ответ #14 - 14. Мая 2009 :: 15:39
Печать  
хмм, ну а если так
ТекстЗапроса = "... where j.date_time_iddoc between '"+Формат(НачДата,"ДГГГГММДД")+"' and '"+Формат(КонДата+1,"ДГГГГММДД")+"'..."
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #15 - 14. Мая 2009 :: 17:35
Печать  
Winter писал(а) 14. Мая 2009 :: 15:06:
Конечно дата.

все говорит о том, что все же не дата
  

1&&2&&3
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #16 - 15. Мая 2009 :: 07:29
Печать  
Нашел в чем было дело. Конструктор объявил в начале модуля две переменные: НачДата и КонДата. Удалил - заработал запрос. Я немного переписало его. Вот что получилось:

Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2009.05.13.17.45.24
	|SELECT Рег.Покупатель [Покупатель $Справочник.Контрагенты]
	|	, Рег.ТорговаяТочка [ТорговаяТочка $Справочник.ТорговыеТочки]
	|	, Рег.ФормаОплаты [ФормаОплаты $Перечисление.ФормыОплаты]
	|	, Рег.ТМЦ [ТМЦ $Справочник.ТМЦ]
	|	, Рег.РасходСумОборот ОтгруженоСумма
	|	, Рег.РасходКвоОборот ОтгруженоКво
	|	, Рег.ДоходОборот Доход
	|FROM $РегистрОбороты.Обороты(:НачДата,:КонДата~
	|		,Документ,,
	|		(Фирма = :ВыбФирма)
	|		AND (Покупатель = :ВыбКонтрагент)
	|		AND (ТорговаяТочка = :ВыбТТ)
	|		AND (ТМЦ = :ВыбТМЦ),
	|		(Покупатель, ТорговаяТочка, ФормаОплаты, ТМЦ),
	|		(РасходСум, РасходКво, Доход)) AS Рег
	|";
 



Но есть одно но - мне нужно выбрать документы-движения. А вот это не получается. Понимаю, что что-то недописал, но вот что?
"Большое спасибо" Злому Бобру за помощь. Очень люблю такие ответы. Нет желания помочь - так нечего и умничать. Если считаешь себя очень умным - надень корону.
  
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #17 - 15. Мая 2009 :: 09:46
Печать  
Winter писал(а) 15. Мая 2009 :: 07:29:
Но есть одно но - мне нужно выбрать документы-движения. А вот это не получается. Понимаю, что что-то недописал, но вот что?

см."во-вторых" тут http://www.1cpp.ru/forum/YaBB.pl?num=1242300517/6#6
  

1&&2&&3
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #18 - 15. Мая 2009 :: 13:04
Печать  
trad писал(а) 15. Мая 2009 :: 09:46:
Winter писал(а) 15. Мая 2009 :: 07:29:
Но есть одно но - мне нужно выбрать документы-движения. А вот это не получается. Понимаю, что что-то недописал, но вот что?

см."во-вторых" тут http://www.1cpp.ru/forum/YaBB.pl?num=1242300517/6#6


А что писать вместо Док_Вид? Или так и писать?
  
Наверх
IP записан
 
Злой Бобр
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Украина, Кривой Рог
Зарегистрирован: 07. Марта 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #19 - 18. Мая 2009 :: 06:08
Печать  
Winter писал(а) 15. Мая 2009 :: 07:29:
...
"Большое спасибо" Злому Бобру за помощь. Очень люблю такие ответы. Нет желания помочь - так нечего и умничать. Если считаешь себя очень умным - надень корону.

Да незачто. Всегда готов помочь.
Дык в хелпе даже пример есть - чем неподходит? Или ты не читатель?..
  

Если у вас есть деньги тогда мы идем к вам!!!
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #20 - 18. Мая 2009 :: 06:34
Печать  
Winter писал(а) 15. Мая 2009 :: 13:04:
А что писать вместо Док_Вид? Или так и писать?

так и писать Док_вид
  

1&&2&&3
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #21 - 10. Июля 2009 :: 11:27
Печать  
В продолжении темы: как из всей выборки выбрать только движения документа определенного вида?
Запрос следующий:
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2009.05.13.17.45.24
     |SELECT Рег.Поставщик [Поставщик $Справочник.Контрагенты]
     | , Рег.ФормаОплаты [ФормаОплаты $Перечисление.ФормыОплаты]
     | , Рег.ТМЦ [ТМЦ $Справочник.ТМЦ]
     | , right(Рег.ПозицияДокумента,9) [Док $Документ]
     | , Рег.ВидДокумента Док_вид
     | , Рег.ПриходСумОборот ПолученоСумма
     | , Рег.ПриходКвоОборот ПолученоКво
     |FROM $РегистрОбороты.Обороты(:ВыбДата,
     |            ,Документ,,
     |            (Поставщик = :ВыбКонтрагент)
     |            AND (ТМЦ IN (:спТМЦ)) AND (ФормаОплаты = :ВыбФормаОплаты),
     |            (Поставщик, ФормаОплаты, ТМЦ),
     |            (ПриходСум, ПриходКво)) AS Рег
     |";
 



По этому запросы выбираются документы ПриходныеНакладные и ВозвратныеНакладные. Как сделать выборку только Приходных? Или если выбирается 3 вида, а мне нужно только 2 из них?
  
Наверх
IP записан
 
U_zer
Экс-Участник


Re: Выбор из оборотного региста
Ответ #22 - 10. Июля 2009 :: 12:10
Печать  

Ну поставь фильтр по Рег.ВидДокумента = $ВидДокумента.Такой-то или, дождись Злого Бобра.  Улыбка
  
Наверх
 
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #23 - 13. Июля 2009 :: 07:49
Печать  
спасибо, попробую
  
Наверх
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выбор из оборотного региста
Ответ #24 - 13. Июля 2009 :: 10:55
Печать  
|SELECT
|FROM
$РегистрОбороты.ОстаткиТоваров(:ДатаНач,:ДатаКон~,Документ,,
|iddocdef IN (1426,1442),
|(Товар),(Количество)) as Рег
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #25 - 13. Июля 2009 :: 12:41
Печать  
Neo писал(а) 13. Июля 2009 :: 10:55:
|SELECT
|FROM
$РегистрОбороты.ОстаткиТоваров(:ДатаНач,:ДатаКон~,Документ,,
|iddocdef IN (1426,1442),
|(Товар),(Количество)) as Рег

такой запрос не будет работать для оборотного регистра если ВТ решит использовать таблицу итогов.
  

1&&2&&3
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выбор из оборотного региста
Ответ #26 - 14. Июля 2009 :: 05:07
Печать  
Хм, а развертку по документам в принципе можно делать, если ВТ решит использовать таблицу итогов?  Озадачен
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #27 - 14. Июля 2009 :: 06:30
Печать  
Neo писал(а) 14. Июля 2009 :: 05:07:
Хм, а развертку по документам в принципе можно делать, если ВТ решит использовать таблицу итогов?  Озадачен

да, ты прав, я проглядел третий параметр - Документ
Смущённый
  

1&&2&&3
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выбор из оборотного региста
Ответ #28 - 14. Июля 2009 :: 07:25
Печать  
Кстати, к слову об оборотных регистах, вопрос давно интересует - в чем их преимущество с точки зрения структуры хранения данных перед регистрами остатков - в случае, когда надо накапливать обороты? Там как-то по другому устроены таблицы итогов?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #29 - 14. Июля 2009 :: 07:46
Печать  
да там разный логический смысл таблиц итогов
1. для рег.оборотов в итогах агрегируется оборот за период, что позволяет быстро получать оборот за цельный период.
2. для рег.остатков в итогах посчитан остаток на конец периода, что позволяет быстро получать остаток на границе периодов - "опорный" остаток
  

1&&2&&3
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Выбор из оборотного региста
Ответ #30 - 14. Июля 2009 :: 07:55
Печать  
> для рег.оборотов в итогах агрегируется оборот за период, что позволяет быстро получать оборот за цельный период

А в итогах за каждый период хранения присутствуют только те данные, по которым были движения в данном периоде? То есть, например, если по товару1 были обороты в январе, но не было в феврале, то в итогах за февраль он не появится?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #31 - 14. Июля 2009 :: 08:10
Печать  
не появятся - оборот, в отличии от остатка, не переходящий
  

1&&2&&3
Наверх
 
IP записан
 
iov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 27. Февраля 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #32 - 28. Июля 2009 :: 14:13
Печать  
господа подскажите как быть у меня такая задача выбрать из регистров Взаиморасчеты покупателей, и Взаиморасчеты поставщиков все документы соверщавшие движения с условием отбора по контрагенту . ТиС
Подсмотрел тему но при попытке
Код
Выбрать все
ТекстЗапроса = "-- qryMaker:Отчет1.2009.07.28.17.53.52
		|SELECT ПокупателиОбороты.Договор [Договор $Справочник.Договоры]
		|	, ПоставщикиОбороты.Договор [ПоставщикиОборотыДоговор $Справочник.Договоры]
		|	, right(ПокупателиОбороты.ПозицияДокумента,9) [Док $Документ]
		|	, right(ПоставщикиОбороты.ПозицияДокумента,9) [Докдва $Документ]
		|FROM $РегистрОбороты.Покупатели(:НачДата,
		|		:КонДата ~,
		|		Документ,,,
		|		Договор,) AS ПокупателиОбороты
		|	CROSS JOIN $РегистрОбороты.Поставщики(:НачДата,
		|		:КонДата ~,
		|		Документ,,,
		|		Договор,) AS ПоставщикиОбороты
		|GROUP BY ПокупателиОбороты.Договор
		|	, ПоставщикиОбороты.Договор
		|	, ПокупателиОбороты.ПозицияДокумента
		|	, ПоставщикиОбороты.ПозицияДокумента
		|";
 



рс.ВыполнитьИнструкцию(ТекстЗапроса,тз);
{Z:\TRADE\OAZIS\EXTFORMS\АДМИН\РАЗРАБОТКА\ОТЧЕТ ПО ДАТАМ ОПЛАТЫ.ERT(61)}: Для типизации поля "Док", не найдено дополнительное типизирующее поле.
но указав тип документа я их и получу...
прошу кинуть ссылку на справку или подсказать .
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #33 - 28. Июля 2009 :: 14:32
Печать  
Код
Выбрать все
	ТекстЗапроса = "-- qryMaker:Отчет1.2009.07.28.17.29.05
		|SELECT ВзаиморасчетыПокупателейОбороты.Договор [Договор $Документ]
		|	, ВзаиморасчетыПокупателейОбороты.ВидДокумента Документ_вид
		|	, (RIGHT(ВзаиморасчетыПокупателейОбороты.ПозицияДокумента, 9)) [Документ $Документ]
		|FROM $РегистрОбороты.ВзаиморасчетыПокупателей(:НачДата,
		|		:КонДата ~,
		|		Документ,,,
		|		Договор,) AS ВзаиморасчетыПокупателейОбороты
		|UNION ALL
		|SELECT ВзаиморасчетыПоставщиковОбороты.Договор
		|	, ВзаиморасчетыПоставщиковОбороты.ВидДокумента
		|	, (RIGHT(ВзаиморасчетыПоставщиковОбороты.ПозицияДокумента, 9))
		|FROM $РегистрОбороты.ВзаиморасчетыПоставщиков(:НачДата,
		|		:КонДата ~,
		|		Документ,,,
		|		Договор,) AS ВзаиморасчетыПоставщиковОбороты
 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
iov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 27. Февраля 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #34 - 29. Июля 2009 :: 07:29
Печать  
Вах спасибо дорогой...  будем копать дальше
  
Наверх
 
IP записан
 
iov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 27. Февраля 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #35 - 29. Июля 2009 :: 08:18
Печать  
хм... теперь встал вопрос как вот отобрать по контрагенту...

имеем регистр в котором договор (справочник) у которого владелец- контрагент
тоесть для того чтобы отобрать по контрагенту нужно запрос к договорам с отбором по владельцу... я ведь правильно все понял?
И делать это необходимо для каждого запроса?

P.S. возможно ли сделать запрос к оборотному регистру у которого указан договор контрагента а надо отобрать контрагентов по определнному свойству контрагента ?
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #36 - 29. Июля 2009 :: 08:29
Печать  
Что-то вроде
Код
Выбрать все
|FROM $РегистрОбороты.ВзаиморасчетыПокупателей(:НачДата,
|		:КонДата ~,
|		Документ,
|		INNER JOIN $Документ.Договор AS ДокДоговор With (NOLOCK) ON Договор = $ВидДокумента36.Договор + ДокДоговор.IDDOC
|		INNER JOIN $Справочник.Контрагенты AS Контрагенты With (NOLOCK) ON $ДокДоговор.Контрагент = Контрагенты.ID,
|		($Контрагенты.ВидКонтрагента = :ВыбВид),
|		Договор,) AS ВзаиморасчетыПокупателейОбороты
 

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
iov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 27. Февраля 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #37 - 30. Июля 2009 :: 06:16
Печать  
решил вопрос вот так .
Код
Выбрать все
	ТекстЗапроса = "-- qryMaker:Отчет1.2009.07.29.13.19.09
	|SELECT ПоставщикиОбороты.СуммаРубПриход
	|	, ПоставщикиОбороты.СуммаРубРасход
	|	, Договоры.PARENTEXT [Владелец $Справочник.Контрагенты]
	|	, ПоставщикиОбороты.ПозицияДокумента
	|	, ПоставщикиОбороты.ВидДокумента Документ_вид
	|	, (RIGHT(ПоставщикиОбороты.ПозицияДокумента, 9)) [Документ $Документ]
	|FROM $Справочник.Договоры AS Договоры
	|	FULL OUTER JOIN $РегистрОбороты.Поставщики(:НачДата,
	|		:КонДата ~,
	|		Документ,,,
	|		Договор,
	|		СуммаРуб) AS ПоставщикиОбороты ON Договоры.ID = ПоставщикиОбороты.Договор
	|WHERE (Договоры.PARENTEXT IN (SELECT val FROM #выбконтрагент))
	|GROUP BY Договоры.PARENTEXT
	|	, ПоставщикиОбороты.ПозицияДокумента
	|	, ПоставщикиОбороты.СуммаРубПриход
	|	, ПоставщикиОбороты.СуммаРубРасход
	|	, ПоставщикиОбороты.ВидДокумента
	|UNION ALL
	|SELECT ПокупателиОбороты.СуммаРубПриход
	|	, ПокупателиОбороты.СуммаРубРасход
	|	, Договоры.PARENTEXT
	|	, ПокупателиОбороты.ПозицияДокумента
	|	, ПокупателиОбороты.ВидДокумента Документ_вид
	|	, (RIGHT(ПокупателиОбороты.ПозицияДокумента, 9)) [Документ $Документ]
	|FROM $РегистрОбороты.Покупатели(:НачДата,
	|		:КонДата ~,
	|		Документ,,,
	|		Договор,
	|		СуммаРуб) AS ПокупателиОбороты
	|	FULL OUTER JOIN $Справочник.Договоры AS Договоры ON ПокупателиОбороты.Договор = Договоры.ID
	|WHERE (Договоры.PARENTEXT IN (SELECT val FROM #выбконтрагент))
	|GROUP BY Договоры.PARENTEXT
	|	, ПокупателиОбороты.ПозицияДокумента
	|	, ПокупателиОбороты.СуммаРубПриход
	|	, ПокупателиОбороты.СуммаРубРасход
	|	, ПокупателиОбороты.ВидДокумента
	|ORDER BY Договоры.PARENTEXT
	|	, ПоставщикиОбороты.ПозицияДокумента
	|";


 

  
Наверх
 
IP записан
 
iov
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 27. Февраля 2009
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #38 - 30. Июля 2009 :: 06:17
Печать  
отдельное спасибо berezdetsky.
  
Наверх
 
IP записан
 
povmen
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 17. Ноября 2009
Re: Выбор из оборотного региста
Ответ #39 - 18. Ноября 2009 :: 10:28
Печать  
А если нужно отбирать обороты по виду документа, но с периодичностью  месяц или год? можно это с помощью запроса к ВТ решить?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #40 - 18. Ноября 2009 :: 11:46
Печать  
povmen писал(а) 18. Ноября 2009 :: 10:28:
А если нужно отбирать обороты по виду документа, но с периодичностью  месяц или год? можно это с помощью запроса к ВТ решить?

так в этом же случае можно использовать только таблицу ra...
(если не хранишь документ,вид документа как измерение).
Лучше опиши подолбней свою конкретную задачу.
  
Наверх
 
IP записан
 
povmen
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 17. Ноября 2009
Re: Выбор из оборотного региста
Ответ #41 - 18. Ноября 2009 :: 12:47
Печать  
Исходные данные такие:

Регистр.ОстаткиТоваров
Измерения - Товар, Склад
Ресурс один - ОстатокТовара
Реквизитов нет.

Его двигают докуметы - Расходная , Перемещение, Списание.
Нужно построить отчет по продажам (нужно выбрать только движения РасходнойНакладной с признаком "Продажа" (это реквизит Расходной, перечисление - Продажа и ВозвратПоставщику) в разрезе месяца (с периодичностью Месяц) за выбранный интервал.

Читаю мануал, но пока не складывается запрос
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #42 - 18. Ноября 2009 :: 13:07
Печать  
база dbf, sql ?
Есть ли в регистре флаг быстрая обработка движений ?
В расхнакладной возврат поставщику делает противоположное по знаку движению чем продажа ?
Ну и наверное имеет смысл рассматривать отчет когда
интервал отчета месяцы полностью ?
  
Наверх
 
IP записан
 
povmen
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 17. Ноября 2009
Re: Выбор из оборотного региста
Ответ #43 - 18. Ноября 2009 :: 13:53
Печать  
База - sql

Флаг быстрой обработки - нет

Что продажа, что ВозвратПоставщику - движение одинаковое Расход. То есть из регистра не понять - продали или вернули.Поэтому и стоит задача отобрать по признаку  накладной.

Интервал - полные месяцы.

Опыта писать прямые запросы нет. Почитал мануал и пока придумал примерно так:

Процедура Сформировать()
     Перем тз; //:ТаблицаЗначений
     
     рс = СоздатьОбъект("ODBCRecordset");
     //Данный фрагмент построен конструктором.
     //При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
     ТекстЗапроса = "-- qryMaker:Отчет_181109.2009.11.18.11.55.20
           |SELECT Рег.Товар [Товар $Справочник.Номенклатура]
           |      , Sum(CASE  WHEN Рег.ПозицияДокумента BETWEEN :Интервал1НачДата AND :Интервал1КонДата~
           |                        THEN Рег.ОстатокТовараРасход ELSE 0 END) Продано_Интервал1
           |      , Sum(CASE  WHEN Рег.ПозицияДокумента BETWEEN :Интервал2НачДата AND :Интервал2КонДата~
           |                        THEN Рег.ОстатокТовараРасход ELSE 0 END) Продано_Интервал2
           |      , Sum(Рег.ОстатокТовараРасход) Продано
           |FROM $РегистрОбороты.ОстаткиТоваров(:НачДата,
           |            :КонДата,
           |            Документ,,
           |            (Фирма = :ВыбФирма),
           |            Товар,) AS Рег
           |WHERE (Рег.ВидДокумента = $ВидДокумента.РасходнаяНакладная)
           //Еще бы сюда условие на признак накладной прикрутить.
           |GROUP BY Товар
           |      WITH ROLLUP
           |";
     
     рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
     рс.УстановитьТекстовыйПараметр("КонДата", КонДата);
     
     Интервал1НачДата = НачМесяца(КонДата);
     Интервал1КонДата = КонДата;
     Интервал2НачДата = НачМесяца(ДобавитьМесяц(КонДата,-1));
     Интервал2КонДата = КонМесяца(ДобавитьМесяц(КонДата,-1));
     
     рс.УстановитьТекстовыйПараметр("Интервал1НачДата",Интервал1НачДата);
     рс.УстановитьТекстовыйПараметр("Интервал1КонДата",Интервал1КонДата);
     рс.УстановитьТекстовыйПараметр("Интервал2НачДата",Интервал2НачДата);
     рс.УстановитьТекстовыйПараметр("Интервал2КонДата",Интервал2КонДата);
     
     Сообщить("НачДата="+НачДата);
     Сообщить("КонДата="+КонДата);
     Сообщить("Интервал1НачДата="+Интервал1НачДата);
     Сообщить("Интервал1КонДата="+КонДата);
     Сообщить("Интервал2НачДата="+Интервал2НачДата);
     Сообщить("Интервал2КонДата="+Интервал2КонДата);
     
     рс.УстановитьТекстовыйПараметр("ВыбФирма", ВыбФирма);
     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
     тз.ВыбратьСтроку();
КонецПроцедуры

Конечно, схема не рабочая. Но уже что-то вышло.
Уж очень долго формируется отчет, написаный обычными средствами 1С, когда задают пользователи год-полтора интервал выборки.

Спасибо за отклик!
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выбор из оборотного региста
Ответ #44 - 18. Ноября 2009 :: 17:09
Печать  
Код
Выбрать все
Процедура Сформировать()
	Запрос = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "SELECT  $Рег.Товар as ID_Товара
	|,left(Жур.Date_Time_IDDoc,6) as МесяцНакладной
	|, (case  when $Рн.ПризнакНакладной = :ЗначПродажа then   $Рег.ОстатокТовара  else - $Рег.ОстатокТовара end) as ОстатокТовара
	|  FROM
	|  $Регистр.ОстаткиТоваров as Рег
	|INNER JOIN  
	|  _1SJourn as Жур ON Рег.IDDoc = Жур.IDDoc  
	|			AND Жур.Date_Time_IDDoc BETWEEN :ДатаНачала AND :ДатаКонца~
	|			AND Жур.IDDocDef = $ВидДокумента.РасходнаяБН
	|INNER JOIN  $Документ.РасходнаяБН as Рн ON Рн.IDDoc = Жур.IDDoc  
	|WHERE $Рег.Склад = :ВыбСклад
	|AND ( $Рн.ПризнакНакладной = :ЗначПродажа  OR $Рн.ПризнакНакладной = :ЗначВозврат )
	|
	|";
	Запрос.УстановитьТекстовыйПараметр("ДатаНачала", ДатаНачала);
	Запрос.УстановитьТекстовыйПараметр("ДатаКонца" , ДатаКонца);
	Запрос.УстановитьТекстовыйПараметр("ВыбСклад"  , ВыбСклад);
	Запрос.УстановитьТекстовыйПараметр("ЗначПродажа"  , Перечисление.ПризнРасхНакл.Продажа );
	Запрос.УстановитьТекстовыйПараметр("ЗначВозврат"  , Перечисление.ПризнРасхНакл.ВозвратПоставщику );

	Сообщить("Начали запрос = " + ТекущееВремя() );
	ТЗ = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
	Сообщить("закончили запрос = " + ТекущееВремя() );
	Сообщить("Колво строк = " + ТЗ.КоличествоСтрок() );
	ТЗ.ВыбратьСтроку();

КонецПроцедуры 



В коде предполагается что DebKred одного значения например только расход.( а может его этого поля и нет в регистре оборотов)

Далее тебе остается заменить Склад на Фирма
и РасходнаяБН на свой РасходнаяНакладная
и значения перечислений на то как определенны в твоей конфигурации
и получить сумму по ОстатокТовара по группировке  ID_Товара , МесяцНакладной

PS Так как используем только таблицу ra код применим и для регистра оборотов и для регистра остатков.
  
Наверх
 
IP записан
 
povmen
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 17. Ноября 2009
Re: Выбор из оборотного региста
Ответ #45 - 19. Ноября 2009 :: 08:23
Печать  
Спасибо большое за помощь!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать