Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Выбор из оборотного региста (число прочтений - 11006 )
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 записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать