Здравствуйте!
Настроена интеграция ЗУП --> ДО.
Если нажать в доке "Прием на работу" кнопку "Документооборот: процесс", то можно создать док и отправить его в Документообороте. Все работает.
Есть задача сформировать внутренний документ таким же образом, но чтобы запускался он с дополнительного отчета (сидит тут: Администрирование -- Печатные формы, отчеты и обработки -- Дополнительные отчеты и обработки). Т.е. хочу сформировав табличный документ отправить его в Документооборот.
Создаю кнопку и там пишу:
на моменте
Результат = ИнтеграцияС1СДокументооборотВызовСервера.ДанныеОбъектаДОПоВнешнемуОбъекту(ОбъектИС);
из:
// Выполняет поиск связанного объекта ДО, при необходимости создавая его на основании объекта ИС
// с заполнением по правилам интеграции, если подходящее правило существует.
//
// Параметры:
// ОбъектИС - Произвольный - объект ИС, для которого разыскивается связанный объект ДО.
// ОписаниеОповещения - ОписаниеОповещения - обработчик, вызываемый после создания с
// передачей в качестве параметра Структуры (ID, type, name).
//
Процедура НачатьПоискСвязанногоОбъектаДО(ОбъектИС, ОписаниеОповещения) Экспорт
Результат = ИнтеграцияС1СДокументооборотВызовСервера.ДанныеОбъектаДОПоВнешнемуОбъекту(ОбъектИС);
Если Результат <> Неопределено Тогда // найден
ВыполнитьОбработкуОповещения(ОписаниеОповещения, Результат);
Возврат;
КонецЕсли;
НачатьСозданиеСвязанногоОбъектаДО(ОбъектИС, ОписаниеОповещения, Ложь);
КонецПроцедуры
Показать
ругается:
{ОбщийМодуль.ИнтеграцияС1СДокументооборотКлиент.Модуль(873)}: Ошибка при вызове метода контекста (ДанныеОбъектаДОПоВнешнемуОбъекту)
Результат = ИнтеграцияС1СДокументооборотВызовСервера.ДанныеОбъектаДОПоВнешнемуОбъекту(ОбъектИС);
по причине:
Ошибка при вызове серверного метода.
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ФормаКлиентскогоПриложения'
Ошибка при вызове серверного метода.
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'param':
форма: Элемент
имя: {http://v8.1c.ru/8.2/managed-application/modules}param
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'ФормаКлиентскогоПриложения'
Ошибку я понимаю. Что такого типа данных для преобразования нет.. Но может кто-то реализовывал подобную задачу и кто-то подскажет гиблая это идея или нет.. Ведь как такового объекта нет в конфе. это просто доп отчет с табдоком и вот как раз табдок и надо в Документооборот отправить
(2) у документа есть кнопка (глобальная команда) и программно она передает объект (я уже описала). а если с внешнего отчета отправлять, то передавать что? для типа 'ФормаКлиентскогоПриложения' нельзя наверное реализовать связь?
(4)// Параметры:
// ОбъектИС - Произвольный - объект ИС, на основании которого создается объект ДО.
// ОписаниеОповещения - ОписаниеОповещения - обработчик, вызываемый после создания.
// ОткрытьФорму - Булево - Истина, если нужно открыть форму созданного объекта, и Ложь, если
// связанный объект следует создать молча. В случае ошибок записи форма все равно будет открыта.
//
Процедура НачатьСозданиеСвязанногоОбъектаДО(ОбъектИС, ОписаниеОповещения, ОткрытьФорму = Ложь) Экспорт
(11) в общем, копать в общих модулях "ИнтеграцияС1СДокументооборот...." там много интересных процедур..
к примеру:
// Создает XDTO объект указанного типа из пространства имен "http://www.1c.ru/dm".
//
// Параметры:
// Прокси - WSПрокси - объект для подключения к web-сервисам Документооборота.
// ТипОбъекта - Строка - тип объекта XDTO
//
// Возвращаемое значение:
// ОбъектXDTO
//
Функция СоздатьОбъект(Прокси, ТипОбъекта) Экспорт
Если Прокси = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Интеграция с 1С:Документооборотом не настроена, или сервис
|1С:Документооборота недоступен. Обратитесь к администратору.'");
КонецЕсли;
НовыйОбъект = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/dm", ТипОбъекта));
Если СвойствоСуществует(НовыйОбъект, "dataBaseID") Тогда
НовыйОбъект.dataBaseID = ИнтеграцияС1СДокументооборотПовтИсп.ИдентификаторБазыДанных();
КонецЕсли;
Возврат НовыйОбъект;
КонецФункции
Указанными в топике методами не создать внутренний документ, т.к. они предполагают, что существуют правила интеграции. Можно скопировать процедуру ИнтеграцияС1СДокументооборот.СоздатьОбъектДОПоПравилу и адаптировать ее, заполнив реквизиты документа не по правилам интеграции, а вручную.
Создать объект в ДО не сложно.
Получаете пакет для заполнения:
Запрос = СоздатьОбъект(Прокси, "DMGetNewObjectRequest");
Запрос.type = "ТипОбъектаДО";
ОбъектXDTO = ВыполнитьЗапрос(Прокси, Запрос);
Заполняете его, и через DMCreateRequest отправляете.
НО. это повлечет некоторые сложности, например на стороне ДО будет копиться мусор, будет создаваться документы если пользователь отошлет несколько раз.
Очень желательно на стороне клиента иметь ссылочный тип для связи.
Например для отчетов можно завести "пустой" справочник, связать его с версиями отчета, и например в течении дня обновлять файлы в созданном документе.
А вообще, мы незнаем Ваших целей. Возможно Вам стоит запустить процесс без предмета и вложить в него файл? Если он нужен только для ознакомления.
(14) спасибо большое вам за емкий ответ!
цель такая: формируется отчет, сохраняется в .pdf и просто этот .pdf -файлик из ЗУПа отправлять в ДО внутренним документом (создать его) с комплексным процессом (ну или просто на согласование)
НО. это повлечет некоторые сложности, например на стороне ДО будет копиться мусор, будет создаваться документы если пользователь отошлет несколько раз
-
а что значит "копиться мусор" - создаваться документ? но его же может не сохранять в конечном итоге пользователь.
не совсем понятна фраза
Например для отчетов можно завести "пустой" справочник, связать его с версиями отчета, и например в течении дня обновлять файлы в созданном документе.
-
т.е. создать левый справочник и создавать там каждый раз элемент справочника с версией отчета? так я поняла?
я делаю так пока: есть правила интеграции. настроила заполнение реквизитов по шаблону (из Документооборота см. рис.) но в качестве обекта ЗУП - док. прием на работу.. знаю.. это не верно.. но работает! при чем связи с каким-то конкретным доком Прием на работу нет!
и в коде кнопки на форме отчета прописала:
в общем, я создала левый документ. и в правилах интеграции просто в объекте ЗУП выбрала его.
у доп. отчета кнопка с кодом, который писала выше. все работает!
(16) А теперь согласуйте и зарегистрируйте документ в ДО, и проведите обмен.
Пройдет ли обмен без ошибок? И что будет в сообщениях обмена с интегрированными системами, не будет ли копиться не забранные записи?
Если норм то гуд.