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

   Zombi

27.05.16 — 08:45

После обновления в базу добавился узел обмена и при попытке удалить его выдает ошибку «Ошибка при вызове метода контекста (ЭтотУзел), найдено больше одной записи.» То есть этот новый узел установился как узел текущей базы и их теперь 2. Как его удалить или сделать не узлом этой базы?

   Zombi

1 — 27.05.16 — 08:47

при

УдаляемыйУзелОбъект = УдаляемыйУзел.ПолучитьОбъект();

попадаю в модуль плана обмена, где есть строка:

ЭтотУзел = ПланыОбмена.УдаленныеКассы.ЭтотУзел();

и опять ловлю ошибку (0)

   Ёпрст

2 — 27.05.16 — 08:49

Shift+del в плане обмена

   Рэйв

3 — 27.05.16 — 08:50

как вариант попробовать отцепить от обмена, удалить и прицепить обратно уже к оставшемуся

   Zombi

4 — 27.05.16 — 08:52

(2) Тоже попадаю в модуль плана обмена и далее как в (1)

   Mankubus

5 — 27.05.16 — 08:53

в режиме обмена данными запиши ЭтотУзел = ложь и потом удали

   Zombi

6 — 27.05.16 — 08:56

(5) Это куда записать?

   aleks_default

7 — 27.05.16 — 08:57

это глюк релиза по-моему

   Zombi

8 — 27.05.16 — 08:59

(7) Ну похоже на то, а как бороться?

   Zombi

9 — 27.05.16 — 09:00

(5) Это свойство объекта, а я объект получить не могу.

   aleks_default

10 — 27.05.16 — 09:10

А они оба помечены желтым кругом?

Имхо обновить на более свежий релиз.

   Zombi

11 — 27.05.16 — 09:20

(10) Это последний релиз

   Zombi

12 — 27.05.16 — 09:21

Щас сделал тии, еще по одному узлу добавилось

   Zombi

13 — 27.05.16 — 09:21

какая то шляпа с базой по ходу

   aleks_default

14 — 27.05.16 — 09:28

видел недавно такую же ветку тут

   aleks_default

15 — 27.05.16 — 09:33

   hhhh

16 — 27.05.16 — 09:34

(13) удали другой узел тогда

   hhhh

17 — 27.05.16 — 09:35

(13) можно забить еще. Какая тебе разница в сущности сколько там узлов? хоть 50.

   Zombi

18 — 27.05.16 — 09:40

(15) Уменя тоже платформа 8.3.8.1652, точно косяк платформы.

   aleks_default

19 — 27.05.16 — 09:50

(18)А откатится тоже не вариант?

   Zombi

20 — 27.05.16 — 09:57

(19) Да человек обновил и копию не сделал

   Zombi

21 — 27.05.16 — 09:58

Там базе всего пара дней, проще щас новую пустую создать и перенести основные данные обработкой «ВыгрузкаЗагрузкаХМЛ»

   Zombi

22 — 27.05.16 — 09:58

Платформу обновили, щас посмотрим, на новой платформе будет этот косяк или нет

  

Zombi

23 — 27.05.16 — 10:16

