Имя: Пароль:
1C
 
Баян с лидирующими пробелами в наименовании эл-та спр.
0 andrewks
 
04.12.10
17:26
подскажите пожалуйста, что-то не помню, чтобы раньше сталкивался с такой ситуацией.
имеется справочник, наименование например длины 50
вводим элемент, пишем наименование " имя1" (впереди пробел, длина 5), в МФ эл-та спр. имеем Наименование="имя1" (уже без пробела, длина 4).
то же - при ПолучитьАтрибут(), СоздатьОбъект()
при этом при редактировании и показе везде все ок - пробел этот есть. (соотв-но в базе этот пробел сохраняется)
если впереди хоть 10 пробелов поставить - то же самое, все съедаются.
в итоге:

СпрН=СоздатьОбъект("Справочник.Номенклатура");
СпрН.Новый();
Стр="    имя3";
СпрН.Наименование=Стр;
Если Стр=СпрН.Наименование Тогда
Сообщить("равно");
Иначе
Сообщить("не равно");
КонецЕсли;


пишет: не равно
что за хня? это так задумано?
1 МихаилМ
 
04.12.10
17:31
да. так задумано.
причем в зависимости от фармата хранения данных
(скл или дбф)
дополняющие пробелы будут либо сначала либо в конце.
возможно поэтому и задумано.
2 andrewks
 
04.12.10
17:32
(1) м-да. с замыкающими я сразу столкнулся, еще на заре знакомства с 7-кой. а вот с лидирующими только сейчас.
3 andrewks
 
04.12.10
17:41
ха-ха. с быстрым поиском ваще баян. если набирать "имя1" без пробела - он его не находит из-за пробела. если набрать пробел - он встает на первый элемент с пробелом в начале. а вот если дальше начать набирать имя1 - все, ступор, ничего не находит. по-ходу при записи они должны были вставить отсечение пробелов, да забыли или не учли.
интересно, что покажет нам запрос.
4 andrewks
 
04.12.10
17:56
в запросе все ништяк
5 VasilyKushnir
 
04.12.10
23:38
(0) Не допонял - налей еще. Нафига вообще пробелы хоть в начале, хоть в конце? Почему не:

СпрН.Новый();
Стр="имя3";
СпрН.Наименование=Стр;
Если Стр=СокрЛП(СпрН.Наименование) Тогда
Сообщить("равно");
Иначе
Сообщить("не равно");
КонецЕсли;
6 Cthulhu
 
04.12.10
23:41
Не бывает у наименования и текстового года лидирующих пробелов. фича такая.
7 andrewks
 
04.12.10
23:50
(5) бери стопарик :-)
этот код - для примера, чтобы показать баян.
фишка в том, что с пробелами в конце проблем нет.
а вот с лидирующими имеются - во-первых, глючит быстрый поиск. во-вторых проблема с сортировкой. в-третьих, программно их отловить можно только ч/з переменную в запросе, никакими переборами и т.д. они не ловятся.
8 andrewks
 
04.12.10
23:54
+(7) а по вопросу - нафига - да нафиг они мне не сдались. я об них даже не знал 10 лет. но вот недавно к нам устроились на работу новые молоденькие креативные операторы, которые начали за каким-то хреном бить по одному или два пробела в начале наименования
9 andrewks
 
05.12.10
00:06
+(8) для исправления пришлось писать вот такой код:

Б=СоздатьОбъект("Справочник.Спр1");
   Б.ПорядокКодов();
   Б.ВыбратьЭлементы();
   Пока Б.ПолучитьЭлемент()=1 Цикл
       Б.Наименование=Б.Наименование;
       Б.Записать();
   КонецЦикла;


если б мне его показали недельку назад - сломал бы мозг
10 VasilyKushnir
 
05.12.10
00:10
(9) А не лучше на справочник кинуть ПриЗаписи(), где
Спр.Наименование = СокрЛП(Какая-тоХрынь);
11 andrewks
 
05.12.10
00:13
(10) во-первых, ты мало выпил, жахни ещё :-)
достаточно написать в ПриЗаписи(): Наименование=Наименование;
во-вторых - не одуреешь ли по всем базам во всех справочниках такую лажу размазывать?
12 VasilyKushnir
 
05.12.10
00:16
(11) Хочешь сказать, что (9) периодически запускать проще?
13 andrewks
 
05.12.10
00:19
(12) + линейка по рукам
14 VasilyKushnir
 
05.12.10
00:19
достаточно написать в ПриЗаписи(): Наименование=Наименование;
а если вводится новый элемент? что тогда есть "=Наименование"
15 andrewks
 
05.12.10
00:21
(14) без разницы. для нового элемента берётся из контекста. впрочем, для не-нового тоже.
16 VasilyKushnir
 
05.12.10
00:36
(15) Если ему уже присвоено значение, то да. Впрочем сам с такой проблемой не сталкивался - справочник товаров по долгу службы ведет начальник приемного отдела, у остальных доступ только к отдельным полям (для редактирования и за исключением админа, ессссно). А у нас она человек очень скурпулезный - главное четко "нарисовать" ей что и как должно быть. Аналогично за справочник Поставщиков отвечает одна из бухов. Ну и в том же духе.
17 Конь в пальто
 
05.12.10
00:38
бредятина
18 Cthulhu
 
05.12.10
01:16
(14),(16): бред.
19 EvgeniuXP
 
05.12.10
02:49
ой, блин, как хорошо я съехал с 7.7 :)
20 Cthulhu
 
05.12.10
03:34
(19): семерка тоже очень этому рада - так и просила передать. и клиенты её - тоже. )))
21 МастерВопросов
 
05.12.10
05:11
Всвязи с (1)- у автора файловая, или скл.
22 andrewks
 
05.12.10
08:09
(21) конкретно вчера копался в файловой, на скуле пока проверить не могу - нет под рукой
23 smaharbA
 
05.12.10
09:49
(8) что бы обойти проверку на уникальность наименования
24 mishaPH
 
05.12.10
09:54
(0) я думаю при тестах платформы в 1С как-то никому в голову не пришло, что кто-то  внаименовании поставит пробелы в переди.