1Cv81 Обмен БП1.6 и УТ
03.09.2009
12:15
#21
"У меня вариант обмена через прямое подключение к базе.
Пошагово это происходит так:
1=> Если СтруктураНастроекОбменаДанными.ДанныеНастройки.OnLineОбмен
И СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезComСоединение Тогда
// обмен через com соединение
// выполняем и выгрузку и загрузку данных
2=> ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Иначе
ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными);
КонецЕсли;
// оставшееся действия после обмена данными выполняем
ВыполнитьДействияПослеЗавершенияОбменаДанными(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Исключение
3=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
4=> ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
5=> ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
6=> ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
7=> ОбработкаОбменаПриемника = Неопределено;
Вывод:
Ошибка в ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника); ОбработкаОбменаПриемника = Неопределено;
Что с этим делать дальше?"
Пошагово это происходит так:
1=> Если СтруктураНастроекОбменаДанными.ДанныеНастройки.OnLineОбмен
И СтруктураНастроекОбменаДанными.ДанныеНастройки.ТипНастройки = Перечисления.ТипыАвтоматическогоОбменаДанными.ОбменЧерезComСоединение Тогда
// обмен через com соединение
// выполняем и выгрузку и загрузку данных
2=> ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Иначе
ВыполнитьОбычныйОбменДанными(СтруктураНастроекОбменаДанными);
КонецЕсли;
// оставшееся действия после обмена данными выполняем
ВыполнитьДействияПослеЗавершенияОбменаДанными(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Исключение
3=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
4=> ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
5=> ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
6=> ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
7=> ОбработкаОбменаПриемника = Неопределено;
Вывод:
Ошибка в ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника); ОбработкаОбменаПриемника = Неопределено;
Что с этим делать дальше?"
03.09.2009
12:22
#22
"> 2=> ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника);
Именно тут и возникает ошибка.
Посмотрите значение ОбработкаОбменаПриемника, как я уже писал, там скорее всего код.
Принципе, когда курсор выполнения стоит на этой стоке жмите f11 и посмотрите, на какаой строке вылетит оттуда."
Именно тут и возникает ошибка.
Посмотрите значение ОбработкаОбменаПриемника, как я уже писал, там скорее всего код.
Принципе, когда курсор выполнения стоит на этой стоке жмите f11 и посмотрите, на какаой строке вылетит оттуда."
04.09.2009
09:14
#23
"=> Процедура ВыполнитьОбменДаннымиЧерезComСоединение(СтруктураНастроекОбменаДанными, ОбработкаОбменаПриемника = Неопределено)
F11
...
// выгрузка из текущей ИБ в приемник
СтрокаСообщенияОбОшибке = """";
=> УспешнаяВыгрузкаИзИсточника = ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузку(Истина, СтрокаСообщенияОбОшибке,
F11
...
// Закрываем файл обмена
ЗакрытьФайл();
=> Если АрхивироватьФайл Тогда
СжатьРезультирующийФайлОбмена();
=> КонецЕсли;
=> ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(УспешнаяВыгрузка, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенныеДвиженияДокумента,
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
F11
Функция ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(ЧтениеУспешноЗавершено = Истина,
СтрокаСообщенияОбОшибке = """",
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов = """",
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации = Ложь,
КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации = 0)
=> Если НЕ НепосредственноеЧтениеВИБПриемнике Тогда
Возврат Истина;
=> КонецЕсли;
=> мОбработкаДляЗагрузкиДанных.ВыполнитьДействияПослеЗавершенияЧтенияДанных(ЧтениеУспешноЗавершено, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов, ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
КонецФункции
ПОСЛЕ ПОСЛЕДНЕЙ СТРЕЛКИ И ПРИ F10, И ПРИ F11 ПЕРЕБРАСЫВАЕТ НАЗАД
Исключение
=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
ОбработкаОбменаПриемника = Неопределено;
#Если Клиент Тогда
Состояние("""");
#КонецЕсли
КонецПроцедуры
КАКИЕ СДЕЛАТЬ ВЫВОДЫ, ЧТО ДАЛЬШЕ?"
F11
...
// выгрузка из текущей ИБ в приемник
СтрокаСообщенияОбОшибке = """";
=> УспешнаяВыгрузкаИзИсточника = ОбработкаОбменаДаннымиXML.ВыполнитьВыгрузку(Истина, СтрокаСообщенияОбОшибке,
F11
...
// Закрываем файл обмена
ЗакрытьФайл();
=> Если АрхивироватьФайл Тогда
СжатьРезультирующийФайлОбмена();
=> КонецЕсли;
=> ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(УспешнаяВыгрузка, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенныеДвиженияДокумента,
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
F11
Функция ВыполнитьПередачуИнформацииПриЗавершанииПередачиДанных(ЧтениеУспешноЗавершено = Истина,
СтрокаСообщенияОбОшибке = """",
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов = """",
ПослеОшибкиОтложенногоПроведенияПрекратитьОперации = Ложь,
КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации = 0)
=> Если НЕ НепосредственноеЧтениеВИБПриемнике Тогда
Возврат Истина;
=> КонецЕсли;
=> мОбработкаДляЗагрузкиДанных.ВыполнитьДействияПослеЗавершенияЧтенияДанных(ЧтениеУспешноЗавершено, СтрокаСообщенияОбОшибке,
СтрокаСообщенияОбОшибкеОтложенногоДвиженияДокументов, ПослеОшибкиОтложенногоПроведенияПрекратитьОперации, КоличествоОшибокОтложенногоПроведенияДляПрекращенияОперации);
КонецФункции
ПОСЛЕ ПОСЛЕДНЕЙ СТРЕЛКИ И ПРИ F10, И ПРИ F11 ПЕРЕБРАСЫВАЕТ НАЗАД
Исключение
=> СтрокаОписанияОшибки = ОписаниеОшибки();
// отмечаем то что обмен произведен
ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбменаДанными, СтрокаОписанияОшибки, , ОбработкаОбменаПриемника);
#Если Клиент Тогда
ЗакрытьФормуОбработкиДанных(СтруктураНастроекОбменаДанными);
#КонецЕсли
ОбработкаОбменаПриемника = Неопределено;
// прокидываем ошибку дальше
ВызватьИсключение СтрокаОписанияОшибки;
КонецПопытки;
ОбработкаОбменаПриемника = Неопределено;
#Если Клиент Тогда
Состояние("""");
#КонецЕсли
КонецПроцедуры
КАКИЕ СДЕЛАТЬ ВЫВОДЫ, ЧТО ДАЛЬШЕ?"
04.09.2009
10:36
#24
"Поскольку у вас обмен идет через COM, то эта процедура мОбработкаДляЗагрузкиДанных.ВыполнитьДействияПослеЗавершенияЧтенияДанных выполняется на "другой базе". Именно в той базе и есть ошибка. Согласно справке: РежимДиалогаВопрос - Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения. В данном случае, при загрузке (т.е. записи) какого-то объекта, в той базе возникает сообщение с вопросом (кто-то не проконтролировал, что действие выполняется не клиентом и вопросы задавать не надо и нельзя).
Если есть возможность ограничить или выбрать объекты (конкретные), которые выгружаются, советую попробовать по одному. Тогда можно будет определится, что за объект, и там глянуть модуль этого объекта.
Интересный вопрос - вы эксперименты ставите на тестовых базах?
Если да можно предложить следующее: в базе куда грузите найти обработку УниверсальныйОбменДаннымиXML и изменить строку Перем мГлобальныйСтекНеЗаписанныхОбъектов;
на
Перем мГлобальныйСтекНеЗаписанныхОбъектов экспорт;
И сохранить (f7).
Тогда в базе откуда делается выгрузка можно будет смотреть, какие объекты записываются (правда для этого придется написать написать маленькую процедуру, т.к. эта переменная Соответствие, а ключ не известен)."
Если есть возможность ограничить или выбрать объекты (конкретные), которые выгружаются, советую попробовать по одному. Тогда можно будет определится, что за объект, и там глянуть модуль этого объекта.
Интересный вопрос - вы эксперименты ставите на тестовых базах?
Если да можно предложить следующее: в базе куда грузите найти обработку УниверсальныйОбменДаннымиXML и изменить строку Перем мГлобальныйСтекНеЗаписанныхОбъектов;
на
Перем мГлобальныйСтекНеЗаписанныхОбъектов экспорт;
И сохранить (f7).
Тогда в базе откуда делается выгрузка можно будет смотреть, какие объекты записываются (правда для этого придется написать написать маленькую процедуру, т.к. эта переменная Соответствие, а ключ не известен)."
04.09.2009
12:59
#25
1. В "Настройке обмена данными", на закладках "Обмен по правилам", "Настройки выгрузки" все строки устанавливаю "Не выгружать", всё равно ошибка.
Но если в "Настройке обмена данными", на закладке Интерактивный обмен убрать галочку с "Выгружать данные", то "Обмен", "Загрузка данных" и "Проведение документов" проходят до конца без ошибки.
2. Первый раз пробовал на рабочем месте, не ожидал что будет проблема. Теперь пробую на тестовом компе, база БП взята реальная, а УТ всё равно чистая.
А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
Но если в "Настройке обмена данными", на закладке Интерактивный обмен убрать галочку с "Выгружать данные", то "Обмен", "Загрузка данных" и "Проведение документов" проходят до конца без ошибки.
2. Первый раз пробовал на рабочем месте, не ожидал что будет проблема. Теперь пробую на тестовом компе, база БП взята реальная, а УТ всё равно чистая.
А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
04.09.2009
13:13
#26
> Но если в "Настройке обмена данными", на закладке Интерактивный обмен убрать галочку с "Выгружать данные", то "Обмен", "Загрузка данных" и "Проведение документов" проходят до конца без ошибки.
Впринципе логично. Я так понимаю в этом случае в базу приемник ничего не загржается, а следовательно не записывается.
> А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.
> 3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
Загляните в "Модуль объекта". Или сделайте глобальный поиск мГлобальныйСтекНеЗаписанныхОбъектов. Только на знаю что произойдет с конфигурацией после сохранения. В 7-ке после такой операции она переставала быть Базовой и становилась "Обычной".
Впринципе логично. Я так понимаю в этом случае в базу приемник ничего не загржается, а следовательно не записывается.
> А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.
> 3. Не могу найти в "Обработке УниверсальныйОбменДаннымиXML" "ОбщиеПроцедурыФункции" строку "Перем мГлобальныйСтекНеЗаписанныхОбъектов"
Загляните в "Модуль объекта". Или сделайте глобальный поиск мГлобальныйСтекНеЗаписанныхОбъектов. Только на знаю что произойдет с конфигурацией после сохранения. В 7-ке после такой операции она переставала быть Базовой и становилась "Обычной".
06.09.2009
18:07
#27
> > А нет ли проблемы в том что УТ - БАЗОВАЯ ВЕРСИЯ?
> Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.
И еще несколько ограничений, в том числе и на COM-соединения.
- внизу страницы табличка с ограничениями.
> Насколько я понимаю - в этом случае вы не сможете изменить конфигурацию.
И еще несколько ограничений, в том числе и на COM-соединения.
- внизу страницы табличка с ограничениями.
08.09.2009
09:54
#28
Спасибо конечно большое! А сразу нельзя было сказать?
Я ещё в августе описал подробно что и в каких конфигурациях делаю.
Ограничения УТ описаны здесь: бы заранее знать, где соломку подстелить и что 1С подразумевает под словосочетанием "СОМ соединение".
Я ещё в августе описал подробно что и в каких конфигурациях делаю.
Ограничения УТ описаны здесь: бы заранее знать, где соломку подстелить и что 1С подразумевает под словосочетанием "СОМ соединение".
не получается заявка на кассовый расход на 1 страницеУниверсальная обработка для обмена данных через Excel
Читают тему
(гостей: 1)