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

  Опросы
  Статьи

Мониторинг  

Какая задача мониторинга отнимает больше всего времени?

Многие системные администраторы тратят до 30% рабочего времени на рутину мониторинга. Но

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

Рынок труда  

Какие навыки вы хотите развивать в 2026 году?

Рынок труда меняется быстро. Еще вчера его называли рынком соискателей, а сегодня

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

Книжная полка  

От сисадмина до архитектора: книги, которые прокачают ваш стек в этом году

Новинки от издательства «БХВ» отличаются тем, что в них часто делается упор

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

Автоматизация  

Автоматизируем рутину: что реально работает?

Многие сисадмины автоматизировали что-то за последний год. Но далеко не все остались

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

Защита ИТ-системы  

Практическая защита: что вы внедрили и что мешает?

Какие меры безопасности реально внедрить в реальных условиях – и что не

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

Вопрос-ответ  

Обеспечиваем безопасную эксплуатацию базы данных

Что для вас чаще всего является причиной инцидентов с БД? Как вы

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

Книжная полка  

От «безопасного» Linux до Контролируемого взлома

Издательство «БХВ» продолжает радовать читателей интересными новинками и в наступившем году. Вы можете

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

1001 и 1 книга  
19.03.2018г.
Просмотров: 13312
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

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

12.03.2018г.
Просмотров: 13425
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

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

12.03.2018г.
Просмотров: 10881
Комментарии: 0
Глубокое обучение с точки зрения практика

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

12.03.2018г.
Просмотров: 5817
Комментарии: 0
Изучаем pandas

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

12.03.2018г.
Просмотров: 6663
Комментарии: 0
Программирование на языке Rust (Цветное издание)

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

19.12.2017г.
Просмотров: 6536
Комментарии: 0
Глубокое обучение

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

19.12.2017г.
Просмотров: 9394
Комментарии: 0
Анализ социальных медиа на Python

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

19.12.2017г.
Просмотров: 5991
Комментарии: 0
Основы блокчейна

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

19.12.2017г.
Просмотров: 6216
Комментарии: 0
Java 9. Полный обзор нововведений

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

16.02.2017г.
Просмотров: 10364
Комментарии: 0
Опоздавших не бывает, или книга о стеке

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

17.05.2016г.
Просмотров: 13811
Комментарии: 0
Теория вычислений для программистов

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

30.03.2015г.
Просмотров: 15284
Комментарии: 0
От математики к обобщенному программированию

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

18.02.2014г.
Просмотров: 17604
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

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

13.02.2014г.
Просмотров: 12464
Комментарии: 0
Читайте, размышляйте, действуйте

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

12.02.2014г.
Просмотров: 10466
Комментарии: 0
Рисуем наши мысли

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

10.02.2014г.
Просмотров: 8680
Комментарии: 4
Страна в цифрах

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

18.12.2013г.
Просмотров: 7281
Комментарии: 0
Большие данные меняют нашу жизнь

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

18.12.2013г.
Просмотров: 6088
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

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

04.12.2013г.
Просмотров: 5721
Комментарии: 0
Паутина в облаках

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

03.12.2013г.
Просмотров: 6036
Комментарии: 1
Рецензия на книгу «MongoDB в действии»

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

Друзья сайта  

 Выгружаем данные из «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-45
E-mail: sa@samag.ru