Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Добавления в метапарсер (число прочтений - 10308 )
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 записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать