Имя: Пароль:
1C
1С v8
"Истина" теперь - "Да" в 8.2 (без режима совм. с 8.1)
0 Stagor
 
21.06.12
18:13
Сообщить(Строка(Истина));    

в реж. совм. результат "Истина"
в без реж. совм. результат "Да"

и зачем это нужно было делать?
много что стало глючить!

Есть способ заставить переводить в строку, как и раньше в новом режиме?
1 andrewks
 
21.06.12
18:16
"много что стало глючить! "  
а нехер было быдлокодить
2 kosts
 
21.06.12
18:16
Что стало глючить?
3 Stagor
 
21.06.12
18:17
(1) это ты 1С-у пишешь или мне?
4 Юрий Лазаренко
 
21.06.12
18:17
(1) +200500
(0) Формат применяй, там есть и "Да", и "Истина" и даже "Мамой клянусь" при желании
5 PR
 
21.06.12
18:17
(1) +1
6 Stagor
 
21.06.12
18:18
(2) всё то, что использовало конвертацию из типа булево в строку
7 Kreont
 
21.06.12
18:18
(0) Тебе еще повезло, просто для укр.локали та же база будет давать "так" или "істина" :)))
(1) вот тут согласен, сам пару раз на таком попался :)
8 Stagor
 
21.06.12
18:19
(1) -1, во первых с чего ты взял, что я разбираю свой код?
9 PR
 
21.06.12
18:19
(6) И как булево зависит от всяких "Да", "Истина" или "Ну точно мамой клянусь!"?
10 PR
 
21.06.12
18:20
(8) А с чего ты взял, что он сказал это в твой адрес?
11 Stagor
 
21.06.12
18:20
(9) Булево принимает значение "Истина" и "Ложь", почему оно должно конвертироваться в жаргон?
12 Stagor
 
21.06.12
18:22
(10) если не в мой, то тот вряд ли прочтет?
13 andrewks
 
21.06.12
18:22
(8)  ты давай, озвучивай, что перестало работать. а то какой-то пустой вброс
14 PR
 
21.06.12
18:24
(11) Да ты че, правда что ли? :)))
То есть "Таки да" и "Да ну шо вы говорите" я сделать не смогу вместо "Истина" и "Ложь"? :))
15 Serg_1960
 
21.06.12
18:24
(0) А "глючный" код можно озвучить, а то я не вьезжаю?
16 PR
 
21.06.12
18:24
(12) Ну не прочтет и что?
17 acsent
 
21.06.12
18:25
(0)че индусский код писал?
if String(Bool).length = 5
18 andrewks
 
21.06.12
18:25
(15) Если Строка(Флаг)="Истина" Тогда...  )))
19 PR
 
21.06.12
18:25
(15) Да какой-то лапоть написал что-то типа
Если Строка(Переменная) = "Истина" ... :))
20 Stagor
 
21.06.12
18:26
(13) И как коротко написать след. код?

Текст = Текст + Строка (Док.Реквизит);

Это не подходит:

А = Формат(Истина, "БЛ=Отсутствует; БИ=Доступен");
21 acsent
 
21.06.12
18:27
почему не подходит?
22 PR
 
21.06.12
18:27
(17) if ?(String(Bool).length = 5, True, False) = True
23 acsent
 
21.06.12
18:28
(22) это был самый известный идусский код. как говорится классика
24 andrewks
 
21.06.12
18:28
(20) извини, но моя твоя не понимать.

попробуй переформулировать вопрос
25 PR
 
21.06.12
18:29
(20) Текст = Текст + Формат(Док.Реквизит, "БЛ=Ложь; БИ=Истина");
26 Serg_1960
 
21.06.12
18:29
Да, уж... озвучил код, так озучил :) Теперь понятно чего у него "не работает" :))
27 Stagor
 
21.06.12
18:30
(25) прошу прощения, код такой
Текст = Текст + Строка (Док[Реквизит]);

Реквизит-ы разных типов :)
28 Stagor
 
21.06.12
18:31
ну, че всех ветром сдуло?
29 acsent
 
21.06.12
18:32
(27) код в 25 дасто тоже самое
30 PR
 
21.06.12
18:32
(27) Мля, ну тогда да, совершенно другой код.
Текст = Текст + Формат(Док[Реквизит], "БЛ=Ложь; БИ=Истина");
31 Serg_1960
 
21.06.12
18:32
Неявное преобразование "Текст + Док[Реквизит];"
32 Птах
 
21.06.12
18:33
Спасибо, поржал, пятнично! xD
33 andrewks
 
21.06.12
18:33
(27) и что, сложно код из (25) подправить?
34 andrewks
 
21.06.12
18:34
(30) предлагаю даже так:
Текст = Текст + ?(Док[Реквизит],"Истина","Ложь");

а то 1С в 8.3 опять чё-нить поменяет, и автор опять с придёт воплями "не работает!!!"
35 Stagor
 
21.06.12
18:36
(30) Не знал, что "Формат" не обращает внимание на другие типы, думал, что в этом примере только с Булевым работает!
36 Stagor
 
21.06.12
18:37
(34) С точки зрения логики вариант "Текст = Текст + Строка(Док[Реквизит]);"
то же разрешен семантически и должен работать верно!
37 Stagor
 
21.06.12
18:37
но 1С решила поменять логику работы "по умолчанию", от этого и проблемы!
38 andrewks
 
21.06.12
18:38
(36) а что, он работает неверно? ошибку выдаёт?
39 PR
 
21.06.12
18:38
(34) Да 1С поменяла-то по сути настройки базы по представлению булево по-умолчанию, это и раньше можно было вручную сделать.
40 PR
 
21.06.12
18:38
(35) Я не понял, что ты сказал.
41 Stagor
 
21.06.12
18:39
(33) не сложно, если бы он был в 1-м месте и в 1-й обработке.
Так, похожие конструкции из старых обработок, написанных под 8.1 часто встречаются!
42 PR
 
21.06.12
18:39
(36) Верно — это как?
43 PR
 
21.06.12
18:39
(37) А может просто ты недостаточно квалифицирован, а не зеркало кривое?
44 PR
 
21.06.12
18:40
(41) Ну, значит... эээ... не профессионалы их писали :))
45 Stagor
 
21.06.12
18:41
(42) Ты меня, что на работу принимаешь? Я не знал, что Формат применяем к логическому типу, думал только к числовому, и по одному этому нельзя судить о квалификации в целом, не согласен?
46 Stagor
 
21.06.12
18:42
(44) Писали правильно - в рамках разрешенной семантики, и такая конструкция работала.
47 andrewks
 
21.06.12
18:42
(45) лови бонусы, я сегодня добрый:  Формат ещё может работать с датой.  и ни в коем случае не открывай синтакс-помощник!
48 andrewks
 
21.06.12
18:43
господа, нас троллят
49 PR
 
21.06.12
18:43
(45) Он еще и к дате применяем, прикинь :))
Про твою квалификацию я судить не могу, но понять то, что она не высокая, мне информации вполне достаточно :))
50 Infsams654
 
21.06.12
18:44
Держитесь правил обмена
<Свойство Имя="НеСписывать" Тип="Булево"><Значение>true</Значение>
И xml вряд ли поменяется, т.к. еще из 7-ки идет
51 Stagor
 
21.06.12
18:44
Формат(<Значение>, <ФорматнаяСтрока>)
Параметры:

<Значение> (обязательный)

Тип: Число; Дата; Булево. Форматируемое значение.


В моем примере Реквизит может иметь значение ссылка
52 PR
 
21.06.12
18:44
(46) Не люблю людей, которые оправдывают свой непрофессионализм тем, что и так работало и лезут в бутылку :))
53 PR
 
21.06.12
18:48
(51) Тогда тебе нужно писать например так
Если Док.Реквизит = Истина Тогда
   Текст = Текст + "Истина";
ИначеЕсли Док.Реквизит = Ложь Тогда
   Текст = Текст + "Ложь";
Иначе
   Текст = Текст + Строка(Док.Реквизит);
КонецЕсли;

или проверять тип и для булево брать формат, а для остальных строку.
А вообще тогда бы еще и дату и число нужно форматировать по хорошему.
54 andrewks
 
21.06.12
18:50
Форматы=Новый Структура
.Булево="формат для булева"
.Число="формат для числа"
.Дата="формат для даты"

+ ТипЗнч()
55 PR
 
21.06.12
18:50
+(53) А то кто-нить поставит в качестве разделителя тысяч в 1С например "ё" и все, капец, фирма банкрот.
56 Stagor
 
21.06.12
18:51
(53) Да, я знаю! Но в итоге и в твоем примере есть "Строка(Док.Реквизит);" описанный "быдлокод", как утверждал в (1)
57 PR
 
21.06.12
18:52
(56) Ты не путай теплое с мягким.
В моем случае это действует тогда, когда тип не булево, а, например, ссылка на что-то.
58 Stagor
 
21.06.12
18:54
(30) Твоя конструкция не работает (исходя из документации) с Перечислением, к примеру, вернее работает, но дает не тот результат!
(57) И, что это меняет? С булевым это то же разрешено применять!
59 andrewks
 
21.06.12
18:55
пойду я лучше с мелким в футбол попиннаю
60 PR
 
21.06.12
18:56
61 Stagor
 
21.06.12
18:59
Самый короткий и логичный код
"Текст = Текст + Строка(Док[Реквизит]);"
он не запрещен семантикой, и верно работал в 8.1 и по идее не должен был поменять свою функциональность и в 8.2, но 1С-у очень хотелось

К примеру, с тем же перечислением код приведения к строке мало кто из вас знает, поскольку не сталкивался, но я по этой причине не кого не пытаюсь унизить, что у него низкая квалификация, это я к  andrewks и PR
62 PR
 
21.06.12
19:01
(61) Ты серьезно утверждаешь, что я не смогу преобразовать значение перечисления в строку?
LOL
63 Stagor
 
21.06.12
19:01
(62) жду
64 MrStomak
 
21.06.12
19:02
(61) Это типа с метаданных брать синоним - крутое достижение?
65 PR
 
21.06.12
19:02
(63) Что ты ждешь, старости? :))
66 PR
 
21.06.12
19:03
(64) Метаданные? Что это? :))
67 PR
 
21.06.12
19:03
(64) Имя, а не синоним :))
Синоним можно и через Строка(Значение) получить :))
68 Stagor
 
21.06.12
19:04
(67) имя, конечно
69 acsent
 
21.06.12
19:04
(61) 1с сто тыщ раз предупреждало что опираться на строковое представление небезопасно.
Ты сам себя наказал
70 MrStomak
 
21.06.12
19:05
(67) Черт - моя низкая квалификация теперь тоже разоблачена!!!
71 Stagor
 
21.06.12
19:05
итак, кто первый приведет достанет имя из перечисления?
у меня на это ушло 30 секунд.
72 Infsams654
 
21.06.12
19:06
(67) (68) для перечислений уж в БП функцию давно сделали: Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления)
73 acsent
 
21.06.12
19:08
XMLСтрока(ПеречислениеСсылка)
74 Infsams654
 
21.06.12
19:09
(73) не-ка
75 Stagor
 
21.06.12
19:09
(72)

Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт
   
   ИмяЭлемента = Строка(ЗначениеПеречисления);
   Для каждого ЭлементПеречисления Из Метаданные.Перечисления[ЗначениеПеречисления.Метаданные().Имя].ЗначенияПеречисления Цикл
       Если ЭлементПеречисления.Синоним = Строка(ЗначениеПеречисления) Тогда
           ИмяЭлемента = ЭлементПеречисления.Имя;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Возврат ИмяЭлемента;
   
КонецФункции
76 acsent
 
21.06.12
19:10
(74) именно так !!!
77 PR
 
21.06.12
19:11
(69) Ты ничего не понимаешь! Этот код раньше работал! Пока 1С не поменяла все с ног на голову! :))
78 PR
 
21.06.12
19:12
(75) LOL :))))))))))))))))))))))))))))))))))))
79 PR
 
21.06.12
19:13
Значение.Метаданные().Имя
80 Stagor
 
21.06.12
19:13
(78) Это стандартный код, и он не оптимален!
81 PR
 
21.06.12
19:14
ТС не может быть таким... эээ... таким :))
Это ясен пень развод :))
82 Stagor
 
21.06.12
19:14
(79) не то
83 fisher
 
21.06.12
19:16
(0) Строковые представления никогда к семантике языка не относились. Кто завязывался на строковые представления типов тоже заработали попоболь при очередном переходе.
Можно юзать XMLСтрока(), это хотя бы на конкретную схему завязано.
Но вообще булево всегда и везде при разного рода конвертациях не поддерживающих совместимость типов на этом уровне, преобразовывали к числу. Практически все среды (в т.ч. и 1С) понимают 0 как ложь и все остальное как истину и умеют преобразовывать явно и неявно туда и обратно.
84 acsent
 
21.06.12
19:16
(79) это имя перечисления, а не значения перечисления
85 MrStomak
 
21.06.12
19:17
(79) Не, всё правильно, надо в цикле перебрать.
86 Infsams654
 
21.06.12
19:20
(76) да как же, сударь?
Перечисление: ВидыКонтактныхЛиц
Имя: КонтактноеЛицоКонтрагента
Значение: Контактное лицо контрагента

XMLСтрока(ПеречислениеСсылка) возвращает: Контактное лицо контрагента

(79) по началу, еще в 8.1. перебирал, а теперь зачем, если, есть уже в типовых (72):

// Предназначена для получения имени элемента перечисления по значению.
//
// Параметры:
//    Элемент перечисления.
//
// Возвращаемое значение:
//    Строка - имя элемента перечисления в метаданных.
//
Функция ПолучитьИмяЭлементаПеречисленияПоЗначению(ЗначениеПеречисления) Экспорт
   
   ИмяЭлемента = Строка(ЗначениеПеречисления);
   Для каждого ЭлементПеречисления Из Метаданные.Перечисления[ЗначениеПеречисления.Метаданные().Имя].ЗначенияПеречисления Цикл
       Если ЭлементПеречисления.Синоним = Строка(ЗначениеПеречисления) Тогда
           ИмяЭлемента = ЭлементПеречисления.Имя;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   Возврат ИмяЭлемента;
   
КонецФункции // ПолучитьПериодичностьДляЗапросаПоЗначениюПеречисления()
87 Infsams654
 
21.06.12
19:24
Вот еще лучше
// Получает имя значения перечисления как объекта метаданных
//
// Параметры:
//  Значение - значение перечисления для которого необходимо получить имя перечисления
//
// Возвращаемое значение:
//  Строка - имя значения перечисления как объекта метаданных
//
Функция ИмяЗначенияПеречисления(Значение) Экспорт
   
   ОбъектМетаданных = Значение.Метаданные();
   
   ИндексЗначения = Перечисления[ОбъектМетаданных.Имя].Индекс(Значение);
   
   Возврат ОбъектМетаданных.ЗначенияПеречисления[ИндексЗначения].Имя;
   
КонецФункции
88 Stagor
 
21.06.12
19:25
(87) Ага! Именно этот ответ я и ждал от PR! Но он очевидно программировать не умеет, так как директор :)
89 Infsams654
 
21.06.12
19:29
А на счет представления булево строкой - такие проблемы действительно возникают при самописном обмене или про работе по COM с базой другой версии.

Так что, тут надо бы придерживаться каких-то правил.
См. (50)
90 pumbaEO
 
21.06.12
19:30
Код из (75) на кривой локализации в конфигурации с гордым клеймом "1С совместимо" для определнных синонимов не работает.
91 Stagor
 
21.06.12
19:31
(90) это я скопировал из русской локализации 1С:Бухгалтерия 2.0 для 8.2
92 PR
 
21.06.12
19:31
(82), (84) А, ну да, пардоньте :))

Значение.Метаданные().ЗначенияПеречисления[Перечисления[Значение.Метаданные().Имя].Индекс(Значение)].Имя
93 PR
 
21.06.12
19:32
(85) С фига ли? :))
94 PR
 
21.06.12
19:33
(88) Ржу, не могу :)))
95 Stagor
 
21.06.12
19:33
(92) баян, и долго думал!
96 Stagor
 
21.06.12
19:34
(94) Хорошо, копи-паст быстро делаешь!
97 PR
 
21.06.12
19:34
(95) Да я не думал, я скопипастил из (87) :)))
98 PR
 
21.06.12
19:35
И что сегодня не пятница :)))
99 andrewks
 
22.06.12
17:39
(61) перечисление в строку - верх виртуозности?  ржунимагу

кстати, и тут тебя в (73) переплюнули - одной строкой, и никакой шушеры
100 Stagor
 
22.06.12
17:40
100..?
101 Stagor
 
22.06.12
17:41
(99) Спорим, ты про этот способ не знал?
102 PR
 
22.06.12
17:43
(101) Сынок, если уж писать, как ты написал, то тогда еще короче
Текст = Текст + Док[Реквизит];
103 Stagor
 
22.06.12
17:44
(102) с этого все и началось, сынок!
104 andrewks
 
22.06.12
17:45
(101) про хмлстроку-то? бездоказательно, как и то, знал ли про этот способ ты до того, как его акцент запостил
105 Stagor
 
22.06.12
17:46
(104) Я не знал, но не знание этой фичи, не оправдывает нападки на мою квалификацию!
106 PR
 
22.06.12
17:46
(103) С чего с этого?
107 PR
 
22.06.12
17:46
(105) Как можно нападать на то, чего нет? :))
108 Stagor
 
22.06.12
17:46
с подобной строки
109 andrewks
 
22.06.12
17:47
(105) короче, фишка в том, что зарубку, по которой ты мерился, я сделал, стоя с другой стороны стола
110 Stagor
 
22.06.12
17:47
(107) в каждой пустыне есть оазис, но не каждый верблюд его может найти :)
111 PR
 
22.06.12
17:48
(108) Ты тугой что ли? Причем здесь подобная строка?
Я говорю про то, что
Текст = Текст + Док[Реквизит];
короче, чем твое
Текст = Текст + Строка(Док[Реквизит]);
а результат тот же.
112 Stagor
 
22.06.12
17:50
(111) запись не принципиальна :)
113 Stagor
 
22.06.12
17:50
(109) сутки стоял? :)
114 vmv
 
22.06.12
17:50
(0) надо думать когда что-то делаешь сразу, а теперь только можешь повесить себя за яйца за г-код
115 PR
 
22.06.12
17:51
(110) Заметь, не я расставил точки над ё :))
116 jk3
 
22.06.12
17:51
Спасибо за ветку, поржал ))

А так, +(1)
117 Stagor
 
22.06.12
17:54
(116) примитивное у тебя Ч.Ю. дальше (1) пункта не читал!
118 Stagor
 
22.06.12
17:55
(115) Слишком много времени тратишь - лучше укажи своим программистам на их высокую квалификацию!
119 Mafoni
 
22.06.12
17:56
(0) у тя в региональных настройках (Конфигуратор -  Админитсрарование - Региональные настройки ИБ) какой язык выбран  ?  и чего тама заполнено вообще ?
120 Stagor
 
22.06.12
18:00
ничего не стоит - пустые
121 Stagor
 
22.06.12
18:00
наверно слетели (
122 Stagor
 
22.06.12
18:02
(119) Спасибо, за подсказку, кстати!
123 PR
 
22.06.12
18:02
Поставь то. что тебе нужно и возрадуйся :))
124 Stagor
 
22.06.12
18:04
(123) это не твоя заслуга!
125 PR
 
22.06.12
18:05
(124) Ну да, (39)-то Пушкин написал :))
126 Asirius
 
22.06.12
18:06
Кстати да... поддержу топикстартера

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

Цикл по реквизитам
...
Текст = Текст+Строка(Док[Реквизит]);
127 PR
 
22.06.12
18:08
(126) Прочти ветку целиком и собери на свой счет все эпитеты, отвешенные автору :))
128 Stagor
 
22.06.12
18:16
в (39) нет решения проблемы только факт проблемы!
129 PR
 
22.06.12
18:18
(128) В (39) до конца не разжевано, да :))
Нужно было пару раз двинуть челюстями :)) Если бы были :))
130 MrStomak
 
22.06.12
18:19
(128) Т.е. про влияние региональных настроек тебе недостаточно? Нужно чтобы прям носом тыкали?
131 Mafoni
 
22.06.12
18:19
(121) даже Язык (Страна) не выбран ????
132 Mafoni
 
22.06.12
18:20
(130) щас тыкнем :)
133 Stagor
 
22.06.12
18:21
(129) смысл в такой помощи был нулевой!
134 PR
 
22.06.12
18:22
(133) Для _тебя_ да, согласен :)))
135 Stagor
 
22.06.12
18:25
(131) страна выбрана, а вот все остальные настройки слетели, та как неделю назад все работало. Может кто специально стер... хотя вряд ли!
(130) про влияние региональных настроек в (39) не было
136 Stagor
 
22.06.12
18:27
что поделать, народу типа (1) проще написать "а нехер было быдлокодить", чем конкретику написать!
137 PR
 
22.06.12
18:27
(135) Я не верю, что ты настолько тугой.

Раньше на уровне платформы умолчаниями были Истина и Ложь, потому все и работало без заполненных настроек.
Потом опять же на уровне платформы умолчаниями стали Да и Нет, потому все и заработало по-другому, опять же без заполненных настроек.
138 Stagor
 
22.06.12
18:30
(137) И, что в такой форме сложно было написать?
139 andrewks
 
22.06.12
18:30
всё ещё кипятите? )))
140 PR
 
22.06.12
18:31
(138) Ты не понимаешь мотивов людей, помогающих на форуме таким как ты :))
141 Stagor
 
22.06.12
18:32
(140) у всех свои мотивы
142 PR
 
22.06.12
18:40
(141) Именно.
И мало кто хочет просто ответить на вопрос, да еще невежде.

Мне вот, например, важно, чтобы человека задело за живое, в этом случае больше шансов, что ему станет стыдно за свое невежество и он не забудет те знания, которые я ему дал, и может самостоятельно подтянет свой уровень.
Мне же в этом случае не будет жалко своего потраченного драгоценного времени, в итоге не выброшенного под ноги бездарю :))
143 Zaid
 
22.06.12
18:44
Спасибо, парни, за отличное настроение ))
Отдельно респект PR и andrewks!
144 Zaid
 
22.06.12
18:45
+(143) А Stagor нуб и опозорился...
145 Mafoni
 
22.06.12
19:02
(135) - все остальные настройки должны быть пустыми.

И не забывая про неявное преобразование типов да собственно про явное тоже не забывай!

Я давно пользуюсь - Формат. С тех пора как вот так же пару раз обжегся - так что и тебе советую пользоваться  форматированием .
146 SanGvin
 
22.06.12
19:42
Пятница удалась хД Поржал, спасибо :)
147 Пушкин
 
23.06.12
02:14
(125) Пушкин ничего не писAл.
(143) Ты всегда получаешь кайф, от того что новичков грязью поливают?

Господа, мне кажется вы как в детском саду!
148 Зеленый Кот
 
23.06.12
08:04
ну и как правильно псиать условия?
=Да
=Истина
или как-то еще?
149 i-rek
 
23.06.12
10:44
Хорош наезжать на Stagor, каждый кто тут посещает не только лайф-темы знает, что это старинный мегаспец
150 Адинэснег
 
23.06.12
11:53
Ложь - Гамно
Истина - За*бись, я отвечаю
151 Адинэснег
 
23.06.12
11:54
152 PR
 
24.06.12
11:53
(148) Вообще-то всегда Истина или True и Ложь или False.
153 PR
 
24.06.12
11:53
(149) Смешно :))
154 Gepard
 
24.06.12
12:51
(0) а вот нечего булево с строками сравнивать