|
загрузка - выгрузка из ексель | ☑ | ||
---|---|---|---|---|
0
Дурындина
14.10.14
✎
10:57
|
добрый день, на сегодня у меня такая задачка - нужно загрузить список кодов из ексель,"посмотреть" на каждый код некий коэффициент и выгрузить в ексель.
технично я представляю себе так - ексель: коды 001 002 003 загрузить в массив в 1с или структуру, массив подставить в запрос и получить на каждый код нужные данные. Дальше выгрузить в ексель. наверное можно было бы сразу выгружать на какой нибудь отдельный лист код+найденный коэффициент, но рук. утверждает, что можно сразу выгружать коэффициент, в ту же таблицу,на том же листе, только колонку рядом. Разве это возможно? если да, то как? |
|||
1
Banned
14.10.14
✎
11:05
|
Я не против. Выгружай.
|
|||
2
Дурындина
14.10.14
✎
11:08
|
мммм, как как?
|
|||
3
silent person
14.10.14
✎
11:09
|
что как ? что именно не понятно ? в инете куча примеров по чтению записи в Excel
|
|||
4
silent person
14.10.14
✎
11:14
|
||||
5
shuhard
14.10.14
✎
11:18
|
(0)[но рук. утверждает, что можно сразу выгружать коэффициент, в ту же таблицу,на том же листе, только колонку рядом. Разве это возможно]
ADODB |
|||
6
боксер
14.10.14
✎
11:20
|
(4) хорошая ссылка
|
|||
7
Дурындина
14.10.14
✎
15:47
|
ну не понятно как выгружать каждый коэффициент, соответственно его коду?
если в екселе у меня 001 002 003, то как правильно добавить колонку 001 1 002 2 003 3 как узнать, что именно коду оо1 соответствует коэф 1 из запроса? |
|||
8
второй Вах
14.10.14
✎
16:01
|
фигасе руки, уже малолеток берут
|
|||
9
Дурындина
14.10.14
✎
16:09
|
ага, так дешевле)
|
|||
10
ultrannge89
15.10.14
✎
08:36
|
Не понятно что ты там решил делать на самом деле... Не так давно я писал обработку, чтобы читать данные из из excel и писать в новый документ их.
Вот код: //Диалог выбора файла Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл Excel"; Диалог.ПолноеИмяФайла = ""; Диалог.ПредварительныйПросмотр = Ложь; Диалог.Фильтр = "Книга Excel с макросами xlsm (*.xlsm)|*.xlsm|Книги Excel xls (*.xls)|*.xls|Книги Excel xlsx (*.xlsx)|*.xlsx"; Если Диалог.Выбрать() Тогда ИмяФайла = Диалог.ПолноеИмяФайла; Иначе Возврат; КонецЕсли; //Доступ из 1С к Excel Попытка Эксель = Новый COMОбъект("Excel.Application"); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Эксель.AskToUpdateLinks = Ложь; Эксель.DisplayAlerts = Ложь; //Открываем книгу Книга = Эксель.WorkBooks.Open(ИмяФайла,0); //Список значений из имен всех листов Для Инд = 1 По Книга.Sheets.Count Цикл ЛистЭксель = Книга.WorkSheets(Инд); ТЗ = ПрочитатьЛистExcel(ЛистЭксель); Если Инд = 1 Тогда ОбщаяТаблица = Новый ТаблицаЗначений; ОбщаяТаблица.Колонки.Добавить("ТипСекции", Новый ОписаниеТипов("СправочникСсылка.ТипСекции")); ОбщаяТаблица.Колонки.Добавить("пТипСекции", Новый ОписаниеТипов("Строка")); ОбщаяТаблица.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ОбщаяТаблица.Колонки.Добавить("пНоменклатура", Новый ОписаниеТипов("Строка")); ОбщаяТаблица.Колонки.Добавить("НомерКвартиры", Новый ОписаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("Этаж", Новый ОписаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("Подъезд", Новый ОписаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("ТипКвартиры", Новый ОписаниеТипов("Число")); КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный); ОбщаяТаблица.Колонки.Добавить("ПлощадьКвартиры", Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ОбщаяТаблица.Колонки.Добавить("СтатусДоговора", Новый ОписаниеТипов("ПеречислениеСсылка.СтатусДоговора")); ОбщаяТаблица.Колонки.Добавить("пСтатусДоговора", Новый ОписаниеТипов("Строка")); ОбщаяТаблица.Колонки.Добавить("СуммаДоговора", Новый ОписаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("ПеречисленоПоДоговору", Новый ОписаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("СтоимостьКвартиры", Новый описаниеТипов("Число")); ОбщаяТаблица.Колонки.Добавить("НомерДоговора", Новый ОписаниеТипов("Строка")); ОбщаяТаблица.Колонки.Добавить("НомРодитель", Новый ОписаниеТипов("СправочникСсылка.Номенклатура")); ОбщаяТаблица.Очистить(); КонецЕсли; //ищем рабочую зону Для Каждого Строка Из ТЗ Цикл Если НайденТипСекции(Строка.Колонка1) Тогда ОТ = ОбщаяТаблица.Добавить(); ТипСекции = ВернутьТипСекции(Строка.Колонка1); ОТ.ТипСекции = ТипСекции; ОТ.пТипСекции = Строка.Колонка1; ОТ.пНоменклатура = Строка.Колонка2; ОТ.Номенклатура = ВернутьНоменклатуру(Строка.Колонка2, СтроительнаяПлощадка); ОТ.НомерКвартиры = Строка.Колонка3; ОТ.Этаж = Строка.Колонка4; ОТ.Подъезд = Строка.Колонка5; ОТ.ТипКвартиры = Строка.Колонка6; ОТ.ПлощадьКвартиры = Строка.Колонка8; ОТ.пСтатусДоговора = Строка.Колонка12; ОТ.СтоимостьКвартиры = Строка.Колонка11; Если Лев(Строка.Колонка12,11) = "Договор пер" Тогда ОТ.СтатусДоговора = Перечисления.СтатусДоговора.ДоговорПереуступкиДолга; ИначеЕсли Лев(Строка.Колонка12,11) = "Договор инв" Тогда ОТ.СтатусДоговора = Перечисления.СтатусДоговора.ДоговорИнвестированияДДУ; Иначе Перечисления.СтатусДоговора.ПустаяСсылка(); КонецЕсли; ОТ.СуммаДоговора = Строка.Колонка13; ОТ.ПеречисленоПоДоговору = Строка.Колонка14; ОТ.НомерДоговора = Строка.Колонка16; КонецЕсли; КонецЦикла; КонецЦикла; Если ОбщаяТаблица.Количество() > 0 Тогда //Если Выгрузка = Истина Тогда НовыйДокумент = Документы.ВводОстатков.СоздатьДокумент(); НовыйДокумент.Дата = ДатаЗагрузки; НовыйДокумент.Комментарий = "Автоматическая загрузка от "+ДатаЗагрузки; НовыйДокумент.НачальныеОстатки.Загрузить(ОбщаяТаблица); НовыйДокумент.ПолучитьФорму().Открыть(); //Иначе // Сообщить("Отстутсвуют какие либо изменения в отчете!"); //КонецЕсли; КонецЕсли; |
|||
11
ultrannge89
15.10.14
✎
08:41
|
Вот еще:
Функция ПрочитатьЛистExcel(ЛистЭксель = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0, ТЗ = Неопределено) Экспорт Если ЛистЭксель = Неопределено Тогда ЛистЭксель = ПолучитьCOMОбъект(,"Excel.Application"); КонецЕсли; Если ВсегоСтрок = 0 Тогда ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; КонецЕсли; Если ВсегоКолонок = 0 Тогда ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; КонецЕсли; Если ТЗ = Неопределено Тогда ТЗ = Новый ТаблицаЗначений; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; КонецЕсли; Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; ЛистЭксель = Неопределено; Возврат ТЗ; КонецФункции |
|||
12
Godofsin
15.10.14
✎
08:56
|
(9) "Я не настолько богат, чтобы окупать дешевые вещи." (c) Черчилль.
|
|||
13
Godofsin
15.10.14
✎
08:56
|
окупать = покупать
|
|||
14
Godofsin
15.10.14
✎
08:57
|
Наврал ))) Ротшильд
|
|||
15
Крошка Ру
15.10.14
✎
09:07
|
(12)(14) "Основная проблема цитат в интернете - это то, что им все верят" (с) В.И.Ленин
|
|||
16
Godofsin
15.10.14
✎
09:09
|
(15) во во ))))
|
|||
17
Дурындина
16.10.14
✎
15:30
|
всем спасибо за участие, разобрались - но почему "решил"? почему вы считаете, что я не могу быть вполне себе милой и молодой девушкой? стройной и привлекательной между прочим....
|
|||
18
Дурындина
16.10.14
✎
15:30
|
и скромной
|
|||
19
Крошка Ру
16.10.14
✎
15:45
|
(18) Правило интернетов №16
|
|||
20
Дурындина
16.10.14
✎
16:10
|
хныыыыы, но я ведь такова, как и описала выше...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |