Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Реализация выборки из регистра ТекущийДокумент (число прочтений - 3764 )
baa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 06. Апреля 2007
Реализация выборки из регистра ТекущийДокумент
06. Сентября 2007 :: 10:07
Печать  
1. Подскажите, как реализовать на прямом запросе такую конструкцию:

...
ТекДок = Регистр.ЛюбойРегистрОстатков.ТекущийДокумент;
...
Группировка ТекДок;

2. Какие кто предложит варианты реализации такой условия:
...
Функция ИтСумм = КонОст(Сумма) Когда (...Условие...);
...
  
Наверх
 
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #1 - 06. Сентября 2007 :: 10:12
Печать  
DBF ?
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
baa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 06. Апреля 2007
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #2 - 06. Сентября 2007 :: 10:17
Печать  
Нет, база SQL
  
Наверх
 
IP записан
 
baa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 06. Апреля 2007
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #3 - 06. Сентября 2007 :: 13:43
Печать  
С первым пунктом разобрался, есть выборка по документам $РегистрОстаткиОбороты детализация по документу и после из ВТ поле RIGHT(Рег.ПозицияДокумента,9) as Док

Жду предложений по второму пункту. Впринципе это можно реализовать через union all. Но хочеться услышать ваши мнения
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #4 - 09. Сентября 2007 :: 13:11
Печать  
В сабже № 1 написано не вт а "любой регистр"  Подмигивание
Сабж № 2
case
пример:

SUM(ПартииРегРозн.SP9733 * (CASE WHEN ПартииРегРозн.DEBKRED = 1 AND ДвижениеВТ.ID IN (" + СтрокаУсловия + ") THEN -1 ELSE 1 END)) Количество
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
baa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 06. Апреля 2007
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #5 - 10. Сентября 2007 :: 06:30
Печать  
Вадимко, спасибо за ответ.
А можно расписать весь пример запроса.  Подмигивание
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #6 - 10. Сентября 2007 :: 11:21
Печать  
Моего? Он слегка запутан  Подмигивание

Код
Выбрать все
ТекстЗапроса = "
		|SELECT CAST(LEFT((ЖурналРозн.Date_Time_IDDoc),8) as DateTime) ДатаДок
		|     , АдресДоставкиСпр.ID [АдресДоставки $Справочник.АдресаДоставки]
		|     , НоменклатураСпр.ID [Товар $Справочник.Номенклатура]
		|     , КлючиСпр.ID [Ключ $Справочник.Ключи]
		|     , ДвижениеВТ.ID [Движение $Перечисление.ДвиженияВРознице]
		//здесь и далее для пересортицы и перемещения покажем отрицательную сумму, т.к. в отличие от возвратов обратное движение делается не отрицательной суммой а расходом
		|     , SUM(ПартииРегРозн.SP9733 * (CASE WHEN ПартииРегРозн.DEBKRED = 1 AND ДвижениеВТ.ID IN (" + СтрокаУсловия + ") THEN -1 ELSE 1 END)) Количество
		|     , SUM(ПартииРегРозн.SP9807 * (CASE WHEN ПартииРегРозн.DEBKRED = 1 AND ДвижениеВТ.ID IN (" + СтрокаУсловия + ") THEN -1 ELSE 1 END)) СуммаРозн
		|     , SUM(ПартииРегРозн.SP10462 * (CASE WHEN ПартииРегРозн.DEBKRED = 1 AND ДвижениеВТ.ID IN (" + СтрокаУсловия + ") THEN -1 ELSE 1 END)) СуммаПрод
		|FROM " + БазаРозн + ".dbo.RA9731 AS ПартииРегРозн WITH (NOLOCK)
		|INNER JOIN " + БазаРозн + ".dbo._1SJOURN AS ЖурналРозн WITH (NOLOCK) ON ЖурналРозн.IDDOC = ПартииРегРозн.IDDOC
		|LEFT OUTER JOIN " + БазаРозн + ".dbo.SC10237 AS МестаХраненияСпрРозн WITH (NOLOCK) ON ПартииРегРозн.SP10240 = МестаХраненияСпрРозн.ID
		|LEFT OUTER JOIN $Справочник.АдресаДоставки AS АдресДоставкиСпр WITH (NOLOCK) ON $АдресДоставкиСпр.КодУпр = МестаХраненияСпрРозн.CODE
		|LEFT OUTER JOIN " + БазаРозн + ".dbo.SC656 AS НоменклатураСпрРозн WITH (NOLOCK) ON ПартииРегРозн.SP9732 = НоменклатураСпрРозн.ID
		|LEFT OUTER JOIN $Справочник.Номенклатура AS НоменклатураСпр WITH (NOLOCK) ON RIGHT(НоменклатураСпрРозн.CODE, 5) = НоменклатураСпр.CODE
		|LEFT OUTER JOIN " + БазаРозн + ".dbo.SC9717 AS ПартииСпрРозн WITH (NOLOCK) ON ПартииРегРозн.SP9734 = ПартииСпрРозн.ID
		|LEFT OUTER JOIN $Справочник.Ключи AS КлючиСпр WITH (NOLOCK) ON RIGHT(ПартииСпрРозн.CODE, 6) = КлючиСпр.CODE AND КлючиСпр.PARENTEXT = НоменклатураСпр.ID
		|LEFT OUTER JOIN PerKO AS ДвижениеВТ WITH (NOLOCK) ON ПартииРегРозн.SP10459 = ДвижениеВТ.IDRozn
		|WHERE ПартииРегРозн.IDDOC IN (
		|SELECT DISTINCT OBJID FROM " + БазаРозн + ".dbo._1SUPDTS WITH (NOLOCK) WHERE DBSIGN = 'С01')
		|AND ЖурналРозн.Date_Time_IDDoc BETWEEN :ВыбДата AND  :ВыбДата~
		|AND ЖурналРозн.IDDOCDEF NOT IN (9345, 9851, 9917, 9999, 10107, 10113, 10168, 10213)
		|GROUP BY CAST(LEFT((ЖурналРозн.Date_Time_IDDoc),8) as DateTime), АдресДоставкиСпр.ID, НоменклатураСпр.ID, КлючиСпр.ID, ДвижениеВТ.ID
		|";
 




  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
baa
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 11
Зарегистрирован: 06. Апреля 2007
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #7 - 10. Сентября 2007 :: 14:12
Печать  
Спасибо за пример.
А можно еще показать что находится в строке "СтрокаУсловия".
Здесь вы не используете виртуальных таблиц остатков. А как тогда получаете срез остатков на момент времени? Или просто требуются выборка по одним движениям?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Реализация выборки из регистра ТекущийДокумент
Ответ #8 - 12. Сентября 2007 :: 16:36
Печать  
Код
Выбрать все
СписокПер = СоздатьОбъект("СписокЗначений");
	СписокПер.ДобавитьЗначение("$Перечисление.ДвиженияВРознице.Пересортица");
	СписокПер.ДобавитьЗначение("$Перечисление.ДвиженияВРознице.Перемещение");

	СтрокаУсловия = "";

	Для Сч = 1 по СписокПер.РазмерСписка() Цикл
		ТекПер = СписокПер.ПолучитьЗначение(Сч);
		СтрокаУсловия	= СтрокаУсловия + ТекПер + ", ";
	КонецЦикла;

	Если Прав(СтрокаУсловия,2) = ", " Тогда
		СтрокаУсловия = Лев(СтрокаУсловия, СтрДлина(СтрокаУсловия) - 2);
	КонецЕсли;
 



Да, просто по движениям, срез не нужен был
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать