Всем,доброго здоровья!

Столкнулся с проблемой,как получить документ по ссылке COMObject.

Есть две базы : Розница 2.2 и Альфа Авто.

Из Розницы по номеру Чека надо найти в Альфе Чек с таким же номером и сделать в нем некоторые изменения.

Код:

    C
```1c
    OMConnector = Новый COMObject("V81.COMConnector");
    V8 = COMConnector.Connect( "File="D:\Альфа";Usr="Админ";Pwd="";");
    Запрос = V8.NewObject("Запрос");

    Запрос.Текст = "ВЫБРАТЬ
    | Чек.Ссылка
    |ИЗ
    | Документ.Чек КАК Чек
    |ГДЕ Чек.Номер = &Чек"
    ;
    Запрос.УстановитьПараметр("Чек",ЭтотОбъект.Чек.Номер);
    РезультатV8 = Запрос.Выполнить();

    Если НЕ РезультатV8.Пустой() Тогда

    ВыборкаV8 = РезультатV8.Выбрать();

    Пока ВыборкаV8.Следующий() Цикл
    // надо получить из внешней базы Альфа документ Чек и изменить его
```

 ЧекАльфы = ВыборкаV8.Ссылка.ПолучитьОбъект();

{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (ПолучитьОбъект): Произошла исключительная ситуация: {Документ.Чек(1406,64)}: Процедура или функция с указанным именем не определена (Предупреждение)

Буду очень благодарен за подсказку. Как можно сделать?
---
в Рознице в Общем модуле Полные права создаешь функцию ОбработатьЧекИзАльфы(НомерДокумента)
номер тебе "приедет", а в самом коде ты работаешь не через КОМ-объект, а как будто сидишь в Рознице
а из Альфы вызываешь

```1c
    V83 = Новый COMОбъект("V83.COMConnector");
    Соединение = V83.Connect(мСтрокаСоединения);
    Результат = Соединение.ОбработатьЧекИзАльфы(док.Номер);
```
---
возможно в 8.1 получение объекта называется по другому?
---
пиши на латыни по "com"
```1c
    .GetObject()
```
---
Из Розницы по номеру Чека надо найти в Альфе Чек с таким же номером и сделать в нем некоторые изменения. - может надо обработку запускать в Альфе, находить в Рознице данные и при необходимости в Альфе производить изменения...
---
это не решение, просто позволит писать в нужном контексте, чтобы синтаксис соответствовал.
---
А зачем запрос по ком соединению, если вам нужен всего один документ?

```1c
    COMConnector = Новый COMObject("V81.COMConnector");
    База = COMConnector.Connect( "File="D:\Альфа";Usr="Админ";Pwd="";");
    Выборка = База.Документы.ЧекККМ.НайтиПоНомеру(Чек.Номер, Чек.Дата);
```

Если Выборка не пустая, то это искомый документ. И проверяйте.
Если использовать команду Выбрать, то можно выбрать документы за период.
---
Да Найти по номеру я делал,сути это не меняет. Ссылку из внешней базы я получаю и данные этого документа. А мне надо в нем сделать изменения. Как сам документ то получить из внешней базы?
---
Выборка это и есть документ. Если и его не надо получать. Понимаю что задача стоит в подключенной базе по "кому" надо поменять данные в документе.
у самого есть подобная задача, пока не решал, но в ближайшее время буду решать.
Вариант запустить из Альфы и найти чек в рознице не рассматриваете?
---
Что толку,что выборка ссылка на COMОбъект документ. Изменить в нем ничего нельзя.

Из Альфы (8.1) подключаюсь к Рознице 2.2 (8.3),
создаю в ней Чек, методы ПолучитьОбъект() и Удалить() с COMОбъектом работают,

```1c
    бдРозница = ПолучитьПодключениеКФайловойБД();
    // бдРозница - внешняя база COMОбъект
    ЧекРоз = бдРозница.Документы.ЧекККМ.НайтиПоНомеру(Ссылка.Номер,Ссылка.Дата);
    Если ЧекРоз <> бдРозница.Документы.ЧекККМ.ПустаяСсылка() Тогда
    СтатусЧека = ЧекРоз.СтатусЧекаККМ;
    Если СтатусЧека = бдРозница.Перечисления.СтатусыЧековККМ.Пробитый Тогда
    Сообщить("Есть пробитый чек.Операция не корректна!");
    Возврат Ложь;
    Иначе
    ЧекДок = ЧекРоз.ПолучитьОбъект();
    ЧекДок.Удалить();
    Возврат Истина; // и на создание чека
    КонецЕсли;
    Иначе
    Возврат Истина; // и на создание чека
    КонецЕсли;
```

А обратно из Розницы в Альфе не работает метод ПолучитьОбъект() по ссылке COMОбъекта.

Ребята,не знаю что придумать? Надо обязательно из Розницы изменить Чек в Альфе. Попробовать создать регистр сведений и через него фиксировать? Неожиданная преграда.
---
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(27)}: Ошибка при вызове метода контекста (ПолучитьОбъект): Произошла исключительная ситуация: {Документ.Чек(1406,64)}: Процедура или функция с указанным именем не определена (Предупреждение)
Все работает оказывается! Просто в старых конфах на 8.1 не предполагали работу в разных контекстах. Тогда был только толстый клиент и писали как могли. Для работы тебе либо придется менять модуль, чтобы он мог компилироваться во внешнем соединении. Тестируй модуль на него. Либо переносить все на сторону базы 8.1 тогда модуль можно не трогать! Если обработку запускать не в регламентном задании иначе опять переделывать модуль!
---
, какой модуль менять? Скорее всего это мне не по силам и придется искать другое решение. Всем ,спасибо за участие.
---
в Рознице в Общем модуле Полные права создаешь функцию ОбработатьЧекИзАльфы(НомерДокумента)
номер тебе "приедет", а в самом коде ты работаешь не через КОМ-объект, а как будто сидишь в Рознице
а из Альфы вызываешь

