Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 10  ОтправитьПечать
Очень популярная тема (более 25 ответов) Упрощение работы с прямыми запросами (число прочтений - 32076 )
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #105 - 06. Мая 2008 :: 10:27
Печать  
JohnyDeath писал(а) 06. Мая 2008 :: 10:23:
Кстати, а как с датами будут обстаять дела?

Немного выше проскакивал пример:
DTOS(date)+time+iddoc BETWEEN :ДатаНачала AND :ДатаОкончания~

Этот пример в ДБФ работает корректно и выглядит как в SQL. Также имена типа :ДатаНачалаЗапроса~~ в СКЛ тоже работают, как я понимаю.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #106 - 06. Мая 2008 :: 10:28
Печать  
$Рег.ИДДокИзПозиции
$Рег.Позиция

Дежавю.
У регистра есть ИДДокИзПозиции и/или Позиция, например.
trad очень не спроста поставил $  в тех местах.
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #107 - 06. Мая 2008 :: 10:30
Печать  
spock писал(а) 06. Мая 2008 :: 10:28:
$Рег.ИДДокИзПозиции
$Рег.Позиция

Дежавю.
У регистра есть ИДДокИзПозиции и/или Позиция, например.
trad очень не спроста поставил $  в тех местах.

А кто сказал, что имена будут именно такими, как в примерном запросе? Они будут другими, конечно. Чтобы не пересечься с возможными реквизитами с такими же именами просто надо использовать ключевые слова 1С.
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #108 - 06. Мая 2008 :: 10:33
Печать  
Ты не понял. Дело не в именах, а в $.

$Рег.ИДДокИзПозиции <-> Рег.$ИДДокИзПозиции
$Рег.Позиция <-> Рег.$Позиция

Нужно другое решение придумывать. Или радикально переделывать парсер.
  
Наверх
ICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #109 - 06. Мая 2008 :: 10:37
Печать  
spock писал(а) 06. Мая 2008 :: 10:33:
Ты не понял. Дело не в именах. А в $.

$Рег.ИДДокИзПозиции <-> Рег.$ИДДокИзПозиции
$Рег.Позиция <-> Рег.$Позиция

Нужно другое решение придумывать. Или радикально переделывать парсер.

Это ты не понял. А я понял Улыбка Радикально ничего переделывать не надо. Когда парсер видит последовательность вида $Таблица.Поле, то он
1) Знает, ЧТО это за таблица и какой таблице БД соответствует
2) "Поле" заменяет на реальное поле согласно структуре БД.

Доработка парсера минимальна. Просто добавляем код, который исходя из вида таблицы будет:
1) Кроме реальных полей БД учитывать еще некоторый дополнительный набор полей с именами, которые не могут быть именами реквизитов
2) Возможно, заменять не только строку "Поле", а всю последовательность "$Таблица.Поле" на то, что нужно.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #110 - 06. Мая 2008 :: 10:50
Печать  
Uzhast писал(а) 06. Мая 2008 :: 10:27:
Также имена типа :ДатаНачалаЗапроса~~ в СКЛ тоже работают, как я понимаю.
при сравнении позиции (date_time_iddoc) с :ДатаНачалаЗапроса~~ будет ошибка
  

1&&2&&3
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #111 - 06. Мая 2008 :: 10:50
Печать  
Uzhast писал(а) 06. Мая 2008 :: 10:37:
1) Кроме реальных полей БД учитывать еще некоторый дополнительный набор полей с именами, которые не могут быть именами реквизитов

Например (это вопрос).

А если все же прикладной программист создаст такое поле у регистра? Сам виноват?
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #112 - 06. Мая 2008 :: 10:52
Печать  
Uzhast писал(а) 06. Мая 2008 :: 10:30:
А кто сказал, что имена будут именно такими, как в примерном запросе? Они будут другими, конечно. Чтобы не пересечься с возможными реквизитами с такими же именами просто надо использовать ключевые слова 1С.

можно пример?
  

1&&2&&3
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #113 - 06. Мая 2008 :: 10:58
Печать  
trad писал(а) 06. Мая 2008 :: 10:50:
Uzhast писал(а) 06. Мая 2008 :: 10:27:
Также имена типа :ДатаНачалаЗапроса~~ в СКЛ тоже работают, как я понимаю.
при сравнении позиции (date_time_iddoc) с :ДатаНачалаЗапроса~~ будет ошибка

Да, но в ряде случаев будет нормально. Например для поля Period (хоть в ДБФ в индекс и не попадает).
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #114 - 06. Мая 2008 :: 10:59
Печать  
trad писал(а) 06. Мая 2008 :: 10:52:
Uzhast писал(а) 06. Мая 2008 :: 10:30:
А кто сказал, что имена будут именно такими, как в примерном запросе? Они будут другими, конечно. Чтобы не пересечься с возможными реквизитами с такими же именами просто надо использовать ключевые слова 1С.

можно пример?

Для журнала можно использовать имена $Журнал.ДатаДок и $Журнал.ТекущийДокумент.
Для таблицы движений $Рег.ТекущийДокумент.
Если ключевых имен не хватит, то можно сделать "псевдоагрегатные" объекты. Например: $Рег.ТекущийДокумент.ДатаДок или $Рег.ТекущийДокумент.Ссылка
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #115 - 06. Мая 2008 :: 11:02
Печать  
spock писал(а) 06. Мая 2008 :: 10:50:
А если все же прикладной программист создаст такое поле у регистра? Сам виноват?

Ну, если он сможет создать реквизит ДатаДок или ТекущийДокумент, то безусловно сам виноват Улыбка
  
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #116 - 06. Мая 2008 :: 11:05
Печать  
Uzhast писал(а) 06. Мая 2008 :: 11:02:
spock писал(а) 06. Мая 2008 :: 10:50:
А если все же прикладной программист создаст такое поле у регистра? Сам виноват?

Ну, если он сможет создать реквизит ДатаДок или ТекущийДокумент, то безусловно сам виноват Улыбка

  

Reg.jpg ( 4 KB | Загрузки )
Reg.jpg
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #117 - 06. Мая 2008 :: 11:06
Печать  
Можно придумать еще и $$Журнал.ДатаДок и $$Журнал.ТекущийДокумент
Но, все равно слабо верю, что этот пазл сложиться.
  

1&&2&&3
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #118 - 06. Мая 2008 :: 11:08
Печать  
spock писал(а) 06. Мая 2008 :: 11:05:
Uzhast писал(а) 06. Мая 2008 :: 11:02:
spock писал(а) 06. Мая 2008 :: 10:50:
А если все же прикладной программист создаст такое поле у регистра? Сам виноват?

Ну, если он сможет создать реквизит ДатаДок или ТекущийДокумент, то безусловно сам виноват Улыбка


Насчет ТекущийДокумент,  поздравляю, spock. Ты - Буратино. Сам себе. Злобный Улыбка
А когда я говорил про ДатаДок, то имел реквизиты документа.
Впрочем, даже если это и возможно, это не отменяет факта, что подобный конфигураст - Буратино.
  
Наверх
 
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: Упрощение работы с прямыми запросами
Ответ #119 - 06. Мая 2008 :: 11:09
Печать  
trad писал(а) 06. Мая 2008 :: 11:06:
Можно придумать еще и $$Журнал.ДатаДок и $$Журнал.ТекущийДокумент
Но, все равно слабо верю, что этот пазл сложиться.

Ну да. С долларом в середине тоже нормально, только некрасиво немного Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 10 
ОтправитьПечать