Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Добавления в метапарсер (число прочтений - 11062 )
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Добавления в метапарсер
23. Августа 2006 :: 18:04
Печать  
Дабы писать все единообразно
(
    select  $Спр.Код , $Спр.Наименование,$Спр.Единица
вместо текущего
    select  Спр.code,Спр.descr,$Спр.Единица
)

предлагаю добавить в парсер обработку таких выражений.
(те. для справоника выражения типа $Спр.Код заменять на Спр.code)

В принципе у меня есть вариант парсера, реализующего подстановки
"Код","Сode" -> "code"
"Наименование","Description" -> "descr"
"Родитель","Parent" -> "parentid"
"Владелец","Owner" -> "parentext"

Легко можно подобавлять и иные поля (типа ПометкаНаУдаление, ID),
надо только с их именем определиться.

Что народ (и разработчики) скажет по этому поводу?

  

1CPP_baksy.zip ( 1 KB | Загрузки )

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #1 - 24. Августа 2006 :: 06:26
Печать  
А что будет результатом парсинга такого запроса:
Код
Выбрать все
SELECT $Reg.Владелец as ИзмерениеВладелец
FROM $Регистр.Тест1 as Reg (NOLOCK)
 

  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #2 - 24. Августа 2006 :: 06:47
Печать  
ну это-то по моему решить можно...

но я все равно считаю также: поначалу действительно непривычно было, но пару месяцев написания кода и - нет проблем - большинство основных идентификаторов таблиц и полей я знаю, так что этот функционал далеко не обязателен, а то так совсем можно забыть "как там все устроено"

Единственный плюс - в зависимости от того: DBF, или SQL - нужно добавлять символ _ к наименованию таблиц, начинающихся с цифры, но так как запросы для разных сред далеко не всегда универсальны, то и эта фишка тут вряд ли сильно поможет

Мое предложение по расширению функционала парсера:
1) добавить все же виртуальные значения разных типов Справочник('B1'), Документ('O1') и т.д. - это используется редко, а потому напрочь забывается
2) ну и сделать таки типизацию видов документов(IDDOCDEF) в строковое выражение, так как они отображаются в конфигураторе - чтобы снять с повестки дня этот постоянно возникающий вопрос!  Улыбка
  
Наверх
 
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #3 - 24. Августа 2006 :: 07:14
Печать  
to Spock
Обработает как надо (поставит измерение "Владелец" регистра). Предопределенные поля проверяются только  у справочников. При чем только в случае если такого поля нету.
Я пока сделал обработку имен, которые точно не могут быть реквизитами (того же Владельца справочнику не добавишь)

Но, допустим, если список преобразований дополнить преобразованием "ПометкаУдаления -> IsMark", то для справочника, у которого по странному стечению обстоятельств будет реквизит "ПометкаУдаления", выражение $Спр.ПометкаУдаления развернется в Спр.SPЧтоТоТам, для остальных же - в Спр.IsMark.

to DrACe.
Ну, может у вас память хорошая, а меня напрягает лезть каждый раз в ДДСник, чтобы вспомнить, что родитель не parent, а parentid, владелец - вообще parentext; а идентификатор документов - везде вроде IDDOC, но в константах и последовательностях - DOCID.
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #4 - 25. Августа 2006 :: 08:08
Печать  
"По странному стечению обстоятельств" у справочника вполне могут оказаться (пользовательские) реквизиты Родитель, Владелец, ...  Подмигивание

  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #5 - 25. Августа 2006 :: 08:25
Печать  
berezdetsky писал(а) 25. Августа 2006 :: 08:08:
"По странному стечению обстоятельств" у справочника вполне могут оказаться (пользовательские) реквизиты Родитель, Владелец, ...  Подмигивание



Т.е. - если у спр нету родителя (только 1 уровень) или владельца - можно делать такие реквизиты?
Интересно, как 1Ска такое распознает? тот же родитель - такой реквизит у справочника есть даже когда всего 1 уровень, и если писать Спр.Родитель - фиг его знает, к какому реквизиту будет идти обращение. Гарантий, такскать, никаких.

Ну а того кто такие имена реквизитам дает иначе чем извращенцем назвать нельзя Улыбка.
Но тем не менее, т.к. мой вариант работает с приоритетом у  метаданного, то распарсится именно в пользовательский реквизит.

ЗЫ. Кстати, DrAce, что подразумевается под "типизацию видов документов(IDDOCDEF) в строковое выражение" - есть же $ВидДокумента и $ВидДокумента36 - это не то?
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #6 - 25. Августа 2006 :: 08:39
Печать  
alexqc писал(а) 25. Августа 2006 :: 08:25:
Т.е. - если у спр нету родителя (только 1 уровень) или владельца - можно делать такие реквизиты?
Интересно, как 1Ска такое распознает?

Их можно сделать и в многоуровневом справочнике с владельцем. А как их 1С распознаёт - это уже другой вопрос. Важно, что в метапарсере это должно разруливаться. Если, конечно, там что-то будет в связи с этим меняться.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #7 - 25. Августа 2006 :: 08:45
Печать  
пока там ничего не меняется, это моя инициатива и что скажут разработчики - неизвестно. Как разруливается - я написал.
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #8 - 25. Августа 2006 :: 09:05
Печать  
Ещё раз. Метапарсер должен однозначно, исходя из текста запроса, выбрать или системное поле или пользовательское. В предложенном варианте эта ситуация не разруливается.

На счёт надуманности проблемы: я тоже считал такие вещи маловероятными и не учитывал их в ранних версиях конструктора запросов. И мне пришлось изменить это мнение на основании реальных багрепортов.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #9 - 25. Августа 2006 :: 09:07
Печать  
alexqc писал(а) 25. Августа 2006 :: 08:25:
ЗЫ. Кстати, DrAce, что подразумевается под "типизацию видов документов(IDDOCDEF) в строковое выражение" - есть же $ВидДокумента и $ВидДокумента36 - это не то?

подразумевается, что с периодичностью в месяц всплывает такая тема:
имею запрос, в котором получаю номер, дату, вид документа:
SELECT
DOCNO as НомерДок,
LEFT(DATE_TIME_IDDOC,8) as ДатаДок,
IDDOCDEF as Вид
...

и вот Вид - это непонятные мне идентификаторы видов доков, а хочу, чтобы было "Реализация", "Фактура" и т.д.
это можно было бы сделать примерно такой типизацией:
IDDOCDEF as [Вид $ВидДокумента]

хотя можно и обойтись обычным запросом
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #10 - 25. Августа 2006 :: 09:12
Печать  
Лично я не за такое расширение метапарсера. В смысле, что я не против такого усовершенствования, но и не за. Имхо, надумано это все.
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #11 - 25. Августа 2006 :: 09:20
Печать  
я же говорю - мне это тоже, например, не горит и не нужно - сделаю себе временную табличку, или запрос построю со списком видов доков, но просто вопрос этот возникает регулярно - чем не повод - его реализовать, или хотя бы задокументировать приемлемое решение
  
Наверх
 
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #12 - 25. Августа 2006 :: 09:31
Печать  
berezdetsky писал(а) 25. Августа 2006 :: 09:05:
Ещё раз. Метапарсер должен однозначно, исходя из текста запроса, выбрать или системное поле или пользовательское. В предложенном варианте эта ситуация не разруливается.


Да почему не разруливается-то? Есть польз. реквизит - используем его. Нет - используем системные. Т.е. ВСЕ работающие до этого запросы - так работающими и останутся. парсер строит текст запроса однозначно, исходя из исходного текста и конфигурации.

Цитата:
На счёт надуманности проблемы: я тоже считал такие вещи маловероятными и не учитывал их в ранних версиях конструктора запросов. И мне пришлось изменить это мнение на основании реальных багрепортов.

"Это не бага, это фича". такого рода места обычно документируются с указанием, что пользователь понимает что делает. А он действительно понимать должен - завтра 1С поменяет порядок поиска реквизитов, и у него все поплывет. Кстати, на счет владельца-родителя не знаю, но точно где-то в ЖКК (может, в метод. рекомендациях) наталкивался на примерно такую фразу - " не рекомендуется задавать измерению регитсра имя "Документ" ". И аналогично - никто не запрещает написать процедуру с системным именем ( Сообщить(), например ). Но если кто так сделает - какова интересно будет реакция на "У меня нифига не сообщает"?

  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #13 - 25. Августа 2006 :: 09:44
Печать  
Дежа-вю... Вролде такое с месяц назад обсуждалось среди разработчиков и даже что-то было в репозиторий залито (в отдельную ветку). Только как-то все заглохло. Хотя ИМХО нужная вещь.
  

FormEx developer
Наверх
www  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #14 - 25. Августа 2006 :: 10:06
Печать  
alexqc писал(а) 25. Августа 2006 :: 09:31:
Да почему не разруливается-то? Есть польз. реквизит - используем его. Нет - используем системные. Т.е. ВСЕ работающие до этого запросы - так работающими и останутся. парсер строит текст запроса однозначно, исходя из исходного текста и конфигурации.

...

"Это не бага, это фича". такого рода места обычно документируются с указанием, что пользователь понимает что делает. А он действительно понимать должен - завтра 1С поменяет порядок поиска реквизитов, и у него все поплывет.


А когда, например, твой напарник, не использующий прямые запросы, добавит подобное поле в справочник, и у тебя "поплывут" все запросы - это тоже будет фича? И где будет твоё "разруливается"?

Это я к тому, что предлагаемый тобой функционал на самом деле не упрощает, а усложняет использование метапарсера. Т.е. - он не нужен. IMHO.

DrACe
+1
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #15 - 25. Августа 2006 :: 10:12
Печать  
berezdetsky писал(а) 25. Августа 2006 :: 10:06:
alexqc писал(а) 25. Августа 2006 :: 09:31:
Да почему не разруливается-то? Есть польз. реквизит - используем его. Нет - используем системные. Т.е. ВСЕ работающие до этого запросы - так работающими и останутся. парсер строит текст запроса однозначно, исходя из исходного текста и конфигурации.

...

"Это не бага, это фича". такого рода места обычно документируются с указанием, что пользователь понимает что делает. А он действительно понимать должен - завтра 1С поменяет порядок поиска реквизитов, и у него все поплывет.


А когда, например, твой напарник, не использующий прямые запросы, добавит подобное поле в справочник, и у тебя "поплывут" все запросы - это тоже будет фича? И где будет твоё "разруливается"?

Я б такому напарнику голову открутил.
  

FormEx developer
Наверх
www  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #16 - 25. Августа 2006 :: 10:44
Печать  
Цитата:
Я б такому напарнику голову открутил.

Речь не о напарнике, а о том, что в текущей реализации метапарсера эта проблема просто не возникнет. В отличие от.

А мысль интересная (на счет головы). Возьму на вооружение. Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #17 - 28. Августа 2006 :: 09:05
Печать  
Цитата:
berezdetsky писал(а) 25. Августа 2006 :: 10:06:
А когда, например, твой напарник, не использующий прямые запросы, добавит подобное поле в справочник, и у тебя "поплывут" все запросы - это тоже будет фича? И где будет твоё "разруливается"?

Я б такому напарнику голову открутил.


Я бы если б такое увидел - сделал бы с напарником то же самое, при чем не зависимо от использования в прямых запросах.
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #18 - 28. Августа 2006 :: 09:22
Печать  
berezdetsky писал(а) 25. Августа 2006 :: 10:44:
Речь не о напарнике, а о том, что в текущей реализации метапарсера эта проблема просто не возникнет. В отличие от.


Да ради Бога - не нравится (боитесь) - не пользуйтесь. А уж коли использовать хотите и такая ситуация возникнуть может - договаривайтесь с напарником об именовании реквизитов.

Я вот недавно с 1С++ 1.8.1.6 на 2.0 переполз - так условия вида
Код
Выбрать все
НекийРекв in ( select * from #ВремТаб),
     где ВремТаб через УложитьСписокОбъектов создана 


перестали работать по причине появления во ВремТаб еще одного поля. Ну так ничего - заменил * на val, никуда не делся. И считаю - именно это правильно. А тут - полная совместимость со старым кодом.

Ну и наконец, как вариант можно так сделать - можно в именах использовать знак # - т.е. $Спр.Код#. # распознается парсером как часть идентификатора (т.к. во врем. таблицах используется), и на обработку пойдет все имя "Код#". А таких имен в 1Ске точно не будет.
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #19 - 28. Августа 2006 :: 09:23
Печать  
alexqc писал(а) 28. Августа 2006 :: 09:05:
Я бы если б такое увидел - сделал бы с напарником то же самое, при чем не зависимо от использования в прямых запросах.

За что? При добавлении реквизита - код запросов не меняется, структура использованных в запросах метаданных не меняется..
А запросы перестают работать правильно. Я не понимаю, тебе действительно нужны в метапарсере side effects такого рода?  Озадачен Если да - удачи!
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #20 - 28. Августа 2006 :: 09:46
Печать  
berezdetsky писал(а) 28. Августа 2006 :: 09:23:
За что? При добавлении реквизита - код запросов не меняется, структура использованных в запросах метаданных не меняется..

За переопределение предопределенного имени Улыбка. Если для этого есть какой-то смысл (ну например, стандартную обработку перекрыть) - тогда понятно. А если нет, просто так назвали - тогда нефиг. Польза от названия сомнительно, а геморрой гдето вылезти может, и не будешь знать с чего. Кстати, а 1Совский "Запрос" как с такими реквизитами работает, не проверяли? Или ОЛЕ?

Цитата:
А запросы перестают работать правильно. Я не понимаю, тебе действительно нужны в метапарсере side effects такого рода?  Озадачен Если да - удачи!

Я бы не стал называть это "побочным действием". Все четко по заданному определению.
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #21 - 01. Сентября 2006 :: 14:59
Печать  
ну что, больше никого не заинтересовало и не затронуло?
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
Vaicartana
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 50
Местоположение: Far, Far Away...
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #22 - 11. Сентября 2006 :: 09:31
Печать  
Заинтересовало.
В принципе, как и говорили предыдущие ораторы, пофиг, как написано Code или Код.
НО(!!!) для общего стиля написания АДНАЗНАЧНА лучше Код.

Посмотрите тот же Той-СКЛ. Нет там никаких Code, Desr и тр
  
Наверх
 
IP записан
 
alexqc
Junior Member
**
Отсутствует



Сообщений: 77
Местоположение: АР Крым, Симферополь
Зарегистрирован: 21. Июня 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #23 - 11. Сентября 2006 :: 09:45
Печать  
Vaicartana писал(а) 11. Сентября 2006 :: 09:31:
Заинтересовало.
В принципе, как и говорили предыдущие ораторы, пофиг, как написано Code или Код.
НО(!!!) для общего стиля написания АДНАЗНАЧНА лучше Код.

Посмотрите тот же Той-СКЛ. Нет там никаких Code, Desr и тр


Тут дело больше не в том что "Код" или "Code", а в том что вместо (точнее,  "вместе с" Улыбка ) "$Спр.НужныйРеквизит,Спр.Code" будет "$Спр.НужныйРеквизит,$Спр.Code"

"Код" и "Code" в такой ситуации будут равнозначны. В Той-СКЛ, кстати, скорее всего тоже допустимы оба варианта названия.

Но похоже, более никому не интересно. И в ветке молчок, и патч-файл так никто и не глянул....
  

Везде - от моря Черного до снежной Колымы - мы трудностям показываем кукиш.
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Добавления в метапарсер
Ответ #24 - 12. Сентября 2006 :: 09:32
Печать  
Это пережить можно, вот еслиб удалось получить значения перечислений, причем для подключенной базы, вот это да, это я понимаю!
Чтоб

SELECT Code, Descr FROM $Справочник.Номенклатура AS S WHERE $S.ВидТовара=$Перечисление.ВидыТоваров.Услуга
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Добавления в метапарсер
Ответ #25 - 12. Сентября 2006 :: 10:16
Печать  
Uncle писал(а) 12. Сентября 2006 :: 09:32:
Это пережить можно, вот еслиб удалось получить значения перечислений, причем для подключенной базы, вот это да, это я понимаю!
Чтоб

SELECT Code, Descr FROM $Справочник.Номенклатура AS S WHERE $S.ВидТовара=$Перечисление.ВидыТоваров.Услуга

это уже сделано.
я же тебе уже в той ветке ответил сегодня утром
  

1&&2&&3
Наверх
 
IP записан
 
Uncle
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 93
Зарегистрирован: 26. Июля 2006
Re: Добавления в метапарсер
Ответ #26 - 12. Сентября 2006 :: 10:50
Печать  
Да, не заметил, огромной сенкс!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать