Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) УложитьСписокОбъектов (число прочтений - 3267 )
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
УложитьСписокОбъектов
24. Марта 2008 :: 10:03
Печать  
Поиском прошелся, но ответа не нашел. Не могу понять, или я не правильно делаю или так просто нельзя.
Смысл в следующем: Отчет, в нем фильтр по товару - СписокЗначени. В список можно добавить как группу, так и конкретный элемент. Добавляю один элемент и одну группу, далле:
Код
Выбрать все
РС.УложитьСписокОбъектов(ВыбТовар,"#Товары","Номенклатура");
Запрос="SELECT val [Товар $Справочник.Номенклатура],* FROM #Товары";
ТЗ=РС.ВыполнитьИнструкцию(Запрос); 



в ТЗ получаю две строки, элемент и группу, IsFolder у обоих 2. Хотя в документации черным по белому:
Цитата:
Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.)


Для чистоты эксперимента, пробовал добавить только группу, но результат тот же... В чем я не прав или что не так делаю?
Версия 1CPP.dll: 2.5.0.3
  
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: УложитьСписокОбъектов
Ответ #1 - 24. Марта 2008 :: 11:42
Печать  
а в выбТовар что передаешь ? Элемент или группу ?
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: УложитьСписокОбъектов
Ответ #2 - 24. Марта 2008 :: 12:16
Печать  
mash писал(а) 24. Марта 2008 :: 11:42:
а в выбТовар что передаешь ? Элемент или группу ?

Если присмотреться, то в моем вопросе это написано:
Цитата:
Добавляю один элемент и одну группу

Цитата:
Для чистоты эксперимента, пробовал добавить только группу
.

Так что, добавлял и ЭЛЕМЕНТЫ и ГРУППЫ и ТОЛЬКО ГРУППУ.

Но предполагается, что можно будет добавлять и элементы и группы. Если "штатно" не будет работать, то подскажите хотябы способ, как из списка групп и элементов сделать таблицу для фильтра наиболее эффективным способом.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: УложитьСписокОбъектов
Ответ #3 - 24. Марта 2008 :: 12:19
Печать  
ODBC или OLEDB?
  
Наверх
 
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: УложитьСписокОбъектов
Ответ #4 - 24. Марта 2008 :: 12:22
Печать  
РС=СоздатьОбъект("ODBCRecordSet");
РС.УстБД1С();
  
Наверх
 
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: УложитьСписокОбъектов
Ответ #5 - 25. Марта 2008 :: 11:25
Печать  
Ну, что? Без вариантов?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: УложитьСписокОбъектов
Ответ #6 - 25. Марта 2008 :: 12:04
Печать  
Напиши тест
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: УложитьСписокОбъектов
Ответ #7 - 25. Марта 2008 :: 12:37
Печать  
zenik писал(а) 25. Марта 2008 :: 11:25:
Ну, что? Без вариантов?


Варианты есть - я ,например, использую собственную функцию формирования временной таблицы, но у меня OLEDB.
Если не будет найдена ошибка - выложу пример.

Но в ODBC должно работать УложитьСписокОбъектов - лучше понять почему  не работает.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: УложитьСписокОбъектов
Ответ #8 - 25. Марта 2008 :: 12:56
Печать  
kiruha писал(а) 25. Марта 2008 :: 12:37:
Варианты есть - я ,например, использую собственную функцию формирования временной таблицы, но у меня OLEDB.
Если не будет найдена ошибка - выложу пример.

может и так выложишь?  Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: УложитьСписокОбъектов
Ответ #9 - 25. Марта 2008 :: 13:42
Печать  
У меня ничего оригинального - сделано по мотивам сообщения уже встречающегося в форуме
Код
Выбрать все
Функция ВыборкаЭлементовИзСписка(СтрОтбораИД,Уровень=5,ВидСправочника)

	ТекстЗапроса = "";
	ТекстЗапроса =ТекстЗапроса+ "
	|
	|SELECT
	|	Спр1.ID  as val
	|FROM  $Справочник."+ВидСправочника+" as Спр1  
	|WHERE (Спр1.ISFOLDER=2) AND (Спр1.ID "+СтрОтбораИД+")
	|";

	Если Уровень>1 Тогда
		ТекстЗапроса =ТекстЗапроса+ "
		|UNION ALL
		|
		|SELECT
		|	Спр2_2.ID  
		|FROM $Справочник."+ВидСправочника+" as Спр2_2  
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр1_2  ON (Спр2_2.ParentID = Спр1_2.ID) AND (Спр1_2.ISFOLDER=1) AND (Спр1_2.ID "+СтрОтбораИД+")
		|WHERE Спр2_2.ISFOLDER=2
		|";
	КонецЕсли;


	Если Уровень>2 Тогда
		ТекстЗапроса =ТекстЗапроса +"
		|UNION ALL
		|
		| SELECT
		|	Спр3.ID  
		|FROM $Справочник."+ВидСправочника+" as Спр3  
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр2  ON (Спр3.ParentID = Спр2.ID) AND (Спр2.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр1  ON (Спр2.ParentID = Спр1.ID) AND (Спр1.ISFOLDER=1) AND (Спр1.ID "+СтрОтбораИД+")
		|WHERE Спр3.ISFOLDER=2
		|";
	КонецЕсли;

	Если Уровень>3 Тогда
		ТекстЗапроса =ТекстЗапроса +"
		|UNION ALL
		|
		| SELECT
		|	Спр4.ID  
		|FROM $Справочник."+ВидСправочника+" as Спр4
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр3  ON (Спр4.ParentID = Спр3.ID) AND (Спр3.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр2  ON (Спр3.ParentID = Спр2.ID) AND (Спр2.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр1  ON (Спр2.ParentID = Спр1.ID) AND (Спр1.ISFOLDER=1) AND (Спр1.ID "+СтрОтбораИД+")
		|WHERE Спр4.ISFOLDER=2  
		|";
	КонецЕсли;

	Если Уровень>4 Тогда
		ТекстЗапроса =ТекстЗапроса +"
		|UNION ALL
		|
		|SELECT
		|	Спр5.ID  
		|FROM $Справочник."+ВидСправочника+" as Спр5  
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр4  ON (Спр5.ParentID = Спр4.ID) AND (Спр4.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр3  ON (Спр4.ParentID = Спр3.ID) AND (Спр3.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр2  ON (Спр3.ParentID = Спр2.ID) AND (Спр2.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр1  ON (Спр2.ParentID = Спр1.ID) AND (Спр1.ISFOLDER=1) AND (Спр1.ID "+СтрОтбораИД+")
		|WHERE Спр5.ISFOLDER=2
		|";
	КонецЕсли;

	Если Уровень>5 Тогда
		ТекстЗапроса =ТекстЗапроса +"
		|UNION ALL
		|
		| SELECT
		|	Спр6.ID  
		|FROM $Справочник."+ВидСправочника+" as Спр6
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр5  ON (Спр6.ParentID = Спр5.ID) AND (Спр5.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр4  ON (Спр5.ParentID = Спр4.ID) AND (Спр4.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр3  ON (Спр4.ParentID = Спр3.ID) AND (Спр3.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр2  ON (Спр3.ParentID = Спр2.ID) AND (Спр2.ISFOLDER=1)
		|INNER JOIN $Справочник."+ВидСправочника+" as Спр1  ON (Спр2.ParentID = Спр1.ID) AND (Спр1.ISFOLDER=1) AND (Спр1.ID "+СтрОтбораИД+")
		|WHERE Спр6.ISFOLDER=2
		|";
	КонецЕсли;


	Возврат ТекстЗапроса;
КонецФункции 


Функция возвращает запрос, который можно использовать или для создания временной таблицы
или как подзапрос в "Большом" запросе.
СтрОтбораИД - обычное условие как если бы не было групп. те. например Цитата:
IN ('    D7   ','    GU   ','   16N   ')
ид и элементов и групп через запятую.
До 6 уровнего справочника (у меня больших нет)
Работает на живой базе 6 месяцев.
  
Наверх
 
IP записан
 
zenik
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 109
Зарегистрирован: 09. Октября 2007
Re: УложитьСписокОбъектов
Ответ #10 - 26. Марта 2008 :: 09:06
Печать  
Народ, сори, оказывается все работает... Просто когда тестировал, выбирал группу, в которой один элемент и название как у группы. Сейчас эксперимента ради добавил другую группу и все пошло. Еще раз сори за панику, просто невнимательность  Смущённый
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: УложитьСписокОбъектов
Ответ #11 - 26. Марта 2008 :: 11:50
Печать  
Ну-ну  Злой
  

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