Имя: Пароль:
1C
 
8.3.10 ВЫРАЗИТЬ(… КАК СТРОКА(…)),
,
0 daringer
 
02.08.17
08:37
Добрый день. В платформе 8.3.10 есть новая фишка:

При работе в клиент-серверном варианте, с использованием СУБД Microsoft SQL Server, в результате запроса, содержащего выражение ВЫРАЗИТЬ(… КАК СТРОКА(…)), выполняется дополнение результата операции пробелами до требуемой длины.

Я так понял придется анализировать всю конфу и если где то выраженное поле результата запроса сравнивается с каким то значением или пишется в БД, то придется переделывать, например использовать функцию СокрП. У кого нибудь возникли с этим проблемы? Как решали?
1 butterbean
 
02.08.17
08:39
эта фишка была еще в 8.0
2 daringer
 
02.08.17
08:42
(1) 8.0 не интересует.
3 Андрюха
 
02.08.17
08:43
Что-то не понял, честно говоря, где тут может вылезти проблема. Можно на примере?
4 butterbean
 
02.08.17
08:44
(2) это я к тому, что проверки и так уже везде должны быть
5 Работа имитируется
 
02.08.17
08:45
Впервые прочитал об этой проблеме. Очень взволнован. Что же нам делать? Может быть само рассосётся? Давайте пообсуждаем!
6 daringer
 
02.08.17
08:48
...
ВЫРАЗИТЬ(ВариантыОтчетов.Автор.Наименование КАК СТРОКА(1000)) КАК АвторПредставление,
...

Если Не ЗначениеЗаполнено(Вариант.ПредставлениеАвтора.Значение) И ЗначениеЗаполнено(СтрокаТаблицы.АвторПредставление) Тогда
            Вариант.ПредставлениеАвтора.Значение = СтрокаТаблицы.АвторПредставление;
КонецЕсли;

Т.е. Вариант.ПредставлениеАвтора.Значение будет некое значение + необходимое количество пробелов
7 Работа имитируется
 
02.08.17
08:58
Чем это плохо?
8 Гипервизор
 
02.08.17
08:59
(0) Какие в данный момент могут возникнуть проблемы если:
"в режиме совместимости с версией 8.3.9 поведение не изменилось"? Или у вас нетленка?
9 daringer
 
02.08.17
09:01
МЫ не используем режим совместимости
10 daringer
 
02.08.17
09:09
Допустим в реквизите "МойРеквизит" справочника хранится строка "Моя строка".
В результате запроса через ВЫРАЗИТЬ получили "Моя строка    "

Далее в справочнике ищем значение "Моя строка    " и не находим, т.к. старое значение было без пробелов. Т.о. подобные места нужно переделывать во всей конфе
11 Гипервизор
 
02.08.17
09:14
(10) Ну и сколько в вашей конфе подобных мест?
12 Buster007
 
02.08.17
09:20
Ну сделай ты СокрЛП и ищи.
Кроме того, если через Подобно попробовать искать, то скорее всего и строка с пробелами найдется
13 xaozai
 
02.08.17
09:24
ПОДСТРОКА, вроде, не добивает пробелами, если есть возможность использовать эту функцию вместо ВЫРАЗИТЬ...
14 Работа имитируется
 
02.08.17
09:25
(10) Очень сильно притянутый пример. Использовать запрос и тут же поиск при помощи объектной модели...
15 1c_July
 
02.08.17
09:56
а в 8.3.9 это есть?
где-то были запросы, в которых в параметр передаются строки с разнокалиберной длиной, а сравниваются с полем неограниченной длины, которое предварительно ограничивается до разумного через "выразить"
и вроде работают, с проблемами из-за пробелов не сталкивались..
16 Гипервизор
 
02.08.17
10:08
(15) ---> (8)
17 psy_sln
 
02.08.17
10:11
(12) Как раз наоборот, подобно жесткое сравнение, а через равенство в конце пробелы пропускает
18 Ненавижу 1С
 
гуру
02.08.17
10:18
(10) в справочнике ищите запросом и будет счастье,или действительно ПОДСТРОКА
19 daringer
 
02.08.17
10:30
(15) в 8.3.9 этого нет
20 1c_July
 
02.08.17
12:01
(19) блин, если потребуется перейти - тоже будет проблема
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн