|
Значение не является значением объектного типа | ☑ | ||
---|---|---|---|---|
0
Vbifers
03.07.17
✎
22:06
|
Добрый вечер! Учусь по книге Радченко, застрял на 23 занятии. Все делал по книге. При попытке выполнить обмен, выдает ошибку:
{Обработка.ОбменДанными.Форма.Форма.Форма(18)}: Значение не является значением объектного типа (ПрочитатьСообщениеСИзменениями) Объект.ПрочитатьСообщениеСИзменениями(); &НаКлиенте Процедура ВыполнитьОбмен(Команда) ВыполнитьОбменНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура ВыполнитьОбменНаСервере() Экспорт ВыборкаУзлов = ПланыОбмена.Филиалы.Выбрать(); Пока ВыборкаУзлов.Следующий() Цикл // Произвести обмен данными со всеми узлами, кроме текущего (ЭтотУзел). Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Филиалы.ЭтотУзел() Тогда Объект = ВыборкаУзлов.ПолучитьОбъект(); // Получить сообщение. Объект.ПрочитатьСообщениеСИзменениями(); //здесь отладчик выбрасывает, выдает тип Неопределено // Сформировать сообщение. Объект.ЗаписатьСообщениеСИзменениями(); КонецЕсли; КонецЦикла; КонецПроцедуры В чем может быть ошибка? |
|||
1
AlvlSpb
03.07.17
✎
22:11
|
Объект = ВыборкаУзлов.ПолучитьОбъект();
Объект - назови по другому, НашОбъект например. |
|||
2
Vbifers
03.07.17
✎
22:31
|
Извиняюсь, не тот код скинул. Это я уже пытался по-другому переменную назвать, не помогло. Вот, как по книге:
&НаКлиенте Процедура ВыполнитьОбмен(Команда) ВыполнитьОбменНаСервере(); КонецПроцедуры &НаСервереБезКонтекста Процедура ВыполнитьОбменНаСервере() Экспорт ВыборкаУзлов = ПланыОбмена.Филиалы.Выбрать(); Пока ВыборкаУзлов.Следующий() Цикл // Произвести обмен данными со всеми узлами, кроме текущего (ЭтотУзел). Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Филиалы.ЭтотУзел() Тогда УзелОбъект = ВыборкаУзлов.ПолучитьОбъект(); // Получить сообщение. УзелОбъект.ПрочитатьСообщениеСИзменениями(); // Сформировать сообщение. УзелОбъект.ЗаписатьСообщениеСИзменениями(); КонецЕсли; КонецЦикла; КонецПроцедуры Ошибка та же( |
|||
3
AlvlSpb
03.07.17
✎
22:36
|
(2) УзелОбъект.ПрочитатьСообщениеСИзменениями();
Посмотри существует ли процедура ПрочитатьСообщениеСИзменениями() в модуле объекта и, если существует, стоит ли Экспорт |
|||
4
AlvlSpb
03.07.17
✎
22:39
|
Стоп. Вот кажется ошибка:
УзелОбъект = ВыборкаУзлов.ПолучитьОбъект(); Скорей всего должно быть УзелОбъект = ВыборкаУзлов.Ссылка.ПолучитьОбъект(); |
|||
5
Vbifers
04.07.17
✎
07:33
|
Подставил ССылка, теперь пишет: Объект не найден
Да, ПрочитатьСообщениеСИзменениями() в модуле объекта ПланыОбмена.Филиалы существует, вот : Процедура ПрочитатьСообщениеСИзменениями() Экспорт Каталог = КаталогВременныхФайлов(); // Сформировать имя файла. ИмяФайла = Каталог + ?(Прав(Каталог, 1) = "\", "", "\") + "Message" + СокрЛП(Ссылка.Код) + "_" + СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код) + ".xml"; Файл = Новый Файл(ИмяФайла); Если Не Файл.Существует() Тогда Возврат; КонецЕсли; // *** Чтение документов XML // Попытаться открыть файл. ЧтениеXML = Новый ЧтениеXML; Попытка ЧтениеXML.ОткрытьФайл(ИмяФайла); Исключение Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Невозможно открыть файл обмена данными."; Сообщение.Сообщить(); Возврат; КонецПопытки; Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "-------- Загрузка из " + Строка(ЭтотОбъект) + " ------------"; Сообщение.Сообщить(); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = " – Считывается файл " + ИмяФайла; Сообщение.Сообщить(); // Загрузить из найденного файла // *** Инфраструктура сообщений. ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); //ПланыОбмена-менеджер этой процедуры. Создает объект, с помощью которого может быть произведено чтение одного или нескольких сообщений обмена данными. // Читать заголовок сообщения обмена данными – файла XML. ЧтениеСообщения.НачатьЧтение(ЧтениеXML); //НачатьЧтение-метод объекта СоздатьЧтениеСообщения // Сообщение предназначено не для этого узла. Если ЧтениеСообщения.Отправитель <> Ссылка Тогда //Ссылка - это нужный нам отправитель ВызватьИсключение "Неверный узел"; КонецЕсли; // Удаляем регистрацию изменений для узла отправителя сообщения. // *** Служба регистрации изменений. ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); // Читаем данные из сообщения *** XML-сериализация. Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл //определяет, имеется ли соответствующий тип 1С:Предприятия // Читаем очередное значение. Данные = ПрочитатьXML(ЧтениеXML); //ПрочитатьXML() метод глобального контекста //Данные - это переменная // Не переносим изменение, полученное в главный из неглавного, // если есть регистрация изменения. Если Не ЧтениеСообщения.Отправитель.Главный И ПланыОбмена.ИзменениеЗарегистрировано( ЧтениеСообщения.Отправитель, Данные) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = " – Изменения отклонены"; Сообщение.Сообщить(); Продолжить; КонецЕсли; // Записать полученные данные. Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); ЧтениеXML.Закрыть(); УдалитьФайлы(ИмяФайла); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "-------- Конец загрузки ------------"; Сообщение.Сообщить(); КонецПроцедуры |
|||
6
Альбатрос
04.07.17
✎
07:59
|
ВыборкаУзлов = неопределено?
|
|||
7
Dvoe4nik
04.07.17
✎
08:43
|
(2) а без контекста на сервере видит план обмена?
|
|||
8
Vbifers
04.07.17
✎
09:36
|
ВыборкаУзлов определяет
УзелОбъект - Неопределено |
|||
9
Vbifers
04.07.17
✎
10:58
|
(7) Не понял вопроса
|
|||
10
sFAQer
04.07.17
✎
11:06
|
(5) >> Подставил ССылка, теперь пишет: Объект не найден
Прав нет на узел? |
|||
11
Dvoe4nik
04.07.17
✎
11:09
|
(9) а что в ВыборкаУзлов.Ссылка? какое значение?
|
|||
12
Vbifers
04.07.17
✎
11:30
|
(11) Ошибка при вызове метода контекста (ПолучитьОбъект)
|
|||
13
Альбатрос
04.07.17
✎
11:33
|
(10) проверил?
|
|||
14
lera01
04.07.17
✎
11:41
|
процедура ПрочитатьСообщениеСИзменениями() судя по всему недоступна при вызове из серверной процедуры, вот и пишет ошибку.
|
|||
15
Vbifers
04.07.17
✎
11:44
|
(10) если вы про права в Ролях, то да, есть
|
|||
16
Dvoe4nik
04.07.17
✎
11:44
|
(12) попробуй заменить "&НаСервереБезКонтекста" на "&НаСервере"
|
|||
17
Vbifers
04.07.17
✎
11:46
|
(16) пробовал, не помогло
|
|||
18
h-sp
04.07.17
✎
22:18
|
(17) случайно не на учебной версии учитесь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |