![]() |
![]() |
![]() |
|
Подскажите синтаксис sql запроса к xls | ☑ | ||
---|---|---|---|---|
0
Сайрус
22.04.12
✎
20:41
|
Всем привет. Стоит задача разработки обработки выгрузки из XLS файла в табличную часть Документы.РеализацияТоваров.
С помощью внутреннего языка 1с - сделал, но вот теперь стала задача осуществления вышесказанного с помощью SQL запроса.. Подскажите синтаксис и как вообще строится данный запрос. п.с. в моем случае в заказ.xls 2 колонки 1. Артикул; 2. Количество. Артикул = Номенклатуре, Количество = Количеству соответственно. как вырвать столбцы их файла эксель и в цикле их обойти записав в табЧасть? сам запрос как будет выглядеть? спасибо заранее. Жду ответа, как соловей лета. |
|||
1
aleks-id
22.04.12
✎
20:43
|
||||
2
Сайрус
22.04.12
✎
20:44
|
Недавно решил эту задачу с помощью внутреннего языка (как говорил выше) сейчас надо на sxl.
Листинг кода с помощью внутреннего языка: Форма обработки: &НаКлиенте Процедура ВыбратьФайл(Команда) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим); ДиалогВыбораФайла.ПолноеИмяФайла = ""; Текст = "ru = ""Текст""; en = ""Text"""; Фильтр = НСтр(Текст)+"(*.xls)|*.xls"; ДиалогВыбораФайла.Фильтр = Фильтр; ДиалогВыбораФайла.МножественныйВыбор = Ложь; ДиалогВыбораФайла.Заголовок = "Выберите файлы"; ДиалогВыбораФайла.Выбрать(); Каталог = ДиалогВыбораФайла.Каталог; НашФайл = ДиалогВыбораФайла.ВыбранныеФайлы.Получить(0); ВыбратьФайлНаСервере(НашФайл).ПолучитьФорму("ФормаДокумента").Открыть(); КонецПроцедуры &НаСервереБезКонтекста Функция ВыбратьФайлНаСервере(Путь) Док = ПолучитьCOMОбъект(Путь); НовыйДокумент = Документы.РеализацияТоваров.СоздатьДокумент(); НовыйДокумент.Дата = ТекущаяДата(); Товар = "НоваяНоменклатура"; счСтроки = 2; Пока СокрЛП(Товар) <> "" Цикл Товар = Док.Sheets(1).Cells(счСтроки,1).Value; Количество = Док.Sheets(1).Cells(счСтроки,2).Value; Если Товар = Неопределено Тогда Док.Application.Quit(); НовыйДокумент.Записать(); Ном = НовыйДокумент.Номер; Форма = Документы.РеализацияТоваров.НайтиПоНомеру(Ном); Возврат Форма; КонецЕсли; Наименование = Справочники.Номенклатура.НайтиПоНаименованию(Товар); НоваяСтрока = НовыйДокумент.Товары.Добавить(); Структура = Новый Структура("Номенклатура", Наименование); Цена = РегистрыСведений.ЦеныНоменклатуры.СрезПоследних( ,Структура).ВыгрузитьКолонку("Цена").Получить(0); НоваяСтрока.Номенклатура = Наименование; НоваяСтрока.Количество = Количество; НоваяСтрока.Цена = Цена; НоваяСтрока.Сумма = Цена * Количество; НовыйДокумент.Записать(); Сообщить(Строка(Наименование) + "–" + Строка(Количество)); счСтроки = счСтроки + 1; КонецЦикла; КонецФункции |
|||
3
Сайрус
22.04.12
✎
20:45
|
aleks-id, уже курил этот мануал( не смог понять полностью что да как(
|
|||
4
Сайрус
22.04.12
✎
20:54
|
Подскажите просто как запрос написать, как в переменные присвоить значения столбцов (артикул и количество) и как организовать цикл по строкам..
главная моя проблема - первый раз сталкиваюсь с SQL. тольо на внутреннем языке имел практику.. |
|||
5
Сайрус
23.04.12
✎
00:56
|
ап
|
|||
6
Torquader
23.04.12
✎
01:16
|
Ну и чего бояться SQL?
Если подключаться к Excel через ADO,то каждый лист представляется как таблица - и можно писать запрос select к этой таблице,а далее выбор результатов запроса. Только нужно помнить,что в ячейках могут быть любые значения,тогда как ADO любит,чтобы они были однотипные. |
|||
7
КонецЦикла
модератор
23.04.12
✎
01:23
|
Пример из клюшек...
База =СоздатьОбъект("ODBCDatabase"); Если База.Соединение("DRIVER=Microsoft Excel Driver (*.xls); DBQ=" + СокрЛП(ИмяФайла)) = 0 Тогда Предупреждение("Ошибка открытия файла", 20); Возврат; КонецЕсли; RecordSetXLS =СоздатьОбъект("ODBCRecordSet"); RecordSetXLS.УстБД(База); ТекстЗапроса =" |select * |from [Лист1$A1:AZ] |"; ТЗ = RecordSetXLS.ВыполнитьИнструкцию(ТекстЗапроса); |
|||
8
Сайрус
23.04.12
✎
01:29
|
Torquader, ясно сиб, буду знать.
Только я через COM соединение. ADO - пока не в курсе.. но стало интересно и скоро поучу) по делу у меня таблица в эксель вида Артикул | Количество -------------------- **** | ** **** | ** **** | ** **** | ** Если на внутреннем языке запрос будет выглядеть так: Запрос = Новый Запрос(" |ВЫБРАТЬ | Таблица.Артикул | Таблица.Количество |ИЗ | Таблица"); Результат = Запрос.Выполнить(); То как его написать на SQL я незнаю) Вот хотелось бы пример от сильных форума сего получить) Как запрос сам получить и что он вернет черканите плиз, аналогично моему на внутреннем) буду примного благодарен. |||||||||| |
|||
9
Сайрус
23.04.12
✎
01:31
|
КонецЦикла, о, спасибо! Попробую по твоему примеру что-нибудь навоять)
|
|||
10
Сайрус
24.04.12
✎
21:28
|
{Обработка.ИзXlsВРеализациюSQL.Форма.Форма.Форма(18,8)}: Процедура или функция с указанным именем не определена (СоздатьОбъект)
База =<<?>>СоздатьОбъект("ODBCDatabase"); {Обработка.ИзXlsВРеализациюSQL.Форма.Форма.Форма(20,16)}: Процедура или функция с указанным именем не определена (СоздатьОбъект) RecordSetXLS =<<?>>СоздатьОбъект("ODBCRecordSet"); ругается на СоздатьОбъект()..( В синтаксис помощнике не нашел инфы по этой функции подскажите почему.. 8.2 приложение управляемое. форма обработки. |
|||
11
Агент Инфостарта
24.04.12
✎
21:46
|
(10) Патамушта. Учу читать и думать, дорого.
Это пример из клюшек, для снеговика требуется небольшая переделка. |
|||
12
КМ155
24.04.12
✎
21:46
|
(10) Цепляться к xls через ODBC - мсье знает толк в извращениях
|
|||
13
Сайрус
24.04.12
✎
22:08
|
намек понял) сиб)
|
|||
14
Сайрус
24.04.12
✎
23:40
|
Всем спс за помощь, задачу выполнил)
с помощью: СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+НашФайл; СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=NO;IMEX=1"";"; // Подключаемся Об_Конект = Новый COMОбъект("ADODB.Connection"); Попытка Об_Конект.Open(СтрокаПодключения); Исключение Сообщить ("Невозможно подключится к Microsoft Excel Driver!!! |Возможно файл ["+НашФайл+"] открыт другим пользователем."); Возврат; КонецПопытки; СтрЗапроса = " |SELECT * |FROM [A" + Формат(НачальнаяСтрока,"ЧГ=0") + ":CZ" + Формат(КонечнаяСтрока,"ЧГ=0") + "]"; Попытка RecordSet = Об_Конект.Execute(СтрЗапроса); Исключение Сообщить("Не удалось выполнить запрос к файлу Excel |"+ ОписаниеОшибки(),СтатусСообщения.Важное); Возврат; КонецПопытки; пасибо, реально помогли понять некоторые моменты) |
|||
15
Сайрус
24.04.12
✎
23:59
|
еще один неадекватный вопрос)
Что такое "Клюшка" и "Снеговик"? только, пожалуйста, конкретный вопрос - конкретный ответ) я знаю что глупый вопрос задаю) |
|||
16
BigShmax
25.04.12
✎
00:01
|
7.7 - клюшки
8 - снеговик :-))))))))))))))) |
|||
17
Сайрус
25.04.12
✎
01:31
|
BigShmax, спасибо) черезчур символический жаргон в этой сфере))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |