Имя: Пароль:
1C
1С v8
сравнение при загрузке
,
0 Kurbash
 
02.04.13
10:47
Такая засада-гружу из файла Эксель лицевые счета сотрудников.
Вот код:

Ексель     = Новый  COMОбъект("Excel.Application") ;
   ФайлЕксель = Ексель.Workbooks.Open(ПутьКФайлу);
   НаборЗаписей1=РегистрыСведений.ЛицевыеСчетаРаботниковОрганизации.СоздатьНаборЗаписей();
   НаборЗаписей1.Отбор.Банк.установить(Банк);
       Для н = НомерСтрокиНачало По НомерСтрокиКонец Цикл
       ФИО = Ексель.Sheets(НомерЛиста).Cells(н,5).Value;
       Счет = Ексель.Sheets(НомерЛиста).Cells(н,4).Value;
       сп=Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(ТРег(ФИО)));
       Если  не сп.Пустая() тогда
       НаборЗаписей=НаборЗаписей1.Добавить();
       НаборЗаписей.Организация=Организация;
   НаборЗаписей.Банк=Банк;
   НаборЗаписей.ФизЛицо= Справочники.ФизическиеЛица.НайтиПоНаименованию(СокрЛП(ТРег(ФИО)));
   НаборЗаписей.НомерЛицевогоСчета=Счет;
   сч=сч+1;
   ЭлементыФОрмы.Надпись4.Значение=сч;
Иначе
   Сообщить(ТРег(ФИО));
   Конецесли;
   КонецЦикла;
   НаборЗаписей1.Записать();
   Ексель.Application.Quit();


проблема в том, что несколько сотрудников не находятся, и наименование одинаковые, один в один,  например "Аникин Сергей Викторвич". Сообщает что не нашел его а в справочнике он есть. Пробелы все удалены, все нормально, что интересно, копирую строку из служебных сообщений пытаюсь в форме списка сделать отбор по ней отбор пустой, хотя строки одинаковые. Оставялю одну фамилию, находит все нормально, дело в имени получается, а где именно? В чем может быть дело?
1 Godofsin
 
02.04.13
10:49
В пробелах батенька
2 Wobland
 
02.04.13
10:50
ТРег не смущает?
3 Галахад
 
гуру
02.04.13
10:50
Сравнить строки в любом сравняльщике и понять различие.
4 hhhh
 
02.04.13
10:51
ВикторОвич
5 Галахад
 
гуру
02.04.13
10:52
(4) Хо-хо!
6 Kurbash
 
03.04.13
07:38
в том то и дело что все нормально- я сравнивал...беру строку из сообщения, сравниваю с наименованием справочника-одинаковые...
7 Wobland
 
03.04.13
07:39
(6) глазами? сравни "а" и "a" - они разные
8 Kurbash
 
03.04.13
07:40
т.е.? можно подробнее?
9 Kurbash
 
03.04.13
07:42
в смысле одна "а"  написана по английски другая по русски? или в кодировке дело?
10 Kurbash
 
03.04.13
07:46
Трег нужен- в экселе все буквы заглавные
11 Галахад
 
гуру
03.04.13
07:50
(6) Тебе же в (4) показали.
Нет такого отчества "Викторвич", или он серб?
12 Kurbash
 
03.04.13
07:58
да это я опечатался
13 Wobland
 
03.04.13
08:03
(9) истина. ложь.
14 Kurbash
 
03.04.13
08:05
блин я понял-они часть букв набили по английски, уроды...та же буква "р" русская это английская "p". Что теперь делать то с этим? В файле екселевом менять или в 1С как можно?
15 Kurbash
 
03.04.13
08:05
(13) можноп подробнее?
16 Wobland
 
03.04.13
08:06
(14) как понял? уверен в верности вывода?
(15) одна "а"  написана по английски другая по русски, дело не в кодировке
17 Jonny_Khomich
 
03.04.13
08:07
(14) меняй в 1с конечно же
18 Галахад
 
гуру
03.04.13
08:07
(12) Сохрани ФИО из Экселя и из 1С в текстовые файлы.
Сравни Вордом. Но покажет в каких символах различия.
19 Kurbash
 
03.04.13
08:10
(16)-просто набрал в слове СЕргей букву р по русски не нашел, набрал по английски нашел
20 Галахад
 
гуру
03.04.13
08:13
Не парься. В обработке, если не нашел по ФИО,
выводи ругательство и пусть сопоставляют вручную.
21 Cyberhawk
 
03.04.13
08:14
(14) напиши обработку по типу
Если символ = "а английская" тогда символ = "а русская"
и так для всех совпадающих букв
22 Kurbash
 
03.04.13
08:18
пример кода есть? я просто с такие обработки с символами не писал.Я так понимаю это же нужно запускть в 1С-ке самой, запускать цикл по справочнику физлица
23 Wobland
 
03.04.13
08:20
как вариант: СтрЗаменить("a", "а"). но Галахад правее
24 Kurbash
 
03.04.13
08:21
там много не найдено, порядка 150 человек
25 Kurbash
 
03.04.13
08:22
и кстати нужно же менять не справочник физлица а регистр сведений, так?
26 Kurbash
 
03.04.13
08:27
Фамилия,имя отчетсво физлиц, так?
27 Галахад
 
гуру
03.04.13
08:36
А вообще, откуда файлик берется? Руками, что-ли набирают?
28 Kurbash
 
03.04.13
08:40
да геморой-из досевой программы дбф-ку импортировали в эксель
29 Kurbash
 
03.04.13
08:41
да уже догаладлся-тот кто руками бил ошиблись
30 Kurbash
 
03.04.13
08:41
щас сделаю
31 Kurbash
 
03.04.13
08:42
пока вот атк:

справ=Справочники.ФизическиеЛица.Выбрать();
   пока справ.Следующий() цикл
   сп=справ.ПолучитьОбъект();
   сп.Наименование=СтрЗаменить(сп.Наименование,"A","А");
   сп.Наименование=СтрЗаменить(сп.Наименование,"a","а");
   сп.Наименование=СтрЗаменить(сп.Наименование,"E","Е");
   сп.Наименование=СтрЗаменить(сп.Наименование,"e","е");
   сп.Наименование=СтрЗаменить(сп.Наименование,"O","О");
   сп.Наименование=СтрЗаменить(сп.Наименование,"o","о");
   сп.Наименование=СтрЗаменить(сп.Наименование,"P","Р");
   сп.Наименование=СтрЗаменить(сп.Наименование,"p","р");
   сп.Наименование=СтрЗаменить(сп.Наименование,"K","К");
   сп.Наименование=СтрЗаменить(сп.Наименование,"k","к");
   сп.Наименование=СтрЗаменить(сп.Наименование,"X","Х");
   сп.Наименование=СтрЗаменить(сп.Наименование,"x","х");
   сп.Наименование=СтрЗаменить(сп.Наименование,"C","С");
   сп.Наименование=СтрЗаменить(сп.Наименование,"c","с");
   сп.Записать();
   конецЦикла;
код то просто, посмотрим как поканает
32 Kurbash
 
03.04.13
08:43
ну вот и все))12 штук всего не нашлось)))
33 Wobland
 
03.04.13
08:54
BHKMTuy
34 Kurbash
 
04.04.13
07:30
нет)))их просто нет))новые сотрудники)
35 Jonny_Khomich
 
04.04.13
07:41
(34) вот тот кто накосячил, пусть бы и правил.
36 kosts
 
04.04.13
07:45
(31) Не нужно было исправлять самому. Пусть ответственные напрягаются. А то в дальнейшем так же ерунду будут вносить в программу.