Выгружаем данные из «1С» в Excel::Журнал СА 11.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
20.12.2019г.
Просмотров: 5101
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 6343
Комментарии: 0
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 7599
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 7922
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 6978
Комментарии: 0
Django 2 в примерах

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Выгружаем данные из «1С» в Excel

Архив номеров / 2007 / Выпуск №11 (60) / Выгружаем данные из «1С» в Excel

Рубрика: Базы данных /  Изучаем «1С»

Андрей Луконькин

Выгружаем данные из «1С» в Excel

Как быть, когда требуется получить некоторую информацию из базы данных «1С:Предприятие» в виде стандартной книги Excel или документа Word? Поможет в этом использование технологии OLE Automation.

Рассмотрим задачу по выгрузке данных о начислении работников организации в банк в виде файла формата Excel. Задача усложняется тем, что файл должен формироваться строго установленного вида, по образцу, присланному из банка.

Обработка написана для «1С:Предприятие» версии 7.7, конфигурация «Зарплата+Кадры. Редакция 2.3».

Создаём внешнюю обработку, располагаем на форме элементы диалога, как это указано на рис. 1, где:

  • ВыбДокумент – реквизит типа Документ.ВыплатаЗаработнойПлаты;
  • Каталог – строка длиной 200 (ограничение по длине строки – 218 символов, поэтому оставляем 200 символов на путь к файлу, и 18 символов на имя файла).

Рисунок 1. Форма внешней обработки

Рисунок 1. Форма внешней обработки

Кнопке выбора каталога задаём формулу ВыборПути() (см. рис. 2).

Рисунок 2. Обработка нажатия кнопки выбора каталога

Рисунок 2. Обработка нажатия кнопки выбора каталога

В модуле обработки добавляем процедуру ВыборПути().

Процедура ВыборПути()

    Каталог2=Каталог;

    Если Фс.ВыбратьКаталог(Каталог2,"Выберите каталог")>0 Тогда

           Если СтрДлина(Каталог2)>200 Тогда

                 Сообщить("Длина каталога превышает 200 символов");

                 Каталог = "";

           Иначе

                 Каталог=Каталог2;

           КонецЕсли;

    КонецЕсли;  

КонецПроцедуры

Теперь самое главное – вводим основной текст нашей обработки, процедуры Сформировать():

Процедура Сформировать()

    //Если не выбран документ Ведомость, работа прекращается

    Если ПустоеЗначение(ВыбДокумент)=1 Тогда

           Предупреждение("Выберите ведомость!");

           Возврат;

    КонецЕсли;

    //Если не выбран каталог для выгрузки, работа прекращается

    Если ПустоеЗначение(Каталог)=1 Тогда

           Предупреждение("Укажите каталог!");    

           Возврат;

    КонецЕсли;

    //Создание объекта MS Excel

    Excel = СоздатьОбъект("Excel.Application");

    //Создаём новую книгу в Excel

    Excel.WorkBooks.Add(); 

    //Задаём ширину колонок

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(1).ColumnWidth = 20;

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(2).ColumnWidth = 10;

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(3).ColumnWidth = 20;

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(4).ColumnWidth = 15;

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(5).ColumnWidth = 20;

    Excel.WorkBooks(1).WorkSheets("Лист1").Columns(6).ColumnWidth = 30;

    //Выводим текст заголовка документа

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(1,1).value = "Ведомость pаспpеделения денежных сpедств на счета физических лиц";

    //Устанавливаем размер шрифта

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(1,1).font.size = 12;

    //Устанавливаем признак шрифта «жирный»

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(1,1).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,1).value = "платежное поpучение №";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,1).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,1).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,4).value = "от";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,4).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(2,4).font.bold = 1;

    //Указываем наименование нашей организации, также могут указываться и другие реквизиты предприятия

    Орг = "ООО НАША ОРГАНИЗАЦИЯ";    

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(4,1).value = Орг;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(4,1).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(4,1).font.bold = 1;

    //«Шапка» табличной части, заголовки столбцов

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,1).value = "        Счет";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,1).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,1).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,2).value = "Сумма";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,2).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,2).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,3).value = "Фамилия";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,3).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,3).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,4).value = "Имя";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,4).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,4).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,5).value = "Отчество";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,5).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,5).font.bold = 1;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,6).value = "Окончательный расчет(+)";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,6).font.size = 12;

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(6,6).font.bold = 1;

    //Выбираем строки ведомости, цикл по всем строкам

    ВыбДокумент.ВыбратьСтроки(); 

    Счетчик = 7;

    Пока ВыбДокумент.ПолучитьСтроку()=1 Цикл

           Счет  = ВыбДокумент.Сотрудник.НомерЗарплатногоСчета;

           Сумма = ВыбДокумент.Сумма;

           //Устанавливаем формат ячейки Excel для номера счета как строковый, чтобы отображались все 20 символов       

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,1). NumberFormat = "@";

           //Устанавливаем значение счета

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,1). value = Строка(Счет);

           //Рассчитываем значение суммы

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,2).value = Сумма;

           //Разбираем ФИО на составляющие, отдельно фамилия, имя и отчество

           Стр = СокрЛП(ВыбДокумент.Сотрудник. Наименование);

           ПозицияПервогоПробела = найти(СокрЛП(Стр),Симв(32));

           Фамилия = Лев(СокрЛП(Стр),ПозицияПервогоПробела-1);

           ОстСтр = Прав(Стр,СтрДлина(Стр)-СтрДлина(Фамилия)-1);

           ПозицияВторогоПробела = найти(СокрЛП(ОстСтр),Симв(32));

           Имя = Лев(СокрЛП(остСтр),ПозицияВторогоПробела-1);

           ОстСтр = Прав(ОстСтр,СтрДлина(ОстСтр)-СтрДлина(Имя)-1);

           Отчество = СокрЛП(ОстСтр);

           //Устанавливаем текстовый формат ячеек и выводим ФИО

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,3).NumberFormat = "@";

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,3).value = ВРЕГ(Фамилия);

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,4).NumberFormat = "@";

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,4).value = ВРЕГ(Имя);

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,5).NumberFormat = "@";

           Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик,5).value = ВРЕГ(Отчество);

           Счетчик = Счетчик + 1;

    КонецЦикла;

    //Выводим итоговую строку

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик+1,1).NumberFormat = "@";

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик+1,1).value ="Итого:";

    //Вводим формулу в ячейку, считаем итоговую сумму

    Excel.WorkBooks(1).WorkSheets("Лист1").cells(Счетчик+1,2).FormulaR1C1 ="=SUM(R[-"+Строка(Счетчик-6)+"]C:R[-2]C)";

    //Записываем файл Excel. Имя – это номер нашей ведомости

    Попытка

           Excel.ActiveWorkBook.SaveAs(СокрЛП(Каталог)+"\"+ВыбДокумент.НомерДок+".xls");

    Исключение

           Сообщить(«Неудачная попытка сохранения файла»);

    КонецПопытки;

    //Закрываем книгу Excel

    Excel.ActiveWorkBook.Close();

КонецПроцедуры

В результате мы получаем готовый файл формата Excel, название которого совпадает с номером платежной ведомости, который уже можно отсылать в банк для зачисления заработной платы на счета зарплатных пластиковых карт сотрудников (см. рис. 3).

Рисунок 3. Результат нашей работы

Рисунок 3. Результат нашей работы

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


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru