Пытаюсь настроить обмен между подразделениями штатными средствами.
Создал подчиненный узел, создал начальный образ — при обмене возникают ошибки чтения файла обмена.
На основном узле:
2012.05.15 08:14:46|Костров Валерий|Обмен.Узел_TT.Чтение|ok|Начало чтения файла сообщения «C:tmpMessageExchange_UT_TT_0000000002.xml»
2012.05.15 08:14:47|Костров Валерий|Обмен.Узел_TT.Чтение|error|Ошибка чтения сообщения. Попытка № 0 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477)
2012.05.15 08:14:48|Костров Валерий|Обмен.Узел_TT.Чтение|error|Ошибка чтения сообщения. Попытка № 1 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477)
2012.05.15 08:14:49|Костров Валерий|Обмен.Узел_TT.Чтение|error|Ошибка чтения сообщения. Попытка № 2 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477) и так далее до 20, потом начинается выгрузка, которая проходит успешно.
На подчиненном узле:
2012.05.15 08:20:09|Администратор|Обмен.Узел_UL.Чтение|ok|Начало чтения файла сообщения «C:tmpMessageExchange_TT_UT_0000000003.xml»
2012.05.15 08:20:11|Администратор|Обмен.Узел_UL.Чтение|error|Ошибка чтения сообщения. Попытка № 0 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477)
2012.05.15 08:20:12|Администратор|Обмен.Узел_UL.Чтение|error|Ошибка чтения сообщения. Попытка № 1 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477)
2012.05.15 08:20:14|Администратор|Обмен.Узел_UL.Чтение|error|Ошибка чтения сообщения. Попытка № 2 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477)
2012.05.15 08:20:15|Администратор|Обмен.Узел_UL.Чтение|error|Ошибка чтения сообщения. Попытка № 3 : Ошибка при вызове метода контекста (ПрочитатьИзменения)
(Имя модуля: ОбщийМодуль.одОбменДанными, номер строки: 3 477) и так далее до 20, потом начинается выгрузка, которая проходит успешно.
Альфа-Авто: Автосалон +Автосервис + Автозапчасти. Редакция 4.1 (4.1.01.20),
Конфигурация узла распределенной ИБ не соответствует ожидаемой |
Я |
12.04.19 — 13:49
Ничего нового, все то же самое.
Ошибка при вызове метода контекста (ПрочитатьИзменения): Конфигурация узла распределенной ИБ не соответствует ожидаемой!
Конфигурацию выгружал, в удаленный узел загрузил. Такая же фигня. Что можно еще сделать?
Релиз платформы 8.3.12.1790, есличо
1 — 12.04.19 — 13:50
Удаленный узел файлы обмена всасывает нормально, кстати.
2 — 12.04.19 — 14:03
Методика 2 вот отсюда звучит страшновато, да и собсно я так понимаю, она именно для другого случая, когда изменения не идут в удаленный узел
3 — 12.04.19 — 14:03
4 — 12.04.19 — 14:05
А чем тебя первая методика из ссылки не устроила?
5 — 12.04.19 — 14:11
(4) Тем, что не работает. Я сделал несколько раз уже. В удаленный узел идут изменения, обратно главный не принимает.
6 — 12.04.19 — 14:22
(5) в ЦБ какие-то изменения конфигурации делаются?
Если да, то пересохрани всю конфигурацию в ЦБ — заставь ее заново примениться к базе с реструктуризацией и регистрацией всех своих объектов. Только после этого проведи по шагам методики 1-го пункта.
7 — 12.04.19 — 14:49
(6) Делаются. ОНи всасываются успешно в удаленный узел
А обратно шиш.
8 — 12.04.19 — 14:50
Но попробую без выгрузки, да
9 — 12.04.19 — 14:50
Ща релиз ИБ подобновлю
10 — 12.04.19 — 15:03
«А обратно шиш» — а в файле выгрузки есть изменения?
11 — 12.04.19 — 15:08
(7) Что-то я не понял. «Удаленный» — это в смысле «подчиненный»? Тогда не понял. Такая ошибка может возникнуть в подчиненных узлах, но не в центральном. Как узел может «всосать успешно», если проверка соответствия — перед началом обмена?
12 — 12.04.19 — 15:09
Пятница?
13 — 12.04.19 — 15:12
(11) может, я такое тоже видел, на куче точек норм получает. а в центр хрен. Делал выгрузку CF из узла в Центр. норм заработало. По поводу сабжа в (0). Платформы одинаковые? Тоже недавно на 13-й парился с этим, пока одинаковые платформы не поставил, не проходил обмен.
14 — 12.04.19 — 15:20
(13) Чудны дела твои, господи. Работал на разных платформах по узлам, но ни разу такого не было. В центральном узле было и не раз «Данные принимаются от узла, для которого зарегистрированы изменения конфигурации…» но чтобы такое… век учись -дураком помрёшь.
Первое что в голову приходит — чистить кэши, перегружать сервак; выгрузить конфигурацию ПУ, на ЦУ вернуться к конфигурации БД и сравнить с выгруженной конфой ПУ…
15 — 12.04.19 — 15:20
источник ошибки — в файле от ПБ содержится значение хэш-функции, которое попадает в файл от сохраненной конфигурации в ПБ.
Если это файл для загрузки в ЦБ то ЦБ тоже указывает, что конфигурация не соответствует ожидаемой.
По поводу не совпадения платформ — тоже допускаю, что и в этом может быть причина, т.к. формула для получения хэшфункции в разных платформах может (в теории) давать разные значения. Но часто видел такое, что платформы разные и режим работы с базами разные, а ошибок нет.
Как только конфигурации в ЦБ и в ПБ полностью, абсолютно идентичны — ошибка исчезает.
16 — 12.04.19 — 15:24
(15) Механизм РИБ — один из базовых механизмов платформы. Он консервативен не хуже чем британская королева 
17 — 12.04.19 — 15:39
(10) а как же.
(11) А вот так. Подчиненный узел считает что все ок. Все изменения, что в конфигурации тут навертел — там есть и работают. А главный изменения не принимает.
(13) Одинаковые. Насчет из ПУ в ГУ выгрузки цф это мысль, я попробую потом, как если ща с обновлением версии УТ не взлетит.
18 — 12.04.19 — 15:44
(15) замена Digest2 на значение из выгрузки главного узла кстати не помогла, главный узел сказал не приму эту выгрузку.
19 — 12.04.19 — 21:53
(17) Имхо, если демоны в базе шалят, то выгрузка/загрузка конфигурации через пустую базу может поможет (из ПБ в ЦБ).
20 — 12.04.19 — 21:59
21 — 13.04.19 — 03:58
1. Почистить кеш на ЦБ
2. Почистить кеш на ПБ
3. Выгрузить ЦФ из ПБ, загрузить в ПБ (по стандартной схеме, отключить узел, разрешить изменения, загрузить ЦФ, восстановить статус узла).
4. Попробовать обмен
5. Установить другой допустимый релиз платформы (предыдущий или следующий). Повторить шаги 1-4.
Есть мнение, что количество пользователей использующих РИБ, ничтожно мало и релизы в которых есть баги связанные с РИБ 1С не отзывает.
22 — 13.04.19 — 03:59
+(21)
в 3. пункте ЦФ выгрузить из Центральной базы.
23 — 13.04.19 — 17:46
(20) одинаковые
24 — 13.04.19 — 17:48
(22) это все уже делалось. ну только релизы не менялись.
25 — 15.04.19 — 00:26
(24) «ну только релизы не менялись» — это тоже важно. Есть релизы — в которых тупо РИБ не работает из-за багов.
(14) за последние 5 лет минимум дважды сталкивался с релизом на котором РИБ не работает именно из-за багов платформы.
26 — 15.04.19 — 04:00
Была беда, когда РИБ вообще игнорировал небольшие изменения конфигурации ЦУ и продолжал принимать объекты базы. Пропало с переходом с 8.3.12 на 8.3.13
27 — 15.04.19 — 05:08
Была подобная ошибка недавно, именно что обмен не грузился из ПБ в ЦБ. Но там были разные версии платформы 13 и 14 в узлах. Сделали обе платформы одинаковыми, добавили в ЦБ новое метаданное, после чего проблема загрузки обмена переехала в ПБ, и там уже стандартной загрузкой конфы залечили.
28 — 15.04.19 — 11:02
(25) Так работало ж пару месяцев, с тех пор как РИБ создал.
(26) да перейти не вопрос, но они их плодят как тараканов, а какой более-менее стабильный — хз.
29 — 15.04.19 — 11:53
(6) Заработало. Обновил релиз конфигурации, загрузил сф в ПУ, обмен пошел.
Dirk Diggler
30 — 15.04.19 — 11:54
(29) отличие только в том было, что перед обновлением обмен я отключил, включил только после заливки нового цф в ПУ.
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;

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

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

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

Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
- Главная
- —
- Форум
- —
- ТЕХПОДДЕРЖКА
- —
- ЭКСЕЛОН — Загрузка в 1С из EXCEL
- —
- Ошибка при вызове метода контекста (Записать)
|
Вчера заметил, что перестали обновляется цены, проверил выгрузку и обнаружил что часть номенклатуры не записывается. Номенклатура_СоздатьОбновить 020: {ВнешняяОбработка.APPLIX_RU_ЗагрузкаИзExcel_ЗМ.МодульОбъекта(70081)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПередЗаписью’: {Справочник.Номенклатура.МодульМенеджера(2911)}: Преобразование значения к типу Булево не может быть выполнено |
|
|
Ошибка при попытке обновить номенклатуру |
|
|
1С:Предприятие 8.3 (8.3.20.1674) Прикрепленные файлы |
|
|
Модуль создал номенклатуру, теперь ее невозможно открыть ТекстыЗапросов = Новый Массив; ИменаОбъектовМетаданных = Новый Массив; Для Каждого СсылкиПоТипу Из СсылкиПоТипам Цикл ПолноеИмяОбъектаМетаданных = ОбъектМетаданных.ПолноеИмя(); Прикрепленные файлы |
|
|
пришлите ваш файл и скриншоты всех настроек колонок |
|
|
у нас загрузилось нормально доступ к базе дадите? попробуем на вашей базе отладкой посмотреть что не так |
|
|
Сергей Юданов Пользователь Сообщений: 23 |
#9
30.05.2022 15:03:02 Разобрались сами. На некоторые позиции номенклатуры в поле (Вид номенклатуры) было назначено не значение, а почему-то название категории в котором содержались значения. |
ПОСЛЕДНИЕ СООБЩЕНИЯ
Сейчас на форуме (гостей: 58)
Всего зарегистрированных пользователей: 2219
Приняло участие в обсуждении: 367
Всего тем: 822
Разобрался.
Проблема была в правилах регистрации.
Если кому-то интересно, то если во время проведения документа в типовой конфигурации появляется ошибка
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1137)}: Ошибка при вызове метода контекста (Записать)
Результат = Форма.Записать(ПараметрыЗаписи);
первым делом проверьте , не изменялись ли какие-либо планы обмена для синхронизации. Возможно, в каком-то из настроенных обменов были изменены правила регистрации, что и приводит к упомянутой ошибке. В таком случае, если обмен является типовым, установите галочку использования типовых правил регистрации в соответствующем диалоговом окне.
