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

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

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

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

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

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

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

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

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

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

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

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

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

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

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

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

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

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

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

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

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

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

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

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

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

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

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

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

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

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

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

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

Разбор полетов  

Ошибок опыт трудный

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 2996
Комментарии: 0
Не думай о минутах свысока

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

Друзья сайта  

 Выгружаем данные из «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