|
Поиск данных по коду | ☑ | ||
---|---|---|---|---|
0
Валидатор
27.12.13
✎
13:38
|
Есть номенклатура в УТ 10.3 загруженная, есть ексель файл, в котором 900 позиций номенклатуры, нужно сделать обработку синхронизации данных из екселя и номенклатуры, если синхронизация есть, то записываем в созданный заранее РС. все вроде получилось, но из 900 позиций записалось только 881, то есть 19 не записались, начал разбираться в чем дело, оказалось, что в номенклатуре у некоторых элементов, которые не прошли синхронизацию код следующего вида:
123456(пробел)(пробел)(пробел) а в экселе записано просто как 123456 без пробела, и в итоге программа ищет 123456, находит 123456(пробел)(пробел) и не выдает соответствия, как убрать эти пробелы у самой уже номенклатуры? сокр не подходит( |
|||
1
Валидатор
27.12.13
✎
13:38
|
вот код:
НомерЛиста = 1; Попытка Док = новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Док.Workbooks.Open(ПутьКФайлу); Док.Sheets(НомерЛиста).select(); Версия = Лев(Док.Version,Найти(Док.Version,".")-1); Если Версия = "8" тогда ФайлСтрок = Док.Cells.CurrentRegion.Rows.Count; ФайлКолонок = Макс(Док.Cells.CurrentRegion.Columns.Count, 13); Иначе ФайлСтрок = Док.Cells(1,1).SpecialCells(11).Row; ФайлКолонок = Док.Cells(1,1).SpecialCells(11).Column; КонецЕсли; НомерКолонкиКодаТовара = 3; НомерКолонкиНаименованияТовара = 2; НомерКолонкиИдентефикатораТовар = 4; НомерКолонкиКодаТовараИз8рки = 7; Для а = 2 по ФайлСтрок -1 Цикл КодТовара = СокрЛП(Док.Cells(а,НомерКолонкиКодаТовара).Value); КодТовара = Формат(Число(КодТовара), "ЧН=0; ЧГ=0"); НаименованиеТовара = СокрЛП(Док.Cells(а,НомерКолонкиНаименованияТовара).Value); Идентификатор = СокрЛП(Док.Cells(а,НомерКолонкиИдентефикатораТовар).Value); Код8ки = Строка(Док.Cells(а,НомерКолонкиКодаТовараИз8рки).Value); Код8ки = ДобавитьНули(Код8ки, 8); Товар = Справочники.Номенклатура.НайтиПоКоду(Код8ки); Если НЕ Товар = Справочники.Номенклатура.ПустаяСсылка() Тогда НовоеСоответствиеОбъектов = РегистрыСведений.ттСоответствиеОбъектов.СоздатьМенеджерЗаписи(); НовоеСоответствиеОбъектов.Идентификатор = Идентификатор; НовоеСоответствиеОбъектов.Прочитать(); Если НЕ НовоеСоответствиеОбъектов.Выбран() Тогда НовоеСоответствиеОбъектов.Идентификатор = Идентификатор; КонецЕсли; НовоеСоответствиеОбъектов.Код77 = КодТовара; НовоеСоответствиеОбъектов.НомерБазы = НомерБазы; НовоеСоответствиеОбъектов.Наименование77 = НаименованиеТовара; НовоеСоответствиеОбъектов.Ссылка = Товар; Попытка НовоеСоответствиеОбъектов.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Иначе Сообщить("Товар " + НаименованиеТовара + " не найден"); КонецЕсли; КонецЦикла; Док.ActiveWorkbook.Close(); |
|||
2
wanderer_ица
27.12.13
✎
13:42
|
Ммм... а ПОДОБНО не поможет?
|
|||
3
Strogg
27.12.13
✎
13:42
|
СокрЛП() жи есть.
|
|||
4
Валидатор
27.12.13
✎
13:45
|
(3)
Товар = Справочники.Номенклатура.НайтиПоКоду(СОКРЛП(Код8ки)); нам уберет нули у переменной код8ки, а не в коде справочника номенклатуры у элементов же |
|||
5
Strogg
27.12.13
✎
13:47
|
(4) - у справочника номенклатуры есить вполне определенная длина кода. Получай сокрЛП и добивай до длины кода нулями, ну или что там у тебя будет. префикс плюс нули.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |