gifts2017

Загрузка справочников и документов из Excel и *.dbf

Опубликовал Валерий Воробьёв (WWW123) в раздел Обмен - Обмен через DBF

Обработка, с помощью которой можно загрузить данные из Экселя в документ или справочник (далее просто «документ»). Пока можно создавать документы без табличной части (обещаю доделать табличную часть). При создании документа, если реквизит ссылается на справочник, в соответствующем справочнике, при отсутствии такого элемента, создаётся новый.
Пока не решил проблему с записью элементов справочника, имеющих владельца.

При переносе данных пришлось писать много обработок, потом просто стали дописывать предыдущую для следующего случая. В конечном  счете, стало жалко потраченных сил и немного подрезав функциональные свойства, хочу выложить этот загрузчик, тем более для 8.0 ничего похожего не нашёл.

При помощи этой обработки можно загрузить данные из Экселя в документ или справочник (далее просто «документ»). Пока можно создавать документы без табличной части (обещаю доделать табличную часть). При создании документа, если реквизит ссылается на справочник, в соответствующем справочнике, при отсутствии такого элемента, создаётся новый.
Пока не решил проблему с записью элементов справочника, имеющих владельца.

Вообще много писать нечего, если будут вылетать ошибки – не ругайте, пишите, исправлю. Просто в процессе «подрезания» - с целью унификации, могло что-то нарушиться.

Скачать файлы

Наименование Файл Версия Размер
- 221
.epf 20,20Kb
03.12.09
221
.epf 20,20Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Eugeneer (Eugeneer) 02.12.09 20:30
Вообще есть типовая обработка на ИТС
http://infostart.ru/public/19504/
2. Сергей Сытько (8SiriuS8) 03.12.09 10:10
3. K Anna (annak2980) 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. Текст моего примера ламерский, но какая статья такие и комментарии.
4. Vladimir (Boroda) 03.12.09 14:08
Что-то последнее время тут пиарщиков развелось много...: рекламу сделают, распишут..., а на выходе "ноль". Только текст голый...
5. Валерий Воробьёв (WWW123) 03.12.09 18:19
annak2980 - совпадения конечно есть:
- Эксель = новый COMОбъект("Excel.Application");
- КонецЕсли;
-Попытка
Вот пожалуй и всё...

Eugeneer 02.12.2009 20:30:42
Вообще есть типовая обработка на ИТС
http://infostart.ru/public/19504/
Вообшето сказано по русски ДЛЯ 8.0



6. Валерий Воробьёв (WWW123) 03.12.09 18:21
И только 8SiriuS8 заметил, что файл не прилепился, остальные просто хотели быть услышанными
7. Captain Nemo (dreamland) 03.10.11 21:04
Данная обработка на каких конфигурациях тестировалась? Мне надо конкретно для Бухгалтерии предприятия 2.0 и для Управления производственным предприятием 1.3