Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

нужно автоматизировать выгрузку с двух баз и потом также загрузить их в одну базу.

нужно автоматизировать выгрузку с двух баз и потом также загрузить их в одну базу.
Я
   razbiralshik
 
29.05.18 - 07:43
нужно автоматизировать выгрузку с двух баз и потом также загрузить их в одну базу.
Есть обработка УниверсальныйОбменДаннымиXML, с написанными правилами выгрузки документов для обеих баз и загрузки в базу, нужно делать выгрузку/загрузку каждую ночь.
Как лучше сделать:
В базе загрузки срабатывает регламент, както подключаемся по COM к базам выгрузки, както туда передаем эту внешнюю обработку с правилами, потом получаем файл выгрузки...
Но как передавать внешнюю обработку в эти базы по ком чтобы там запустить ее еще?
 
 
   _stay true_
 
1 - 29.05.18 - 07:47
(0)Позовите специалиста
   _stay true_
 
2 - 29.05.18 - 07:48
(0) Шучу)))
В ключах конфигуратора есть параметр, октрывающий внешнюю обработку. А там можно в "ПриСозданииНаСервере", например, всё, что хочешь запустить.
   razbiralshik
 
3 - 29.05.18 - 07:50
(2)
ну вод подключаемся к базе:
ZUP_COM          = V8.Connect(СтрокаСоединения);
Как теперь отправить туда обработину?
   _stay true_
 
4 - 29.05.18 - 07:55
(3) &НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды, ZUP_COM)

    //Помещаем обработку во временном хранилище

    АдресХранилища = "";
    Результат = ZUP_COM.ПоместитьФайл(АдресХранилища, "C:\ВнешняяОбработка.epf", , Ложь);           
    ИмяОбработки = ПодключитьВнешнююОбработку(АдресХранилища);
    
    // Откроем форму подключенной внешней обработки

    ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма");

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

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища, ZUP_COM)

    Возврат ZUP_COM.ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции       


Как-то так не пробовал?
   razbiralshik
 
5 - 29.05.18 - 08:04
(4) пишет
{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(399)}: Метод объекта не обнаружен (ПоместитьФайл)
    Результат      = ZUP_COM.ПоместитьФайл(АдресХранилища, "C:\Users\fedorovay\Desktop\V8Exchan82.epf", , Ложь);

наверное нужно адрес хранилища в COM базе определить или в чемто другом дело?
   _stay true_
 
6 - 29.05.18 - 08:39
(5) Скорее всего. Попробуй поместить в хранилище обработку уже по комке
   razbiralshik
 
7 - 29.05.18 - 09:09
(6) база по кому версия платформы 8.1, может в 8.1 нет метода ПоместитьФайл?
   b_ru
 
8 - 29.05.18 - 09:14
А зачем передавать внешнюю обработку? Если база типовая, то в ней УниверсальныйОбменДаннымиXML и так есть. Если не типовая, то ничто не должно мешать ее туда добавить.
   razbiralshik
 
9 - 29.05.18 - 09:17
(8) эту обработку для регламентного запуска придется модифицировать, а в базе встроена типовая обработка и ее нельзя трогать какбы.
   b_ru
 
10 - 29.05.18 - 09:20
(9) Ну модифицировать то надо только ту, которая запускается по регламентному заданию (хотя я вот не трогал типовую, а сделал свою затычку, которая запускает типовую). А в другой базе прекрано отработает и немодифицированная, ведь ее по COM будут дергать, а не регламентным заданием.
 
 Рекламное место пустует
   razbiralshik
 
11 - 29.05.18 - 09:24
(10) тогда самый лучший вариант поместить обработку в каждую базу в справочник - внешние обработки.
Но вот как потом обратиться к процедуре модуля объекта этой обработки пока непонятно:

    УниверсальныйОбменДаннымиXMLМск = ZUP_COM.Справочники.ВнешниеОбработки.НайтиПоНаименованию("УниверсальныйОбменДаннымиXML");
    УниверсальныйОбменДаннымиXMLМск.ВыполнитьВыгрузку();


так не работает
   МимохожийОднако
 
12 - 29.05.18 - 09:26
(11) Какая ошибка?
   razbiralshik
 
13 - 29.05.18 - 09:28
(12)
{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(351)}: Метод объекта не обнаружен (ВыполнитьВыгрузку)
    УниверсальныйОбменДаннымиXMLМск.ВыполнитьВыгрузку();
   zva
 
14 - 29.05.18 - 09:33
Что мешает в двух базах регламентно запускать выгрузку в 01:00 в каталог, по окончании переименовывать файл в база+дата
В приемнике регламентно в 03:00 искать файл по имени и загружать без всяких СОМ
   J_B
 
15 - 29.05.18 - 09:33
А почему бы регламент не запускать в базах-отправителях?

УниверсальныйОбменДаннымиXML умеет подключаться к базе приемнику
   razbiralshik
 
16 - 29.05.18 - 09:55
Вот так вот заработало вроде как:

    V8      = ОбщегоНазначенияКлиентСервер.ПолучитьКомКоннектор();
    ZUP_COM = V8.Connect("Srvr=msk02serv1c04;Ref=Demo3");
    ОбработкаКоманды(ZUP_COM);


Процедура ОбработкаКоманды(ZUP_COM)
    ВнешняяОбработка = ZUP_COM.Справочники.ВнешниеОбработки.НайтиПоНаименованию("УниверсальныйОбменДаннымиXML");
    ДвоичныеДанные = ВнешняяОбработка.ХранилищеВнешнейОбработки.Получить();
    ИмяФайла = ZUP_COM.ПолучитьИмяВременногоФайла("epf");
    ДвоичныеДанные.Записать(ИмяФайла);
    Обработка = ZUP_COM.ВнешниеОбработки.Создать(ИмяФайла);
    Обработка.ВыполнитьВыгрузку();
КонецПроцедуры



Но пишет еще какюуто дичь:
{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(357)}: Ошибка при вызове метода контекста (ВыполнитьВыгрузку)
    Обработка.ВыполнитьВыгрузку();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.10.2580): {ВнешняяОбработка.УниверсальныйОбменДаннымиXML(11616)}: Ошибка при вызове конструктора (Файл)
Установлен безопасный режим. Выполнение операции запрещено
   Bob_
 
17 - 29.05.18 - 10:04
Функция СведенияОВнешнейОбработке() Экспорт
    
    
    // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим)

    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);

отсюда походу
   razbiralshik
 
18 - 29.05.18 - 10:10
(17) это куда прописать надо?
в обработку которой запускаю код?
или в обработку которая помещена в справочник внешних обработок?
   Bob_
 
19 - 29.05.18 - 10:13
в обработке которая помещена в справочник проверить функцию СведенияОВнешнейОбработке() , и установить безопасный режим - ложь
   razbiralshik
 
20 - 29.05.18 - 10:19
(19) Добавил в модуль объекта доработки, и поместил ее во внешний справочник:
Функция СведенияОВнешнейОбработке() Экспорт
    ПараметрыРегистрации = Новый Структура;
    ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
    Возврат ПараметрыРегистрации;
КонецФункции


но ничего не поменялось, таже ошибка.
   Bob_
 
21 - 29.05.18 - 10:22
у пользователя попробуй снять галку - защита от опасных действий
   zva
 
22 - 29.05.18 - 10:24


Список тем форума
Рекламное место пустует  Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует