Можно ли использовать "ОбменДанными.Загрузка" в базе подключенной через ОЛЕ ?
Хочу выгрузить ПП входящие из БП 3.0 в УТ 10.3 обработкой, которая запускается из БП 3.0. В конфигурацию УТ 10.3 внесено много изменений, и там есть некоторые проверки, на которых вываливаются ошибки. Редактировать конфигурацию рабочей базы УТ возможности нет. Хотел написать так: но это не проходит. Почему бы ?
Если конфигурации УТ убрать проверку, то работает и без "ОбменДанными.Загрузка"
ППВ.ОбменДанными.Загрузка=Истина;
ППВ.Записать();
Если конфигурации УТ убрать проверку, то работает и без "ОбменДанными.Загрузка"
По теме из базы знаний
- Всякие полезности
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Редактор объектов информационной базы 8.3
- Обзор полезных методов БСП 3.1.4
- Создание стартовой базы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) В справке написано:
В процедуре ПередЗаписью модуля документа ППВ (УТ 10) написано: Вроде бы должны быть обойдены все проверки. А что еще проверяется я не знаю. У меня нет контакта с разработчиком конфигурации УТ.
ПараметрыОбменаДанными (DataExchangeParameters)
Загрузка (Load)
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Если значение данного свойства Истина, то при выполнении записи или удаления данных будет производиться минимум проверок, так как при этом делается предположение, что производится запись данных, полученных через механизмы обмена данными, и эти данные корректны.
Загрузка (Load)
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Если значение данного свойства Истина, то при выполнении записи или удаления данных будет производиться минимум проверок, так как при этом делается предположение, что производится запись данных, полученных через механизмы обмена данными, и эти данные корректны.
В процедуре ПередЗаписью модуля документа ППВ (УТ 10) написано:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
мУдалятьДвижения = НЕ ЭтоНовый();
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура("УстановитьДоговор");
УправлениеДенежнымиСредствами.ВыполнитьДействияПередЗаписьюПлатежногоДокумента(ЭтотОбъект, СтруктураДействий, Отказ, РежимЗаписи, РежимПроведения);
КонецПроцедуры
Показать
(6)В конфигурации УТ есть такой кусок: Когда я убираю #Если Клиент и #КонецЕсли, все нормально работает. Но еще раз повторяю, что у меня нет возможности связаться в разработчиком конфигурации УТ, и я не знаю зачем он так написал. Мне нужно как-то не изменяя конфигурацию обойти это место.
#Если Клиент Тогда
Процедура РедактироватьДополнительныеПраваПользователей() Экспорт
РегистрыСведений.ЗначенияДополнительныхПравПользователя.ПолучитьФорму("ФормаРедактирования").Открыть();
КонецПроцедуры
Функция ОбъектИсключенИзПроверкиПравДоступаПоПериоду(Объект) Экспорт
//разработчик конфигурации УТ
ИсключенияИзПроверки = Новый Массив;
ИсключенияИзПроверки.Добавить(Тип("ДокументОбъект.АктСверкиВзаиморасчетов"));
Если ИсключенияИзПроверки.Найти(ТипЗНЧ(Объект)) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли;
//разработчик конфигурации УТ
КонецФункции
#КонецЕсли
Показать
(5) Вот так:
У меня СоединениеБД=базаОЛЕ.
ПлПрВ=СоединениеБД.Документы.ПлатежноеПоручениеВходящее;
Для Б=0 ПО СписокДокументов.Количество()-1 Цикл
Выборка=СписокДокументов.Получить(Б).Значение;
НайденныйППВ=ПлПрВ.НайтиПоНомеру(Выборка.Номер,Выборка.Дата);
Если НайденныйППВ=ПлПрВ.ПустаяСсылка() Тогда
ППВ = ПлПрВ.СоздатьДокумент();
ППВ.Номер = Выборка.Номер;
ППВ.Дата = Выборка.Дата;
ППВ.ОбменДанными.Загрузка=Истина;
ППВ.Записать();
Иначе
ППВ=НайденныйППВ.ПолучитьОбъект();
КонецЕсли;
ПоказатьУ меня СоединениеБД=базаОЛЕ.
Вот какую инфу нашёл на сторонем сайте:
Т.е., как я понял, у тебя не выйдет обойти COM-соединением эту проверку, ведь она именно для этих целей и написана. Видимо писатель, который творил в УТ, позаботился о таких как ты)))
...Например, в режиме ВнешнееСоединение (или COM-соединение) недоступен тип "ТабличныйДокумент", поэтому весь исходный код в модулях объектов и общих модулях с галкой "ВнешнееСоединение" должны быть исключен с помощью директивы #ЕСЛИ КЛИЕНТ ТОГДА.
Модули форм можно не менять, поскольку самих форм (со своими модулями) в режиме внешнего соединения нет. Общие модули без галки ВнешнееСоединение тоже можно не трогать, потому что их тоже нет. Модуль приложения заменяется на модуль внешнего соединения.
В типовых конфигурациях очень много ошибок на эту тему: что-то не исключено директивами, что-то исключено нужное. В любом случае программа не работает.
Новый релиз платформы (с 10) позволяет проверить конфигурацию на синтаксические ошибки в этих режимах.
Модули форм можно не менять, поскольку самих форм (со своими модулями) в режиме внешнего соединения нет. Общие модули без галки ВнешнееСоединение тоже можно не трогать, потому что их тоже нет. Модуль приложения заменяется на модуль внешнего соединения.
В типовых конфигурациях очень много ошибок на эту тему: что-то не исключено директивами, что-то исключено нужное. В любом случае программа не работает.
Новый релиз платформы (с 10) позволяет проверить конфигурацию на синтаксические ошибки в этих режимах.
Т.е., как я понял, у тебя не выйдет обойти COM-соединением эту проверку, ведь она именно для этих целей и написана. Видимо писатель, который творил в УТ, позаботился о таких как ты)))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот