Зачем это было нужно
Документ отражение зарплаты в регламентированном учете нужно выгружать из кадровой ЗУП в бухгалтерскую программу, каковой у нас является УПП. Причем делать это можно не ежечасно, как, допустим, переносим документы приема на работу, а один раз в расчетный период, а точнее, когда бухгалтер на участке расчета зарплаты даст команду. Предложенная схема позволяет бухгалтеру самостоятельно проводить эту операцию.
Выгрузка — Загрузка подключается на кнопку Заполнить табличной части Отражение в учете документа.
Как это выглядит в ЗУП
Первая обработка ЗУП_ВыгузитьВФайлОбмена.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.Параметры.Документ;
ФормаДокумента.Открыть();
КонецПроцедуры
Молодец. Хотя ситуация ЗиУП->УПП не так уж сильно распространена, но имеет место быть востребована. И тут Вы, спасибо. По честному,я не сторонник считать зарплату в УПП, у неё своих проблем …
(1) Lukich66,
Однозначно
Уже в который раз встречаю — файлы одной публикации, одной версии так сказать и не в архиве…
(0) Начало загрузки: 01.11.2013 14:36:06
номер релиза принимающей конфигурации 1 345
Окончание загрузки: 01.11.2013 14:36:06
Загружено объектов: 22 //(из 1750!!!)
Заполнение ТЧ не произведено!
Поле объекта не обнаружено (Документ)
(стр. №45: ФормаДокумента.ДокументОбъект = ОбработкаУниверсальныйОбменДаннымиXML.Параметры.Документ;)
Обнаружена ошибка при выгрузке из ЗУП :{Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(638)}: Поле объекта не обнаружено (УдалитьЛицензионный)
Возврат Менеджер[Значение];
на картинке кнопка в ЗУП имеет заголовок «Выгузить в файл обмена». какие-то нехорошие задние ассоциации навевает…