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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

02.12.2013г.
Просмотров: 3100
Комментарии: 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