1с ошибка при вызове метода контекста закончитьчтение
Что это такое? Куда копать? Гугл и Миста внятного ответа на вопрос не дали. Нумерация узлов в порядке.
Оценить 2 комментария
УТ 10.3.13.2, БП 2.0.22.2
Изменения были, какие именно — информацией не обладаю.
1. БП предприятия не может прочитать файл обмена той версии УТ, которая у вас есть. Почитать о совместимости версий УТ<->БП.
2. Одна из конфигураций не типовая и идет попытка прочитать/записать тот реквизит, описания которого нет в шаблоне обмена.
3. Абсурдное — неверный путь до файла обмена. Попробуйте подклчюиться через COM.
ну и вообще хотелось бы гораздо больших подробностей, а не потока сознания.
3. отметаем сразу.
А какие ещё подробности вам нужны? Исходные я все привёл. УТ 10.3, БП 2.0.
ну если УТ 10.3, БП 2.0 Вы считаете как минимум полностью указанными версиями, то назрел еще один вопрос — по какой причине отказываетесь прибегнуть к услугам грамотных специалистов?
У меня встречный вопрос — что вам помешало ответить на мой вопрос про подробности нормально, без ненужных подколок? Я не телепат и не могу однозначно определить, что лично вы подразумеваете под словом «подробности».
прошу прощения, иногда я очень не люблю не профессионалов.
Привык к тому, что обычно при постановке таких вопросов рассказывают о точных версиях ПО. Файловые или скульные варианты баз. В какой именно последовательности был настроен обмен. Типовые правила обмена или подправленные.
Обмен запускается через обработку «монитор обмена» или напрямую из списка планов обмена (что кстати очень не хорошо). Односторонний или двухсторонний.
Неоднократно были случаи когда люди просто настраивали обмены через «операции — планы обменов». Вы, я надеюсь, не так делали?
Читали ли вы в документации к конфигурации о совместимости версий?
Тем более что если обмен первый — то он проводится еще на стадии настройки плана обмена и первая порция обмена данными — это еще даже не пакет с данными, а пакет с настройками.
УТ 10.3.13.2, БП 2.0.22.2
Обе файловые.
Правила обмена были взяты из обмена между УТ и БП 1.6, правились при помощи конф. «Конвертация данных» 2.1.4.1, в частности, были отключены и помечены на удаление ПКО, приёмники которых отсутствуют в БП 2.0.
Обмен запускается через Сервис — Прочие обмены данными — Все настройки обменов данными — (выбираем элемент) — кнопка «Выполнить обмен». Соответственно, в УТ стоит галочка «Выгрузить», в БП — «Загрузить».
О совместимости версий не читал, т.к. даже не представляю, где это можно посмотреть. Поиск этой информации займёт нерациональное количество времени (да-да, я уже чувствую мощную волну праведного гнева от вас).
*гневно постучал ногами в пол и злобно повращал глазами*
В таком случае ничего хорошего и не ждите. БП 2.0 и БП 1.6 в плане структуры метаданных различаются разительно.
Попробуйте поискать правила именно для Ваших версий. В противном случае ничего хорошего ждать не придется.
Вопрос в следующем: что происходит при вызове метода НачатьЧтение? Он пытается распарсить весь файл данных целиком?
Гружу файл. Просмотрел как грузятся проблемные места все нормально.
Находятся элементы и прописываются.
Отлавливаю проблему.
Когда функция просто не отрабатывает, поиска по наименованию (((
Хотя так же все нормально передается туда для поиска.
(26) Ну так найдена была бы пустая ссылка, но не ошибка.
То работает то нет. Так же строка передается!
Глупый вопрос: зачем тогда для каждой строки делать поиск для справочника?
Сделай соответствие символьного представления и ссылки
(24) все же сомнения терзают, там не пробел будет, а нечитаемый неправильный вызывающий ошибку символ, который СОКРЛП не отловит и СТРЗаменить
(44) Сейчас отлаживаю эту процедуру, по нажатию кнопке. Ошибки в ней.
Вот. Все работает. Но иногда идет эта ошибка и все, на таких же данны!
(48) я так и останавливаюсь на строке 2000 с лишним
(51)(52) Да можно многого добавить, но я же смотрю в отладчике, в функцию передаются верные данные, а идет ошибка.
Добавлю конечно проверки.
(55) не знаю. у меня правило, если происходит неведомая херня, нужно сначала делать это, а потом только лезть за бубном
Кэш почищу сейчас догрузится.
Стоит галка останавливаться по ошибке.
Ошибка видимо возникает при записи элемента.
Я смотрю что там в нем, вижу проблему в единицах измерения и родителе.
Но из за чего не пойму.
Или ошибка заполнения обязательных на уровне платформы полей: наименование, владелец (если справочник подчинённый) и тд
(71) У меня же нет попытки исключения?
Да ранее я вижу что в родителе и единицах измерения.
Но туда идут нормальные данные. Буду разбираться.
Видимо энергия ушла.
сейчас вот с этим буду бороться что это пока не знаю
(83) в общем пройдись по справочнику номенклатуры где-то есть одинаковое наименование у элемента и группы. Или если самому лень, посади за проверку девочку-восьмиклассницу, пусть проштудирует справочник от и до.
(81) Не должно такого быть.
(84) Гружу структуру из другой базы. Я пока не могу записать ни одного элемента. Так как грузится в транзакции.
Мне не лень. Я пытаюсь разобраться. Но такого не могло в принципе быть. Надеюсь докапаться до проблемы.
(84) смотрю в файле не нахожу.
Поставил останавливаться по ошибке.
Остановка же будет на проблемном элементе?
Ну вот, пока я в отладчеке не увидел там проблемы.
Обработка вычищает записи "объект не найден" из регистра сведений "Реестр документов", которые появляются после удаления объекта в одном из узлов РИБ. Запускаем обработку и нажимаем Очистить.
Примерный текст ошибки:
Специальные предложения
Тоже столкнулся с похожей ошибкой: актуально и для РИБ УТ 11.4.3.167.
Для быстрого анализа ситуации ошибочные записи в РС Реестр документов можно найти и вручную. Выполняется на подчиненном узле: открываем РС Реестр документов, выполняем Вывести список, в открывшемся списке по полю Ссылка ищем подстроку "объект".
А для чего используется этот регистр? У нас при обмене десятки тысяч записей там формируются, и обмен висит часами.
Тоже интересует вопрос, нафига разработчики типовой конфигурации 1С Управление торговлей 11 завели регистр сведений "Реестра документов"? По логике платформы 1С для этого предназначены Журналы документов.
Платформа 8 отказалась от полного журнала с отбором по виду документа и единой шкалой времени по блокировок.Так же как и таблицы констант с периодическими реквизитами. После появления в платформе управляемых блокировок создали аналог полного журнала.
Было бы логично каждому справочнику отдельную таблицу периодических реквизитов, но хотели революции.
Кто нибудь знает чем чревато, если в узле риб отключить заполнение этого регистра при обмене? Там генерятся такие запросы, которые выполняются более 4000 секунд у нас
(13) ИР для некоторых пользователей будет сложновато. Твоя обработка хорошая но она наоборот восстанавливает данные, а тут речь идет о косяке 1С после которого обмен ломается.
(18) открываете РС "Реестр документов", сортирует по ссылке и удаляет записи, в которых Ссылка=Объект не найден
Повторюсь. Проблему решил так:
0. Сделал бэкапы всех узлов
1. Выполнил ручной поиск и отмену регистрации в Главном узле всех записей на отправку, содержащих битые ссылки () для одного из узлов. Для остальных узлов эта чистка выполнилась автоматически.
2. Выполнил обмен. На одном узле прошло успешно, на втором - все та же ошибка.
3. На всех узлах выполнил ТИИ с удалением битых ссылок.
4. Выполнил обмен. Проблема решена.
(27)Решал данную проблему Привилегированным Режимом или отключением Стандартной обработки . Посмотри в модуле там сразу идет на отказ если одного из этих требований нет.
Невозможно подключить дополнительную обработку из файла.
Возможно, она не подходит для этой версии программы.
Техническая информация:
Метод объекта не обнаружен (СведенияОВнешнейОбработке)
(32) не помогло, всё равно ругается на преобразование значения к типу Дата:
Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.
Самые распространенные ошибки при вызове типовых методов:
- Записать
- Создать
- Подключиться
- Connect
- ПроверитьВывод
- PreviewFile1C
- Прочитать
- Выполнить
- ВыполнитьПакет
- ПрочитатьИзменения
Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Рассмотрим еще один пример:
Получите понятные самоучители по 1С бесплатно:
Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:
: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >
Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.
Решение проблемы
Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.
Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:
Проверьте параметры, передаваемые в функцию, и правильность её использования.
Другие статьи по 1С:
Исправляем ситуацию
Рис.1 Запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Рис.2 Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной
Рис.3 Синтакс-помощник
Рис.4 Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Читайте также: