Имя: Пароль:
1C
1С v8
v8: Сопоставление номенклатуры при внешней загрузке
0 листопад
 
04.12.11
13:25
Необходимо загрузить в табличную часть документа ТребованиеНакладная данные из Эксель.
Написала обработку, на форме которой разместила Табличное поле, имеющее тип "ТаблицаЗначений". Т.е. данные из Эксель сначала загружаю в эту ТаблицуЗначений, назвала ее ТаблицаДокумента (состоит из двух колонок: Наименование и Количество).
Проблема состоит в идентификации номенклатуры: в Эксель наименование номенклатуры - "MOBILGEAR  600 XP 220". А в 1С, в спр.Номенклатура это наименование занесено как - "Масло Mobilgear 600 XP 220".

Пишу запрос, но не находится такая номенклатура, подскажите, как быть??? Вот запрос поиска номенклатуры:

Запрос = Новый Запрос("ВЫБРАТЬ ВТ.Наименование,ВТ.Количество
|ПОМЕСТИТЬ ВТ
|ИЗ &ВТ КАК ВТ;
|ВЫБРАТЬ
|ВТ.Наименование,
|ВТ.Количество,
|Номенклатура.Ссылка
|ИЗ ВТ как ВТ ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
|  ПО Номенклатура.Наименование ПОДОБНО ""%""+ВТ.Наименование+""%""");
Запрос.УстановитьПараметр("ВТ", ТаблицаДокумента); //ТаблицаДокумента-это таблица значений на форме обработки
РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Для каждого строка из РезультатЗапроса Цикл
   Если Строка.Ссылка = NULL Тогда
       Сообщить(Строка.Наименование + " номенклатура с таким наименованием - не найдена! Строка загружена не будет!");
       Продолжить;
   КонецЕсли;  
   СтрокаТовары = ДокРеализация.Материалы.Добавить();
   СтрокаТовары.Номенклатура = Строка.Ссылка;
   СтрокаТовары.Количество = Строка.Количество;
   ...
КонецЦикла;
1 листопад
 
04.12.11
13:33
Если в Эксель поменять наименование "MOBILGEAR  600 XP 220" на "Mobilgear 600 XP 220", то номенклатура находится. Т.е., если я правильно понимаю, 1С чуствительна к регистрам когда сравнивает???
2 Mans
 
04.12.11
13:35
*.xls где создается?
3 листопад
 
04.12.11
13:38
(2) Mans, здравствуйте ))).
Файл Эксель передается из другой организации нам.
4 Mans
 
04.12.11
13:41
Привет, Артикул, а в идеале ЗначениеВСтрокуВнутр(...) им передать?
5 листопад
 
04.12.11
13:42
(4) Артикул или Код они проставлять в Эксель не будут. Поэтому искать надо именно по наименованию.
6 Живой Ископаемый
 
04.12.11
13:44
ПОДОБНО - регистро независим.
7 Mans
 
04.12.11
13:45
(5) один раз сделать то, часто новые наименования появляются?
8 листопад
 
04.12.11
13:47
(6) А почему тогда происходит (1)?
(7) Много номенклатуры, не будут делать (((
А как применять ЗначениеВСтрокуВнутр()?
9 Живой Ископаемый
 
04.12.11
13:47
2(8) не знаю.. начните с простого.
10 golden-pack
 
04.12.11
13:48
(6) неправильно.
11 golden-pack
 
04.12.11
13:51
(8) СУБД какая ?
12 Mans
 
04.12.11
13:51
(8) тогда собственную таблицу соответствий иметь, но они буковку поправят и ...
13 листопад
 
04.12.11
13:52
(11) Бухгалтерия 2.0.28.3 (платформа 8.2.13)
14 golden-pack
 
04.12.11
13:54
Кароче - проблема не в запросе. Запрос рабочий.

Вы уверены что у вас нет дублей наименований в справочнике ?
15 листопад
 
04.12.11
13:55
(12) об этом я их предупредила, что даже лишний пробел будет иметь значение, они согласились. Поэтому надо искать по-наименованию, только надо учесть их специфику:
1. в Эксель и 1С разный регистр букв может быть;
2. в 1С перед многими номенклатурами стоит слово "Масло".
16 Живой Ископаемый
 
04.12.11
13:55
2(10) правильно
===


Есть идея, сейчас скажу в чем
17 golden-pack
 
04.12.11
13:56
(16) я к тому что не только ПОДОБНО регистронезависимо ...
18 golden-pack
 
04.12.11
13:57
+(17) это не зависит от условий запроса
19 Живой Ископаемый
 
04.12.11
13:59
короче вот в чем проблема:
http://screencast.com/t/fbTxTC941JTS

это скопированные из (0) ваши наименования
20 листопад
 
04.12.11
14:00
(14) дублей - нет.
21 Живой Ископаемый
 
04.12.11
14:00
2(17) ну так значит не ври что не правильно
22 Живой Ископаемый
 
04.12.11
14:02
Если набрать правильно, без лишних букв, тогда получается:
http://screencast.com/t/ZaNciIQ8Ps
23 листопад
 
04.12.11
14:05
(19) Спасибо. Оказывается в наименовании (в Эксель) два пробела между "MOBILGEAR"  "600". А в 1С - один пробел.
А можно это как-то обойти???
24 Живой Ископаемый
 
04.12.11
14:06
2(23) мм... ну например можно из экселя все пробелы заменять на "%"
25 Aleksey
 
04.12.11
14:06
(23) "об этом я их предупредила, что даже лишний пробел будет иметь значение, они согласились." (с) листопад v8: Сопоставление номенклатуры при внешней загрузки
26 Живой Ископаемый
 
04.12.11
14:08
+(25) кстати да.. почему вы поверили что они не набрали лишний пробел? почему вы решили что слажала 1С а не они? вам знакомо выражение "человеческий фактор"?
27 листопад
 
04.12.11
14:09
(25) Да, все правильно, я их предупреждала об этом и они согласились. Но если завтра, я им сообщу, что из 100номенклатур загрузилось только две (т.к. в остальных наверняка тоже пробелы, которых внешне не видно), то они начнут просить что-нибудь придумать ((( Для бухгалтерии ведь эти технические проблемы - не очевидны...
28 Живой Ископаемый
 
04.12.11
14:10
2(27) я не об этом, а когда вы задали (0) и например (8) - почему вам сразу не пришла идея что они слажали в наборе?
29 листопад
 
04.12.11
14:10
Есть ли какой-нибудь выход?
30 листопад
 
04.12.11
14:12
(28) Они меня уверяли, что вводят они корректно, а получается, что в 1с они вводят действительно правильно, а вот в Эксель передают им с лишними пробелами в наименовании...
31 Живой Ископаемый
 
04.12.11
14:12
2(29) а теперь вы читаете через строчку и пропускаете (24):
http://screencast.com/t/0uzYtzH3a
32 Живой Ископаемый
 
04.12.11
14:12
"Они меня уверяли, что вводят они корректно," - вы доктора Хауса когда-нибудь смотрели?
33 листопад
 
04.12.11
14:20
(31) Не поняла как это делать в (24). Совсем запуталась...
34 DrShad
 
04.12.11
14:23
(31) радуйся что флудером не обозвали
35 DrShad
 
04.12.11
14:24
+(34) v8: Добавить реквизит сразу во все документы
она никогда не читает ответы вдумчиво
36 Живой Ископаемый
 
04.12.11
14:25
(33)Mobilgear%600%XP%220
37 DrShad
 
04.12.11
14:30
можно ведь в считанных из Экселя значениях поубирать все проблемные сиволы
38 листопад
 
04.12.11
14:31
(36) Это я понимаю. Вопрос в другом: сейчас наименование в запрос из (0) передается строкой, содержащей несколько слов, например:
Mobilgear
600
XP
220
Как мне это наименование разбить по словам, чтобы выполнить условие Mobilgear%600%XP%220
39 Живой Ископаемый
 
04.12.11
14:34
2(38) ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок("Моя строка"," ")[0]+"%"+ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок("Моя строка"," ")[1]
40 Живой Ископаемый
 
04.12.11
14:38
м... но только еще проверку на то, чтобы  ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок("Моя строка"," ")[итератор] не была пустой
41 Живой Ископаемый
 
04.12.11
14:40
а, не, нормально там все...:
http://screencast.com/t/Yvmhehc4HExl
42 листопад
 
04.12.11
14:40
(39), (40) Спасибо! Сейчас попробую...
43 Mans
 
04.12.11
14:43
(0) а они всегда грамотно пишут? помню пиво Gold Crown было записано как Gold Crow, а это несколько разные существительные  :)
44 Живой Ископаемый
 
04.12.11
14:48
2(43) да тут любое решение, не использующее точного совпадения по артикулам например или там штрихкодам, которого придерживаются и все поставщики и все покупатели, не блещет 100% совпадением.. то есть и полнотекстовый поиск с использованием NEAR и регулярки - будут либо пропускать совпадения либо давать более одного варианта.
45 echo77
 
04.12.11
16:10
Регистр сведений СоответствиеОбъектовДляОбмена не предлагать?
46 DrShad
 
04.12.11
16:13
(45) предлагай, что туда писать будешь?
47 echo77
 
04.12.11
16:23
Естественно прийдется сначала поработать, чтобы заполнить этот регистр.
Туда писать - коды номенклатуры или наименования контрагента от которого данная хрень пришла
48 DrShad
 
04.12.11
16:25
(47) все возможные варианты написания?
49 DrShad
 
04.12.11
16:26
(47) конечно это ведь самое простое и очевидное решение, ведь так?
50 echo77
 
04.12.11
16:28
(49) Конечно :-)
51 DrShad
 
04.12.11
16:29
(50) а я так не думаю
52 Mans
 
04.12.11
16:41
а чего, по мере загрузки xls и заполнять, в чужую ссылку пришлое имя лепить, промежуточная ТЗ не понадобится, а через пару-тройку файлов глядишь и полегчает
53 DrShad
 
04.12.11
16:48
но топик не об этом даже
54 vdepid2009
 
04.12.11
16:49
15) а у меня на автомате все было. просто принимающая сторона автоматом грузила базу, если определяла, что это полная выгрузка. я даже написал скрипт, который генерировал распределенки целиком. задаешь ему адреса эл.почты и названия баз - он тебе делает самораспаковывающиеся рары на каждую точку, отправляешь их по мылам, на месте достаточно запустить его и он полностью разворачивает 1Ску, настраивает почту, автообмен на урбдмастере, систему архивации и запускает все это, а ты сидишь в центре и профит собираешь.
55 Mans
 
04.12.11
16:57
57 Злопчинский
 
04.12.11
17:04
(0) используйте нечеткое сравнение: реализовать можно как внешникми ВК, так наверное и штатно 8-ой; по моим преварительным прикидкам внешняя приблуда ищет получше.
.
на ИС есть куча разработок на эту тему, в т.ч. и под 8-ку.
как пример нечеткой загрузки из экселя:
.
Ваши покупатели невменяемы? С ними не удается договориться, чтобы они указывали в своих заявках коды/артикулы номенклатурных позиций? Вчера они писали "Печенье вкусное Юбилейное, 300 шт", а сегодня "Печенюшка вкуснятинка Юбилеинка-300"...? И такие заявки на 400 позиций... уходит много времени на ручной ввод заявок в базу?
.
http://infostart.ru/upload/iblock/b09/fuzzy02.jpg
http://infostart.ru/public/14255/
59 листопад
 
04.12.11
18:16
(57) Инфостарт стал платным (((
60 Живой Ископаемый
 
04.12.11
18:27
2(59)прислушайтесь к (47) и (52)... Если у вас количество поставщиков и номенклатуры с которыми вы работаете по такой схеме не увеличивается постоянно и по-многу, то это таки выход... В противном случае вы растратите кучу ментальной энергии и времени на нечеткий поиск, и все равно время от времени он будет лажать...
61 листопад
 
04.12.11
18:30
(60) я это не осилю, времени нет разбираться. Тут с Вашим предложенным вариантом разобраться не могу, как его применить к моей задаче... А завтра уже нужен результат.
62 Живой Ископаемый
 
04.12.11
18:32
2(61) что именно не получается?
63 листопад
 
04.12.11
18:37
(62) Все тоже самое. Код остался такой же. Непонимаю, на каком этапе и куда вставлять функцию РазложитьСтрокуВМассивПодстрок:


Запрос = Новый Запрос("ВЫБРАТЬ ВТ.Наименование,ВТ.Количество
|ПОМЕСТИТЬ ВТ
|ИЗ &ВТ КАК ВТ;
|ВЫБРАТЬ
|ВТ.Наименование,
|ВТ.Количество,
|Номенклатура.Ссылка
|ИЗ ВТ как ВТ ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
|  ПО Номенклатура.Наименование ПОДОБНО ""%""+ВТ.Наименование+""%""");
Запрос.УстановитьПараметр("ВТ", ТаблицаДокумента); //ТаблицаДокумента-это таблица значений на форме обработки

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Для каждого строка из РезультатЗапроса Цикл
   Если Строка.Ссылка = NULL Тогда
       Сообщить(Строка.Наименование + " номенклатура с таким наименованием - не найдена! Строка загружена не будет!");
       Продолжить;
   КонецЕсли;  
   СтрокаТовары = ДокРеализация.Материалы.Добавить();
   СтрокаТовары.Номенклатура = Строка.Ссылка;
   СтрокаТовары.Количество = Строка.Количество;
   ...
КонецЦикла;
64 Живой Ископаемый
 
04.12.11
18:38
вообще не тут...
а на этапе когда вы грузите Ексель в ВТ, чтобы в ВТ.Наименование уже содержало "MOBILGEAR%600%XP%220"
65 Живой Ископаемый
 
04.12.11
18:40
ага, ок.. когда вы грузите Ексель в ТаблицаДокумента
66 листопад
 
04.12.11
18:43
Чтобы было понятно, что я состряпала, выложила на http://narod.ru/disk/33295415001/Миста.erf.html
67 Живой Ископаемый
 
04.12.11
18:45
а файл эксель мне самому вообразить?
68 листопад
 
04.12.11
18:51
(67) Выложила Эксель (желтым выделила загружаемые строки:
http://narod.ru/disk/33296168001/09.2011_%20миста.xls.html
69 ProProg
 
04.12.11
18:56
70 Живой Ископаемый
 
04.12.11
18:56
71 Живой Ископаемый
 
04.12.11
18:57
После
                           Наименование = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value);

дописать:

                           //====
                           КускиНаименования = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Наименование," ");
                           Наименование = "";
                           Для Каждого КусокНаименования ИЗ КускиНаименования Цикл
                               Наименование = Наименование+"%"+КусокНаименования;
                           КонецЦикла;
                           //=====
72 ProProg
 
04.12.11
18:58
все что в этой ветке предложили фигня.
нужно использовать полнотекстовый поиск. но не типовой. у меня данное решение полностью реализовано в http://infostart.ru/public/21810/
73 Mans
 
04.12.11
19:04
угу:
вот я слушал вас всех долго, терпеливо и внимательно,
и наконец понял - ну и дураки же вы все © Райкин А.И.
74 листопад
 
04.12.11
19:13
(71) Спасибо! Все заработало!!!
Но, загрузил лишнее. Объясняю:
В Эксель есть номенклатура "AIRCOL  SN 100". А при загрузке, после разбора наименования, предложенного в (71), он подгрузил две номенклатуры:
"Масло Aircol SN 100" и "Масло CASTROL Aircol SN 100". А должна была подтянуться только "Масло Aircol SN 100"!!!
75 листопад
 
04.12.11
19:16
(74) Подскажите, можно ли в таких случаях, как в (74), сделать возможность выбирать пользователю, какую из найденных номенклатур подгружать? Т.е. чтобы происходил диалог?
76 Живой Ископаемый
 
04.12.11
19:16
2(74) да, именно... а если не дай бог в самом названии будет символ "%" - то это ваще капец...
77 листопад
 
04.12.11
19:19
(76) таких наименований (с символом %), я думаю не будет )))
78 Живой Ископаемый
 
