Имя: Пароль:
1C
1С v8
v8: Представление булевого значения
0 Stim
 
23.07.13
14:14
Передаю параметр в функцию, типа
ВыполнитьМойЗапрос(Истина)

Функция ВыполнитьМойЗапрос(Параметр =Истина)
Запрос = новый запрос
Запрос.текст = " бла-бла
..
ГДЕ Какое-то условие И "+Параметр +" остальная часть запроса";


Несмотря на то, что передается Истина и отладчик показывает Параметр как тип булево значение Истина - в тексте запроса условие трансформируется в
ГДЕ Какое-то условие И Да

Соответственно возникает ошибка выполнения запроса. Как быть?
1 Wobland
 
23.07.13
14:16
&Параметр
2 Wobland
 
23.07.13
14:16
двоечник
3 Wobland
 
23.07.13
14:19
http://infostart.ru/public/115188/
это прекрасно!
4 Stim
 
23.07.13
14:22
Мда. А постарше есть кто-нибудь дома?
5 Поросенок Петр
 
23.07.13
14:25
"Как быть?" - впредь не копрокодить.
6 Wobland
 
23.07.13
14:25
(4) вызывай взрослых
7 Stim
 
23.07.13
14:26
Или просто - почему в отладчике Строка(Истина) в одной базе дает значение "Да", а в другой - "Истина" ?
8 Stim
 
23.07.13
14:26
+ платформа одна и та же
9 Stim
 
23.07.13
14:28
А, тьфу, режим совместимости
10 Stim
 
23.07.13
14:28
Всем спасибо)
11 Wobland
 
23.07.13
14:29
в книгу знаний!
12 Aprobator
 
23.07.13
14:30
однозначно ))) Вся причина в режиме совместимости 0)
13 Aprobator
 
23.07.13
14:32
(10) открой для себя региональные установки информационной базы.
14 Stim
 
23.07.13
14:32
Сказка ложь да в ней намек.
15 Stim
 
23.07.13
14:33
(13) это к сабжу не относится.
16 Aprobator
 
23.07.13
14:35
вообще такое ощущение, что у тебя параметр передается в запрос с использованием Формат(...).
17 Maxus43
 
23.07.13
14:35
(15) как раз это к сабжу относится, а вот пост (0) не относится
18 Maxus43
 
23.07.13
14:35
(16) он не передаёт параметр вобще...
надо + "И &параметр"
19 Stim
 
23.07.13
14:36
(17) неа.
(18) НЕТ!
20 Aprobator
 
23.07.13
14:36
(18) так, а я о чем? Происходит преобразование Параметр в строку согласно Региональным установкам информационной базы.
21 Aprobator
 
23.07.13
14:37
(19) двоечник.
22 ДенисЧ
 
23.07.13
14:38
(19) Тебе там что надо получить? Истина?
Так и пиши " + ?(Параметр, "Истина", Ложь") + "
23 hhhh
 
23.07.13
14:38
(19) вот так надо

Функция ВыполнитьМойЗапрос(Параметр ="Истина")
24 Aprobator
 
23.07.13
14:38
(17) а плин ссорь - не дочитал )
25 Maxus43
 
23.07.13
14:40
да вобще ставить в ГДЕ истина/ложь рядом с И - вобще смысла нет парктически... с ИЛИ бывает нужно)
26 Stim
 
23.07.13
14:41
Жертвы названий переменных. Параметр -это параметр функции, являющийся условием  в запросе. Да, можно его передавать как "Истина", но отчет делали еще в 40е годы, когда 8.2 небыло
27 Aprobator
 
23.07.13
14:42
(26) да пофиг что. Тебе уже объяснили, что происходит с параметр булево, когда ты его со строкой плюсовать начинаешь. Совсем ослеп что ли?
28 Maxus43
 
23.07.13
14:42
у 8.2 по умолчанию представление только поменялось, измени на нужное в (13). Или мы не ищем лёгких путей?
29 acsent
 
23.07.13
14:42
Формат()
30 Stim
 
23.07.13
14:42
+ и в те годы не было таких извращений с представлением булевных значений
31 Aprobator
 
23.07.13
14:43
(30) в каменном веке компов вообще не было и что?
32 Aprobator
 
23.07.13
14:45
тем более что тут не извращение. То что кто то пытается сформировать текст запроса таким образом.
33 Aprobator
 
23.07.13
14:45
+()32) имелось ввиду представление не извращение конечно же.
34 Stim
 
23.07.13
14:47
(31) все правильно - не было компов, не надо было кодить.
Или ты предлагаешь еще с 77 начинать использование функции 8.2?
35 Aprobator
 
23.07.13
14:48
(34) я предлагаю думать говолой и изучать инструмент которым пользуешься.
36 Aprobator
 
23.07.13
14:48
+(35)а не искать оправдания своему незнанию.
37 Stim
 
23.07.13
14:49
(35) да-да. Примерно так же, как ты пользуешься русским языком)
38 Dethmont
 
23.07.13
14:51
Перевод типа Булево в строку в пределах одного контекста выполнения само по себе бред
правильный ответ в (18)
39 Aprobator
 
23.07.13
14:51
(37) нормально я им пользуюсь. Когда быстро набираю иногда по клавишам промахиваюсь не более того.
40 Поросенок Петр
 
23.07.13
14:51
Вообще основная волна вскрытия копрокода прокатилась по мисте после изменения представления типов в 8.2. Что-то вы запоздали.
41 Dethmont
 
23.07.13
14:53
(40) +100500
42 Ненавижу 1С
 
гуру
23.07.13
14:53
не ожидал от Stim
43 Ненавижу 1С
 
гуру
23.07.13
14:54
(40) думаешь в следующей версии они уберут НайтиПоРеквизиту?
44 Maxus43
 
23.07.13
14:55
(43) конфигуратор уберут в следующей версии. Доступ туда будет только после теста IQ
45 Dethmont
 
23.07.13
14:56
(43) Миста взорвется от наплыва =)))
46 Stim
 
23.07.13
14:57
(38) ничего не бред. Бред - это когда Представление значения Истина равно Да
47 Dethmont
 
23.07.13
14:59
(46) Зачем переводить БУЛЕВО в представление?
Завтра ИСТИНА будет = "Угу", ЛОЖЬ = "Неа"
48 Поросенок Петр
 
23.07.13
14:59
(43) НайтиПоРеквизиту очень годная функция для разовых произвольных алгоритмов. Написал, запустил и выбросил.
49 Maxus43
 
23.07.13
14:59
(46) бред опираться на представление...
помню овнокод при ситуации (40), по слову ДокументСсылка в представлении типа определяли док это или справочник
50 Stim
 
23.07.13
15:02
(47) ну как минимум должно быть можно указывать в запросе ГДЕ Условие = Угу.
51 Ненавижу 1С
 
гуру
23.07.13
15:03
(50) он еще и упирается, марш на дубовый!
52 Поросенок Петр
 
23.07.13
15:03
Теперь мы путаем литералы и представления. Уже бы тихо слил ветку...
53 Aprobator
 
23.07.13
15:07
(50) убил - наповал просто.
54 Stim
 
23.07.13
15:07
(52) хотелось бы более однозначной обратной связи между значением и представлением булевного значения.
55 ДенисЧ
 
23.07.13
15:07
(54) Ты что, бухнул уже?
56 Maxus43
 
23.07.13
15:08
(54) представление для пользователей
57 Dethmont
 
23.07.13
15:11
ГДЕ Представление(Условие) = "Угу"
58 Ненавижу 1С
 
гуру
23.07.13
15:13
(54) такого не может быть, ибо эта функция не инъективна на множестве всевозможных значений (всех типов)
59 VitShvets
 
23.07.13
15:16
запрос... ГДЕ " + Формат(Истина, "БЛ=Ложь; БИ=Истина") + "...
Но обычно делают
ГДЕ 1=1
   + " ?(ВПараметреЕстьЧтоТо, " И " + ТекстУсловия, "") + "
60 Stim
 
23.07.13
15:17
(56) почему преобразование в строку любого значения дает тот же визуальный результат, кроме булева?
В чем был смысл отделять булево от остальных значений?
61 VitShvets
 
23.07.13
15:18
(60) Пользуй Формат(ПеременнаяТипаБулево, "БЛ=Ложь; БИ=Истина")
62 Serginio1
 
23.07.13
15:19
XmlСтрока(Истина)="true"
63 Maxus43
 
23.07.13
15:20
(60) не только булево поменялось, представление ссылочных объектов тоже поменялось. Ну и разрабы 1с не могли и представиьт такого копрокода (0) есно
64 Поросенок Петр
 
23.07.13
15:20
Таки ощущение что завтра суббота.
65 Stim
 
23.07.13
15:21
+ почему нельзя было по умолчанию оставить Строка(Истина)= Истина, а представление пользователю оставить в Формат() ?
66 Ненавижу 1С
 
гуру
23.07.13
15:21
(60) приведи пример "любого" такого значения
67 Stim
 
23.07.13
15:24
(66) число, дата, любые ссылки
68 VitShvets
 
23.07.13
15:30
(65) Потому что булево в SQL лежит как 0х00 и 0х01. Как показать пользователю это безобразие выбирает автор прикладного решения. В общем случае платформа 1С показывает булево в виде, понятном человеку далёкому от ИТ, т.е. "Нет" и "Да".
(66) Неправда. число лежит как число, т.е. например 1000. Но Строка(1000) в представлении 1С будет "1 000", что не равно "1000". Про ссылочные типы воопще молчу - в таблицах это фигня вида 0xA162BED7F0A1BFC747ABD582645C3435
69 Serginio1
 
23.07.13
15:30
(67) Которые зависят от региональных настроек. XMLСтрока более дает однозначное представление
70 DS
 
23.07.13
15:31
(67) Ни то, ни другое, ни третье...
71 VitShvets
 
23.07.13
15:31
*(66) -> (67)
72 Maxus43
 
23.07.13
15:31
(67) ты программист или уборщица в конце концов? Работать надо с данными, а не с текстом
73 acsent
 
23.07.13
15:32
(69) за код с использованием представления нужно по рукам бить битой
74 ДенисЧ
 
23.07.13
15:32
(67) Ни число, ни дата - не являются жёстко фиксированными при выводе.
А с 8.3 - и ссылки тоже.
75 Stim
 
23.07.13
15:38
(74) да. И здесь кроется еще одна проблема - в преемственности. Использовать Строка(Истина) плохо, ок. Но в 8.1 оно работает и выдает однозначный результат "Истина". Не должно быть такого, чтобы при смене платформы того же семейства переставал работать функционал.
76 Maxus43
 
23.07.13
15:39
(75) не должно быть быдлокода. в типовых же такого нет? О преемственности думают заранее
77 Starhan
 
23.07.13
15:40
(75) во первых функциональность.
во вторых функциональность работает, не работает твой код :)
78 Stim
 
23.07.13
15:41
(76) типовые - не образец идеального кода. При всех ими принятых стандартов, ошибок у них много, и некоторые довольно критично к тиражируемым решениям
79 Starhan
 
23.07.13
15:42
(76) в типовых тоже пришлось менять перед переходом :)
Где то даже были рекомендации по проверке своего кода перед переходом с 8.1 на 8.2
80 Stim
 
23.07.13
15:42
*критичны
81 Maxus43
 
23.07.13
15:43
(78) конечно типовые не идеальны, но такого откровенного надругательства над здравым смыслом там нет
(79) ну там функционал менялся... тоже лопатил УПП 1.2 всю, чтоб режим совместимости снять)
82 ДенисЧ
 
23.07.13
16:02
А кстати, подскажите, как статья на ИТС называется, про проверку при переходе с 81 на 82?
83 Wobland
 
23.07.13
16:03
(75) по-моему, это физический дефект мозга
84 Wobland
 
23.07.13
16:03
+(83) особенно в сочетании с (0)
85 EvgeniuXP
 
23.07.13
16:08
Да - да? - да-а-а-а :)
86 1s_ivan
 
23.07.13
16:36
Stim, спасибо за тему, кому-то она наверняка сбережет драгоценное время.
Wobland, Вам понравится если после каждого вашего поста или темы кто-то будет писать "иди в сад - учи букварь", "откуда ты такой умный вылез" и прочие уничижения. Я не понимаю причин, разводить тут неадекватный вопросу взрыв эмоций. Мне думается, этот форум нужен для общения и взаимопомощи коллег, а не как ролевая игра "тролли против всех".
Давайте уважать друг друга. Извините что так много букв. Спасибо за внимание.
87 Maxus43
 
23.07.13
16:39
айайай Wobland, веди себя культурно
88 ДенисЧ
 
23.07.13
16:40
(86) А ты кто такой, давайдосвиданье...
89 Wobland
 
23.07.13
16:43
(86) автор фееричен в гуманитарности своего взгляда. никакого оправдания тут быть не может
90 Wobland
 
23.07.13
16:43
+(89) с одной оговоркой: автор считает себя программистом
91 1s_ivan
 
23.07.13
16:53
Ребята, мужчины, господа, товарищи и проч. - вы нарушаете правила форума пункт 1 и 7. Цитирую:
1. Не ругайтесь и не оскорбляйте других.
...
7. Соблюдайте общепринятые нормы морали, права и сетевой этикет.
93 hhhh
 
23.07.13
17:01
(91) ну просто все разбегутся отсюда. Вы ведь предлагаете скукотищу, мертвечину.
95 1s_ivan
 
23.07.13
17:06
(93) Вовсе нет, хотите драйва, можно порешать кто сильнее Чак Н. или 1с 6.0.  Вроде в теме форума, но есть пространство для беседы (кто помнит 1с6).
96 Stim
 
23.07.13
21:01
(91) забей, чувак) это миста. укуси другого, пока не укусили тебя. соревнования по 22см без повторов
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.