Ошибка при вызове метода контекста начатьчтение неизвестный получатель

Сегодня В 1С столкнулся с ошибкой при загрузке данных в базу из XML.

“Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель”

Вначале не мог понять в чем дело, но потом разобрался. Т.к. переносил данные между тестовыми базами, а там номера сообщений не совпадают – нужно было заменить в XML номера на актуальные. И во время замены я ошибся и заменил вместо номеров сообщений номера узлов. После корректировки XML-файла ошибка ушла и данные корректно загрузились.

Итого, если у вас ошибка “Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель” при чтении XML-файла – посмотрите какие узлы указаны в файле и какие узлы есть в базе по используемому плану обмена. Вероятно они не совпадают.

Метки: 1СXMLНачатьЧтениеНеизвестный получательОбмен даннымиОшибка

Читайте также:

Путь= Константы. ПутьДоФайлов.Получить( )+»\»;

   ЧтениеXML=Новый ЧтениеXML();

   ЧтениеXML.ОткрытьФайл(Путь+»file_out.хml»);

   ЧтСообщения=ПланыОбмена.СоздатьЧтениеСообщения();

   ЧтСообщения.НачатьЧтение(ЧтениеXML);

   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель,ЧтСообщения.НомерСообщения);

   Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

       Данные=ПрочитатьXML(ЧтениеXML);

       Данные.ОбменДанными.Отправитель=ЧтСообщения.Отправитель;

       Данные.ОбменДанными.Загрузка=Истина;

       Данные.Записать();

   КонецЦикла;

   ЧтСообщения.ЗакончитьЧтение();

   ЧтениеXML.Закрыть();

Выдает ошибку:»

{Обработка.Обмен.Форма.Форма(22)}: Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель

   ЧтСообщения.НачатьЧтение(ЧтениеXML);

по причине:

Неизвестный получатель»

file_out.хml существует. В чём может быть ошибка? Платформа 16.

Shadowman
24.08.2011 09:57 Прочитано: 15236

Подскажите пожалуйста,при чтении изменений в плане обмена выходит сообщение НЕИЗВЕСТНЫЙ ПОЛУЧАТЕЛЬ. Что это и как исправить?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
24.08.2011 10:04 Ответ № 1

Проблема возникает при несовпадении кодов в плане обмена, возможно после создания строк в плане обмена вы изменили код в базе-приемнике или в основной базе. Какой изначально должен быть код, смотрим xml-файл обмена следующие строки на примере:
<v8msg:To>2</v8msg:To>
<v8msg:From>1</v8msg:From>
где 2 — это код строки с зеленым шариком в основной базе, 1 — код строки обмена с распределенной базой.

Shadowman
24.08.2011 10:25 Ответ № 2

Разобрался. Большое спасибо!!!

buktoru
18.09.2013 11:57 Ответ № 3

У меня такая же проблема, не могу понять где ошибка? подскажите пожалуйста.

Zhake
28.09.2018 09:40 Ответ № 4

У меня тоже данная проблема. Как решить ?

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.

Сегодня В 1С столкнулся с ошибкой при загрузке данных в базу из XML.

“Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель”

Вначале не мог понять в чем дело, но потом разобрался. Т.к. переносил данные между тестовыми базами, а там номера сообщений не совпадают – нужно было заменить в XML номера на актуальные. И во время замены я ошибся и заменил вместо номеров сообщений номера узлов. После корректировки XML-файла ошибка ушла и данные корректно загрузились.

Итого, если у вас ошибка “Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель” при чтении XML-файла – посмотрите какие узлы указаны в файле и какие узлы есть в базе по используемому плану обмена. Вероятно они не совпадают.

Метки: 1СXMLНачатьЧтениеНеизвестный получательОбмен даннымиОшибка

Читайте также:

Путь= Константы. ПутьДоФайлов.Получить( )+»»;

   ЧтениеXML=Новый ЧтениеXML();

   ЧтениеXML.ОткрытьФайл(Путь+»file_out.хml»);

   ЧтСообщения=ПланыОбмена.СоздатьЧтениеСообщения();

   ЧтСообщения.НачатьЧтение(ЧтениеXML);

   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтСообщения.Отправитель,ЧтСообщения.НомерСообщения);

   Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

       Данные=ПрочитатьXML(ЧтениеXML);

       Данные.ОбменДанными.Отправитель=ЧтСообщения.Отправитель;

       Данные.ОбменДанными.Загрузка=Истина;

       Данные.Записать();

   КонецЦикла;

   ЧтСообщения.ЗакончитьЧтение();

   ЧтениеXML.Закрыть();

Выдает ошибку:»

{Обработка.Обмен.Форма.Форма(22)}: Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель

   ЧтСообщения.НачатьЧтение(ЧтениеXML);

по причине:

Неизвестный получатель»

file_out.хml существует. В чём может быть ошибка? Платформа 16.

Shadowman
24.08.2011 09:57 Прочитано: 14985

Подскажите пожалуйста,при чтении изменений в плане обмена выходит сообщение НЕИЗВЕСТНЫЙ ПОЛУЧАТЕЛЬ. Что это и как исправить?

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
24.08.2011 10:04 Ответ № 1

Проблема возникает при несовпадении кодов в плане обмена, возможно после создания строк в плане обмена вы изменили код в базе-приемнике или в основной базе. Какой изначально должен быть код, смотрим xml-файл обмена следующие строки на примере:
<v8msg:To>2</v8msg:To>
<v8msg:From>1</v8msg:From>
где 2 — это код строки с зеленым шариком в основной базе, 1 — код строки обмена с распределенной базой.

Shadowman
24.08.2011 10:25 Ответ № 2

Разобрался. Большое спасибо!!!

buktoru
18.09.2013 11:57 Ответ № 3

У меня такая же проблема, не могу понять где ошибка? подскажите пожалуйста.

Zhake
28.09.2018 09:40 Ответ № 4

У меня тоже данная проблема. Как решить ?

Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.

Студворк — интернет-сервис помощи студентам

Добрый день! Прошу объяснить и рассказать, и не казнить. я начинающий 1с-ник.. Вот наконец-то и я дошел до темы, обмен между базами. Суть проблемы такая. Есть 2 базы(конфигурации). Написанные полностью с нуля. И сейчас моя задача это сделать выгрузку документов из одной базы в другую. В интернете примеров я не нашел которые подходят именно для меня. Но нашел одну интересную статью. Руководствуясь ней, у меня получилось выгрузить документ XML..Почти как надо.. только в место названий справочников товаров… выгрузились ихние ссылки «гуйды» или как их там. Но это не суть и тут я пробую делать на копии своей же базы загрузку этой этого же XML файла на что в ответ получаю что файл не найден…ок.. делаем дальше..я переименовываю файл… файл находится но при чтении именно этого файла ругается на второй параметр… не найден получатель. Прошу подсказать почему не может найтись получатель??????? Дальше я в картинках опишу что именно делаю.

База1 — Филиал. Там я создаю план обмена. Потом захожу в отладчик и в плане обмена завожу два элемента: на скрине ниже:

http://s2.ipicture.ru/uploads/… sUEc62.jpg

А сам план обмена имеет имя ОбменСЦО (обмен с центральным офисом). Состав его, я определяю, как, все справочники и 1 документ, который нужно перенести (Авторегистрация у них везде стоит «разрешить»). Далее в этом плане обмене я перехожу на вкладку прочие. И там модуль объекта и ввожу такой код.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Перем РегистрацияВНовыйУзел Экспорт;
 
Процедура ПриЗаписи(Отказ)
    
    Если РегистрацияВНовыйУзел Тогда
        // Регистрация изменений всех данных для узла
        ПланыОбмена.ЗарегистрироватьИзменения(Ссылка);
    КонецЕсли;
    
КонецПроцедуры
 
Процедура ПередЗаписью(Отказ)
    
    РегистрацияВНовыйУзел = ЭтоНовый();
    
КонецПроцедуры

После этого, я создаю обработку с кнопкой выгрузить. Так в этой обработке по кнопке события

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
&НаКлиенте
Процедура ЗапуститьВыгрузкуXML(Команда)
    
    ОбработаемВыгрузкуНаСервере();
    
КонецПроцедуры
 
 
&НаСервере
Процедура ОбработаемВыгрузкуНаСервере()
 
    ВыборкаУзлов = ПланыОбмена.ОбменСЦО.Выбрать();
    Пока ВыборкаУзлов.Следующий() Цикл
        // Произвести обмен данными со всеми узлами, кроме текущего (ЭтотУзел) и кроме тех у 
        //которых нет галочки быстрого отключения обмена
        Если ВыборкаУзлов.Ссылка <> ПланыОбмена.ОбменСЦО.ЭтотУзел() И ВыборкаУзлов.ВыполнятьОбмен = Истина Тогда
            УзелОбъекта = ВыборкаУзлов.ПолучитьОбъект();
            // Сформировать сообщение
            УзелОбъекта.ЗаписатьСообщениеСИзменениями();
        КонецЕсли;
    КонецЦикла;
 
КонецПроцедуры // ОбработаемВыгрузкуНаСервере();¶()

Далее переходим по процедуре, которая находится также в модуле объекта Плана обмена.
Цитата
УзелОбъекта.ЗаписатьСообщениеСИзменениями();

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Процедура ЗаписатьСообщениеСИзменениями() Экспорт
    
    Сообщить("-------- Выгрузка в узел " + Строка(ЭтотОбъект) + " ---------");
    Каталог = КаталогВременныхФайлов();
     // Сформировать имя временного файла
    ИмяФайла = Каталог +?(Прав(Каталог, 1) = "","", "") + "Message" 
                    + СокрЛП(ПланыОбмена.ОбменСЦО.ЭтотУзел().Код) + "_" + 
                    СокрЛП(Ссылка.Код) + ".xml";
    // Создать объект записи XML
    // *** Запись XML-документов
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.ОткрытьФайл(ИмяФайла);
    ЗаписьXML.ЗаписатьОбъявлениеXML();
    // *** Инфраструктура сообщений
    ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
    Сообщить("Номер сообщения: " + ЗаписьСообщения.НомерСообщения);
    // Получить выборку измененных данных
    // *** Механизм регистрации изменений
    ВыборкаИзменений =ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, 
                                            ЗаписьСообщения.НомерСообщения);
    Пока ВыборкаИзменений.Следующий() Цикл
        // Записать данные в сообщение
        // *** XML-сериализация
        ЗаписатьXML(ЗаписьXML, ВыборкаИзменений.Получить());
    КонецЦикла;
    ПланыОбмена.УдалитьРегистрациюИзменений(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
    ЗаписьСообщения.ЗакончитьЗапись();
    ЗаписьXML.Закрыть();
    Сообщить("-------- Конец выгрузки------------");
    
КонецПроцедуры

Все, после всех этих махинации, документ выгрузился.

Далее беру копию своей базы.. Называем ее ЦентральныйОфис. И делаю те же самые махинации Только Завожу другой План обмена — называется обмен с филиалами. Завожу в нем те же 2 элемента как на первой картинке… только элементы меняю местами. и в обработке завожу кнопку с кодом которая обращается как и в первом случае в модуль объекта плана обмена только на чтение XML файла:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Процедура ПрочитатьСообщениеСИзменениями() Экспорт
    Каталог = КаталогВременныхФайлов();
    // Сформировать имя файла
    ИмяФайла = Каталог +?(Прав(Каталог, 1) = "", "", "") + "Message" 
                    + СокрЛП(Ссылка.Код) + "_" + 
                    СокрЛП(ПланыОбмена.ОбменСЦО.ЭтотУзел().Код) + ".xml";
    Файл = Новый Файл(ИмяФайла);
    Если Не Файл.Существует() Тогда
        Возврат;
    КонецЕсли;
    // *** Чтение документов XML    
    // Попытаться открыть файл
    ЧтениеXML = Новый ЧтениеXML;
    Попытка 
        ЧтениеXML.ОткрытьФайл(ИмяФайла);
    Исключение 
        Сообщить("Невозможно открыть файл обмена данными.");
        Возврат;
    КонецПопытки;
    Сообщить("-------- Загрузка из " + Строка(ЭтотОбъект) + "------------");
    Сообщить(" - Считывается файл " + ИмяФайла);
    // Загрузить из найденного файла
    // *** Инфраструктура сообщений
    ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
    // Читать заголовок сообщения обмена данными - файла XML
    ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
    // Сообщение предназначено не для этого узла
    Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
        ВызватьИсключение "Неверный узел";
    КонецЕсли;
    // Удаляем регистрацию изменений
    // для узла отправителя сообщения
    // *** Служба регистрации изменений
    ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель,ЧтениеСообщения.НомерПринятого);
    // Читаем данные из сообщения
    // *** XML-сериализация
    Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
        // Читаем очередное значение
        Данные = ПрочитатьXML(ЧтениеXML);    
        // Записать полученные данные
        Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
        Данные.ОбменДанными.Загрузка = Истина;
        Данные.Записать();
    КонецЦикла;
    ЧтениеСообщения.ЗакончитьЧтение();
    ЧтениеXML.Закрыть();
    УдалитьФайлы(ИмяФайла);
    Сообщить("-------- Конец загрузки------------");
КонецПроцедуры

И вот тут самое главное когда нажимаю считать файл то доходя до этого момент он не находи файл.

1C
1
2
3
4
5
6
7
8
9
Каталог = КаталогВременныхФайлов();
    // Сформировать имя файла
    ИмяФайла = Каталог +?(Прав(Каталог, 1) = "", "", "") + "Message" 
                    + СокрЛП(Ссылка.Код) + "_" + 
                    СокрЛП(ПланыОбмена.ОбменСЦО.ЭтотУзел().Код) + ".xml";
    Файл = Новый Файл(ИмяФайла);
    Если Не Файл.Существует() Тогда
        Возврат;
    КонецЕсли;

Хочу спросить..ЧТО НЕ ТАК Я ДЕЛАЮ???? почему не находится файл.

Ладно… далее я его переименовывают и когда он доходит до этого момента

1C
1
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

он пишет

{ПланОбмена.ЦкнтральныйОфис.МодульОбъекта(76)}: Ошибка при вызове метода контекста (НачатьЧтение)
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
по причине:
Неизвестный получатель

В общем куда копать даже не знаю.

09.01.2019

    Скрин1.png

Требуется запустить в центральном и периферийных узлах РИБ, если после установки очередного обновления на БП3 версии 3.0.67.54 при выгрузке данных в узел распределённой базы вы вместо привычного файла с именем Message_001_002.zip стали получать Message_Ц_002.zip или Message_002_БП.zip и при этом периферийный узел или центральный узел не обнаруживает сообщения из узла, так как имя поменялось. После работы обработки имена файлов сообщений РИБ станут как и были раньше в формате Message_001_002.zip и Message_002_001.zip Префиксы документов в самих базах данных не меняются!

Если после установки очередного обновления на БП3 версии 3.0.67.54 у вас нарушился обмен данными между узлами РИБ и попытки обмена заканчиваются ошибками типа:
1) «Обработка: ТранспортСообщенийОбменаFILE: В каталоге обмена информацией не был обнаружен файл сообщения с данными. Каталог обмена информацией: «C:TMP» Имя файла сообщения обмена: «Message*_002_001.xml» или «Message*_002_001.zip» 

2) «Ошибка при начале чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(125)}: Ошибка при вызове метода контекста (НачатьЧтение): Неизвестный получатель»

Выполнение данной обработки позволит восстановить обмен и привычные имена файлов обмена формата «Message*_002_001.xml» или «Message*_002_001.zip».

Обработку проверял на релизе БП версии 3.0.67.54 для архитектуры РИБ «один центральный узел — несколько периферийных, подчинённых одному центральному узлу».

Обработку нужно выполнить как на центральном, так и на всех периферийных узлах.

На префиксы документов в информационных базах выполнение обработки не повлияет.

Ошибка при вызове метода контекста (НачатьЧтение)Причина: Неизвестный получатель

Автор Черника, 23 мар 2022, 11:18

0 Пользователей и 1 гость просматривают эту тему.

Всем здравствуйте, помогите пожалуйста. Делаю по образу книги Радченко, занятие 24 «Обмен данными» (Передаю 1 документ), выдает ошибку:

Ошибка при вызове метода контекста (НачатьЧтение)
{ПланОбмена.ДокументыРКО.МодульОбъекта(72)}:   ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
{Обработка.ОбменДанными.Форма.Форма.Форма(16)}:         УзелОбъект.ПрочитатьСообщениеСИзменениями();
{Обработка.ОбменДанными.Форма.Форма.Форма(4)}:   ВыполнитьОбменНаСервере();
по причине:
Неизвестный получатель

по причине:
Неизвестный получатель

Сам код:

Процедура ПрочитатьСообщениеСИзменениями() Экспорт 

Каталог = КаталогВременныхФайлов();

ИмяФайла = Каталог + ?(Прав(Каталог, 1)= "\","","\") + "Message" + СокрЛП(ПланыОбмена.ДокументыРКО.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml";   

Файл = Новый Файл(ИмяФайла);
Если Не Файл.Существует() Тогда
Возврат;
КонецЕсли;

ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);

Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Невозможно открыть файл обмена данными.";
Сообщение.Сообщить();

Возврат;

КонецПопытки;

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "------- Загрузка из " + Строка(ЭтотОбъект) + "-------";
Сообщение.Сообщить();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = " - Считывается файл " + ИмяФайла;
Сообщение.Сообщить();

ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

Если ЧтениеСообщения.Отправитель <> Ссылка Тогда
ВызватьИсключение "Неверный узел";
КонецЕсли;

ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого);

Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл

Данные = ПрочитатьXML(ЧтениеXML);

Если Не ЧтениеСообщения.Отправитель.Главный И
ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "- Изменения отклонены";
Сообщение.Сообщить();

Продолжить;
КонецЕсли;

Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
Данные.ОбменДанными.Загрузка = Истина;
Данные.Запись();

КонецЦикла;

ЧтениеСообщения.ЗакончитьЧтение();
ЧтениеXML.Закрыть();
УдалитьФайлы(ИмяФайла);

Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "--------- Конец загрузки ---------";
Сообщение.Сообщить();

КонецПроцедуры




Оптимус, Полностью переписал код заново, а сравнить их не догадался. Где то не правильно, что то напечатал.


Теги:

  • Форум База

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Ошибка при вызове метода контекста (НачатьЧтение)Причина: Неизвестный получатель

Похожие темы (5)

Рейтинг@Mail.ru

Поиск

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста напечатать
  • Ошибка при вызове метода контекста изменениезарегистрировано
  • Ошибка при вызове метода контекста найтифайлы
  • Ошибка при вызове метода контекста найтистроки неизвестная колонка
  • Ошибка при вызове метода контекста найтипотипу