Имя: Пароль:
1C
1С v8
Результат Запросов различает регистр букв?
0 napagokc
 
23.11.11
09:49
Что-то не удалось нагуглить ответ...
Загружаю из dbf контрагентов. В dbf-файле есть два контрагента, имеющих общего родителя и одинаковое наименование, но написанное разными регистрами букв. После того, как загрузится первый такой контрагент, что вернет выборка:

Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Ссылка
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование = &Наименование
|    И Контрагенты.Родитель = &Родитель
|    И Контрагенты.ЭтоГруппа = &Группа";

? Она найдет уже загруженного контрагента или все-таки ничего не найдет (при условии, что до загрузки справочник был пустым)? Мне казалось, что выборка игнорирует регистр, но у меня загрузилось два контрагента, имеющих общего родителя и одинаковое наименование, но написанное в разных регистрах. Вот и вопрос: это нормально и выгрузка учитывает регистр, или в одном из наименований кто-то додумался заменить русскую букву на английскую, так, что зрительно название одинаковое, но по факту разное? Просто других объяснений пока не вижу...
1 aleks-id
 
23.11.11
09:50
Контрагенты.Наименование ПОДОБНО &Наименование
2 napagokc
 
23.11.11
10:05
(1) Я так понимаю, что ПОДОБНО должна делать проверку на точное соответствие? Но у меня вопрос-то в другом. Мой запрос без ПОДОБНО, а проверка, похоже, сделалась и запрос различает двух "контрагент1" и "КОНТРАГЕНТ1"
3 Wobland
 
23.11.11
10:06
(2) ПОДОБНО регистронезависим
4 Wobland
 
23.11.11
10:06
+(3) плин, так долго уже проверить?
5 Нуф-Нуф
 
23.11.11
10:07
запросы к бд не различают регистр. как-то так. недавно в курсе гилева услышал. кстати ничего не мешает протестировать
6 napagokc
 
23.11.11
10:08
(4) Проверить не долго, но глупо на каждый вопрос, на который достаточно ответа "да" или "нет" писать отдельный запрос. Я же не что-то супер сложное спрашиваю. У меня просто опыта пока недостаточно и с этим столкнулся впервые, вот и хотел узнать у гуру 1С.
7 Wobland
 
23.11.11
10:11
(6) почему глупо? пытаясь разобраться сам, получаешь больше к опыту, пускай, быть может, и с большими временными затратами
8 hhhh
 
23.11.11
10:21
(6) сам понимаешь, что искать контрагента по наименованию - это полный бред. Поэтому вряд ли тебе кто-то скажет, быстрее протестировать.
9 Axel2009
 
23.11.11
10:24
(3) нифига. ПОДОБНО без "%" монопенисуалень "="
10 Wobland
 
23.11.11
10:25
(9) выбрать выбор когда "аб" подобно "АБ" тогда истина конец
11 Axel2009
 
23.11.11
10:26
(0) база какая?
12 aleks-id
 
23.11.11
10:26
(9) инфа 100% ?
13 Axel2009
 
23.11.11
10:27
(10) внезапно
ВЫБРАТЬ ВЫБОР КОГДА "аб" = "АБ" ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
14 napagokc
 
23.11.11
10:27
(11) база 8.2, конфа собственной разработки.

Проверка показала, что запрос с "=" регистр не разделяет.
15 napagokc
 
23.11.11
10:27
*не различает
16 Axel2009
 
23.11.11
10:28
(12) то что монопенисуален 100%. результат этих сравнений одинаков.
17 Axel2009
 
23.11.11
10:28
(14) файловая или скульная или еще какая?
18 Wobland
 
23.11.11
10:28
(16) он ты о чём ;)
19 napagokc
 
23.11.11
10:29
(17) файловая
20 aleks-id
 
23.11.11
10:31
(16) ты не учел одного. что особо упоротые манагеры втыкают лишние пробелы перед или после наименования.
21 Reset
 
23.11.11
10:33
(20) Или в средине. Или вставляют самые разнообразные кавычки. Или путают раскладку. Или...
22 napagokc
 
23.11.11
10:33
(20) В моем случае это не страшно, т.к. читаю наименование из dbf-файла, используя СокрЛП()
23 Wobland
 
23.11.11
10:34
(22) и сравниваешь с тем, что у тебя понаделали в базе указанные манагеры
24 napagokc
 
23.11.11
10:35
(23) Никто там еще ничего не понаделал. Я перевожу базу из 7.7 в 8.2. В 8.2 еще никто не работает, там только то, что я загрузил.
25 aleks-id
 
23.11.11
10:36
ищи контров по айнанэ. остальное от лукавого
26 Wobland
 
23.11.11
10:36
(24) уговорил. для первоначального заполнения годится ;)
27 Reset
 
23.11.11
10:37
(25) +1
28 napagokc
 
23.11.11
10:41
толку-то... Как перенеслись Контрагенты меня устраивает, хоть и не понятна причина, по которой создались два разных контрагента с одинаковым наименованием, но в разных регистрах, когда я использовал вышеописанный запрос. А вот когда стал загружать подчиненный справочник "Договора", делая фильтр в запросе по Владельцу и Коду, то почему-то договор из второго контрагента перезаписал договор с таким же кодом из первого Контрагента... Запрос на владельца использовал тот же. То есть, первый раз запрос различил контрагентов, а второй раз - нет.
Пойду прогуляюсь, может мысль придет... :(

(25), (27) Ась? :) Айнанэ - это что? ))))
29 Axel2009
 
23.11.11
10:42
(20) при чем тут регистрозависимость и не равненство строк ПРИ ЛЮБОМ РАСКЛАДЕ?
30 aleks-id
 
23.11.11
10:43
(28) инн
31 napagokc
 
23.11.11
11:05
(30) ИНН не подходит, т.к. в 7.7 много физ. лиц без ИНН
32 Axel2009
 
23.11.11
12:06
(31) у меня в файловой ВЫБРАТЬ ВЫБОР КОГДА "аб" = "АБ" ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ выдал ИСТИНА, а у вас?
33 napagokc
 
23.11.11
12:52
(32) У меня тоже вернул истину. То есть, регистр букв не различает... А есть ли способ различить регистр?
34 Axel2009
 
23.11.11
12:53
(33) для регистронезависимых только делать сравнение в коде 1с. он регистрозависим
35 napagokc
 
23.11.11
12:56
имею на входе:
КодДоговора | НаименованиеДоговора | Владелец
1           | Договор1             | Контрагент1
2           | Договор2             | Контрагент1
3           | Договор3             | Контрагент1
3           | Договор1             | КОНТРАГЕНТ1

Запрос определяет "КОНТРАГЕНТ1" равным "Контрагент1" и затирает третий договор у "Контрагент1" (выборку делаю по владельцу и коду)
36 napagokc
 
23.11.11
12:56
(34) То есть, запросом никак, да? ясно ((
37 Wobland
 
23.11.11
12:59
>определяет "КОНТРАГЕНТ1" равным "Контрагент1"
а не проще ль в источнике переименовать, так и заблудиться недолго
38 napagokc
 
23.11.11
13:10
(37) Первоисточник я трогать не могу. Могу оттуда только выгрузить уже имеющиеся данные. Но в целом норм, мне кажется, что я нашел выход. Щас опробую и отпишусь
39 Axel2009
 
23.11.11
13:12
(36) запросом можно если база будет клиент-серверная на скуле и у базы будет по умолчанию стоять регистрозависимые строки. тогда будет запросом. но тут либо для всех зависимо либо для всех независимо
40 napagokc
 
23.11.11
13:35
(39) Ясно, спасибо.

проблему решил так:

Владелец = Справочники.Контрагенты.ПустаяСсылка();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Ссылка
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование = &Наименование
|    И Контрагенты.ЭтоГруппа = &Группа";
Запрос.УстановитьПараметр("Группа", Ложь);
Запрос.УстановитьПараметр("Наименование", СокрЛП(хВ.Owner));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   Если СокрЛП(Выборка.Ссылка.Наименование) = СокрЛП(хВ.Owner) Тогда
       Владелец = Выборка.Ссылка;
       Прервать;
   КонецЕсли;
КонецЦикла;

Это я так нахожу Владельца для подчиненного справочника Договоры. То есть, запросом нахожу всех предполагаемых владельцев, а дальше, в цикле, делаю уже выборку по точному соответствию наименований. Уж не знаю, на сколько это нелепо, но пока мне в голову только такой вариант пришел.
41 Axel2009
 
23.11.11
14:13
Выборка.Ссылка.Наименование
а в запросе сразу выбрать наименование не?
2 + 2 = 3.9999999999999999999999999999999...