04.12.11
19:20
2(75) послушайте - выполнение запроса диалогами никак не прервать.. запрос в общем случае вообще на сервере выполняется... можно просто если... нашли больше одной строки по одноу наименованию - сообщать об этом

2(77) серьезно? как и наименований с двумя пробелами? Вы точно уверены что нет автомобильного масла с процентом не знаю молибдена или еще какой лажи в названии?
79 Живой Ископаемый
 
04.12.11
19:24
хотя.. процент в названии обходится СтрЗаменить(НаименованиеИзЕкселя,"%","[%]")...
80 листопад
 
04.12.11
19:32
up (75)!!!
81 Живой Ископаемый
 
04.12.11
19:34
2(80) что?
82 листопад
 
04.12.11
19:41
(81) Как сделать возможность выбирать пользователю, какую из найденных номенклатур подгружать???
83 Живой Ископаемый
 
04.12.11
19:42
Как обычно - показать ему промежуточный результат и дать возможно поставить галки в тех строчках, которые с его точки зрения валидны, и грузить уже только их...
84 листопад
 
04.12.11
19:46
(83) набросайте пример, пожалуйста... Я такое никогда еще не писала (((
85 листопад
 
04.12.11
20:57
Ап!
86 Живой Ископаемый
 
04.12.11
21:08
фотки нет, "такого никогда не писала" - какая с вас вообще польза?
не писали - пишите.. читайте книги, смотрите типовые и чужой код.
87 DrShad
 
04.12.11
21:27
даю подсказку в обработке ЗагрузкаДанныхИзТабличногоДокумента это уже реализовано
88 листопад
 
04.12.11
23:01
(86) Если будет помощь, то выложу фото )))
89 Mans
 
