Имя: Пароль:
1C
1С v8
Перенести документы "Начисления заработной платы" из ЗУП в БУХ
0 asisdes
 
18.10.16
16:08
Доброго дня!
Проблема: есть 2 конфигарции БУ8 ред.3 Каз (управляемые) и ЗУП Каз 2.0 (обычные). Задача: Перенести документы "Начисления заработной платы сотрудников организации из ЗУП в БУ8"

Нашел обработку, которая Импортирует и Экспортирует документ ввиде XML файла, однако она была написана на обычных формах, решил переписать под управляемые.

1. Обработка работает в ЗУП и выгружает в XML единственный нюанс там в зупе 2 табличной части <Начисления> и <ДополнительныеНаисления>, но я думаю заменой в блокноте это можно подправить.

а вот в БУ 8 ругается на ПрочитатьXML и ЗаписатьXML

[code]

&НаКлиенте
Процедура Востановить(Команда)
    /////////////////////////////////////////
    // Проверить выбор пользователя.
    // Поле Имя файла ДОЛЖНО быть заполнено


    Если ПустаяСтрока(Объект.ИмяФайла) Тогда
        Предупреждение("Укажите файл данных XML для загрузки!");
        Возврат;
    КонецЕсли;
    
    /////////////////////////////////////////
    // Проверка возможности чтения XML файла
    Файл = Новый Файл(Объект.ИмяФайла);
    Если НЕ Файл.Существует() Тогда
        Предупреждение("Указанный Вами файл " + Объект.ИмяФайла + " не найден!");
        Возврат;
    КонецЕсли;
    
    /////////////////////////////////////////
    // Прочитать XML файл используя стандартные
    // средства платформы 1С XML Reader
    попытка
        ЧтениеXML = Новый ЧтениеXML;
        ЧтениеXML.ОткрытьФайл("C:\1\С_ЗУПА_документ.xml");
        
        Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
            // Получить ДокументОбъект.РеализацияТоваровУслуг.
            //ЗагружаемыйОбъект = ПрочитатьXML(ЧтениеXML);
            //ЗагружаемыйОбъект.Записать();
            соо = "Счиатал вроде";
            
        КонецЕсли;

        НовыйОбъект = ПрочитатьXML(ЧтениеXML);
        ДокументОбъект = НовыйОбъект.Ссылка;
        Документ = НовыйОбъект.ПолучитьФорму();
        Документ.Открыть();
    исключение
        Сообщить(ОписаниеОшибки());
    конецпопытки;
    
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Объект.ИмяФайла = "C:\1\документ.xml";
КонецПроцедуры

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

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

&НаКлиенте
Процедура Выгрузить(Команда)
    /////////////////////////////////////////
    // Проверить выбор пользователя.
    // Поле Документ ДОЛЖНО быть заполнено
    Если НЕ ЗначениеЗаполнено(Объект.ДокументОбъект) Тогда
        Предупреждение("Нужно выбрать документ.");
        Возврат;
    КонецЕсли;
    
    /////////////////////////////////////////
    // Проверить выбор пользователя.
    // Поле Имя файла ДОЛЖНО быть заполнено
    Если ПустаяСтрока(Объект.ИмяФайла) Тогда
        Предупреждение("Укажите файл данных XML для выгрузки.");
        Возврат;
    КонецЕсли;
    
    // Проверить возможность перезаписи текста
    Файл = Новый Файл(Объект.ИмяФайла);
    Если Файл.Существует() Тогда
        Ответ = Вопрос("Файл " + Объект.ИмяФайла + " существует. Заменить?",РежимДиалогаВопрос.ДаНет);
        Если Ответ = КодВозвратаДиалога.Нет Тогда
            Сообщить("Сохранение отменено.");
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    /////////////////////////////////////////
    // Записать данные документа в XML используя
    // последовательный доступ к тексту и XML сериализацию
    ТекстФайл = Новый ЗаписьТекста(Объект.ИмяФайла, КодировкаТекста.UTF8);
    
    // Преобразовать данные документа в формат XML
    // страндарными средствами платформы 1С
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    ЗаписатьXML(ЗаписьXML, Объект.ДокументОбъект.ПолучитьОбъект(), НазначениеТипаXML.Явное);
    
    // Сохранить полученные XML Данные в текстовый документ
    ТекстФайл.Записать(ЗаписьXML.Закрыть());
    ТекстФайл.Закрыть();

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

[/code]
1 asisdes
 
18.10.16
16:11
Никак въехать не могу как на сервер перенести?! Как я понял ПолучитьОбъект() работает на сервере.
2 mehfk
 
18.10.16
16:12
OFF/ Какая каша у людей в голове.
3 Fish
 
18.10.16
16:13
(1) Краткая инструкция:
1. Создать процедуру с директивой &НаСервере.
2. Перенести нужный код туда.
3. Наслаждаться.
4 asisdes
 
19.10.16
06:26
А можно еще такой вопрос наводящий.
Если я ЗаписьXML делаю в ЗУП 2.0, а ПрочитатьXML в БУ8 не будет ли там разночтений?! т.е. не совпадения разметки что-ли... а то боюсь так труд в пустуй пройдет.
Основная теорема систематики: Новые системы плодят новые проблемы.