Имя: Пароль:
1C
 
загрузка - выгрузка из ексель
,
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
хныыыыы, но я ведь такова, как и описала выше...
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой