Привожу полный код:
//******************************************* Процедура Сформировать() Если глПараметрыToySQL() = 0 Тогда Сообщить("Ошибка загрузки/выгрузки библиотеки ToySQL","!!!"); Возврат; КонецЕсли; ВременнаяТаблица = Query.СоздатьВрем(); Если ВременнаяТаблица.СоздатьТаблицу("#TableTMP"," |DESCR:Строка(155); |Вес: Число(12,3); |Высота: Число(7,2); |Ширина: Число(7,2); |Длина: Число(7,2) |" ) = 0 Тогда Сообщить("Не удалось создать структуру времменой таблицы","!!"); Возврат; КонецЕсли; Попытка Ексель = СоздатьОбъект("Excel.Application"); Исключение Сообщить("Похоже, Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.","!"); Возврат; КонецПопытки; сФайл = ""; сКатал = ""; Если ФС.ВыбратьФайл(0,сФайл,сКатал,"Выберите файл импорта","Таблицы Excel (*.xls)|*.xls") = 1 Тогда ИмяФайла = сКатал+сФайл; КонецЕсли; Если ПустаяСтрока(ИмяФайла)=1 Тогда Возврат; КонецЕсли; Ексель.Workbooks.Open(Сокрлп(ИмяФайла)); Ексель.Visible=1; Книга = Ексель.ActiveWorkbook; Строк = Ексель.Cells.CurrentRegion.Rows.Count; Нач = 2; Кон = строк; ВвестиЧисло(Нач,"Початкова стрічка",12,0,); ВвестиЧисло(Кон,"Кінцева стрічка",12,0); Если Нач>Кон Тогда Возврат; КонецЕсли; НомерКолонкиАртикул = 8; НомерКолонкиВес = 3; НомерКолонкиВысота = 5; НомерКолонкиШирина = 6; НомерКолонкиДлина = 7; Если ВвестиЧисло(НомерКолонкиАртикул,"Номер колонки Артикул",1,0) = 0 Тогда Возврат; КонецЕсли; Если ВвестиЧисло(НомерКолонкиВес,"Номер колонки Вес",1,0) = 0 Тогда Возврат; КонецЕсли; Если ВвестиЧисло(НомерКолонкиВысота,"Номер колонки Высота",1,0) = 0 Тогда Возврат; КонецЕсли; Если ВвестиЧисло(НомерКолонкиШирина,"Номер колонки Ширина",1,0) = 0 Тогда Возврат; КонецЕсли; Если ВвестиЧисло(НомерКолонкиДлина,"Номер колонки Длина",1,0) = 0 Тогда Возврат; КонецЕсли; таб = СоздатьОбъект("ТаблицаЗначений"); таб.НоваяКолонка("Наименование"); таб.НоваяКолонка("Вес"); таб.НоваяКолонка("Высота"); таб.НоваяКолонка("Ширина"); таб.НоваяКолонка("Длина"); СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); Для ТекСтрока = Нач По Кон Цикл Артикул= СокрЛП(Строка(Ексель.Cells(ТекСтрока,НомерКолонкиАртикул).Value)); Вес = Число(Ексель.Cells(ТекСтрока,НомерКолонкиВес).Value); Высота = Число(Ексель.Cells(ТекСтрока,НомерКолонкиВысота).Value); Ширина = Число(Ексель.Cells(ТекСтрока,НомерКолонкиШирина).Value); Длина = Число(Ексель.Cells(ТекСтрока,НомерКолонкиДлина).Value); Если ПустоеЗначение(Артикул) = 1 Тогда Продолжить; КонецЕсли; Если СпрНоменклатура.НайтиПоРеквизиту("Артикул",Артикул,1) = 0 Тогда Сообщить("Позиция с артикулом: " + Артикул + " в учетной системе отсутсвует","!!"); Продолжить; КонецЕсли; Наименование = СокрЛП(СпрНоменклатура.Наименование); Если ПустоеЗначение(Наименование) = 1 Тогда Продолжить; КонецЕсли; //Из наименования исключаем цвета Если Прав(Наименование,1) = ")" Тогда Ошибка = 0; Дужка = ""; ДлинаСтроки = СтрДлина(Наименование); Пока (Дужка <> "(") и (Ошибка = 0) Цикл Дужка = Сред(Наименование,ДлинаСтроки,1); ДлинаСтроки = ДлинаСтроки - 1; Если ДлинаСтроки = 0 Тогда Ошибка = 1; КонецЕсли; КонецЦикла; Если Ошибка = 1 Тогда Сообщить("Не могу отрезать цвет краски, возможно его здесь нету: " + Наименование + " номер строки: " + ТекСтрока,"!"); Иначе РазницаСимволов = (СтрДлина(Наименование)-ДлинаСтроки); Наименование = СокрЛП(Лев(Наименование,СтрДлина(Наименование)-РазницаСимволов)); КонецЕсли; КонецЕсли; Сообщить("номСтр: " + ТекСтрока + " нименование: " + Наименование + " артикул: " + Артикул); таб.НоваяСтрока(); таб.Наименование = Наименование; таб.Вес = Вес; таб.Высота = Высота; таб.Ширина = Ширина; таб.Длина = Длина; QStr = " |INSERT [ВремОбъекты.#TableTMP] | |VALUES('"+Наименование+"', | '"+Вес+"', | '"+Высота+"', | '"+Ширина+"', | '"+Длина+"' | ) |"; Если Query.МетаЗапрос(QStr) = 0 Тогда Сообщить(Query.Ошибка); Сообщить(Query.Разбор(QStr)); СтатусВозврата(0); Возврат; КонецЕсли; КонецЦикла; //таб.Свернуть("Наименование","Количество"); таб.ВыбратьСтроку(0,""); СЗ = СоздатьОбъект("СписокЗначений"); таб.выгрузить(сз,,,"Наименование"); QStr = " | SELECT | [СпрНом.Артикул ] |, [СпрНом.Ссылка ] Номенклатура |, [СпрЕдиницы.Ссылка] ЭлементСпрЕд |, [Временка.Вес ] |, [Временка.Высота] |, [Временка.Ширина] |, [Временка.Длина ] | |FROM | [Справочник.Номенклатура] СпрНом WITH (NOLOCK) | |JOIN | [ВремОбъекты.#TableTMP] AS Временка |ON | [СпрНом.Наименование] like '%'+(RTRIM(Временка.descr))+'%' | |JOIN | [Справочник.Единицы] СпрЕдиницы WITH (NOLOCK) |ON | [СпрНом.Ссылка] = [СпрЕдиницы.Владелец] AND [СпрЕдиницы.Единица] = [СпрНом.БазоваяЕдиницаИзмерения] |"; Если Query.МетаЗапрос(QStr) = 0 Тогда Сообщить(Query.Ошибка); Сообщить(Query.Разбор(QStr)); Возврат; КонецЕсли; ТаблицаСправочника = СоздатьОбъект("ТаблицаЗначений"); Query.Выгрузить(ТаблицаСправочника); Query.Закрыть();
КонецПроцед
|