3.
annak2906
2
03.12.09 12:31
Сейчас в теме
А обработка выглядела наверно так:
Функция ИмпортEXL(Параметры)
Эксель = новый COMОбъект("Excel.Application");
Попытка
Эксель.DisplayAlerts = 0;
ИмяФайла = Параметры.ИмяФайла;
Файл = Эксель.Workbooks.Open(ИмяФайла);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
тзВыписка = Новый ТаблицаЗначений;
тзВыписка.Колонки.Добавить("НомерПП");
тзВыписка.Колонки.Добавить("Приход");
тзВыписка.Колонки.Добавить("Расход");
тзВыписка.Колонки.Добавить("ОКПО");
тзВыписка.Колонки.Добавить("Контрагент");
тзВыписка.Колонки.Добавить("МФО");
тзВыписка.Колонки.Добавить("РСчет");
тзВыписка.Колонки.Добавить("Содержание");
ВыбранныйЛист = Эксель.Sheets(1);
//можно еще и цикл по перебору листов организовать
//Или , например пеосмотрим, сколько колонок
ВсегоКолонок = ВыбранныйЛист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = ВыбранныйЛист.Cells(1,1).SpecialCells(11).Row;
для Строка = 1 по ВсегоСтрок цикл
//далее построчно разбираем клеточки
ТекДата = СокрЛП(ВыбранныйЛист.Cells(Строка,8).Value);
ТекДата = Лев(ТекДата,10);
Если ТекДата <> Формат(Параметры.ДатаДок,"ДФ=dd.MM.yyyy") Тогда
Продолжить;
КонецЕсли;
РС1 = СокрЛП(ВыбранныйЛист.Cells(Строка,21).Value);
//наш счет
РС2 = СокрЛП(ВыбранныйЛист.Cells(Строка,17).Value);
//счет корреспондента
ДК = СокрЛП(ВыбранныйЛист.Cells(Строка,3).Value);
//движение по дебету или кредиту
Если РС1 = Параметры.РСчет Тогда
Если ДК = "К" Тогда // списание со счета
НовСтрока = тзВыписка.Добавить();
НовСтрока.МФО = СокрЛП(ВыбранныйЛист.Cells(Строка,18).Value);
НовСтрока.РСчет= РС2;
сСумма = СокрЛП(ВыбранныйЛист.Cells(Строка,7).Value);
НовСтрока.Расход= сСумма;
НовСтрока.Приход= 0;
НовСтрока.Контрагент = СокрЛП(ВыбранныйЛист.Cells(Строка,16).Value);
НовСтрока.ОКПО= СокрЛП(ВыбранныйЛист.Cells(Строка,19).Value);
ИначеЕсли ДК = "Д" Тогда
// поступление на наш р/с
НовСтрока = тзВыписка.Добавить();
НовСтрока.МФО = СокрЛП(ВыбранныйЛист.Cells(Строка,18).Value);
НовСтрока.РСчет = РС2;
сСумма = СокрЛП(ВыбранныйЛист.Cells(Строка,7).Value);
сСумма = СтрЗаменить(сСумма," ","");
НовСтрока.Расход = 0;
НовСтрока.Приход = сСумма;
НовСтрока.Контрагент = СокрЛП(ВыбранныйЛист.Cells(Строка,16).Value);
НовСтрока.ОКПО= СокрЛП(ВыбранныйЛист.Cells(Строка,19).Value);
КонецЕсли;
Иначе
Продолжить;
КонецЕсли;
НовСтрока.Содержание = СокрЛП(ВыбранныйЛист.Cells(Строка,12).Value);
КонецЦикла;
Попытка
Эксель.Application.Quit();
Исключение
КонецПопытки
Возврат тзВыписка;
КонецФункции
Такое каждый малосведующий в 8-ке накропает быстро в каждом конкретном случае - перенос данных из Foxpro, загрузка из банковской выписки, перенос табелей в ЗУП и прочее.
Ничего нового.
P.S. Текст моего примера ламерский, но какая статья такие и комментарии.