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

План обмена

Я
   LadukOpiat

20.02.07 — 17:03

Непонятная ошибка

Узел = ПланыОбмена.БУ.НайтиПоКоду(«111»);

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

Запись=Новый ЗаписьXML;

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

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

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

Хотя узел существует и код у него не пустой  ?????????????????

   avmlvm

1 — 20.02.07 — 17:12

(0) Посмотри отладчиком… точно ли 2НайтиПоКоду» — что-либо нашло? У тебя нет проверки на «Пустой()»

   LadukOpiat

2 — 20.02.07 — 17:16

Узел не пустой. Нашло точно узел с кодом «111»

   avmlvm

3 — 20.02.07 — 17:26

(0) хм-м-м.. а разве должно быть не так?

Узел = ПланыОбмена.БУ.НайтиПоКоду(«111»);

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

Запись=Новый ЗаписьXML;

Запись.ОткрытьФайл(ПолноеИмяФайла);

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

У тебя КУДА должно всё «писаться»???

   LadukOpiat

4 — 20.02.07 — 17:30

мне вообще не надо что-б куда то писалось , мне нужно что-б создалось сообщение и я потом по номеру этого сообщения смог удалитьРегистрациюИзменений

   avmlvm

5 — 20.02.07 — 17:31

(4) Так не бывает.. Если ты даёшь команду «записать», то данный объект ДОЛЖЕН «записываться».. Если тебе потом информация не нужна, то ты её можешь «удалить» :-)

   LadukOpiat

6 — 20.02.07 — 17:40

Написал так как ти советуешь….

та же ошибка…..

   Advan

7 — 20.02.07 — 17:53

На какой точно строке выходит ошибка?

   LadukOpiat

8 — 20.02.07 — 17:56

НачатьЗапись()

   LadukOpiat

9 — 20.02.07 — 17:59

ПланыОбмена.ВыбратьИзменения(Узел,номерсоообщения);

я могу не создавая сообщения удалитьРегистрациюИзменений(Узел,номерсообщения) ???

   Advan

10 — 20.02.07 — 18:00

(9)Конечно можешь

   Advan

11 — 20.02.07 — 18:03

планыОбмена.УдалитьРегистрациюИзменений(Узел, Данные);

  

Bitl

12 — 20.02.07 — 18:10

Причина в том что код узла обмена четырехзначный, а ты ищешь по трем цифрам. НайтиПоКоду резонно выдает пустую ссылку. Нужно так:

Узел = ПланыОбмена.БУ.НайтиПоКоду(СокрЛП(«111»));

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

Запись=Новый ЗаписьXML;

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

TurboConf — расширение возможностей Конфигуратора 1С

Здравствуйте.
Только недавно изучаю 1С:Предприятие. Подскажите, пожалуйста, как пользоваться планами обмена? Необходимо выгрузить из справочника добавленных и измененных контрагентов. По примеру создал план обмена и обработку. В обработке написал код

&НаСервереБезКонтекста
Процедура Команда1НаСервере()
	Узел = ПланыОбмена.ПланОбмена1.НайтиПоКоду("DEMO");
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	
	Запись = Новый ЗаписьXML();
	Запись.ОткрытьФайл(ИмяВременногоФайла);
	Запись.ЗаписатьОбъявлениеXML();
	
	ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
	
	ЗаписьСообщения.НачатьЗапись(Запись, Узел);
	ЗаписьСообщения.ЗакончитьЗапись();
	
	Запись.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

но при выполнении кода получаю ошибку
{Обработка.Обработка1.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (НачатьЗапись)
ЗаписьСообщения.НачатьЗапись(Запись, Узел);
по причине:
Код узла не может быть пустым

Что я делаю не так?

План обмена

Я
   LadukOpiat

20.02.07 — 17:03

Непонятная ошибка

Узел = ПланыОбмена.БУ.НайтиПоКоду(«111»);

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

Запись=Новый ЗаписьXML;

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

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

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

Хотя узел существует и код у него не пустой  ?????????????????

   avmlvm

1 — 20.02.07 — 17:12

(0) Посмотри отладчиком… точно ли 2НайтиПоКоду» — что-либо нашло? У тебя нет проверки на «Пустой()»

   LadukOpiat

2 — 20.02.07 — 17:16

Узел не пустой. Нашло точно узел с кодом «111»

   avmlvm

3 — 20.02.07 — 17:26

(0) хм-м-м.. а разве должно быть не так?

Узел = ПланыОбмена.БУ.НайтиПоКоду(«111»);

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

Запись=Новый ЗаписьXML;

Запись.ОткрытьФайл(ПолноеИмяФайла);

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

У тебя КУДА должно всё «писаться»???

   LadukOpiat

4 — 20.02.07 — 17:30

мне вообще не надо что-б куда то писалось , мне нужно что-б создалось сообщение и я потом по номеру этого сообщения смог удалитьРегистрациюИзменений

   avmlvm

5 — 20.02.07 — 17:31

(4) Так не бывает.. Если ты даёшь команду «записать», то данный объект ДОЛЖЕН «записываться».. Если тебе потом информация не нужна, то ты её можешь «удалить» :-)

   LadukOpiat

6 — 20.02.07 — 17:40

Написал так как ти советуешь….

та же ошибка…..

   Advan

7 — 20.02.07 — 17:53

На какой точно строке выходит ошибка?

   LadukOpiat

8 — 20.02.07 — 17:56

НачатьЗапись()

   LadukOpiat

9 — 20.02.07 — 17:59

ПланыОбмена.ВыбратьИзменения(Узел,номерсоообщения);

я могу не создавая сообщения удалитьРегистрациюИзменений(Узел,номерсообщения) ???

   Advan

10 — 20.02.07 — 18:00

(9)Конечно можешь

   Advan

11 — 20.02.07 — 18:03

планыОбмена.УдалитьРегистрациюИзменений(Узел, Данные);

  

Bitl

12 — 20.02.07 — 18:10

Причина в том что код узла обмена четырехзначный, а ты ищешь по трем цифрам. НайтиПоКоду резонно выдает пустую ссылку. Нужно так:

Узел = ПланыОбмена.БУ.НайтиПоКоду(СокрЛП(«111»));

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

Запись=Новый ЗаписьXML;

ЗаписьСообщения.НачатьЗапись(Запись,Узел);

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

Здравствуйте.
Только недавно изучаю 1С:Предприятие. Подскажите, пожалуйста, как пользоваться планами обмена? Необходимо выгрузить из справочника добавленных и измененных контрагентов. По примеру создал план обмена и обработку. В обработке написал код

&НаСервереБезКонтекста
Процедура Команда1НаСервере()
	Узел = ПланыОбмена.ПланОбмена1.НайтиПоКоду("DEMO");
	
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	
	Запись = Новый ЗаписьXML();
	Запись.ОткрытьФайл(ИмяВременногоФайла);
	Запись.ЗаписатьОбъявлениеXML();
	
	ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
	
	ЗаписьСообщения.НачатьЗапись(Запись, Узел);
	ЗаписьСообщения.ЗакончитьЗапись();
	
	Запись.Закрыть();
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

но при выполнении кода получаю ошибку
{Обработка.Обработка1.Форма.Форма.Форма(14)}: Ошибка при вызове метода контекста (НачатьЗапись)
ЗаписьСообщения.НачатьЗапись(Запись, Узел);
по причине:
Код узла не может быть пустым

Что я делаю не так?

Код узла не может быть пустым

Автор Lopol, 25 ноя 2021, 11:18

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

Ребят, не могу понять что он хочет.Хочу выполнить обмен данными, выдает это :

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

по причине:
Код узла не может быть пустым

Помогите пожалуйста


&НаКлиенте
Процедура ВыполнитьОбмен(Команда) Экспорт
ОбменСФилиалами();
КонецПроцедуры

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



Теги:

  • Форум 1С

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

  • Пользователям 1С Предприятие 8

  • Код узла не может быть пустым

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

И снова здравствуйте,

просьба уточнить:

1. «бухгалтерия находится на домашнем компьютере» вы имеете ввиду, что у бухгалетра установлена Альфа-Авто т в ней 3000 деталей или у бухгалетра 1С:Бухгалтерия и именно в ней 3000 деталей? Просто Альфа-Авто ориентирован на управленческий учет, а не бухгалтерский учет. Для перезгрузки данных из Альфа-Авто в бухгалтерию используется специальная обработка.

2. Все таки желательно привести описание ошибки на строне сервера. Попробуйте включить в обработке обмена с сайтом режим отладки и перейти на страницу отладки. Без конкретного сообщения об ошибке очень трудно разобраться.

Обычно ошибки, которые происходят на стороне сервера возникают из-за неправильной настройки сайта 1С-Битрикса. Вы сами настраивали сайт для обмена с Альфа-Авто? Если нет, то возможно следуе обратиться к человеку, который настраивал ваш сайт для обмена с Альфа-Авто.

Что вы имеете в виду под «При попытке пополнить каталог в режиме добавления»? Что подразумевается под режимом добавления? Зачем вы это делаете?

«Ошибка при вызове метода контекста. Код узла не может быть пустым»
Возникает из-за того, что у вас в настройках обмена с сайтом, когда вы выгружаетее данные, не заполнен префикс.

ВыбУзелОбмена — реквизит на форме, тип — ПланыОбмена. Разумеется, выбран. ОФ, толстый клиент, файловая база. При выполнении ловлю ошибку {Форма.Форма.Форма}: Ошибка при вызове метода контекста (НачатьЗапись)     з.НачатьЗапись(х, ВыбУзелОбмена.Ссылка); по причине: Код узла не может быть пустым Я что-то не так делаю?

ВыбУзелОбмена.Ссылка — у вас чему равно?

может ВыбУзелОбмена = собственный узел?

Выбран на форме. Нужный узел нет, разумеется. Я, может, и тупой, но не настолько же…

ПланыОбменов.МойПлан.Магазин

Вот бы еще скриншот значения увидеть

Только чем это тебе поможет?

ну тогда про код (или длину кода в метаданных) уже не буду спрашивать ))

и код есть, и длина. Почти типовая УТ.

код этого узла посмотреть. НУ и вообще список узлов. У всех коды?

почему ВыбУзелОбмена.Ссылка ?? Ведь проще ВыбУзелОбмена

по причине: Код узла не может быть пустым ни о чем не говорит?

Консолью выбери этот узел, посмотри код

Это уже контрольный в затылок.

Если бы я был таким мудрым, то я бы ни разу не посмотрел в отладчике на этот код.

Запусти на другой платформе

Наверное, надо и у собственного узла код непустой сделать, не?

коды узлов: центральный и текущий точно не пустые?

Всё, я понял. Всё-таки я тупой. Всем спасибо за наводку.

Узел был не узлом РИБа… Но вопрос тогда меняется… Описываю задачу. Есть база. Есть магазины (кассы). для выгрузки на них формируются узлы плана обмена, по которым будут формироваться файлы выгрузки. Требуется: выгружать на кассы только новые изменения и удалять ранее выгруженные, не затрагивая новые. На кассах — не 1с, поэтому штатного файла ответа от них не получить. Как лучше это сделать?

Выгружай каждый раз файл с новым именем.

не катит. Касса не умеет разные имена. У неё строго зашитое имя, которое оно читает…

Тогда лучше все полностью выгружать каждый раз

не думаю… Точнее — не хотелось бы.

Дольше будет выполняться, но меньше геммороя с «а вот позиция не перенеслась»

» штатного файла ответа от них не получить» Собственно тебе от этого файла нужен только номер полученного сообщения. Если доставка файлов гарантирована — очищай регистрацию сразу после выгрузки.

Доставка гарантирована, но вот загрузка — нет…

Тогда период гарантированной загрузки. Неделя, месяц, квартал… По истечении — очищать регистрацию.

1. «Требуется: выгружать на кассы только новые изменения и удалять ранее выгруженные, не затрагивая новые. » 2. «Доставка гарантирована, но вот загрузка — нет» Как же ты собрался повторно перегружать?

Это же касса, какой период. Там просто список товаров с ценами

Понятно, что список. Вопрос, как часто он гарантированно будет загружен в ККМ. Раз в месяц это одно, а если это зависит от настроения кассира, совсем другое.

не только товаров, но и документов.

какие документы загружаются в кассу?

Представь себе, что в магазине вааще нету 1с. Только фронтол. А принимать товар надо. Поэтому туда идут поступления и перемещения.

Ты же говорил, что там касса, а не точка учета

Я говорил, что там магазин.

К чему геморрой с планами обмена, когда есть обработки выгрузки в ККМ-оффлайн?

Не гони волну, фронтолу нужен товар на кассе с ценой, и выгрузок всяких и разных в его формате хоть тем самым местом жуй.

К тому, что я не хочу постоянно грузить на кассу 35000 товарных позиций и 50 документов в день. А только то, что изменилось.

+ штатный механизм = выгрузка товаров в разрезе магазин/секция и загрузка закрытия смен разрез магазин/касса

Тэги:

Комментарии доступны только авторизированным пользователям

Lopol

0 / 0 / 0

Регистрация: 22.02.2016

Сообщений: 78

1

Код узла не может быть пустым

25.11.2021, 11:47. Показов 1326. Ответов 3

Метки 1с (Все метки)


Ребят, не могу понять что он хочет.Хочу выполнить обмен данными, выдает это :

1C
1
2
3
4
5
6
7
Код узла не может быть пустым
{ПланОбмена.Филиалы.МодульОбъекта(16)}:ЗаписьСообщения.НачатьЗапись(ЗаписьXML, Ссылка); 
{Обработка.ОбменДанными.Форма.Форма.Форма(16)}:УзелОбъект.ЗаписатьСообщениеСИзменениями(); 
{Обработка.ОбменДанными.Форма.Форма.Форма(4)}:ОбменСФилиалами();
 
по причине:
Код узла не может быть пустым

Весь код обмена:

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

Помогите пожалуйста

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

364 / 169 / 73

Регистрация: 04.03.2020

Сообщений: 649

25.11.2021, 14:17

2

Не ВыборкаУзлов.ПолучитьОбъект(), а ВыборкаУзлов.Ссылка.ПолучитьОбъект()
или просто ВыборкаУзлов.Ссылка, я не помню.

0

0 / 0 / 0

Регистрация: 22.02.2016

Сообщений: 78

25.11.2021, 14:44

 [ТС]

3

Не работает

0

polax

1785 / 1209 / 438

Регистрация: 16.01.2015

Сообщений: 5,322

25.11.2021, 20:43

4

Надо просто убрать из обработки пустые ссылки

1C
1
2
Если ВыборкаУзлов.Ссылка <> ПланыОбмена.Филиалы.ЭтотУзел() 
И НЕ ВыборкаУзлов.Ссылка.Пустая() Тогда

0

Код узла не может быть пустым

Автор Lopol, 25 ноя 2021, 11:18

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

Ребят, не могу понять что он хочет.Хочу выполнить обмен данными, выдает это :

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

по причине:
Код узла не может быть пустым

Помогите пожалуйста


&НаКлиенте
Процедура ВыполнитьОбмен(Команда) Экспорт
ОбменСФилиалами();
КонецПроцедуры

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



Теги:

  • Форум База

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

  • Пользователям 1С Предприятие 8

  • Код узла не может быть пустым

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

Рейтинг@Mail.ru

Rambler's Top100

Поиск

И снова здравствуйте,

просьба уточнить:

1. «бухгалтерия находится на домашнем компьютере» вы имеете ввиду, что у бухгалетра установлена Альфа-Авто т в ней 3000 деталей или у бухгалетра 1С:Бухгалтерия и именно в ней 3000 деталей? Просто Альфа-Авто ориентирован на управленческий учет, а не бухгалтерский учет. Для перезгрузки данных из Альфа-Авто в бухгалтерию используется специальная обработка.

2. Все таки желательно привести описание ошибки на строне сервера. Попробуйте включить в обработке обмена с сайтом режим отладки и перейти на страницу отладки. Без конкретного сообщения об ошибке очень трудно разобраться.

Обычно ошибки, которые происходят на стороне сервера возникают из-за неправильной настройки сайта 1С-Битрикса. Вы сами настраивали сайт для обмена с Альфа-Авто? Если нет, то возможно следуе обратиться к человеку, который настраивал ваш сайт для обмена с Альфа-Авто.

Что вы имеете в виду под «При попытке пополнить каталог в режиме добавления»? Что подразумевается под режимом добавления? Зачем вы это делаете?

«Ошибка при вызове метода контекста. Код узла не может быть пустым»
Возникает из-за того, что у вас в настройках обмена с сайтом, когда вы выгружаетее данные, не заполнен префикс.

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