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

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

ИТ-инфраструктура  

Системы мониторинга ИТ-инфраструктуры-2025

Без мониторинга ИТ-инфраструктуры не обходится ни одна компания, хотя бы потому, что

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

Открытое ПО  

Безопасность Open Source: рискуем или контролируем?

Компания «Кросс технолоджис» изучила, как используется ПО с открытым кодом в компаниях

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

Работа с нейросетью  

Скажи, есть ли у тебя AI, и я скажу, кто ты

Недавно сервис по поиску работы SuperJob выяснил, что каждый второй россиянин уже

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

Работа с Debian  

О Linux с любовью или Debian: через знание к любви

Конечно, одним лишь перечислением замечательных качеств любовь к Linux не возникнет. Для

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

Опрос  

Защита личных и клиентских данных: как мошенники используют ИИ и как защититься?

По данным RED Security, общее число кибератак на российские компании в 2024

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

Опрос  

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

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Как с помощью облака сделать

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

Опрос  

Рынок мобильных приложений: что будет актуальным в 2025 году?

Эксперты ИТ-отрасли отвечают на вопросы «Системного администратора» > Ваши прогнозы: чего ожидать от

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

Рынок труда  

Как успешно пройти все этапы собеседования на ИТ-должность?

По оценкам государства, дефицит ИТ-специалистов составляет от 740 тысяч до 1 миллиона

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

Спецпроект «Базальт СПО». Развитие Open Source в России  

Алексей Смирнов: «Сейчас трудно найти программный продукт, в котором нет свободного кода»

Какое будущее ждет свободное ПО? Влияет ли свободная или несвободная разработка на

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

Спецпроект «Базальт СПО». Развитие Open Source в России  

Николай Костригин: «Мы создали Hantis, конвейер автоматизации. Проекты, исследуемые разными инструментами, переходят от одного исполнителя к другому, развиваются, возвращаются к автору, и так по кругу»

О том, как идет работа по повышению безопасности отечественного программного обеспечения, рассказывает

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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