Доброго всем дня.
Есть такая штука - бесшовная интеграция с 1С:Документооборот. У нас она настроена, из базы УХ летят в ДО договоры. И некоторое время назад начали ещё и организации со старыми названиями прилетать, явно откуда-то из копии, но копий много, откуда это - найти не можем. Появилась идея воткнуть в ДО проверку в веб-сервисе, что пакет XDTO прилетел из рабочей базы. Если у кого-то есть идеи, как это сделать с минимальным допиливанием конфы, прошу высказать. Я пришёл к варианту, что надо в УХ при создании объекта XDTO добавить ему ещё одно свойство и пихать туда название базы. И вот тут проблемы. Потому что XDTO-пакет создаётся через прокси с ДО. Вот код стандартной функции:
Функция СоздатьОбъект(Прокси, ТипОбъекта) Экспорт
Если Прокси = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Интеграция с 1С:Документооборотом не настроена, или сервис
|1С:Документооборота недоступен. Обратитесь к администратору.'");
КонецЕсли;
НовыйОбъект = Прокси.ФабрикаXDTO.Создать(Прокси.ФабрикаXDTO.Тип("http://www.1c.ru/dm", ТипОбъекта));
Если СвойствоСуществует(НовыйОбъект, "dataBaseId") Тогда
НовыйОбъект.dataBaseId = ИнтеграцияС1СДокументооборотПовтИсп.ИдентификаторБазыДанных();
КонецЕсли;
Возврат НовыйОбъект;
КонецФункции
Несоответствие типов XDTO:
Тип '{http://www.1c.ru/dm}DMRetrieveRequest' не найден
Тип объекта не является открытым
Как я понимаю, проблема в том, что объект создаётся через прокси с ДО, а в УХ такого типа нет и 1С не знает, как работать с этим типом. Как это обойти с минимальным вмешательством в конфу?
На старой работе было как раз для множества вебсервисов сделано.
Система самоидентификации базы. В регистре были перечислены имена серверов, а при запуске база проверяла свое имя и то ли в константу, то ли в регистр писалось определенное имя, которое потом использовалось при обменах - добавлялось в адрес запускаемого вебсервиса. То есть контроль даже не на принимающей стороне, а прям здесь же. И если самоидентификация вдруг не прошла (например подняли копию базы в совсем незнакомом месте), то обмены просто отключались.
Правда архитектура тестовых серверов была строгая - на одном условном сервере (назовём их Марс,Венера,Юпитер,Уран...) было только по одной тестовой базе каждого типа: 1 БП, 1 ЗУП, 1 УТ, 1 ДО, по одной наших самописных баз. Но благодаря самоидентификации, например копия рабочей базы УТ, поднятая из бэкапа в базу на сервере Уран, автоматически начинала обмениваться с другими базами на том же Уране, про своё происхождение "забывала". И ничего не приходилось отключать или перенастраивать, а. вебсервисов работало довольно много.
Можно просто ограничиться правами доступа)
Если авторизация доменная то разнести сервера приложение прода и теста по разным пользователям, тогда тестовые базы не смогут авторизоваться, если анонимная то еще проще. поменять пароль входа для регламентного пользователя.