1Cv81 Обмен БП1.6 и УТ

Новая тема
Показывать по 10 20 40 сообщений
"У меня вариант обмена через прямое подключение к базе.
Пошагово это происходит так:
1=> Если СтруктураНастроекОбменаДанными.ДанныеНастройки.OnLineОбмен
И СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезComСоединение Тогда

// обмен через com соединение
// выполняем и выгрузку и загрузку данных
2=> ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);

Иначе
    ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными);    
КонецЕсли;
// оставшееся действия после обмена данными выполняем
ВыполнитьДействияПослеЗавершенияОбменаДанными(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);

Исключение
3=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
4=> ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
5=> ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
6=> ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
7=> ОбработкаОбменаПриемника = Неопределено;

Вывод:
Ошибка в ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника); ОбработкаОбменаПриемника = Неопределено;
Что с этим делать дальше?"
"> 2=> ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Именно тут и возникает ошибка.
Посмотрите значение ОбработкаОбменаПриемника, как я уже писал, там скорее всего код.
Принципе, когда курсор выполнения стоит на этой стоке жмите f11 и посмотрите, на какаой строке вылетит оттуда."
"=> Процедура ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника = Неопределено)

F11
...
// выгрузка из текущей ИБ в приемник
СтрокаСообщенияОбОшибке = """";
=> УспешнаяВыгрузкаИзИсточника = ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузку(Истина, СтрокаСообщенияОбОшибке,

F11
...
// Закрываем файл обмена
ЗакрытьФайл();

=> Если АрхивироватьФайл Тогда
СжатьРезультирующийФайлОбмена();
=> КонецЕсли;

=> ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(УспешнаяВыгрузка, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенныеДвиженияДокумента,
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);

F11

Функция ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(ЧтениеУспешноЗавершено = Истина,
СтрокаСообщенияОбОшибке = """",
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов = """",
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации = Ложь,
КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации = 0)

=> Если НЕ НепосредственноеЧтениеВИБПриемнике Тогда
Возврат Истина;
=> КонецЕсли;

=> мОбработкаДляЗагрузкиДанных.ВыполнитьДействияПослеЗавершенияЧтенияДанных(ЧтениеУспешноЗавершено, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов, ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);

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


ПОСЛЕ ПОСЛЕДНЕЙ СТРЕЛКИ И ПРИ F10, И ПРИ F11 ПЕРЕБРАСЫВАЕТ НАЗАД

Исключение

=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);

#Если Клиент Тогда
ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли

ОбработкаОбменаПриемника = Неопределено;

// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;

КонецПопытки;

ОбработкаОбменаПриемника = Неопределено;

#Если Клиент Тогда
Состояние("""");
#КонецЕсли

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

КАКИЕ СДЕЛАТЬ ВЫВОДЫ, ЧТО ДАЛЬШЕ?"
"Поскольку у вас обмен идет через COM, то эта процедура мОбработкаДляЗагрузкиДанных.ВыполнитьДействияПослеЗавершенияЧтенияДанных выполняется на "другой базе". Именно в той базе и есть ошибка. Согласно справке: РежимДиалогаВопрос - Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. В данном случае, при загрузке (т.е. записи) какого-то объекта, в той базе возникает сообщение с вопросом (кто-то не проконтролировал, что действие выполняется не клиентом и вопросы задавать не надо и нельзя).
Если есть возможность ограничить или выбрать объекты (конкретные), которые выгружаются, советую попробовать по одному. Тогда можно будет определится, что за объект, и там глянуть модуль этого объекта.

Интересный вопрос - вы эксперименты ставите на тестовых базах?
Если да можно предложить следующее: в базе куда грузите найти обработку УниверсальныйОбменДаннымиXML и изменить строку Перем мГлобальныйСтекНеЗаписанныхОбъектов;
на
Перем мГлобальныйСтекНеЗаписанныхОбъектов экспорт;
И сохранить (f7).
Тогда в базе откуда делается выгрузка можно будет смотреть, какие объекты записываются (правда для этого придется написать написать маленькую процедуру, т.к. эта переменная Соответствие, а ключ не известен)."
1. В "Настройке обмена данными", на закладках "Обмен по правилам", "Настройки выгрузки" все строки устанавливаю "Не выгружать", всё равно ошибка.
Но если в "Настройке обмена данными", на закладке Интерактивный обмен убрать галочку с "Выгружать данные", то "Обмен", "Загрузка данных" и "Проведение документов" проходят до конца без ошибки.

2. Первый раз пробовал на рабочем месте, не ожидал что будет проблема. Теперь пробую на тестовом компе, база БП взята реальная, а УТ всё равно чистая.

А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?

3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
> Но если в "Настройке обмена данными", на закладке Интерактивный обмен убрать галочку с "Выгружать данные", то "Обмен", "Загрузка данных" и "Проведение документов" проходят до конца без ошибки.
Впринципе логично. Я так понимаю в этом случае в базу приемник ничего не загржается, а следовательно не записывается.

> А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.

> 3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
Загляните в "Модуль объекта". Или сделайте глобальный поиск мГлобальныйСтекНеЗаписанныхОбъектов. Только на знаю что произойдет с конфигурацией после сохранения. В 7-ке после такой операции она переставала быть Базовой и становилась "Обычной".

> > А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
> Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.

И еще несколько ограничений, в том числе и на COM-соединения.
http://v8.1c.ru/buhv8/324_bp.htm - внизу страницы табличка с ограничениями.
Спасибо конечно большое! А сразу нельзя было сказать?
Я ещё в августе описал подробно что и в каких конфигурациях делаю.

Ограничения УТ описаны здесь: http://v8.1c.ru/trade/202/
Если
бы заранее знать, где соломку подстелить и что 1С подразумевает под словосочетанием "СОМ соединение".
А вы настраивали через прямое подключение к базе-источнику? Попробуйте настроить вариант, когда обмен идет через файлы выгрузки-загрузки, а этом случае СОМ не должен использоваться.
Теперь я так и сделал.
Выгрузка из БП проходит успешно,
Загрузка в в УТ проходит успешно,
А проведение документов в УТ проходит с ошибкой.
Т. е. совсем не проходит,
потому что не выбрана касса во всех документах.
Эти документы переданы из БП, а в БП нет кассы в документах.
Как быть?
Читают тему
(гостей: 1)

Быстрый переход