Страница 2 из 2
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 12:49
				 Espada
				сейчас у меня есть рабочая create view, но из-за noindex она довольна долго отрабатывает. можно ли как-нибудь их обойти?
Код: Выделить всё
Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  word(1411) == attrnam.wtable (noindex) and
  '281474976710823' == attrnam.nrec and
  word(1411) == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrnam.nrec == attrval.cattrnam and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 13:11
				 m0p3e
				Если обращение все равно по nrec, то зачем нужно attrnam тащить в выборку?
И зачем сам nrec в кавычках? лишнее преобразование.
Код: Выделить всё
Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  281474976710823 == attrval.cattrnam and
  coKatMc == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 13:30
				 Espada
				m0p3e писал(а):Если обращение все равно по nrec, то зачем нужно attrnam тащить в выборку?
И зачем сам nrec в кавычках? лишнее преобразование.
Код: Выделить всё
Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  281474976710823 == attrval.cattrnam and
  coKatMc == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrval.vcomp == hdr_ps.cizd(noindex)and
  word(1) == HDR_PS.ACTIVE(noindex)
));
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
 
Послушал мнению людей, и понял что использовать обычный текстовый редактор не очень здорово) поставил Vip. Переписал Create view, избавился от одного из noindex
Код: Выделить всё
Create view
from spstep, katmc, attrnam, attrval,hdr_ps
where
((
  NrecSpStep == spstep.nrec and
  spstep.cmcusl == katmc.nrec and
  word(1411) == attrnam.wtable  and
  'Основная МЦ' == attrnam.name and
  word(1411) == attrval.wtable and
  katmc.nrec == attrval.crec and
  attrnam.nrec == attrval.cattrnam and
  attrval.vcomp == hdr_ps.cizd (noindex) and
  word(1) == HDR_PS.ACTIVE(noindex)
));   
 
В hdr_ps есть индекс cTypeIzd + cIzd.cTypeIzd неизвестен?
не совсем понял ваш вопрос.
 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 13:54
				 m0p3e
				Если известно значение поля cTypeIzd (видимо ссылка на тип изделия?), то добавление его в выборку позволит избавиться от второго noIndex.
У меня большое подозрение, что cTypeIzd = cgKau_KatMc = 4.
И word(1411) все-таки замените на coKatMc. Глаз режет. 

 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 14:04
				 Irina_
				Попробуйте для  hdr_ps только условия:
and cgKau_KatMc == hdr_ps.cTypeIzd
and attrval.vcomp == hdr_ps.cizd
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 14:56
				 Espada
				Irina_ писал(а):Попробуйте для  hdr_ps только условия:
and cgKau_KatMc == hdr_ps.cTypeIzd
and attrval.vcomp == hdr_ps.cizd
Спасибо) работает)
 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 15:38
				 Den
				Espada писал(а):
Спасибо) работает) только я не знаю почему) можете в двух словах рассказать в чём смысл этих строчек?)
Погуглите что то вроде "зачем нужны индексы для таблиц баз данных".
 
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 17:28
				 Irina_
				Возможно не совсем корректно напишу, но надеюсь, что суть будет понятна.
В Support открываете карточку таблицы. Внизу есть закладки: «Поля», «Индексы», «Флаги», «Ссылки». На закладке «Индексы» указан перечень и состав индексов к выбранной таблице, заложенный разработчиками. В соответствии с нужным в конкретном случае индексом происходит работа с таблицей: идет поиск, строятся отчеты, делается экспорт и т. д. Когда Вы пишите view, Вы указываете условия на значения полей нужных таблиц. И вот для каких полей надо наложить условия и какие условия — надо смотреть на перечень доступных индексов и состав их сегментов. В Вашем случае Вам обязательно нужно было условие на МЦ (hdr_ps.cizd). Т.о. Вам надо посмотреть индексы к таблице Hdr_ps, в качестве сегмента у которых используется Cizd, и дополнительные условия надо указывать на ВСЕ поля, которые указаны в качестве сегментов до нужного Вам сегмента. Вам может подойти например индекс HDR_PS05:    cTypeIzd  + cIzd + Vid. Значит Вы должны указать дополнительно условие на  cTypeIzd. Если между 1 сегментом и нужным Вам сегментом есть сегменты, на которые условия не наложить, то можете получить проблему при компиляции. Один из способов решения проблемы — указать на каких-то условиях (Noindex),  что повлияет на скорость работы запроса. А вот второй способ решения — указать условия на все сегменты до нужного Вам. Значение  cTypeIzd можно было как минимум подсмотреть при просмотре таблицы, запросом, в KauConst.inc. Если бы поле принимало разные значения, то надо было анализировать дополнительно. Например, при работе с Katsopr, если Вам надо работать  только с определенными документами (приходные накладные/ расходные накладные/…), то Вы задаете условие на Katsopr.Vidsopr, а нужное значение задаете при дополнительном анализе (например по Ctrl + F4, стоя на нужном документе, или в Katdoc.inc)
P.S. Во view на некоторые таблицы можно и не накладывать условия, а задавать их непосредственно при поиске в такой таблице ( Getfirst, Getlast, ...) -  в условии Where ((…)). Подозреваю, что на меня могут наброситься за такое  )))
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 04 окт 2017, 23:36
				 edward_K
				Могут. Поскольку если посмотреть профайлером это приводить к выполнению отдельных хранимок.
			 
			
					
				Re: create view в Глобальной функции
				Добавлено: 13 окт 2017, 15:47
				 rmozgov
				Espada писал(а):Irina_ писал(а):Я удивилась, прочитав, что проблема связана с русским языком, т. к. сама вводила и работала с такими ВА.
Espada, интересно каким редактором Вы пользуетесь для работы с *.vip? Я уже думала, что все в работе используют Viper, и не только с указанными файлами. Не хочется даже вспоминать время, когда Viper не было ))).
обычный Notepad использую)Да я редко работаю с vip файлами, только пару глобальных функций в программе используем, в основном формы через frm  и rtf. что бы не использовать русс. язык я просто через nrec обратился и всё) 
ну и работает вроде)
 
 Проблема с кодировкой. Необходимо компилировать в OEM кодировке.