|
v8: Сопоставление номенклатуры при внешней загрузке | ☑ | ||
---|---|---|---|---|
0
листопад
04.12.11
✎
13:25
|
Необходимо загрузить в табличную часть документа ТребованиеНакладная данные из Эксель.
Написала обработку, на форме которой разместила Табличное поле, имеющее тип "ТаблицаЗначений". Т.е. данные из Эксель сначала загружаю в эту ТаблицуЗначений, назвала ее ТаблицаДокумента (состоит из двух колонок: Наименование и Количество). Проблема состоит в идентификации номенклатуры: в Эксель наименование номенклатуры - "MOBILGEAR 600 XP 220". А в 1С, в спр.Номенклатура это наименование занесено как - "Масло Mobilgear 600 XP 220". Пишу запрос, но не находится такая номенклатура, подскажите, как быть??? Вот запрос поиска номенклатуры: Запрос = Новый Запрос("ВЫБРАТЬ ВТ.Наименование,ВТ.Количество |ПОМЕСТИТЬ ВТ |ИЗ &ВТ КАК ВТ; |ВЫБРАТЬ |ВТ.Наименование, |ВТ.Количество, |Номенклатура.Ссылка |ИЗ ВТ как ВТ ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО Номенклатура.Наименование ПОДОБНО ""%""+ВТ.Наименование+""%"""); Запрос.УстановитьПараметр("ВТ", ТаблицаДокумента); //ТаблицаДокумента-это таблица значений на форме обработки РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого строка из РезультатЗапроса Цикл Если Строка.Ссылка = NULL Тогда Сообщить(Строка.Наименование + " номенклатура с таким наименованием - не найдена! Строка загружена не будет!"); Продолжить; КонецЕсли; СтрокаТовары = ДокРеализация.Материалы.Добавить(); СтрокаТовары.Номенклатура = Строка.Ссылка; СтрокаТовары.Количество = Строка.Количество; ... КонецЦикла; |
|||
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
|
начальный топик v8: Эксель: считывание без точного указания столбца и ячейки эт продолжение
|
|||
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
|
Вот так чтоли ? http://infostart.ru/upload/iblock/bed/zagruzka18.png
|
|||
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
|
тут на выручку нам приходит незнание импортных языков... и поыптка передать звучание побуквенно.. от чего никто у нас не говорит пиво "Брама" а исключительно "Брахма" - можно транслитерировать.. :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |