Помощь - Поиск - Пользователи - Календарь
Полная версия: Метод объекта не обнаружен (ПрочитатьСообщенияСИзменениями)
"1C-PRO" - форум по 1C > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Sergik
Решил изучить 8-ку по учеб. Радченко Практ.пособ.разраб. всё было просто и понятно пока не дошёл до главы Обмена данными. Теперь когда запускаю обработку обмена данными выскакивает ошибка {Метод объекта не обнаружен (ПрочитатьСообщенияСИзменениями)
УзелОбъект.ПрочитатьСообщенияСИзменениями(); хочу знать где ошибка или где я допустил ошибку?

Prospero
Цитата(Sergik @ 17.11.2006, 14:29) *

Решил изучить 8-ку по учеб. Радченко Практ.пособ.разраб. всё было просто и понятно пока не дошёл до главы Обмена данными. Теперь когда запускаю обработку обмена данными выскакивает ошибка {Метод объекта не обнаружен (ПрочитатьСообщенияСИзменениями)
УзелОбъект.ПрочитатьСообщенияСИзменениями(); хочу знать где ошибка или где я допустил ошибку?


не дочитал пару страниц - там текст твоей процедуры...
Sergik
Цитата(Prospero @ 17.11.2006, 19:39) *

не дочитал пару страниц - там текст твоей процедуры...



Я всё прочитал и Создание процедуры записи данных и даже Создание процедуры чтения данных
и сделал всё как написано, или почти как написано, а так как книга отсканирована и в тексте попадаются опечатки, может из-за этого.

вот текст обеих процедур если не трудно сверте с оригиналом

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

Сообщить("-------- Выгрузка в узел" + Строка(ЭтотОбъект) + " --------");
Каталог = КаталогВременныхФайлов();

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

// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();

//*** инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Сообщить("-------- Номер сообщения; --------" + ЗаписьСообщения.НомерСообшения);

// Получить выборку измененных данных //*** механизм регистрации изменений
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,ЗаписьСообщения.НомерСообщения);

Пока ВыборкаИзменений.Следующий() Цикл
// Записать данные в сообщение
//***XML-сериализация
ЗаписатьXML(ЗаписьXML,ВыборкаИзменений.Получить());
КонецЦикла;

ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщить("-------- Конец выгрузки --------");

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

Процедура ПрочитатьСообщениеСИзменениями()Экспорт
Каталог = КаталогВременныхФайлов();

// Сформировать имя файла
ИмяФайла = Каталог + ? (Прав(Каталог, 1) = "\","", "\") + "Massage" +
СокрЛП(Ссылка.Код) + " - " +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "xml.";

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

//*** Чтение документов XML
// Попытаться открыть файл
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Сообщить("Не возможно открыть файл с данными.");
Возврат;
КонецПопытки;
Сообщить("------- Загрузка из " + Строка(ЭтотОбъект) + "--------");
Сообщить("-Считывается файл" + ИмяФайла);

// Загрузить из найденного файла
//***Инфракструктура сообщений
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

// Читать заголовок сообщения обмена данными - файла XML
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

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

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

// Читаем данные из сообщения
//***XML-сериализация
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
// читаем очередное значение
Данные = ПрочитатьXML(ЧтениеXML);
// Не переносим изменение полученное
// в главный из неглавного
// если есть регистрация изменения
Если Не ЧтениеСообщения.Отправитель.Главный И ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель,Данные) Тогда
Сообщить("-Изменения отклонены-");
Продолжить;
КонецЕсли;

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

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

УдалитьФайлы(ИмяФайла);
Сообщить("-------- Конец загрузки --------");
КонецПроцедуры


Цитата(Sergik @ 17.11.2006, 23:41) *

Я всё прочитал и Создание процедуры записи данных и даже Создание процедуры чтения данных
и сделал всё как написано, или почти как написано, а так как книга отсканирована и в тексте попадаются опечатки, может из-за этого.

вот текст обеих процедур если не трудно сверте с оригиналом

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

Сообщить("-------- Выгрузка в узел" + Строка(ЭтотОбъект) + " --------");
Каталог = КаталогВременныхФайлов();

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

// Создать объект записи XML
//*** запись XML документов
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла);
ЗаписьXML.ЗаписатьОбъявлениеXML();

//*** инфраструктура сообщений
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка);
Сообщить("-------- Номер сообщения; --------" + ЗаписьСообщения.НомерСообшения);

// Получить выборку измененных данных //*** механизм регистрации изменений
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,ЗаписьСообщения.НомерСообщения);

Пока ВыборкаИзменений.Следующий() Цикл
// Записать данные в сообщение
//***XML-сериализация
ЗаписатьXML(ЗаписьXML,ВыборкаИзменений.Получить());
КонецЦикла;

ЗаписьСообщения.ЗакончитьЗапись();
ЗаписьXML.Закрыть();
Сообщить("-------- Конец выгрузки --------");

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

Процедура ПрочитатьСообщениеСИзменениями()Экспорт
Каталог = КаталогВременныхФайлов();

// Сформировать имя файла
ИмяФайла = Каталог + ? (Прав(Каталог, 1) = "\","", "\") + "Massage" +
СокрЛП(Ссылка.Код) + " - " +
СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + "xml.";

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

//*** Чтение документов XML
// Попытаться открыть файл
ЧтениеXML = Новый ЧтениеXML;
Попытка
ЧтениеXML.ОткрытьФайл(ИмяФайла);
Исключение
Сообщить("Не возможно открыть файл с данными.");
Возврат;
КонецПопытки;
Сообщить("------- Загрузка из " + Строка(ЭтотОбъект) + "--------");
Сообщить("-Считывается файл" + ИмяФайла);

// Загрузить из найденного файла
//***Инфракструктура сообщений
ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();

// Читать заголовок сообщения обмена данными - файла XML
ЧтениеСообщения.НачатьЧтение(ЧтениеXML);

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

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

// Читаем данные из сообщения
//***XML-сериализация
Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
// читаем очередное значение
Данные = ПрочитатьXML(ЧтениеXML);
// Не переносим изменение полученное
// в главный из неглавного
// если есть регистрация изменения
Если Не ЧтениеСообщения.Отправитель.Главный И ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель,Данные) Тогда
Сообщить("-Изменения отклонены-");
Продолжить;
КонецЕсли;

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

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

УдалитьФайлы(ИмяФайла);
Сообщить("-------- Конец загрузки --------");
КонецПроцедуры


для меня это очень важно
Prospero
Отладчиком проходил?

Цитата
...Теперь когда запускаю обработку обмена данными выскакивает ошибка...


Скинь саму процедуру обработки, как она у тебя записана
Sergik
Процедура ОбменСФилиалами()Экспорт
ВыборкаУзлов = ПланыОбмена.Филиалы.Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
// Произвести обмен данными со всеми узлами
// кроме текущего (Этот узел)
Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Филиалы.ЭтотУзел() Тогда
УзелОбъект = ВыборкаУзлов.ПолучитьОбъект();
// Получить сообщение
УзелОбъект.ПрочитатьСообщениеСИзменениями();
// Сформировать сообщение
УзелОбъект.ЗаписатьСообщениеСИзменениями();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Prospero
Насколько я помню, через точку обычно указываются методы или свойства объекта (редко - глобальные процедуры/функции - "наследники").

попробуй просто
ПрочитатьСообщениеСИзменениями();
ЗаписатьСообщениеСИзменениями();
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2007 Invision Power Services, Inc.