Имя: Пароль:
1C
1C 7.7
v7: Значок Амперсанд "&" в заголовке текстового реквизита на форме. Куда девается?
0 MWWRuza
 
гуру
18.01.23
21:10
Добрый день!
Я знаю, что "семерка еще сырая", об этом можно мне не рассказывать.
То-ли очередной баг-глюк, то-ли я чего-то не понимаю...
Есть некая строка, в которой присутствует символ амперсанда - "&". в отладчике, и в ТЗ на форме отображается правильно:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-470.jpg

Но, почему-то эта-же строка, просто текстовым полем на форме прорисовывается методом: Форма.НаимНомПост.Заголовок(НаимНомПоставщика) без амперсанда...

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-469.jpg

Куда он девается? Есть какое-то огланичение на вывод подобных символов на формы?
Может их экранировать нужно, или выводить тегами как html - ???
Странно, семерка, вроде не должно такого быть, каких-то html-лов, или чего-то подобного там отродясь не было...
Но, факт.
Что я не так делаю?
1 MWWRuza
 
гуру
18.01.23
21:13
+(0) и в ТЗ на форме
Ошибся, не в ТЗ, а в строковом реквизите формы, см. второй скриншот, там это видно...
2 MWWRuza
 
гуру
18.01.23
21:17
+(1) а в строковом реквизите формы
Точнее даже в поле ввода. Вот:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-471.jpg
3 mikecool
 
18.01.23
21:19
я не знаю, но Ззакуп цена понравилось ))
4 MWWRuza
 
гуру
18.01.23
21:19
В ТЗ, кстати, тоже правильно эта строка отображается, только на другой форме. И текстовый комментарий на той форме тоже без амперсанда выводится....
5 MWWRuza
 
гуру
18.01.23
21:22
(3) А чего с ней не так? Я сам не курю, поэтому не обращал внимания... Ну, 101.44, при МРЦ 130... Какие-то третьесортные сигареты наверное... Это УПД реального клиента, сегодняшняя.
6 MWWRuza
 
гуру
18.01.23
21:25
+(5) И поставщик "серьезный", не левак - АО ТК "Мегаполис"
7 mikecool
 
18.01.23
21:27
(5) две З в начале - норма?
8 MWWRuza
 
гуру
18.01.23
21:35
(7) Глаза сломал, искал в данных... Ничего не нашел. А там оказывается реквизит так подписан :-)
Это Ззззз не спроста! (С) ВинниПух :-) (правда там "жжж" было, ну ды ладно)...

Спасибо, глаз замылился, не обращал внимания :-(
Исправлю. Но, это к проблемме не относится...
9 Злопчинский
 
18.01.23
21:43
Конфигуратор-Файл-Новый-Внешняяобработка - свойства кнопки Сформировать - посмотри внимательно, может это наведет тебя на мысль
10 Злопчинский
 
18.01.23
21:44
как говорится "в мире слепых и одноглазый - король"
11 Злопчинский
 
18.01.23
21:51
фиг его знает что ты там делаешь, но штатно это так выглядит

//*******************************************
//
Процедура ПриОткрытии()
    
    стрТекст = "ТутБудет&Амперсанд";
    Форма.тТекст.Заголовок("ТутБудет&Амперсанд");

КонецПроцедуры // ПриОткрытии()

https://i.ibb.co/GJJb07p/2023-01-18-215039.png
12 Злопчинский
 
18.01.23
21:51
13 MWWRuza
 
гуру
18.01.23
21:58
Ну, да, в кнопках символ для комбинации "Альт+ЭтотСимвол" амперсандом обозначается, и в заголовке кнопки подчеркивание при этом ставится.
Но, это-же не кнопка...
А в твоей обработке, как ты сделал подчеркивание - ?
У меня, ни "S" ни "r" не подчеркиваются, просто амперсанд не выводится, как будто его и нет.
14 Злопчинский
 
18.01.23
22:05
(13) все в (11)
даже если
стрТекст = "Тут ""Будет&Амперсанд""";
подчеркивание будет.
может у тебя шрифт такой, что не отображает, поставь на стандартный
15 Злопчинский
 
18.01.23
22:06
(13) "У меня, ни "S" ни "r" не подчеркиваются, просто амперсанд не выводится, как будто его и нет."
созлдавать проблемы - это тоже надо уметь...
16 MWWRuza
 
гуру
18.01.23
22:11
(13) А в твоей обработке, как ты сделал подчеркивание - ?

Все, понял, через функцию:

Функция ВывестиСтроку()
    Возврат "ТутБудет&Амперсанд";
КонецФункции    

У меня тоже подчеркивает.
В пробной обработке.
А в рабочей базе, почему-то нет. Шрифт стандартный.
Ну, да ладно, не умеет семерка выводить амперсанд в загоровки реквизитов, приму как аксиому :-(
В общем, не очень то и хотелось... Просто бросилось в глаза, решил понять почему так.
17 MWWRuza
 
гуру
18.01.23
22:13
(11) А что я там делаю? Ничего особенного, на самом первом скриншоте видно. Все штатно.
18 MWWRuza
 
гуру
18.01.23
22:23
(16) приму как аксиому :-(

Ну, вообще, это баг по большому счету. Видимо, в ядре 7.7(платформе :-) ) одна и та-же функция отображения заголоака текстового реквизита(надписи) и заголовка кнопки используется. А по хорошему, должны быть разные. Функционал то у надписи и у кнопки разный. С реквизитом "поле ввода" такого не происходит, там амперсанд выводится без проблемм. А для надписи разрабочики просто поленились делать отдельную функцию вывода заголовка...
19 MWWRuza
 
гуру
18.01.23
22:40
А вот и хренушки!

Семерка - форера! :-)
Рано ее еще хоронить из-за какого-то амперсанда:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-472.jpg

Все работает, вот:
Функция ВывестиСтроку()
    Возврат "ТутБудет&&Амперсанд";
КонецФункции
20 MWWRuza
 
гуру
18.01.23
23:03
В рабочей, одна экспортная функция в ГМ:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-473.jpg
21 uno-group
 
19.01.23
09:45
& служебный символ используется для того чтобы повесить быстрый доступ к кнопке на клавишу следующую за этим символом. Видать решили не заморачиваться и во всех элементах диалога его одинаково обрабатывают. Боюсь что даже двойной & может в каких то случаях ломать клавиши быстрого доступа ИМХО лучше не использовать а заменить на что то аналогичное.
Хитрый обход подобных трюков может привести к тому, что перестанет работать тестирование и исправление в конфигурации или будет не коректно отрабабывать
22 uno-group
 
19.01.23
09:48
Я сейчас не могу сделать тестирование из-за того что в свое время поборол Украинскую букву i Ї и вторую Г. Сейчас отловить и исправить все текстовые поля где пользователи их набили не реально хотя легко можно было с этим бороться на этапе ввода данных просто запретив их.
23 Волшебник
 
модератор
19.01.23
09:51
(21) А я говорил, что семёрка ещё сырая... Переходите на восьмёрку, там это реализовано.
24 uno-group
 
19.01.23
09:53
(23) Все что задокументировано, не баг это фича. А про & даже в желтых книжечках было. ;)
25 MWWRuza
 
гуру
19.01.23
11:25
Ну, реально амперсанд в наименовании справочника проходит нормально, и с тестированием вроде проблемм нет.
Другое дело - всякие непечатные символы, вроде GS1 от маркировки, действительно не проходят, при тестировании пишет про "не верное содержание текстового поля".
Вот: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-475.jpg Я специально, для примера, взял тестовую базу, в которой была попытка хранить коды маркировки с непечатными символами, в рабочих базах этого естественно уже давно нет
Но, по большому счету, и незачем их хранить в базе - достаточно хранить КИЗ, до первого символа GS1, а всякие "криптохвосты" и "индикаторы применения" они в базе и не нужны.
Амперсанд же довольно часто используется именно в наименованиях, типа "Проктер&Гембл", или "Пупкин&Компания", и сложно от этого куда-то деться.
Вот, в этой-же базе(тестирование которой на предыдущем скриншоте) например, там несколько позиций, в наименованиях которых есть амперсанд. При тестировании ошибок по этим полям нет.
А двойной амперсанд, просто использую при выводе текстовой надписи на экранную форму, реально там, в базе, один хранится. Форматирую строку перед выводом, функцией меняю в строке "&" на "&&"...
Естественно, заголовок клавиши я таким образом "курочить" не собираюсь, только надпись. А она в 7.7 не активна, это не восьмерка...
26 MWWRuza
 
гуру
19.01.23
11:29
Второй скриншот забыл :-) Вот: https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-474.jpg
27 АгентБезопасной Нацио
 
19.01.23
11:43
(25)  "только надпись. А она в 7.7 не активна, это не восьмерка..." - при желании...
28 MWWRuza
 
гуру
19.01.23
11:55
(27) Сделать можно все. Или почти все. А штатно, если не делать, ничего ради этого, то это просто надпись, не активная.

PS Кстати, проверил сейчас - кнопки с амперандом работают нормально на форме, при нажатии "Альт+буква", не зависимо от того, что на форме есть надпись в которой амперсанд перед такой-же буквой стоит.
https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-476.jpg
29 АгентБезопасной Нацио
 
19.01.23
12:07
(28) не люблю это слово - "штатно". особенно в качестве ограничительного условия.
30 MWWRuza
 
гуру
19.01.23
12:13
Откуда вообще возник вопрос - извращенцы из Мегаполиса, что-то перемудрили с экранированием символов в XML УПД, и одну из пачек сигарет передали в таком виде:
НаимТов="сигареты с фильтром "Parker<(>&<)>Simpson Red 100's", МТ 130,00 руб."
Зачем-то амперсанд взяли в круглые скобки, потом эти круглые скобки в свою очередт передали как теги в треугольных скобках... Да еще и апостроф в конце вкорячили...
Майкрософтовский ХМЛ-парсер, немного офигел от такого безобразия, и распарсил так:
НаимТовараУПД = "сигареты с фильтром "Parker<(>&<)>Simpson Red 100's", МТ 130,00 руб."
Не красиво...
Сначала хотел просто повырезать треугольные скобки и апостроф...
Но, амперсанд остается в круглых скобках...
Опять "не красиво" :-)
Написал такую функцию:
Функция ОчиститьОтЛишнихСимволов(Стр) // Исправление косяков экранировки спец. символов поставщиком
    Для Сч = 1 По СтрДлина(Стр) Цикл
        НачПозТега     = Найти(Стр, "<");
        ОстСтр         = Сред(Стр, НачПозТега + 1);
        КонПозТега     = Найти(ОстСтр, ">");
        НачСтр         = Лев(Стр, НачПозТега - 1);
        КонСтр        = Сред(ОстСтр, КонПозТега + 1);
        Если (НачПозТега = 0) И (КонПозТега = 0) Тогда
            Прервать;
        КонецЕсли;
        Стр         = НачСтр + КонСтр;
    КонецЦикла;    
//    Стр = СтрЗаменить(Стр, "<", "");
//    Стр = СтрЗаменить(Стр, ">", "");
//    Стр = СтрЗаменить(Стр, "&", "");
    Стр = СтрЗаменить(Стр, "'", "");
    Возврат Стр;    
КонецФункции
Так, получилось вполне удовлетворительно:
Стр = "сигареты с фильтром "Parker&Simpson Red 100s", МТ 130,00 руб."
Решил на этом и успокоиться, но тут заметил, что амперсанд в надпись на форму не выводится :-(
Вот и возник сабж :-)
31 Arbuz
 
19.01.23
14:19
Детектив. Есть ещё у семёрки порох в пороховницах... и ягоды в ягодицах )))
32 MWWRuza
 
гуру
19.01.23
16:22
Может несколько ОФФТоп... Но.
А как правильно с точки зрения не программного кода и всяких правил формирования XML и тому подобного,
а с точки зрения... Ээээ... Русским языком это даже не назвать, но, с точки зрения правильного написания наименований, содержащих "&" - амперсанд лолжен быто окружен пробелами или нет?
Т.е, как правильно: "Parker&Simpson" или "Parker & Simpson" - ?
Мегаполис вообще решили почему-то, что амперсанд надо взять в круглые скобки-??!!, а сами скобки еще и в треугольные, типа так: "<(>"... Понятно, что это бред и такого в наименовании быть не должно, но, если я уж нормализую наименование при загрузке, убирая эту лабуду, то как правильно - амперсанд отделять пробелами от остальных слов или нет?
Набрал в яндексе "проктер энд гэмбл", вышла куча ссылок, где "Procter & Gamble" через пробелы написано... Но, правильно ли это?
33 MWWRuza
 
гуру
19.01.23
16:28
На самих сигаретах непонятно написано, вот(картинка из интернета): https://avatars.dzeninfra.ru/get-zen_doc/142473/pub_5bfa45c16b2b7e00aaa1fbb1_5bfa46831e536c00abd99e6d/scale_1200
там перенос нав новую строку... Да и не одними этими сигаретами такая "нормализация" может ограничиться... Еще вполне может встретиться с другими товарами.
34 Злопчинский
 
19.01.23
16:30
Открой родное написание иностранной хрени. Официальное. Так и должно быть.
.
Как правильно
New York
New-York
NewYork
?
35 MWWRuza
 
гуру
19.01.23
16:40
Вроде, везде с пробелами пишут.
Добавил в функцию: Стр    = СтрЗаменить(Стр, "&", " & ");
Ни на что не влияет но пусть будет...
36 victuan1
 
20.01.23
08:03
Да, с пробелами. Символ & означает союз "and" (по-русски, "и"). А союз это самостоятельное слово, которое отделяется от соседних слов пробелами.
37 Arbuz
 
20.01.23
16:15
(36) Там всё несколько сложнее и правила английского языка чётко регламентируют когда использовать &, а когда and, они не равнозначны.
38 Курцвейл
 
20.01.23
16:22
(6) Кроме Мегаполиса других поставщиков сигарет в РФ нет.
39 Курцвейл
 
20.01.23
16:28
(37) Доступно & Всерьез
40 Arbuz
 
20.01.23
16:59
(39) Если это фирма организованная Доступно Ириной Петровной и Всерьез Муратом Ибрагимовичем то да.
41 MWWRuza
 
гуру
20.01.23
21:26
(38) Ну, по сути да... Есть еще СНС, но, как-то мелко... Но у того-же Мегаполиса, есть куча филиалов, в разных городах... И я не думаю,что эта "хренотень" в наименовании этих сигарет, заведена централизовано... Иначе, уже куча клиентов бы отзвонились, что не проходит(на самом деле, скобки и амперанд тут ни при чем, просто у меня в конфе SQL-лайт апостроф не понмает), но позвонили только одни.
42 Злопчинский
 
20.01.23
21:38
еще текстовая надпись если ее на маленькую букву "я" сделать - тоже занятно...
43 ДедМорроз
 
21.01.23
11:19
Символ & в Windows в заголовке окна - это отображение команды быстрого вызова через Alt.
Текстовое поле надписи выводит надпись в заголовок окна,поэтому - операционная система при выводе удаляет & и добавляет акселератор в таблицу акселераторов.
При нажатии Alt должна появиться черточка на следующем после & символа.
Раньше черточка была всегда,но потом придумали,что их можно скрывать до нажатия Alt - это,кстати,в настройках отключается.
Насколько я помню,два && подряд выведутся как один и механизм акселераторов не будет работать.
44 MWWRuza
 
гуру
21.01.23
16:00
(43) Да, все именно так.

(42) Эээээ..... А вот тут не понял, что с "я" не так - ? Вот скриншот, не вижу ничего необычного:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-477.jpg
45 ДедМорроз
 
21.01.23
16:41
В однобайтовой кодировке маленькая я - это символ 255,который,в некоторых случаях служебный.
46 Харлампий Дымба
 
23.01.23
10:44
(44) Если Форма.Реквизит.Заголовок("яИРебята") - всё нормально, но если задашь текстовый реквизит на форме и в Заголовке пропишешь "яИРебята" - будет пустота.
47 MWWRuza
 
гуру
23.01.23
17:13
(46) Ага. Все так и есть. В конфигураторе - есть, в режиме предприятия - нет:

https://content.foto.my.mail.ru/mail/m_w_w/_mypagephoto/h-478.jpg