![]() |
![]() |
|
Приведение типов в запросе - полный финиш! Ø (PR 15.06.2008 13:25) |
☑ | ||
---|---|---|---|---|
0
Atlant
11.06.08
✎
15:08
|
Всем доброго времени суток!
Я ща изучаю 8ку и попадаю в шок! %-/ Тоже мне сделали "усовршенствование языка и механизма запросов"!!! полная херня!! Если ЭЛЕМЕНТАРНОЕ ПРИВЕДЕНИЕ СТРОКИ К ЧИСЛУ сделать нельзя на лету, проверить в условии потом, использовать функции языка 1С в условиях - то это же д.мо собачье, а не механизм!!! Перелопатил весь форум на эту тему и НИЧЕГО ТУТ НЕТ!! Я тут просто задам ВОПРОС: - есть ли возможность хотя бы ВНЕШНИЕ ФУНКЦИИ использовать в хваленых запросах 8ки?! Как? |
|||
1
ТелепатБот
гуру
11.06.08
✎
15:08
|
||||
2
Sadovnikov
11.06.08
✎
15:10
|
(0) Чё шумишь? Как смогли, так и сделали. И, сдается мне, что есть там сто-то типа Выразить.
|
|||
3
hhhh
11.06.08
✎
15:12
|
(2) ВЫРАЗИТь - это совсем другое. Не вешай человеку лапшу на уши.
|
|||
5
Atlant
11.06.08
✎
15:17
|
(2) эта залипуха "Выразить" работает только с однородными типами - может преобразовывать Строка(10) в Строка(5) и Число(18, 3) в Число(15, 2)!! А ещё состанвые типы которые использовать можно только с бодуна! :(
Больше она ни на что не годится! У неё видишь ли есть список ДОПУСТИМЫХ пар типов при преобразовании! Они что, НЕ СМОГЛИ сделать функцию приведения всех ЭЛЕМЕНТАРНЫХ типов к друг другу????! :( Значит ввести хрень типа "план видов (!) характеристик" они могут! А такую мелочь - это у них не вяжется!! :) |
|||
6
Maxus43
11.06.08
✎
15:19
|
(5) зачем так эмоционировать? все вопросы в техподдержку 1с, на форуме они не сидят обычно
|
|||
7
Sadovnikov
11.06.08
✎
15:19
|
(3) Не поленился, посмотрел. Выразить = Case.
(5) Даже так? Сильно... |
|||
8
Sadovnikov
11.06.08
✎
15:19
|
+(7) Блин, очепятался...
Выразить = Cast |
|||
9
Hadgehogs
11.06.08
✎
15:24
|
(0) Полный финиш - это код "Отражения зарплат в рег. учете".. А это - так, детские сопли...
|
|||
10
Terv
11.06.08
✎
15:26
|
а зачем в запросе внешние функции? ну 7ке бывало полезно из за ограниченности языка, а в 8ке то зачем?
|
|||
11
Grek224
11.06.08
✎
15:28
|
Ничего не понимаю о чем они говорят :)
|
|||
12
Sadovnikov
11.06.08
✎
15:28
|
(9) А что там? Не томи... Расскажи... :)
(5) Ты погуляй по ветак "Семерка или восьмерка" и посмотри, как там франчи "запросы" восьмерошные расхваливают :) |
|||
13
trdm
11.06.08
✎
15:28
|
он про пиведение говорит, а не про внешние функции.
|
|||
14
Grek224
11.06.08
✎
15:30
|
запрос нужен для выборки. выбирать там можно все что хочешь и как хочешь . ссылочных аномалий там нет. а если хочешь что то проверять заменять вычислять кроме вычисляемых полей запроса то вперед с песней ВЫБОРКА.СЛЕДУЮЩИЙ()
. так оно правильнее же |
|||
15
Hadgehogs
11.06.08
✎
15:33
|
(12) Нельзя. Это может травмировать психическое здоровье участников форума и отразиться на их сексуальных предпочтениях в будущем...
|
|||
16
афаф
11.06.08
✎
15:34
|
(9) жжешь. :-)
По теме - и так нормально. Но если аффтар темы нас осчастливит новой версией платформы с приведением типов - я не против... |
|||
17
Sadovnikov
11.06.08
✎
15:38
|
(14) " вперед с песней ВЫБОРКА.СЛЕДУЮЩИЙ()" - очень сильно... И итоги ручками пересчитаем, и кучу лишних данных на клиента вернем, и будем делать на клиенте то, на что рассчитан сервер...
(15) :) |
|||
18
Maxus43
11.06.08
✎
15:39
|
ИМХО, приведение типов в запросе не нужно, можно обойтись... если надо например суммировать какието поля, то тип у них изначально должен числовой быть а не строковый.
|
|||
19
hhhh
11.06.08
✎
15:44
|
(8) странно ты как-то смотрел. Видимо без очков.
|
|||
20
Sadovnikov
11.06.08
✎
15:45
|
(19) Поясни?
|
|||
21
Grek224
11.06.08
✎
15:45
|
просто я что то сам не припомню всяких сравнений в запросе. есть же стандартные функции там. причем не мало их надо сказать вполне достаточно. а если число хочешь сравнивать потом в строки переводить и т д. по моему это чистое програмирование получается ни дать ни взять. при чем тут запросы то? не надо извращаться в запросах потом же сами не райдете крайнего. лучше сделайте один раз оптимальную выборку. да и вообще у меня такое ощущение что если хочется сильно сравнивать разные типы при чем несовместимые (т.е. строку "5" и число 5) то дело в изначально неверно заложенных типах данных. хотя это как вариант
|
|||
22
Sadovnikov
11.06.08
✎
15:51
|
(21) Блин, что у тебя в школе по русскому языку было? Ведь не читаемо абсолютно твое сообщение...
"это чистое програмирование получается " - а писать запросы - это не програмирование? Это так, пописать зайти? Перед "вперед и с песней" очень не хило было бы спросить у автора, зачем ему нужна эта конвертация. |
|||
23
Chai Nic
11.06.08
✎
15:53
|
Меня тоже удивляет, почему стандартный CAST так урезали, ведь фактически во всех sql-серверах он может преобразовать число в строку.
|
|||
24
MSensey
11.06.08
✎
16:15
|
(23) а в DB и Postgree ?
|
|||
25
differs
11.06.08
✎
16:34
|
(22) "программирование" в данном контексте это антоним к "созданию запросов"
|
|||
26
BabySG
11.06.08
✎
17:55
|
Автор не врубается в само понятие "запрос", если хочет в нем вызывать внешние функции...
|
|||
27
Fragster
гуру
11.06.08
✎
18:00
|
ну на самом деле, какого в ТСкуле можно CAst Varchar as Date сделать, а здесь - нет? :( но в целом - запросы 8.х мне лично намноооого больше нравятся... и работают быстрее
|
|||
28
Grek224
11.06.08
✎
18:25
|
я за пунктуацией не слежу и по рускому было у меня не очень Sadovnikov мне это побарабану как то. на програмирование не влияет отладка рулит :). а зачем кому понадобилось эта конвертация особо не поясняется. т.е. прямой задачи не стоит а отсюда абстрактные рассуждения и мои и других форумчан в том числе. Всю жизнь запросом вытягивали подборку данных а дальше обрабатывали различными извращениями циклируясь по ней если такие извращения нужны. а создание запросов да по моему это не в чистом виде "кодание" а в первую очередь правильная работа с данными будет Вам известно Sadovnikov, которая кстати должна строиться изначально на верных типах данных а не преобразовываться на лету то в один тип то в другой. И безусловно я вполне могу представить ситуацию когда надо извратиться и из говна сделать конфетку, но это отдельная песня.
|
|||
29
Читатель
11.06.08
✎
18:33
|
Я чота не пойму, а в ANSI SQL есть такое преобразование ? Если есть - косяк 1С, если нет - дасвидания.
|
|||
30
Grek224
11.06.08
✎
18:37
|
и под Хорошая 1С или плохая в данном уже контексте вопрос не должен катить. Я наверное просто на вскидку не вижу необходимости в преобразованиях налету.
|
|||
31
Grek224
11.06.08
✎
18:41
|
почему сразу косяк. не думаешь что 1Сники подумали и решили А НАФИГА ЭТО НАМ НАДО?. может быть конечно у них руки не дошли до этого.
|
|||
32
Grek224
11.06.08
✎
18:43
|
сколько развивается 1С 8 и классические СУБД и встроенные в них SQL язык. сколько там стандартов SQL уже мы пережили на своем веку? Если уж сравнивать то тут правильнее 77 и 8 сравнивать. вот тут и будет крыться ответ а что же стало лучше. безусловно контруктор запросов 8 это практически конфетка.
|
|||
33
i-rek
11.06.08
✎
20:47
|
(0) Юзай СКД вместо запросов - там пользовательские функции есть.
Или юзай временные таблицы: сделал выборку, вернул в результат запросаЮ обработал встроенным языком, засунул обратно и шпарь запросами дальше |
|||
34
i-rek
11.06.08
✎
20:49
|
А если честно, преобразование чисел в строки нужно лишь при форматировании вывода, а СКД прекрасно с этим справляетсч
|
|||
35
BabySG
12.06.08
✎
12:26
|
Вердикт по теме: автор сел в лужу, ибо кричал по незнанию предмета.
|
|||
36
Atlant
13.06.08
✎
00:03
|
(28) :-/ если программер не могёт мыслить абстрактно и эмпирически - то он не готов к воплощению действительно творческих задач - ему подавай предметику с четкими рельсами - "скажите где мне рельсы проложить и я - так уж и быть, создам неповторимые рельсы по этому чертежу!" :)
Ситуация очень простая: -- есть договоры контрогентов. в них существует классификация по типу отгружаемой с производства продукции. типов продукции - ограниченное количество. и договора (так уж сложилось) ВСЕГДА на один тип продукции. операторов много и заглядывать в ж.пу договору чтобы узнать какой на какую продукцию никто не будет. поэтому разработчиком внесено изменение - нумерация договоров ведется с префиксом по типу продукции. по каждому префиксу номерация ведется сквозная и своя. мне ПРОСТО НУЖНО УЗНАВАТЬ - ПОСЛЕДНИЙ НОМЕР договора по префиксу, вне зависимости от контрагента, и сравнивать его с тем, который вводит оператор. дабы дата нового договора по типу продукции случайно не перевалила за уже существующий номер - чтобы хронологию номеров соблюсти. Конечно я решил задачу во время обработки данных. НО!! это залипуха! я так считаю! просто потому, что в 7КЕ я бы сделал это одним запросом и всё!!! а тут ещё писать код!! это не есть красота программирования! (вообще писал я просто от шока - что такая простая вещь, как преобразование - не может быть выполнена на лету!). Наколупать раздельные составляющие номера у договора тоже можно или вообще использовать встроенный механизм выдавания номеров - но контроль зыбкий и существуют ПРОПУЩЕННЫЕ (резерв) номера! которые - дозволительно использовать! |
|||
38
trdm
13.06.08
✎
01:02
|
(26) В любом приличном сервере есть механизмы расширений запросов функциями, от хранимых процедур и пользовательских функций до ЦДК/АПИ на С/С++.
пойди лучше мануал почитай, вместо того что-бы умничать... |
|||
39
Один С
13.06.08
✎
11:00
|
(36) я конечно дико извиняюсь, но вот такой простенький код вернет последний номер договора, с учетом префикса:
Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ ПЕРВЫЕ 1 | ДоговорыКонтрагентов.Код КАК Код |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Код ПОДОБНО ""TLT%"" | |УПОРЯДОЧИТЬ ПО | Код УБЫВ"; Рез=Запрос.Выполнить().Выбрать(); Пока Рез.Следующий() Цикл Сообщить(Рез.Код); КонецЦикла; |
|||
40
BabySG
13.06.08
✎
12:49
|
(36) Решения неправильно задачи, вот и проблема
(37) Почему такие, как ты, постоянно орут по незнанию предмета? Используй СКД - там есть внешние функции, только потом ты будешь орать, а почему так сложно все. (38) Покажи мне в С/С++ объект "Справочник" или "Документ" или, может, сумеешь указатель наваять в 1С? А знаешь, почему такого нет? Потому что это решения для разных областей. Поэтому иди и почитай мануал по сям и по 1С и найди отличия. Иначе получиться, что от автовоза будет требовать разгона, как от порша. |
|||
41
PR
13.06.08
✎
13:43
|
(0) >>Тоже мне сделали "усовршенствование языка и механизма запросов"!!!
Так и есть, я в восторге! >>Если ЭЛЕМЕНТАРНОЕ ПРИВЕДЕНИЕ СТРОКИ К ЧИСЛУ сделать нельзя на лету Нельзя, се ля ви. >>есть ли возможность хотя бы ВНЕШНИЕ ФУНКЦИИ использовать в хваленых запросах 8ки?! Да. Но только в СКД, а не в обычных запросах. |
|||
42
PR
13.06.08
✎
13:43
|
(2) Смотри (3), точно :))
|
|||
43
PR
13.06.08
✎
13:45
|
(5) То, что ты не разобрался для чего нужно ВЫРАЗИТЬ, еще не значит, что 1С облажалась.
ВЫРАЗИТЬ нужно для того, чтобы из значения составного типа выразить значение конкретного типа. И ТОЛЬКО! |
|||
44
PR
13.06.08
✎
13:47
|
(10) А как ты например решишь задачу поиска в запросе всех контрагентов с натиенованием "Вася" независимо от регистра? :))
То есть должны найтись "Вася", "вася", "ВАСЯ", "ВАся" и т. д. :))) |
|||
45
PR
13.06.08
✎
13:58
|
(18) Приведение нужно не для суммирования :))
Есть и другие задачи :)) |
|||
46
trdm
13.06.08
✎
14:16
|
(40)
Вот тебе справочник: class CRefContext; Вот тебе документ: class CDocActModule; class CDocContext; class CDocEnvironContext; class CDocFindDlg; class CDocForm; class CDocListPos; class CDocSetSelectDlg; class CDocTransacter; Вот тебе указатель: вТаблЗнач = СоздатьОбъект("ТаблицаЗначений"); вТаблЗнач.НоваяКолонка("Х","Число",2); СЦ = 0; Для СЦ = 1 По 10 Цикл вТаблЗнач.НоваяСтрока(); вТаблЗнач.Х = СЦ; КонецЦикла; вУказатель = вТаблЗнач; вТаблЗнач.ВыбратьСтроки(); Пока вТаблЗнач.ПолучитьСтроку() = 1 Цикл Сообщить("Оригинальная ТЗ:" + вТаблЗнач.Х); КонецЦикла; вУказатель.ВыбратьСтроки(); Пока вУказатель.ПолучитьСтроку() = 1 Цикл Сообщить("Указатель:" + вУказатель.Х); КонецЦикла; Все есть. А вообще в (40) бред написан. |
|||
47
trdm
13.06.08
✎
14:25
|
(40) Существует множество задач, которые требуют преобразования.
Например имеет смысл хранить дату и время документа в одном поле используя тип данных сервера DataTime. Способ извлечения даты из этого поля MSSQL->Cast. Для расчета поздравлялок используется дата рождения сотрудника т.е. тип Date. Что-бы определиться кого поздравлять сегодня-завтра достаточно выделить месяц и день. Опять функция. Если эти элементарные вещи приходится делать ч/з задницу (довешивать по полю на каждый док или элемент справочника), значит в консерватории что-то не так. Видимо ты просто имеешь мало опыта и не сталкивался с задачами приведения. ну или как вариант просто недалек слегка.. |
|||
48
PR
13.06.08
✎
14:35
|
(37) Еще раз такой словесный понос и будешь забанен в секции
|
|||
49
BabySG
13.06.08
✎
14:43
|
(46)
Угу, а теперь пройдись по нему запросом в стиле 1С, нарисуй кучу соединений и покричи, что сервера облажались и даже в 1С есть обращение "через точку" И, видимо, указатель в твоем понимании, отличается от моего. Что бы далеко не ходить, реализуй мне на 1С указатель на массив указателей. Раньше частенько сталкивался с конструкциями вида **pointer "В общем в (46) бред написан" (с) (47) Я думаю, что функция МЕЖДУ приятно вас удивит... "Видимо, ты просто имеешь мало опыта" (с) "Ну, или как вариант - просто недалек слегка" (с) Ибо не все задачи надо решать тупо в лоб. |
|||
50
trdm
13.06.08
✎
14:59
|
(49) И чем функция "Между" мне поможет в случае поздравлялки? Я так понимаю она булевая и возвращает труе, когда дата находится между двумя датами?
А год ты во внимание принял? Это мне что на каждый год надо будет вызывать твою хваленую функцию вместо того, что-бы просто вытащить месяц/день? |
|||
51
PR
13.06.08
✎
15:06
|
(47) >>Что-бы определиться кого поздравлять сегодня-завтра достаточно выделить месяц и день. Опять функция.
Логично. И в языке запросов она есть :)) |
|||
52
trdm
13.06.08
✎
15:08
|
(51) Если она узкоспецифичная, то это не решает проблему в комплексе.
|
|||
53
BabySG
13.06.08
✎
15:17
|
(50) Уважаемый, если плохо знаете язык запросов в 8 - не стоит пытаться обвинить ее в неполноценности.
(52) Проблема, как выяснилось, возникла из-за "странного" подхода к решению задачи. |
|||
54
PR
13.06.08
✎
15:18
|
(52) Я тебя не понимаю.
>>Что-бы определиться кого поздравлять сегодня-завтра достаточно выделить месяц и день. Именно это две функции и делают. Что тебе еще надо? |
|||
55
Atlant
13.06.08
✎
20:01
|
(48) ??! оппа! выкинуть МЕНЯ? слышь, ведущий, может в (4) заглянешь и с иммортолом перетрешь, как следует обращаться по имени в форуме, а то я что то не понял - дятлоговорящих тут особо уважают??! А?! :((( а то давай введем официальные правила общения:
1. начинать свое высказывание форумчане-мистовчане обязаны со слов "дятел", "выхухоль" и "членоголовый". 2. всех, кого задевает данное обращение - после первого предупреждения выкидываем с форума без возможности повторной регистрации! ... а то, как то все очень туманно! мои ответы на его дятлов - это "словесный понос", а он - млин, молодец судя по всему! :-/ короче спасибо за справедливый и взвешенный подход, PR! :(я конечно сожалею, что ПРИХОДИТСЯ отвечать хаму на понятном ему языке, но если бы ВЕДУЩИЕ следили за этим - я думаю, было бы проще обмениваться действительно дельными мыслями!!): |
|||
56
IT Михаил
13.06.08
✎
20:32
|
(0)не полный )
|
|||
58
Atlant
13.06.08
✎
21:08
|
(39) ОДИН С - КРАССАВЧИК!! :)
Молодчина! Отличный код! Во где тонкие знания языка запросов! Так с первого взгляда - просто, а ведь додумался ж!! Последний номер мы получили, сравнивать на больше меньше как цифры - будем при пост обработке!! УЖЕ КОЕ ЧТО!! :) СПАСИБО! З.Ы. и никакие скулы нам не нужны!! ;) |
|||
59
i-rek
13.06.08
✎
22:57
|
ну плохо в языке запросов c преобразованием типов. Давайте признаем. Критично ли это ? Да при наличии трехзвенки язык запросов вообще не обязан быть. Вон в навижн вообще языка запросов нет и двухзвенка. А в аксапте в языке запросов немеряно ограничений. И живут же.
|
|||
60
Immortal
14.06.08
✎
00:26
|
(55)
1. ты дрыгаешь ногами и клювом потому что ничего не знаешь про язык запросов в 8.х и в ms sql. 2. ты и не хочешь этого знать. 3. отсюда вывод - имхо ты дятел. |
|||
61
Masquerade
14.06.08
✎
02:17
|
(0)
То, что было в 7.7 - вообще не запросы. Хрень какая-то. |
|||
62
SnarkHunter
14.06.08
✎
07:13
|
То, что есть в 7.7 - полноценнные запросы на полноценном T-SQL...
|
|||
63
BabySG
14.06.08
✎
13:11
|
(62) ПлакалЪ...
|
|||
64
Masquerade
14.06.08
✎
13:17
|
Гкхм... Я вообщем взглянул поглубже на 7.7 (в части запросов). Иопта, да это ж PL/SQL! ТОлько какой-то более крутой! (Неосязаемо)
|
|||
65
Grek224
14.06.08
✎
20:22
|
Похоже все разругались и обиделись.! Ребята давайте жить жружно уважая друг друга. Кто то более опытен кто то менее, но не надо этим кичиться пройдет пара лет еще и ламусы станут вполне понимающими людьми. Дело не в говне 1С как таковом а в особенностях при работе. Я когда с дельфей на 1С переходил мне казало что без четкой типизации данных вообще невозможно жить и кстати поначалу мне было тяжело перестроить сознание к 1С. А теперь думаю что надо подходить к работе с учетом особенностей 1С. Ну непривычно порой иногда через жопу кое что надо делать а покажите среду разработки где все идельально, опустим данный контекст. Могу обосрать КЛИКОМ ГОВНО парочку языков програмирования, но зная их сильные стороны я все же повременю с этим так как буду изначально неправ:))
|
|||
66
trdm
14.06.08
✎
20:59
|
(63) вместо того что-бы распускать сопли, научись пользоваться инструментами.
|
|||
67
BabySG
14.06.08
✎
21:06
|
(66) Угу, не спорю - стоит ВАМ научиться пользоваться инструментами, а то будете в 8-ке изобретать периодические реквизиты :)
Запросы в 8-ке наиболее приближены к реальности и смыслу их использования. А вот если пытаться на них изобрести калькулятор - то, естественно, они будут неудобны. |
|||
68
trdm
14.06.08
✎
21:43
|
(67) пока в планах 8-ки нет. Реорганизуем пока свою 7-ю БД. не до 8-ки.
но вот в 7-ке T-SQL рулит реально и конкретно. |
|||
69
BabySG
14.06.08
✎
22:09
|
(68)
В семерке есть ALTER TABLE? Или, может, CREATE DATABASE? А, там, наверное, есть триггеры! Как "нету"? Мне тут уже несколько человек говорили, что в 7-ке полноценный T-SQL! |
|||
70
Masquerade
15.06.08
✎
02:19
|
(69)
Не парься, (68)-ой в забытьи и суровом неадеквате. Он Р.Е.О.Р.Г.А.Н.И.З.У.Е.Т. свою, уже седьмую БД!! Его не остановишь! |
|||
71
trdm
15.06.08
✎
03:41
|
(69) Все там есть. Если твои глаза не разучились видеть можешь посмотреть тут:
http://www.1cpp.ru/forum/YaBB.pl?board=query Обсуждаются прямые запросы. Странно было бы обсуждать в более чем тысяче тем то чегоо не существует. |
|||
72
trdm
15.06.08
✎
03:46
|
(70) че смешного? втыкаем в торговую БД SRM, рефакторю справочники.
ПС. это если конечно понимаешь о чем я. |
|||
73
trdm
15.06.08
✎
03:52
|
(70) с вами идиотами уже даже и не смешно...
|
|||
74
Masquerade
15.06.08
✎
04:03
|
Ну мля, тэрэдэмэ просто убил всех наповал. Он принёс всем СЛОВО!
|
|||
75
Sadovnikov
15.06.08
✎
11:22
|
(73) +100
(69) И Alter Table есть, и Create Database. (62) про это и написал. |
|||
76
Grek224
15.06.08
✎
13:11
|
похоже тема себя изжила и начинет превращаться из ветки в жизненную историю каждого из нас :)))) мне нравиться
|
|||
77
PR
15.06.08
✎
13:15
|
(76) То есть мне закрыть тему? :))
|
|||
78
trdm
15.06.08
✎
13:18
|
закрывай.
|
|||
79
Grek224
15.06.08
✎
13:24
|
видимо да
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |