Выгрузка документа Отражение зарплаты в регламентированном учете из ЗУП в УПП по правилам обмена через файловый ресурс (на кнопке Заполнить)


Комплект обработок для выгрузки документа Отражение зарплаты в регл учете из конфигурации Зарплата и управление персоналом в конфигурацию Управление производственным предприятием. Документ выгружается по правилам обмена через файловый ресурс. Обработки подключаются на кнопку Заполнить командной панели табличной части Отражение в учете.

 

Зачем это было нужно

 

Документ отражение зарплаты в регламентированном учете нужно выгружать из кадровой ЗУП в бухгалтерскую программу, каковой у нас является УПП. Причем делать это можно не ежечасно, как, допустим, переносим документы приема на работу, а один раз в расчетный период, а точнее, когда бухгалтер на участке расчета зарплаты даст команду. Предложенная схема позволяет бухгалтеру самостоятельно проводить эту операцию.
Выгрузка — Загрузка подключается на кнопку Заполнить табличной части Отражение в учете документа.

 

Как это выглядит в ЗУП

 

Первая обработка ЗУП_ВыгузитьВФайлОбмена.epf подключается как внешняя обработка табличной части (Сервис — Дополнительные отчеты и обработки — Дополнительные внешние обработки табличных частей) в конфигурацию Зарплата и управление персоналом. Она выгружает документ ОтражениеЗарплатыВРеглУчете в XML файл по правилам обмена из макета.

 

Каталог, куда будет выгружен файл, нужно указать в строковом параметре КаталогОбмена подключаемой обработки. У нас это сетевой ресурс, доступный для записи бухгалтеру:

 

N Представление объекта Табличная часть Представление кнопки Параметры обработки
1 Документ «Отражение зарплаты в регл учете» Отражение в учете    

параметры

Имя Значение
КаталогОбмена \nksi . . . Nksi_ExchangeZUP_UPP

 

Эта обработка содержит макет с правилами обмена, которые можно переписать под себя, используя конфигурацию Конвертация данных

 

Как это выглядит в УПП

Вторая обработка УПП_ЗагрузитьИзФайлаОбмена.epf подключается в конфигурацию Управление производственным предприятием аналогично, как внешняя обработка табличной части (Сервис — Дополнительные внешние отчеты и обработки — Обработки заполнения табличных частей). Она загружает до документ ОтражениеЗарплатыВРеглУчете из полученного XML файла. Каталог для обмена также нужно указать в строковом параметре КаталогОбмена подключаемой обработки. Это будет каталог, который предложит обработка для выбора файла для загрузки.

 

N Представление объекта Табличная часть Представление кнопки Параметры обработки
1 Документ «Отражение зарплаты в регл учете» Отражение в учете    

параметры

Имя Значение
КаталогОбмена \nksi . . . Nksi_ExchangeZUP_UPP

Для любознательных — коды

ЗУП_ВыгузитьВФайлОбмена.epf

В обработке

Реквизит ДополнительныеПараметры

Макет ПравилаОбмена типа двоичные данные

В модуле объекта



Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт
Ссылка = Объект.Ссылка;
Если ДополнительныеПараметры = Неопределено Тогда
КаталогОбмена = «\ . . .ExchangeZUP_UPP»;
Иначе
КаталогОбмена = ДополнительныеПараметры.КаталогОбмена;
КонецЕсли;

ФормаИндикатора = ПолучитьОбщуюФорму(«ХодВыполненияОбработкиДанных»);
ФормаИндикатора.НаименованиеОбработкиДанных = «Выгрузка данных для УПП»;
ФормаИндикатора.КомментарийОбработкиДанных = «Загружаются правила обмена»;
ФормаИндикатора.КомментарийЗначения = «Обработанно:»;
ФормаИндикатора.Открыть();

ФормаИндикатора.МаксимальноеЗначение = 5;
ФормаИндикатора.Значение = 1;

ОбработкаУниверсальныйОбменДаннымиXML = Обработки.УниверсальныйОбменДаннымиXML.Создать();
// Получим из макета правила обмена данными
УникальныйИдентификатор = Новый УникальныйИдентификатор();
ИмяВременногоФайлаПравилОбмена = КаталогВременныхФайлов() + УникальныйИдентификатор + «.xml»;
МакетПравилОбмена = ПолучитьМакет(«ПравилаОбмена»);
МакетПравилОбмена.Записать(ИмяВременногоФайлаПравилОбмена);
ФормаИндикатора.Значение = 2;
// Загрузка в универсальную обработку XML правил обмена
ОбработкаУниверсальныйОбменДаннымиXML.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;
ОбработкаУниверсальныйОбменДаннымиXML.ЗагрузитьПравилаОбмена();
ФормаИндикатора.Значение = 3;

// Удаляем временный файл правил и внешней обработки
Попытка
УдалитьФайлы(ИмяВременногоФайлаПравилОбмена);
Исключение
КонецПопытки;

ТаблицаПравилВыгрузки = ОбработкаУниверсальныйОбменДаннымиXML.ТаблицаПравилВыгрузки.Скопировать();
ТекущееПВД = ТаблицаПравилВыгрузки.Строки[0].Строки[0];

ОбъектМетаданных = Метаданные.НайтиПоТипу(ТекущееПВД.ОбъектВыборки);
ИмяМетаданных = СтрЗаменить(ОбъектМетаданных.ПолноеИмя(), ОбъектМетаданных.Имя, ОбъектМетаданных.Представление());
Построитель = ОбработкаУниверсальныйОбменДаннымиXML.ПостроительОтчета;
Построитель.Текст = «ВЫБРАТЬ _.Ссылка КАК Ссылка ИЗ » + ТекущееПВД.ИмяОбъектаДляЗапроса + » КАК _ «+ «{ГДЕ _.Ссылка.* КАК » + СтрЗаменить(ТекущееПВД.ИмяОбъектаДляЗапроса, «.», «_») + «}»;
Построитель.Отбор.Сбросить();

Если НЕ ТекущееПВД.НастройкиПостроителя = Неопределено Тогда
Построитель.УстановитьНастройки(ТекущееПВД.НастройкиПостроителя);
КонецЕсли;

Отбор = Построитель.Отбор;

Если Отбор.Найти(«Документ_ОтражениеЗарплатыВРеглУчете») = Неопределено Тогда
Отбор.Добавить(«Документ_ОтражениеЗарплатыВРеглУчете»);
КонецЕсли;

Отбор.Документ_ОтражениеЗарплатыВРеглУчете.Использование = Истина;
Отбор.Документ_ОтражениеЗарплатыВРеглУчете.Значение = Ссылка;

ТекущееПВД.НастройкиПостроителя = Построитель.ПолучитьНастройки();
ТекущееПВД.ИспользоватьОтбор = ИСТИНА;

ОбработкаУниверсальныйОбменДаннымиXML.ТаблицаПравилВыгрузки = ТаблицаПравилВыгрузки;

ФормаИндикатора.КомментарийОбработкиДанных = «Выгружаются данные»;
ФормаИндикатора.Значение = 4;

ФайлКудаВыгружать = Формат(Ссылка.Дата, «ДФ=»»ММММгггг’г'»»») + «.xml»;

ОбработкаУниверсальныйОбменДаннымиXML.ИмяФайлаОбмена = КаталогОбмена + ФайлКудаВыгружать;
ОбработкаУниверсальныйОбменДаннымиXML.ДатаВыгрузкиДанных = Ссылка.Дата;

ОбработкаУниверсальныйОбменДаннымиXML.ВыполнитьВыгрузку();
Сообщить(«Выгружено в файл: » + КаталогОбмена + ФайлКудаВыгружать);

ФормаИндикатора.Значение = 5;
ФормаИндикатора.Закрыть();

КонецПроцедуры


УПП_ЗагрузитьИзФайлаОбмена.epf

В обработке Реквизит ДополнительныеПараметры

В модуле объекта



Процедура Инициализировать(Объект, ИмяТабличнойЧасти, ТабличноеПолеОбъекта) Экспорт

Если ДополнительныеПараметры = Неопределено Тогда
КаталогОбмена = «\ . . .ExchangeZUP_UPP»;
Иначе
КаталогОбмена = ДополнительныеПараметры.КаталогОбмена;
КонецЕсли;

Диалог = РаботаСФайлами.ПолучитьДиалогВыбораФайлов(Ложь, КаталогОбмена);
Диалог.Фильтр = «Файл XMLобмена (*.xml)|*.xml»;
Если Не Диалог.Выбрать() Тогда
Возврат;
КонецЕсли;
ФайлОткудаЗагружать = Диалог.ПолноеИмяФайла;

ФормаИндикатора = ПолучитьОбщуюФорму(«ХодВыполненияОбработкиДанных»);
ФормаИндикатора.НаименованиеОбработкиДанных = «Загрузка данных из ЗУП»;
ФормаИндикатора.КомментарийОбработкиДанных = «Загружаются данные из файла «+ФайлОткудаЗагружать;
ФормаИндикатора.КомментарийЗначения = «Обработанно:»;
ФормаИндикатора.Открыть();

ФормаИндикатора.МаксимальноеЗначение = 5;
ФормаИндикатора.Значение = 1;

ОбработкаУниверсальныйОбменДаннымиXML = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаУниверсальныйОбменДаннымиXML.ИмяФайлаОбмена = ФайлОткудаЗагружать;
ОбработкаУниверсальныйОбменДаннымиXML.РежимОбмена = «Загрузка»;
ОбработкаУниверсальныйОбменДаннымиXML.ОптимизированнаяЗаписьОбъектов = Истина;
ОбработкаУниверсальныйОбменДаннымиXML.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
ОбработкаУниверсальныйОбменДаннымиXML.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты = Истина;
ОбработкаУниверсальныйОбменДаннымиXML.ЗагружатьДанныеВРежимеОбмена = Истина;
ФормаИндикатора.Значение = 2;

ОбработкаУниверсальныйОбменДаннымиXML.ВыполнитьЗагрузку();

ФормаИндикатора.Значение = 5;
ФормаИндикатора.Закрыть();
Объект.ОбменДанными.Загрузка = Истина ;
ФормаДокумента =Объект.ПолучитьФорму(«ФормаДокумента»);
ФормаДокумента.Модифицированность = Ложь;
ФормаДокумента.Закрыть();

ФормаДокумента.ДокументОбъект = ОбработкаУниверсальныйОбменДаннымиXML.Параметры.Документ;
ФормаДокумента.Открыть();

КонецПроцедуры


6 Comments

  1. Lukich66

    Молодец. Хотя ситуация ЗиУП->УПП не так уж сильно распространена, но имеет место быть востребована. И тут Вы, спасибо. По честному,я не сторонник считать зарплату в УПП, у неё своих проблем …

    Reply
  2. Famza

    (1) Lukich66,

    Хотя ситуация ЗиУП->УПП не так уж сильно распространена, но имеет место быть востребована.

    Однозначно

    Reply
  3. Famza

    Уже в который раз встречаю — файлы одной публикации, одной версии так сказать и не в архиве…

    Reply
  4. Famza

    (0) Начало загрузки: 01.11.2013 14:36:06

    номер релиза принимающей конфигурации 1 345

    Окончание загрузки: 01.11.2013 14:36:06

    Загружено объектов: 22 //(из 1750!!!)

    Заполнение ТЧ не произведено!

    Поле объекта не обнаружено (Документ)

    (стр. №45: ФормаДокумента.ДокументОбъект = ОбработкаУниверсальныйОбменДаннымиXML.Параметры.Документ;)

    Reply
  5. rukawizin

    Обнаружена ошибка при выгрузке из ЗУП :{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(638)}: Поле объекта не обнаружено (УдалитьЛицензионный)

    Возврат Менеджер[Значение];

    Reply
  6. mikhailovaew

    на картинке кнопка в ЗУП имеет заголовок «Выгузить в файл обмена». какие-то нехорошие задние ассоциации навевает…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *