gifts2017

Выгрузка данных по зарплатному проекту для ЗАО "КРЕДИТ ЕВРОПА БАНК" в Excel (для 1С 8.2 HRM)

Опубликовал Руслан (02RUSlan) в раздел Обработки - Обработка документов

Внешняя обработка: Выгрузка данных по зарплатному проекту для ЗАО "КРЕДИТ ЕВРОПА БАНК" с созданием файла Excel в 1С 8.2 HRM

Новая внешняя обработка выгрузки по зарплатному проекту для ЗАО "Кредит Европа Банк"

В Процедуре КнопкаВыполнитьНажатие(Кнопка) надо изменить

// здесь надо поставить свой путь к шаблону
    Книга = Excell.WorkBooks.Open("C:\1C\SALARY.xlsm");

    // здесь надо поставить ваши коды для организации    
    Если Организация.Код = "000000078" Тогда
        КлиентНом = "765";
    ИначеЕсли Организация.Код = "000000032" Тогда
        КлиентНом = "3TS";
    ИначеЕсли Организация.Код = "000000099" Тогда    
        КлиентНом = "0RX";
    КонецЕсли;   

Процедура ПриОткрытии()
    //куда выгружаем по умолчанию
    Элементыформы.Файл.Значение = "D:\base1C\Ведомость.xlsm";
КонецПроцедуры

 

Вариант 2 (внешний шаблон)

Процедура КнопкаВыполнитьНажатие(Кнопка)
    Попытка
        Excell = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить(ОписаниеОшибки() + " Программа Exсel не установлена на данном компьютере!");
        Возврат;
    КонецПопытки;
    Книга = Excell.WorkBooks.Open("C:\maket_nerezedent.xls"); //******здесь необходимо указать путь к шаблону
.....

***************

Ключевые моменты:

Макет = ПолучитьМакет("Макет");   

Книга = Макет.Получить();

Лист = Книга.WorkSheets(1);                          // Установка листа в качестве рабочего с номером 1.

Лист.Cells(1,1).Value = "1234567";

Книга.Windows(1).Visible = 1;                        //без строчки ниже при использовании метода SaveAs
                                                     //документ создается c закрытым листом (в данном случае лист 1)

Лист.Rows("15:15").Insert(1);                        //добавить строку 15

Лист.Rows(Строка(17) + ":" + Строка(17)).Delete(1);  //удалить строку 17


Попытка
    Книга.SaveAs("D:\111.xls",56);                   //(,56)сохраняется с параметром XlExcel8 (Microsoft Office 97-2003)
Исключение
    Сообщить(ОписаниеОшибки()+" Файл не сохранен!");
КонецПопытки;

 

 

1)В создание пригодилась информация с http://forum.infostart.ru/forum24/topic40980/


2)Часто используемые методы для чтения/установки значений в Excel.

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

 

Получение доступа к приложению Excel.

Эксель.Visible = Видимость;

 

0 - Excel не виден, 1 - виден.

Книга = Эксель.WorkBooks.Add();

 

Создание новой книги (файла) Excel.

Книга.SaveAs(ИмяФайла);

 

Сохранение книги Excel.

Лист = Книга.WorkSheets.Add();

 

Добавление нового листа в книгу.

Книга = Эксель.WorkBooks.Open(ИмяФайла);

 

Открытие существующей книги (файла) Excel.

Лист = Книга.WorkSheets(НомерЛиста);

 

Установка листа в качестве рабочего с номером НомерЛиста.

Лист.Name = ИмяЛиста;

 

Задание рабочему листу имени ИмяЛиста

Лист.PageSetup.Zoom = Масштаб;

 

Задание параметра страницы "Масштаб" (от 10 до 400).

Лист.PageSetup.Orientation = Ориентация;

 

Ориентация: 1 - книжная, 2 - альбомная.

Лист.PageSetup.LeftMargin = Эксель.CentimetersToPoints(Сантиметры);

 

Задание левой границы (в сантиметрах).

Лист.PageSetup.TopMargin =

Эксель.CentimetersToPoints(Сантиметры);

 

Задание верхней границы (в сантиметрах).

Лист.PageSetup.RightMargin =

Эксель.CentimetersToPoints(Сантиметры);

 

Задание правой границы (в сантиметрах).

Лист.PageSetup.BottomMargin =

Эксель.CentimetersToPoints(Сантиметры);

 

Задание нижней границы (в сантиметрах).

Лист.Columns(НомерКолонки).ColumnWidth = Ширина;

 

Задание ширины колонке.

Лист.Cells(НомерСтроки,НомерКолонки).Value = Значение;

 

Ввод данных в ячейку.

Лист.Cells(НомерСтроки,НомерКолонки).Font.Name = ИмяШрифта;

 

Установка шрифта в ячейке.

Лист.Cells(НомерСтроки,НомерКолонки).Font.Size = РазмерШрифта;

 

Установка размера шрифта в ячейке.

Лист.Cells(НомерСтроки,НомерКолонки).Font.Bold = Жирный;

 

1 - жирный шрифт, 0 - нормальный.

Лист.Cells(НомерСтроки,НомерКолонки).Font.Italic = Курсив;

 

1 - наклонный шрифт, 0 - нормальный.

Лист.Cells(НомерСтроки,НомерКолонки).Font.Underline =

Подчеркнутый;

 

2 - подчеркнутый, 1 - нет.

Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat =

Формат;

 

Установка формата данных ячейки.

Лист.Cells(НомерСтроки,НомерКолонки).Borders.Linestyle =

ТипЛинии;

 

Установка рамок ячейки. 1 - тонкая сплошная.

Скачать файлы

Наименование Файл Версия Размер
Внешняя обработка: Выгрузка данных по ЗП для ЗАО "КРЕДИТ ЕВРОПА БАНК" резедент в D:\_ВЕДОМОСТЬ Рез.xls 104
.epf 28,46Kb
09.12.15
104
.epf 28,46Kb Скачать
Новая для Кредит Европа Банк 38
.rar 35,64Kb
03.10.12
38
.rar 35,64Kb Скачать
Внешняя обработка: Выгрузка данных по ЗП для ЗАО "КРЕДИТ ЕВРОПА БАНК" не резедент в D:\_ВЕДОМОСТЬ_Нерез 14
.epf 28,02Kb
09.12.15
14
.epf 28,02Kb Скачать
Вариант2 19
.rar 49,77Kb
21.03.12
19
.rar 49,77Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
0. Руслан (02RUSlan) 09.11.11 18:28
Внешняя обработка: Выгрузка данных по зарплатному проекту для ЗАО "КРЕДИТ ЕВРОПА БАНК" с созданием файла Excel в 1С 8.2 HRM

Перейти к публикации

1. Дмитрий Бертман (Batman) 09.11.11 18:28
Спасибо за таблицу.
Но смущает расхождение между названием публикации и ее описанием
2. Igоr Sаulеviсh (gutentag) 09.11.11 23:07
так и хочется спросить, а почему сами банки(за малым исключением) не дают внешние обработки/отчеты для Зарп.проекта?
И особенно это показательно для Сбербанка
---
...глядя на скриншот, я понял, что никогда не захочу иметь дело с этим банком.
3. Руслан (02RUSlan) 10.11.11 09:34
(1) Batman, Тебе пригодилась Выгрузка данных по ЗП для ЗАО "КРЕДИТ ЕВРОПА БАНК"
или пример для создания макета Excel в 1С 8.2
4. Дмитрий Бертман (Batman) 10.11.11 10:14
(3) 02RUSlan,
Мне понравилось то, что используемые выражения работы с MS Excel сведены в таблицу. Удобно держать под рукой.
Сама обработка - нет, не нужна
02RUSlan; +1 Ответить
5. Олег Петрухин (гвость) 10.11.11 11:37
Довольно ценное замечание, по поводу использования в типе макета Active Document, Exel-евского документа.
Действительно, без использования, в данном случае Книга.Windows(1).Visible = 1, получим док с данными, но с закрытой книгой, а открыть её в редакторе не получиться. Многие на эти грабли наступают.
02RUSlan; +1 Ответить
6. розница.net (ZLENKO) 19.03.12 20:25
Написал вывод в шаблон в макете типа ActiveDocument и "обломался" - на экране то показывает Excel, а вот сохранить невозможно ни программно ни через меню Excel. Убил кучу времени и так и эдак пытался сохранить. А потом погуглил и понял что это у всех такая трабла... Вобщем переделал на сохранение в макете бинарных данных. ActiveDocument - "в топку".
7. розница.net (ZLENKO) 26.03.12 13:25
На ActiveDocument обломы не закончились... В Excel 2003 поячеечный вывод более менее приемлемо по скорости работает, а в Excel 2007-2010 скорее не работает чем работает. "Пошарился" по инету - нашел достаточно много способов вывода данных в Excel, но большинство из них не позволяет использовать заранее заданный шаблон.
Остановился на варианте с буфером обмена. Создаем шаблон, создаем текстовое содержимое буфера обмена и имитируем действия пользователя (программно) Кантрэл-Цэ и Кантрэл-Вэ :-) Прайс на 9000 строк выводится секунд за 20 !
8. Игорь Смирнов (MrVesna) 04.04.12 16:19
А как сохранить данный excel-файл по определенному пути без его открытия? И как программно проверить, что он сохранился или нет?
9. Филипп (Филипп) 18.04.12 21:55
При попытке выполнить обработку появилось сообщение об ошибке:
"{Форма.Форма.Форма(110)}: Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Office Excel): Метод SaveAs из класса Workbook завершен неверно Файл не сохранен!"
10. Руслан (02RUSlan) 19.04.12 09:03
(9) Филипп, при каком варианте? другой вариант пробовал?
12. ghOst Bu (ilonnaa) 22.05.12 16:04
Лист.Cells(НомерСтроки, НомерКолонки).NumberFormat = Формат;

А можно подробностей по этому методу, примеры его использования?
13. ghOst Bu (ilonnaa) 22.05.12 16:50
Лист.Cells(НомерСтроки, НомерКолонки).DataFormat = Формат;
так будет дата?
14. ghOst Bu (ilonnaa) 22.05.12 17:39
Всё ясно.

ДатаФормат = "ДД.ММ.ГГГГ";
Лист2.Cells(НомерСтроки,НомерКолонки).NumberFormat = ДатаФормат;
//принудительно ставим формат даты
02RUSlan; +1 Ответить
15. Марина Чирина (chmv) 03.10.12 12:06
У нас проблемма с банком ЕВРОПА-КРЕДИТ.
Не поняла т.к. в этом файле не работает макрос, зачем туда запихивать информацию.
М.б. я что-то не понимаю.
Мы пытаемся запихнуть все в csv
16. Руслан (02RUSlan) 03.10.12 12:25
(15) chmv, сейчас выложу свежую обработку для КЕБ
17. Руслан (02RUSlan) 03.10.12 13:08
(15) chmv, скачивайте новую обработку
18. Марина Чирина (chmv) 03.10.12 17:32
К сожалению не хватает ресурсов. Не могли бы прислать на chmv2005@mail.ru
19. Руслан (02RUSlan) 03.10.12 17:51
20. Максим (maxim305) 23.11.12 08:27
Спасибо, полезный материал.
21. Lena Kl (elenko1) 03.01.13 15:06
Да, полезный код для работы с Excel, спасибо!
Хочу поделиться (добавить для пользы на будущее) еще одним приемом работой с Excel через 1с - программной установкой формул.
Только что экспериментальным методом нашла, как это сделать.
Например, нужно посчитать сумму в столбце 8 в той же строке из столбца 1+ столбца 2.
СтрокаСФормулой = "=RC[-7]+ RC[-6]";
Лист.Cells(НомерСтроки,НомерКолонки).Formula = СтрокаСФормулой.

Формулы писать исключительно на английском, русский не воспринимает почему-то...
Светлый ум; 02RUSlan; +2 Ответить 1
22. Андрей Штоколов (Alfer) 16.01.14 19:29
меня устраивает во всем - а некоторые моменты возьму на вооружение для дальнейшего использования
23. Валерий Буданов (buval) 03.02.15 16:57
Спасибо, помогла информация и обсуждения
24. Николай Степанов (Tapochki-tmn) 13.10.15 14:35
Может кому пригодится:

Установлен Office 2010.

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

Помогла эта статья, добавил строчку в конце

"Книга.Windows(1).Visible = 1; "

а при отображении на экране еще 4 строки в конце. Вот код рабочий для примера:

Функция Печать() Экспорт
	
	// получаем данные для печати
	Выборка = СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
	Выборка.Следующий();

	// получаем макет
	
	Попытка
		МакетШаблонаExcel = ПолучитьМакет("ТрудовойДоговорЭксель").Получить();
	Исключение
		#Если Клиент Тогда
			Сообщить("Не существует такого макета");
		#КонецЕсли	
	КонецПопытки;
	
	Лист = МакетШаблонаExcel.WorkSheets(1);

       // Поиск и замена маркеров

	Лист.Cells.Replace("[НомерДок]", Выборка.НомерДок);
	Лист.Cells.Replace("[ДатаДок]", Выборка.ДатаПриема);
	Лист.Cells.Replace("[Гражданин_СРТАНЫ]", Выборка.ГражданинСтраны);
	Лист.Cells.Replace("[ФИО_СОТРУДНИКА]", Выборка.ФИОРаботника);
	Лист.Cells.Replace("[НАИМЕНОВАНИЕ_ОТДЕЛА]", Выборка.Подразделение);
	Лист.Cells.Replace("[НАИМЕНОВАНИЕ_ДОЛЖНОСТИ]", Выборка.Должность);
	
	Лист.Cells.Replace("[ВИД_ЗАНЯТОСТИ]", Выборка.ВидЗанятости);
	Лист.Cells.Replace("[СРОК_ДЕЙСТВИЯ_ДОГОВОРА]", Выборка.СрокДействияДоговора);
	Лист.Cells.Replace("[ОКОНЧАНИЕ_ИСПЫТАТЕЛЬНОГО_СРОКА]", Выборка.ОкончаниеИспытательногоСрока);
	
	Лист.Cells.Replace("[ТАРИФНАЯ_СТАВКА_ЦИФРОЙ]", Выборка.ТарифнаяСтавка);
	Лист.Cells.Replace("[ТАРИФНАЯ_СТАВКА_ПРОПИСЬЮ]", ОбщегоНазначенияЗК.СформироватьСуммуПрописью(Выборка.ТарифнаяСтавка, Выборка.ВалютаТарифнойСтавки));
	
	Лист.Cells.Replace("[РАЙОННЫЙ_КОЭФ_ЦИФРОЙ]", Выборка.Показатель1);
	Лист.Cells.Replace("[ПАСПОРТ]", Выборка.ДокументВид);
	Лист.Cells.Replace("[СЕРИЯ]", Выборка.ДокументСерия);
	Лист.Cells.Replace("[НОМЕР]", Выборка.ДокументНомер);
	Лист.Cells.Replace("[ДАТА_ВЫДАЧИ_ПАСПОРТА]", Выборка.ДокументДатаВыдачи);
	Лист.Cells.Replace("[КЕМ_ВЫДАН_ПАСПОРТ]", Выборка.ДокументКемВыдан);
	Лист.Cells.Replace("[КОД_ПОДРАЗДЕЛЕНИЯ]", Выборка.ДокументКодПодразделения);
	Лист.Cells.Replace("[ДАТА_РЕГИСТРАЦИИ_ПО_МЕСТУ_ЖИТЕЛЬСТВА]", Выборка.ДатаРегистрацииПоМестуЖительства);
	
	Лист.Cells.Replace("[АДРЕС_РЕГИСТРАЦИИ]", Выборка.АдресРегистрации);
	Лист.Cells.Replace("[ИНН_ФИЗ_ЛИЦА]", Выборка.ИННФизЛица);
	Лист.Cells.Replace("[НОМЕР_ПФР_ФИЗ_ЛИЦА]", Выборка.СтраховойНомерПФРФизЛица);
	
	СведенияОбОрганизации     = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(СсылкаНаОбъект.ОбособленноеПодразделение, СсылкаНаОбъект.ДатаНачала);
	
	Лист.Cells.Replace("[ЮР_АДРЕС]", СведенияОбОрганизации.ЮридическийАдрес);
	Лист.Cells.Replace("[ФАКТ_АДРЕС]", СведенияОбОрганизации.ФактическийАдрес);
	Лист.Cells.Replace("[ТЕЛЕФОНЫ]", СведенияОбОрганизации.Телефоны);
	
	Лист.Cells.Replace("[ОГРН]", СсылкаНаОбъект.ОбособленноеПодразделение.ОГРН); 
	
	Лист.Cells.Replace("[ИНН]", СведенияОбОрганизации.ИНН);
	Лист.Cells.Replace("[КПП]", СведенияОбОрганизации.КПП);
	
	Лист.Cells.Replace("[РАСШИФРОВКА_ПОДПИСИ_РУКОВОДИТЕЛЯ]", Выборка.ФИОРуководителяСокр);
	
	 // - без строчки ниже при использовании метода SaveAs документ создается c закрытым листом (в данном случае лист 1)
	МакетШаблонаExcel.Windows(1).Visible = 1; 
	
	// Вывод документа
	//БЕЗ ЛЮБОЙ ИЗ ЭТИХ СТРОК НЕ РАБОТАЕТ
	
	МакетШаблонаExcel.Application.Visible = Истина;
	МакетШаблонаExcel.Application.WindowState = 2;  //минимизировать окно
	МакетШаблонаExcel.Application.WindowState = 1;  //максимизировать окно
	МакетШаблонаExcel.Activate();
		
КонецФункции
...Показать Скрыть
02RUSlan; +1 Ответить
25. Константин Куликов (Светлый ум) 09.12.15 12:48
{Форма.Форма.Форма(124)}: Преобразование значения к типу Число не может быть выполнено
Лист.Cells(ии,3).Value = ФОРМАТ(Число(ВыборкаДетальныеЗаписи.НомерСчетаСотрудникаОрганизацииВБанке), "ЧГ=");
26. Константин Куликов (Светлый ум) 09.12.15 13:28
Поправил ручками:
- Выборка может быть и пустой, поэтому преобразование формата в попытку ставим.
27. Константин Куликов (Светлый ум) 11.12.15 12:40
(21) воспользовался установкой формулы в ячейку:

// Получение итогов по колонке для двух строк:

СтрокаСФормулой = "=SUM(F13:F14)";
Лист.Cells(17,6).Formula = СтрокаСФормулой;