Имя: Пароль:
1C
1С v8
Несоответствие типов ВыборкаИзменений=ПланыОбмена.ВыбратьИзменения(ЗаписьСообщен
,
0 Ramundo
 
04.12.13
14:56
Радченко М. Пособие для начинающих. Не пойму, што не так короче:
При выполнении обмена данными вылезает унижение:

{ПланОбмена.Филиалы.МодульОбъекта(29)}: Ошибка при вызове метода контекста (ВыбратьИзменения)
ВыборкаИзменений=ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель,ЗаписьСообщения.НомерСообщения);
по причине:
Несоответствие типов (параметр номер '1')

Собсна код процедуры "Процедура ЗаписатьСообщенияСИзменениями ()Экспорт", нахоящейся в модуле плана обмена:

Процедура ЗаписатьСообщенияСИзменениями ()Экспорт
    
    Сообщение=Новый СообщениеПользователю;
    Сообщение.Текст="--------Выгрузка в узел"+Строка(ЭтотОбъект)+"--------";
    Сообщение.Сообщить();
    Каталог=КаталогВременныхФайлов();
    
    //Сформировать имя временного файла.
    
ИмяФайла=Каталог+?(Прав(Каталог,1)="\","","\")+ "Message"+СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код)+"_"+СокрЛП(Ссылка.Код)+".xml";

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


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

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

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

Конецпроцедуры
1 banco
 
04.12.13
15:19
(0) думаю ошибка тут ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Ссылка); что у тебя во втором параметре?
2 Ramundo
 
04.12.13
15:23
(1)

Цитируя учебник:

Поскольку мы находимся в модуле объекта, то используем стандартный реквизит Сссылка в качестве ссылки на реквизит План Обмена Филиалы.
3 Ramundo
 
04.12.13
15:33
Могу скинуть базу. правда, не знаю, где ее файл находится. Я еще очень очень нуб.
4 Ramundo
 
04.12.13
15:47
(1)

Спасибо. все решено. Оказывается я неправильно описал структуру процедуры.

Вот правильная:


Процедура ЗаписатьСообщенияСИзменениями ()Экспорт
    
    Сообщение=Новый СообщениеПользователю;
    Сообщение.Текст="--------Выгрузка в узел"+Строка(ЭтотОбъект)+"--------";
    Сообщение.Сообщить();
    Каталог=КаталогВременныхФайлов();
    
    //Сформировать имя временного файла.
    
ИмяФайла=Каталог+?(Прав(Каталог,1)="\","","\")+ "Message"+СокрЛП(ПланыОбмена.Филиалы.ЭтотУзел().Код)+"_"+СокрЛП(Ссылка.Код)+".xml";

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


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

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

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

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

Конецпроцедуры
5 banco
 
04.12.13
15:48
(2) в (0) ЗаписьСообщения.ЗакончитьЗапись(); в конце надо ставить
6 Trotter
 
04.12.13
16:01
а Радченко М. Пособие для начинающих лучше чем пособие разработчика ?)
Программист всегда исправляет последнюю ошибку.