04.12.11
23:06
вроде (47) проще, надежней и осмысленней для юзера
90 листопад
 
04.12.11
23:15
(89) Я вообще не представляю, как этот Регистр сведений СоответствиеОбъектовДляОбмена работает (между базой и Эксель).
91 Живой Ископаемый
 
04.12.11
23:20
2(88) а до сих пор мы стало быть только мешали? я понял... больше не станем...
92 листопад
 
04.12.11
23:27
(91) Нет-нет, не уходите пож-та!!! Вы- помогали. Большое СПАСИБО Вам.

P.S. Выложила фото (надеюсь, это принесет какие-то результаты )))
93 Живой Ископаемый
 
04.12.11
23:33
:) я еще в 19.42 ушел... в смысле уехал домой. обработки не взял.
говорите на чем сейчас остановка, у нас есть около 40 минут времени
94 листопад
 
04.12.11
23:36
(93) Данные загружаются, но загружаются и лишние номенклатуры. Я это описала в (74).
95 Живой Ископаемый
 
04.12.11
23:39
я это прочитал и написал (83)
96 Mans
 
04.12.11
23:39
ну такая фотка Живого сделает еще живее
97 листопад
 
04.12.11
23:40
(96) Как это программно сделать?
98 DrShad
 
04.12.11
23:40
(94) обработка из (87) разве не то что нужно?
99 Живой Ископаемый
 
04.12.11
23:41
а как вы программно делаете что "но загружаются и лишние номенклатуры." - куда загружаются?
100 листопад
 
04.12.11
23:44
(99) Загружаются в уже готовый документ Требование-Накладная.

Сейчас код выложу весь...
101 Живой Ископаемый
 
04.12.11
23:46
короче, код (0) но не СтрокаТовары = ДокРеализация.Материалы.Добавить();
а сделайте в вашей же обработке еще одну ТЧ, точь в точь повторяющую первую, но с колонкой "Загружать" типа истина...

в итоге там окажутся две строки.. со второй пользователь снимает галку и нажмет кнопку "Загрузить в документ", тем самым будет добавлена только строка с галкой
102 Живой Ископаемый
 
04.12.11
23:49
щас... пять сек
103 листопад
 
04.12.11
23:51
Вот код на текущий момент:


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   ДокРеализация = Документы.ТребованиеНакладная.СоздатьДокумент();
   
   //***Заполняем шапку документа
   ...
   
   Запрос = Новый Запрос("ВЫБРАТЬ ВТ.Наименование,ВТ.Количество
   |ПОМЕСТИТЬ ВТ
   |ИЗ &ВТ КАК ВТ;
   |ВЫБРАТЬ
   |ВТ.Наименование,
   |ВТ.Количество,
   |Номенклатура.Ссылка
   |ИЗ ВТ как ВТ ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
   |  ПО Номенклатура.Наименование ПОДОБНО ""%""+ВТ.Наименование+""%""");
   Запрос.УстановитьПараметр("ВТ", ТаблицаДокумента);
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();
   
   Для каждого строка из РезультатЗапроса Цикл
       Если Строка.Ссылка = NULL Тогда
           Сообщить(Строка.Наименование + " номенклатура с таким наименованием - не найдена! Строка загружена не будет!");
           Продолжить;
       КонецЕсли;  
       СтрокаТовары = ДокРеализация.Материалы.Добавить();
       СтрокаТовары.Номенклатура = Строка.Ссылка;
       СтрокаТовары.Количество = Число(Строка.Количество);
   КонецЦикла;
   
   ДокРеализация.Записать();
   ДокРеализация.ПолучитьФорму().Открыть();
КонецПроцедуры


Процедура ИмяФайлаНачалоВыбора(Элемент, СтандартнаяОбработка)
   ...    
КонецПроцедуры

Процедура ЧтениеXLSФайла(Элемент)
   
   ExcelПриложение = Новый COMОбъект("Excel.Application");
   ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
   ExcelЛист = ExcelФайл.Sheets(1);
   
   Версия = Лев(ExcelПриложение.Version,Найти(ExcelПриложение.Version,".")-1);
   Если Версия = "8" тогда
       ФайлСтрок   = ExcelПриложение.Cells.CurrentRegion.Rows.Count;
       ФайлКолонок = Макс(ExcelПриложение.Cells.CurrentRegion.Columns.Count, 13);
   Иначе
       ФайлСтрок   = ExcelПриложение.Cells(1,1).SpecialCells(11).Row;
       ФайлКолонок = ExcelПриложение.Cells(1,1).SpecialCells(11).Column;  
   Конецесли;
   
   ТаблицаДокумента.Очистить();
   ТаблицаДокумента.Колонки.Очистить();
   
   // Создать колонки табличного документа
   ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5);
   ТаблицаДокумента.Колонки.Добавить("Наименование",ОписаниеТиповС,"Наименование",50);
   ТаблицаДокумента.Колонки.Добавить("Количество",ОписаниеТиповС,"Количество",10);      
   
   НомерКолонкиНаименование = 2;
   нпп=0;
   
   Для а = 1 по ФайлСтрок Цикл    
       Для б = 1 по ФайлКолонок Цикл    
           Если СокрЛП(ExcelПриложение.Cells(а,б).Text)="Расход за период" Тогда
               Сообщить("зашла в цикл  " + "А="+ а + "  Б="+ б);
               Если СокрЛП(ExcelПриложение.Cells(а+1,б).Value) = "литр" Тогда
                   
                   Состояние("Обработка файла Microsoft Excel.");
                   Для в = а+2 по ФайлСтрок Цикл
                       
                       // ставлю условие, что пока в столбце "Наименование" не пустое значение, Цикл будет продолжаться
                       Если СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value) <> "" Тогда    
                           
                           // ставлю условие, чтобы строки с пустым количеством не обрабатывались
                           Если СокрЛП(ExcelПриложение.Cells(в,б).Value) <> "0" Тогда
                               
                               Наименование = СокрЛП(ExcelПриложение.Cells(в,НомерКолонкиНаименование).Value);
                               Количество   = СокрЛП(ExcelПриложение.Cells(в,б).Value);
                               Количество = СтрЗаменить(Количество, Символы.НПП, "");  
                               
                               //+(
                               КускиНаименования = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Наименование," ");
                               Наименование = "";
                               Для Каждого КусокНаименования ИЗ КускиНаименования Цикл
                                   Наименование = Наименование+"%"+КусокНаименования;
                               КонецЦикла;
                               //+)
                               
                               // Добавить данные в табличную часть экранной формы
                               Стр=ТаблицаДокумента.Добавить();
                               нпп = нпп+1;
                               Стр.Номер                = нпп;
                               Попытка
                                   Стр.Наименование    = Наименование;
                                   Стр.Количество        = Количество;  
                               Исключение
                                   // Не редко происходит ошибка конвертации отдельной ячейки документа
                                   Сообщить("Ошибка чтения строки файла Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
                               КонецПопытки;
                               Состояние("Обработка файла Microsoft Excel.");
                               
                           КонецЕсли;
                           
                       КонецЕсли;
                       
                   КонецЦикла;
                   Прервать;
               КонецЕсли;
           КонецЕсли;
           
       КонецЦикла;
       Если б<=ФайлКолонок Тогда
           Прервать;
       КонецЕсли;
   КонецЦикла;
   
   ExcelПриложение.Quit();
   
   // Отобразить результаты загрузки в форме элемента
   ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
   ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
   
КонецПроцедуры // ЧтениеXLSФайла(Элемент)
104 листопад
 
04.12.11
23:57
(101) Сейчас у меня ТаблицаДокумента на форме обработки имеет вид:
http://s004.radikal.ru/i206/1112/84/c13c94b09756.jpg
105 листопад
 
05.12.11
00:01
А загружает в документ лишнюю номенклатуру (я выделила красным задвоенные). Должна быть только "Масло Aircol SN 100". Номенклатура "Масло CASTROL Aircol SN 100" - лишняя, не должна была загрузиться.
У них у обеих общая часть Aircol SN 100

http://s014.radikal.ru/i327/1112/7b/563a26ffde6c.jpg
106 DrShad
 
05.12.11
00:01
(104) тытак и продолжаешь игнорировать ответы, которых не понимаешь?
107 листопад
 
05.12.11
00:02
(106) Вы сами и ответили на свой вопрос: я их "игнорирую", т.к. их не понимаю как реализовать!!!
108 DrShad
 
05.12.11
00:04
тогда продолжай в том же духе, если не понимаешь нужно спрашивать иначе так и останешься неучем
109 ProProg
 
05.12.11
00:04
(105) в данном случае программа на сто процентов отработала правильно! у тебя полное совпадение. то что у номенклатуры есть еще одно слово то это уже под логику олгаритма не вписывается.
Или отдыхать. ничего ты все равно не успеешь сделать.
110 Живой Ископаемый
 
05.12.11
00:04
еще 2 минут
111 DrShad
 
05.12.11
00:09
+(108) а я пока прослежу за развитием событий, Живому Ископаемому сейчас прийдется расказывать как все переделать, но вот вопрос: а если у него на это время
112 Живой Ископаемый
 
05.12.11
00:11
113 Живой Ископаемый
 
05.12.11
00:12
но уж из ТЧ сделайте загрузку в документ - код у вас уже есть, нужно перенести его только в новую процедуру и убрать запрос с подобно.. Просто перебираете строки и анализируете поле Валидна
114 листопад
 
05.12.11
00:14
(113)  Живой Ископаемый, большое Вам СПАСИБО!!! :*)
Сейчас попробую все это "переварить" )))
115 Mans
 
05.12.11
00:18
ща с регистром попробовал, работаит, а сам главное юзер сам может решение принять а не ждать кодера или xls править
116 Живой Ископаемый
 
05.12.11
00:19
2(115) да стопудов будет работать конечно... Но видите ж - пока без энзимов никуда...
117 ProProg
 
05.12.11
00:30
(115) я бы так не обнадеживался. это пока только начало.
варианций гораздо больше и они гораздо сложнее могут быть.
когда например в разных местах будут слова. либо вообще слитно SN 100 и прочее.
Выы сейчас рассматривали самый простой пример.
118 ProProg
 
05.12.11
00:31
Или что еще прикольнее в названии номенклатуры в строке содержится артикул который в базе вбит не в наименовании а в артикуле и тому подобное..черточки, галочки и прочей фени до чертиков.
119 Живой Ископаемый
 
05.12.11
00:33
Еще вот так:
http://screencast.com/t/WAFdMrKb9A


Процедура НайденнаяНоменклатураПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если ДанныеСтроки.НомерСтроки=1 Тогда
       Возврат;
   Иначе
       Если Элемент.Значение[ДанныеСтроки.НомерСтроки-1].СтрокаКакВЕкселе = ДанныеСтроки.СтрокаКакВЕкселе Тогда
           ОформлениеСтроки.ЦветФона = WebЦвета.БледноКрасноФиолетовый;
           ДанныеСтроки.Валидная = Ложь;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры


В табличной части добавить реквизит СтрокаКакВЕкселе и в



   Для каждого строка из РезультатЗапроса Цикл
       Если Строка.Ссылка = NULL Тогда
           Сообщить(Строка.Наименование + " номенклатура с таким наименованием - не найдена! Строка загружена не будет!");
           Продолжить;
       КонецЕсли;  
       СтрокаТовары = НайденнаяНоменклатура.Добавить();
       СтрокаТовары.Номенклатура = Строка.Ссылка;
       СтрокаТовары.Количество = Строка.Количество;
       СтрокаТовары.Валидная = Истина;
       СтрокаТовары.СтрокаКакВЕкселе = Строка.Наименование;
======



2(118) вот блин ни капли даже не претендую на какую-то универсальность... и отдаю себе в этом отчет
120 Живой Ископаемый
 
05.12.11
00:35
+(119) то есть если поля строк СтрокаКакВЕкселе одинаковые с предыдущей, тогда такая строка подсвечивается малиновым... и галка убирается
121 ProProg
 
05.12.11
00:35
(119) так я и не тебе говорю) просто людям говорю чтобы не обнадеживались что все на этом закончилось))
122 Mans
 
05.12.11
00:35
(118) там диверсанты? судя по скриншоту из первого топика - врядли, и плевать на одну номенклатуру несколько записей регистра
123 ProProg
 
05.12.11
00:38
(122) не знаю как там. я три года в стройматериалах проработал, а сейчас в автозапчастях. нет пределу совершенства - каждый раз что то новое находится в прайсах. Я уж начал понимать, что до бесконечности будет.
124 Живой Ископаемый
 
05.12.11
00:40
а поди сначала думал как ТС - наваяю им сейчас пару часов и пусть юзают.. :)
125 ProProg
 
05.12.11
00:40
(124) во во! точняк))
126 листопад
 
05.12.11
00:43
Всем спасибо!!!
Живой Ископаемый, Вам отдельное большое Вам СПАСИБО!!! Буду разбираться...

P.S. Завтра покажу им про "одинаковые названия номенклатур", может получиться убедить их вводить код номенклатуры и искать по нему...
127 ProProg
 
05.12.11
00:45
(126) вот это правильное решение, а также выбивать из всех поставщиков артикулы.
128 Живой Ископаемый
 
05.12.11
00:46
я вот тут подумал... а что, реально Масло CASTROL Aircol SN 100 и
Масло Aircol SN 100 - два разных продукта а не один одинаковый?
Типа первый - оригинальный Кастрол, а второй - китайская Нонэйм-поделка? :))
129 ProProg
 
05.12.11
00:49
(128) я в таком случае еще проверяю количество слов при совпадении и ставлю автоматом сто процентное совпадение как и по словам так и по их количеству.
130 Живой Ископаемый
 
05.12.11
00:51
не, просто это камень в огород бухов ТС - я думаю они опять слажали при вводе номенклатуры и завели лишнюю, добавив в наименование имя производителя.
131 Mans
 
05.12.11
00:59
а еще бываит (я о своем, о пиве) Bag Beer и Баг Бир, хоть заанализируйся
132 Живой Ископаемый
 
05.12.11
01:02
тут на выручку нам приходит незнание импортных языков... и поыптка передать звучание побуквенно.. от чего никто у нас не говорит пиво "Брама" а исключительно "Брахма" - можно транслитерировать.. :)