Имя: Пароль:
1C
1С v8
Загрузка из Excel.Сопоставление элементов со справочником
0 Karlos88
 
07.08.13
11:36
добрый день.возникла такая проблема.мне необходимо загрузить данные в справочник из Excel. в Excel есть 2 колонки: Наименование и Контрагенты.проблема заключается в колонке Контрагенты.Справочник Контрагенты уже есть.и необходимо чтобы колонка Контрагенты сопоставилась с элементами справочника Контрагенты.
1 pessok
 
07.08.13
11:37
СправочникСсылка.НайтиПоНаименованию()
2 AlexITGround
 
07.08.13
11:41
(1) самый простой вариант, если наименования в Эксельке нормальные,  в противном случае нужно будет писать поиск по справочнику с более сложным алгоритмом.
3 Karlos88
 
07.08.13
11:42
просо наименование не точно совпадает со справочником.в справочнике например ОАО "Сбербанк",в  файле Сбербанк
4 Karlos88
 
07.08.13
11:43
если бы они были нормальные,я бы тему не открыл.они совершенно не совпадают
5 Fish
 
07.08.13
11:44
(4) Тогда надо много думать и писать алгоритм поиска соответствий.
6 pessok
 
07.08.13
11:44
в запрос условие ПОДОБНО. а вообще - вывести в эксель связку инн/кпп и искать по ней
7 Karlos88
 
07.08.13
11:45
В этом то вся и печалька.времени нет.может у кого то че нибудь похожее есть
8 AlexITGround
 
07.08.13
11:47
(7) ну реально в файле слишком мало информации, вероятность соответствия "крайне мала" (с)
9 Karlos88
 
07.08.13
11:47
с ПОДОБНО уже пробовал.не ищет.
10 pessok
 
07.08.13
11:47
если нет времени, то, видимо, есть деньги? за деньги тебе тут пол-форума на коленке нарисует. НО нельзя сопоставить несопоставимое

ООО Рога и Копыта никак не сопоставить с ООО Кога и Ропыта
11 Fish
 
07.08.13
11:47
(9) Запрос в студию
12 pessok
 
07.08.13
11:48
(9) заставь внести в эксель хотя бы ИНН, ну нелепица же
13 pessok
 
07.08.13
11:48
(11) кстати, да, наверняка там условие написано неверно
14 Галахад
 
гуру
07.08.13
11:49
(10) Можно.

(0) А нафиг надо-то вообще? Что за "Наименование"?
15 pessok
 
07.08.13
11:49
(14) и как? по ИНН/КПП - да, можно, а по другому как?
16 Галахад
 
гуру
07.08.13
11:50
(15) Полнотекстовый поиск.
17 pessok
 
07.08.13
11:52
(16) и? искать "ога" и "опыта"?
а если там ООО "МногаОпыта"?
18 Karlos88
 
07.08.13
11:52
ВЫБРАТЬ
    Контрагенты.Ссылка,
    Контрагенты.Наименование
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    (Контрагенты.НаименованиеПолное ПОДОБНО &Наим1
            ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО &Наим2
            ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО &Наим3
            ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО &Наим4
            ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО &Наим5)
19 pessok
 
07.08.13
11:53
(18) оуууущщи... почитай про ПОДОБНО
20 Karlos88
 
07.08.13
11:54
Запрос.УстановитьПараметр("Наим1", КолонкаКонтрагент);
Запрос.УстановитьПараметр("Наим2","%"+КолонкаКонтрагент+"%");
Запрос.УстановитьПараметр("Наим3","%"+КолонкаКонтрагент);
Запрос.УстановитьПараметр("Наим4", КолонкаКонтрагент+"%");
Запрос.УстановитьПараметр("Наим5","_"+КолонкаКонтрагент+"_");
Результат = Запрос.Выполнить();
Если ЗначениеЗаполнено(КонтрагентСсылка) Тогда
СправочникОбъект.Контрагент = Результат.Выгрузить();
Конецесли;
21 Галахад
 
гуру
07.08.13
11:55
(17) Нормально ищет. Но не 100% конечно, нужно одобрение оператора, в некоторых случаях.
22 zladenuw
 
07.08.13
11:56
(0) я бы юзверу открывал таблицу соответствий. где 1 столбец то что в файле. а второй столбец. что выбрал он или удалось найти поиском. и кнопку синхронизировать. кодом не получиться
23 Karlos88
 
07.08.13
11:56
В файле:  21350-4 (аэр. Псков)
А в 1С: в/ч 21350 - 4 г. Псков
24 dk
 
07.08.13
11:57
грузить надо постоянно или разово?
---
перед поиском нужно избавиться от ИП ООО ОАО и прочего в названиях - в карточке менять не надо - можно загрузить все в ТЗ и там почистить
потом избавиться от регистра - привести все в верхний или нижний
еще можно убрать "паразитов" типа : / " . , ) ( пробел
25 pessok
 
07.08.13
11:57
Результат = Запрос.Выполнить();
Если ЗначениеЗаполнено(КонтрагентСсылка) Тогда
СправочникОбъект.Контрагент = Результат.Выгрузить();
Конецесли;

это что? ты в СправочникСсылка хочешь записать ТаблицаЗначений?

Если НЕ Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
Выборка.Следующий();
СправочникОбъект.Контрагент = Выборка.Ссылка;
КонецЕсли
26 dk
 
07.08.13
11:58
(23) не все решается программно, иногда быстрее / дешевле / проще / точнее дать оператору эту работу
27 pessok
 
07.08.13
12:00
(23) такое точно не взлетит
28 Karlos88
 
07.08.13
12:03
Все хотят чтобы все было автоматизированно.))
29 dk
 
07.08.13
12:08
(28) есть разные степени автоматизации
полностью автоматизировать на таких данных не получится - иногда придется оператору вмешиваться и вручную выбирать вариант
если повлиять на строну выгрузки данных нет возможности, то можно у себя хранить "неправильные" наименования, тогда при следующих загрузках по ним будет полная автоматизация
30 Fish
 
07.08.13
12:08
(28) Тогда поставь им задачу: пусть дополнят файл эксель кодами (ИНН/КПП).
Закон Брукера: Даже маленькая практика стоит большой теории.