```1c
    V83 = Новый COMОбъект("V83.COMConnector");
    Соединение = V83.Connect(мСтрокаСоединения);
    Результат = Соединение.ОбработатьЧекИзАльфы(док.Номер);
```
---
в тексте ошибки написано же какой и строка кода на ошибку тоже!
---
А если попробовать преобразовывать com объекты?
ЗначениеВСтрокуВнутр
ЗначениеИзСтрокиВнутр?

Что-нибудь типа:

```1c
    ЧекАльфы = ЗначениеИзСтрокиВнутр(V8.ЗначениеВСтрокуВнутр(ВыборкаV8.Ссылка.ПолучитьОбъект()));
```
---
Чек выписывается в Альфе-Авто (4.1) и пересылается в Розницу,где касса ККТ онлайн.
Эта часть отработана,то есть из Альфы 8.1 во внешнюю базу Розница 2.2 8.3.
А как только в Рознице кассир пробьет чек,который уходит в ФНС,надо в Альфе в исходном чеке сделать как бы отметку,что чек пробит и заблокировать его изменение.

К сожаление,пока ничего из предложенного не подошло.

Когда в отладке смотришь ВыборкаV8.Ссылка, то методы GetObject и другие обозначены ,как Метод не найден.
---
ну как я писал, похоже получив запросом ссылку, ты получил не ссылку, вот и метод не работает. Получай номер документа, а затем ищи его через функцию. тогда и получить сможешь.
---
Судя по ошибке - она банальна.
Модуль документа чека альфы не компилируется под внешним соединением.
Криворукие прогеры использовали в потенциально серверной части диалог предупреждения, которого на сервере (и во внешнем соединении) быть не может.
Если есть возможность доработки конфы, просто заверните стремные участки типа этого предупреждения в директивы компиляции только в толстом клиенте.
---
у тебя по коду ругается на Предупреждение
Доступность:
Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).

смотри что у тебя тут - Документ.Чек(1406,64)

а так пиши функцию в рознице и туда передавай номер и делай что хочешь
---
, не понял
"а так пиши функцию в рознице и туда передавай номер и делай что хочешь".

Как я получу документ из внешней базы (COMОбъект)?
---
фактически у тебя получится, что запущен экземпляр Розницы, который через КОМ-соединение получил примитывный тип "Строка", а фактически это полноценно запущенная Розника, которая работает с этой строкой
в Результа можешь возвращать Истина/Ложь, но я у себя возвращаю ГУИД документа в Рознице, чтобы полностью "связать"
---
Петр Самчук,огромное Вам спасибо! Не только проблема решена,но и новые для меня знания.

В Альфе в общем модуле сделал Процедуру:

```1c
    Процедура ПогаситьЧекПоСигналуИзРозницы(Номер,НомерЧека,ДатаФР) Экспорт
    ЧекСсылка = Документы.Чек.НайтиПоНомеру(Номер,ТекущаяДата());
    ЧекДок = ЧекСсылка.ПолучитьОбъект();
    ЧекДок.ДатаФР = ДатаФР; ЧекДок.НомерЧека = НомерЧека;
    ЧекДок.Записать();
    КонецПроцедуры
```

А в Рознице код:

```1c
    COMConnector = Новый COMObject("V81.COMConnector");

    V8 = COMConnector.Connect( "File="D:\Альфа_Параллельная";Usr="Админ";Pwd="";");
    ЧекАльфыCOMОбъект = v8.Документы.Чек.НайтиПоНомеру(ЭтотОбъект.Чек.Номер, ЭтотОбъект.Чек.Дата);
    V8.ПараметрыСеанса.Пользователь = ЧекАльфыCOMОбъект.Автор;
    v8.ПогаситьЧекПоСигналуИзРозницы(ЧекАльфыCOMОбъект.Номер,ЭтотОбъект.Чек.НомерЧекаККМ,ЭтотОбъект.Чек.Дата);
    V8 = Неопределено;
    COMConnector = Неопределено;
```
---
Петр Самчук, ООООгромное Вам спасибо! проблема решена и МОЯ....., не знал такого решения . Связал Бухию и Управленку по спрвочникам.