for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Вопросы по 1С
  

Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 21.06.12 09:12:54
Появилась на одном предприятии 1С 8.2
Я и вообще то 1С старался избегать)))
Но куда ж от нее деться.
Так что прошу прощения за ламерские вопросы.
В моем ПО, надо выбрать из справочника номенклатура данные.
Но данные нужны только по конкретному узлу иерархии.
Весь справочник получаю.
  
  	cQuery1S='ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование ИЗ Справочник.Номенклатура как Номенклатура УПОРЯДОЧИТЬ ПО Наименование'   
  	oQue=gov82.NewObject('Запрос')  
  	oQue.Текст = cQuery1S  
  	oRsult = oQue.Выполнить()   
  	oRes=oRsult.Выгрузить()   
 	*Выбранные объекты продукции помекщаем в массив  
    	nLen=0       
  	FOR EACH oRow IN oRes     
  	  	nLen=nLen+1    
  	  	DIMENSION aGood(nLen,2)    
  	  	aGood(nLen,1)= oRow.Наименование  
  	  	aGood(nLen,2)= oRow.Код  
  	ENDFOR
Так я получаю весь справочник.
А нужно только из ветки
Номенклатура-Продукция-Производство

Подскажите плииииз)))) как?


------------------
Ratings: 0 negative/0 positive

Re: Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 21.06.12 13:43:41
Извратом получается
Изменил строку.
  
  cQuery1S='ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование,Номенклатура.Родитель.Код как Родитель ИЗ Справочник.Номенклатура как Номенклатура УПОРЯДОЧИТЬ ПО Наименование'
Код родителя знаю.
И могу обработать все полученное уже в фоксе.
Но как то всё не нравится(((
Поставить в Where код родителя не удается(((
Впечатление что ожидает ссылку.
Как получить ссылку, не получается.
В общем темный лес для меня)


------------------




Исправлено: Аспид, 21.06.12 13:45
Ratings: 0 negative/0 positive

Re: Иерархический справочник
pasha_usue

Сообщений: 3229
Откуда: Е-бург
Дата: 22.06.12 13:39:48
Вообще, в самой 1С это делается так:
  
  	Запрос = Новый Запрос;  
  	Запрос.Текст =   
  		"ВЫБРАТЬ  
  		|	Номенклатура.Код,  
  		|	Номенклатура.Наименование  
  		|ИЗ  
  		|	Справочник.Номенклатура КАК Номенклатура  
  		|ГДЕ  
  		|	Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)  
  		|  
  		|УПОРЯДОЧИТЬ ПО  
  		|	Номенклатура.Наименование";  
    
  	Запрос.УстановитьПараметр("Родитель", Родитель);  
    
  	Результат = Запрос.Выполнить().Выбрать();

Переделать это на фокс я не пробовал.
Ratings: 0 negative/0 positive

Re: Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 22.06.12 14:57:45
Ну тогда совсем ламерский вопрос.
  
  Запрос.УстановитьПараметр("Родитель", Родитель);
У меня есть код "родителя", есть его наименование.
Как в этой строке указать конкретное значение?
Как не тусую, не выходит(


------------------
Ratings: 0 negative/0 positive

Re: Иерархический справочник
medstrax

Сообщений: 4474
Дата: 23.06.12 12:08:18
pasha_usue
Вообще, в самой 1С это делается так:
  
  	Запрос = Новый Запрос;  
  	Запрос.Текст =   
  		"ВЫБРАТЬ  
  		|	Номенклатура.Код,  
  		|	Номенклатура.Наименование  
  		|ИЗ  
  		|	Справочник.Номенклатура КАК Номенклатура  
  		|ГДЕ  
  		|	Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)  
  		|  
  		|УПОРЯДОЧИТЬ ПО  
  		|	Номенклатура.Наименование";  
    
  	Запрос.УстановитьПараметр("Родитель", Родитель);  
    
  	Результат = Запрос.Выполнить().Выбрать();

Переделать это на фокс я не пробовал.
Не совсем верно в запросе так проверять родителя. Проще и правильней будет "Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)" В случае pasha_usue обращение к родителю элемента порождает ненужный запрос к справочнику номенклатуры
Ratings: 0 negative/0 positive

Re: Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 24.06.12 13:47:31
medstrax
Не совсем верно в запросе так проверять родителя. Проще и правильней будет "Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)" В случае pasha_usue обращение к родителю элемента порождает ненужный запрос к справочнику номенклатуры
А вот это вообще не ясно!
Помимо вопроса, как все же получить, по коду или названию ссылку &Родитель.
Теперь непонятно, как "Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)" догадается что Номенклатура.Ссылка - это код родителя.
Я думал что то проясняется. А тут в осадок выпал)))

ЗЫ
Нашел кучу уроков по работе с 1С 8.2
Но мне вовсе не светит, программировать в нем))))
Мне надо научиться с ним общаться.
Ясно, что для этого надо изучать и его.
Но вот, как все эти конструкции, приведенные в уроках, и вроде внятные, выполнить из другого ПО?

Киньте кто нибудь ссылку, на такие описания.
Что то не получается найти(


------------------




Исправлено: Аспид, 24.06.12 13:50
Ratings: 0 negative/0 positive

Re: Иерархический справочник
pasha_usue

Сообщений: 3229
Откуда: Е-бург
Дата: 28.06.12 12:51:19
medstrax
Не совсем верно в запросе так проверять родителя. Проще и правильней будет "Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)" В случае pasha_usue обращение к родителю элемента порождает ненужный запрос к справочнику номенклатуры
Да. Согласен абсолютно. Задумался над чем-то и породил лишнюю сущность.
Ratings: 0 negative/0 positive

Re: Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 28.06.12 14:45:44
На всякий случай, для себя)))
Выложу решение
  
  IF TYPE('gov82') == 'O'  
  	cQuery1S =  "ВЫБРАТЬ Номенклатура.Код, Номенклатура.Наименование,Номенклатура.Родитель.Код как Родитель ИЗ  Справочник.Номенклатура КАК Номенклатура  ГДЕ  Номенклатура.ссылка В ИЕРАРХИИ(&Родитель)  УПОРЯДОЧИТЬ ПО  Номенклатура.Наименование"  
    
  	Родитель=gov82.Справочники.Номенклатура.НайтиПоКоду('00000000044')  
    
  	oQue=gov82.NewObject('Запрос')  
  	oQue.Текст = cQuery1S  
  	oQue.УстановитьПараметр("Родитель", Родитель);    
  	  
  	oRsult = oQue.Выполнить()   
  	oRes=oRsult.Выгрузить()   
 	*Выбранные объекты контрагентов помекщаем в массив  
    	nLen=0       
  	FOR EACH oRow IN oRes     
  	  	nLen=nLen+1    
  	  	DIMENSION aCust(nLen,3)    
  	  	aCust(nLen,1)= oRow.Наименование  
  	  	aCust(nLen,2)= oRow.Код  
  	  	aCust(nLen,3)= oRow.Родитель   
  	ENDFOR	    
  	SET STEP ON   
  ENDIF
Спасибо pasha_usue и medstrax
Направили)


------------------
Ratings: 0 negative/0 positive

Re: Иерархический справочник
piva

Сообщений: 18541
Откуда: Курган
Дата: 16.07.12 21:37:18
Сам нашел! Молодец, а если бы подсказали, то знаний было бы меньше


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Иерархический справочник
Аспид
Автор

Сообщений: 3338
Откуда: Москва
Дата: 17.07.12 07:55:18
Понимаешь Вадим, сам полагаю, что найти ответ самому, важнее, так как является предпосылкой для дальнейшего роста.
Но в данном случае, ни нужды, ни желания разбираться с 1С нет.
Просто, приложения, связаны с 1С. И как то надо эту связь реализовывать)))
ТО что я нашел, по результату поиска по другим форумам. Вряд ли мне добавило, какое то понимание среды.
Ну может чуть)))
Нмаверное надо с самого начала изучать. Но совершенно нет времени. Да и необходимости сильной. Так мелкие задачи порой.


------------------
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 (Гостей: 10)

16.09.2019 05:49:28 exec: 0.19
Mem: 1.265 Mb

© 2000-2019 Fox Club 
Яндекс.Метрика