8.3.8.1675 то же самое — создали пустую базу, обновили и получили дубли в планах обмена

  1. Доброго дня
    Бухгалтерия 3
    делал обновление с 3.0.43.208 на 3.0.43.235
    ошибки
    первая
    {ОбщийМодуль.ОбменСообщениямиВнутренний.Модуль(381)}: Ошибка при вызове метода контекста (ЭтотУзел)
    Возврат ПланыОбмена.ОбменСообщениями.ЭтотУзел();
    по причине:
    Найдено более одной записи
    вторая
    При вызове обработчика обновления:
    «ОбменСообщениямиВнутренний.УстановитьКодЭтойКонечнойТочки()»
    произошла ошибка:
    «{ОбщийМодуль.ОбменСообщениямиВнутренний.Модуль(381)}: Ошибка при вызове метода контекста (ЭтотУзел)
    Возврат ПланыОбмена.ОбменСообщениями.ЭтотУзел();
    по причине:
    Найдено более одной записи».

    почитал пишут косяк платформы попробовал на разных версиях платформах
    пробовал взять чистую конфу последней версии и просто тупо полной заменой загрузить
    вообщем не помогло всегда одно и тоже . Подскажите вдруг кто сталкивался ?
    [​IMG]


  2. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    Через «Все функции» зайдите в план обмена «Обмен сообщениями». Там должен быть предопределенный узел (соответствующий этой информационной базе).
    Посмотрите, нет ли там у Вас задвоений. Может, два предопределенных узла.

  3. вроде всех по одной
    это если конфигурацию новую чистую заменой загрузить
    {ОбщийМодуль.ОбменСообщениямиВнутренний.Модуль(381)}: Ошибка при вызове метода контекста (ЭтотУзел)
    Возврат ПланыОбмена.ОбменСообщениями.ЭтотУзел();
    по причине:
    Найдено более одной записи

    При вызове обработчика обновления:
    «ОбменСообщениямиВнутренний.УстановитьКодЭтойКонечнойТочки()»
    произошла ошибка:
    «{ОбщийМодуль.ОбменСообщениямиВнутренний.Модуль(381)}: Ошибка при вызове метода контекста (ЭтотУзел)
    Возврат ПланыОбмена.ОбменСообщениями.ЭтотУзел();
    по причине:
    Найдено более одной записи».

    [​IMG]


  4. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    Сам план обмена-то откройте (провалитесь в него) ).

  5. две строчки удалить которая без зеленной точки ?

    — Объединение сообщений, 22 июн 2016

    как удалить только он не дает ошибку пишет и завершить либо перезапустить

    «Элемент с установленным признаком «ЭтотУзел» уже существует»


  6. nomad_irk

    Online

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.724
    Симпатии:
    1.014
    Баллы:
    204

    Тестирование и Исправление запустите с проверкой ссылочной и логической целостности с удалением объектов и ссылок.


  7. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    С зеленой точкой один элемент или два?


  8. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    Попробуйте тогда просто открыть его и перезаписать.
    Если не поможет, тогда воспользуйтесь советом выше (тестирование и исправление).

  9. ужас после тестирования их три штуки одна с зеленой при входе в нее пишет найдено более одной записи

    — Объединение сообщений, 22 июн 2016

    [​IMG]


  10. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

    В общем, суть в чем. «Предопределенный» элемент (с зеленой точкой) должен быть всегда один. У Вас он один. Но система думает, что какой-то из двух других — тоже предопределенный. Поэтому и ругается, что найдено их более одного.
    Я с этим планом обмена никогда не работал. Не знаю, за что он отвечает.
    Думаю, единственный выход — удалить те два элемента. Жестко.
    Попробуйте на копии.
    Если через пометку на удаление не получается, тогда какой-то обработкой надо.

  11. не могу удалить
    Можно как то ручное супер удаление включить ?(интерактивное через шифт делет пробовал)
    {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(28)}: Ошибка при вызове метода контекста (Удалить)
    ПП.Удалить();
    по причине:
    Действие недоступно для этого узла

    &НаСервере
    Процедура Команда1НаСервере()
    запрос = Новый запрос ;
    Запрос.Текст =
    «ВЫБРАТЬ
    | ОбменСообщениями.Ссылка,
    | ОбменСообщениями.ВерсияДанных,
    | ОбменСообщениями.ПометкаУдаления,
    | ОбменСообщениями.ЭтотУзел,
    | ОбменСообщениями.Код,
    | ОбменСообщениями.Наименование,
    | ОбменСообщениями.НомерОтправленного,
    | ОбменСообщениями.НомерПринятого,
    | ОбменСообщениями.Ведущая,
    | ОбменСообщениями.Заблокирована
    |ИЗ
    | ПланОбмена.ОбменСообщениями КАК ОбменСообщениями»;

    выборка = Запрос.Выполнить().Выбрать();
    Пока выборка.Следующий() Цикл
    ПП = выборка.ссылка.ПолучитьОбъект();
    Если ПП.Ведущая = Ложь тогда
    ПП.Удалить();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры

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

    — Объединение сообщений, 23 июн 2016

    пытался узел изменить с истины на ложь
    пишет
    {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(24)}: Ошибка при вызове метода контекста (Записать)
    ПП.записать();
    по причине:
    Данные изменения приведут к отсутствию элемента с установленным признаком «ЭтотУзел»

    Последнее редактирование: 23 июн 2016
  12. все получилось , Всем спасибо !


  13. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.125
    Симпатии:
    212
    Баллы:
    104

  14. узел с истины на ложь поменял выше писал думал не получилось , а потом зашел посмотреть сработало

Похожие темы

  1. yuranius
    Ответов:
    1
    Просмотров:
    1.268


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Есть 2 базы : 1 — бухгалтерия, 2- цех.Конфа идентичная(обновляется из одного хранилища), базы — разное наполнение одинаковых справочников, например — Номенклатура.В бухии куча номенклатуры, а в цеху только 2 папки, вот их и надо заполнять.Решила изучить план обмена.Создала план обмена «ОбменДанныхСЦехом».В программе создала 2 узла — бух и цех.Пользоваться начальным образом не могу (базы созданы и работают).Хочу установить главный узел, чтоб видно было где гл, где подчин. ГлУзел = ПланыОбмена.ОбменДанныхСЦехом.НайтиПоКоду(«00001»); Выдает ошибку -Ошибка при вызове метода контекста (УстановитьГлавныйУзел): Недопустимое значение параметра (параметр номер «1»)      ПланыОбмена.УстановитьГлавныйУзел(ГлУзел); В ГлУзел прекрасно попадает ссылка на узел, не могу понять, почему не работает, пробовала и ГлУзел.Ссылка и ГлУзел.ПолучитьОбъект — ничего не выходит. Вот что пишут в С-П : Синтаксис: УстановитьГлавныйУзел(<Главный узел>) Параметры: <Главный узел> (необязательный) Тип: ПланОбменаСсылка, ПланОбменаОбъект, Неопределено. Если в качестве значения параметра передается значение типа ПланОбменаСсылка или ПланОбменаОбъект, то план обмена, к которому относится ссылка или объект должен быть планом обмена распределенной информационной базы. Если в качестве значения передано значение Неопределено, то назначение главного узла отменяется. Описание: Устанавливает главный узел распределенной информационной базы для текущей информационной базы или отменяет назначение главного узла. Пример: ПланыОбмена.УстановитьГлавныйУзел(ГлУзел);

а ты случаем главный узел не сам себя устанавливаешь?

и еще… у плана обмена должно свойство «распределенная база» быть установлено

да.На себя нельзя устанавливать?

Я хочу воспользоваться процедурами : ПриОтправкеДанныхПодчиненному ПриПолученииДанныхОтПодчиненного ПриПолученииДанныхОтГлавного ПриОтправкеДанныхГлавному Потому что , когда я вхожу в цех, он оказывается главным почему то, хочу указать кто здесь главный и могу понять как это сделать

свойство «распределенная база»  установлено

главным ты можешь установить любой узел <> ПланыОбмена.ОбменДанныхСЦехом.ЭтотУзел

у того узла, который является главным ГлавныйУзел должно быть Неопределено. А у подчиненного узла ГлавныйУзел должен возвращать ссылку на узел, являющийся главным.

все получилось, но…у меня заблокировалась конфа средствами РИБ, что делать? как разблокировать?

Как терь работать в конфигураторе?

Оказалось, что РИБ блокируют работу конфигуратора, как же вносить изменения, кто подскажет?

вопрос снят…конфа блокируется у подчиненного…

Тэги:

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

В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.

Исправляем ситуацию

Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.

Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:


	 Запрос = Новый Запрос;
	 Запрос.Текст =
	         "ВЫБРАТЬ
	          |        Номенклатура.Ссылка КАК Ссылка,
	          |        Номенклатура.ВерсияДанных КАК ВерсияДанных,
	          |        Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	          |        Номенклатура.Родитель КАК Родитель,
	          |        Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	          |        Номенклатура.Код КАК Код,
	          |        Номенклатура.Наименование КАК Наименование,
	          |        Номенклатура.Артикул КАК Артикул,
	          |        Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	          |        Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	          |        Номенклатура.Предопределенный КАК Предопределенный,
	          |        Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	          |ИЗ
	          |        Справочник.Номенклатура КАК Номенклатура
	          |ГДЕ
	          |         ";
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 КонецЦикла;
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора

Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.

Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.

Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.


	 Запрос = Новый Запрос;
	            Запрос.Текст =
	                       "ВЫБРАТЬ
	                        |          Номенклатура.Ссылка КАК Ссылка,
	                        |          Номенклатура.ВерсияДанных КАК ВерсияДанных,
	                        |          Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
	                        |          Номенклатура.Родитель КАК Родитель,
	                        |          Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
	                        |          Номенклатура.Код КАК Код,
	                        |          Номенклатура.Наименование КАК Наименование,
	                        |          Номенклатура.Артикул КАК Артикул,
	                        |          Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	                        |          Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
	                        |          Номенклатура.Предопределенный КАК Предопределенный,
	                        |          Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
	                        |ИЗ
	                        |          Справочник.Номенклатура КАК Номенклатура
	                        |ГДЕ
	                        |          НЕ Номенклатура.ЭтоГруппа ";
	 НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
	 РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	 Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
	 КонецЦикла;
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной

1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.

Рис.3 Синтакс-помощник
Рис.3 Синтакс-помощник

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

Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает

Чаще всего причиной подобных ошибок выступают следующие факторы:

  1. Невнимательность;
  2. Отсутствие опыта или знаний;
  3. Несогласованность действий разработчиков друг с другом;
  4. Изменения в методах контекста в новых версиях платформы.

Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.

План обмена

Я
   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

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