Ошибка записи объекта |
Я |
11.03.20 — 04:23
При запуске синхронизации в БП, возникла ошибка.
Пытаюсь настроить тестовый пример обмена между БП — ERP. Подскажите пожалуйста, по тексту ошибки если кому она очевидна?
Обмен идет справочником валюты. По тексту что то не так в правилах конвертации видимо.
Ошибка записи объекта
ТипОбъекта = Валюта
Объект = руб.
ОписаниеОшибки = Несоответствие типов (параметр номер ‘1’)
ПозицияМодуля = {ОбщийМодуль.ОбменДаннымиСлужебный.Модуль(1092)}: НаборЗаписей.Записать();
{РегистрСведений.СоответствияОбъектовИнформационныхБаз.МодульМенеджера(39)}: ОбменДаннымиСлужебный.ДобавитьЗаписьВРегистрСведений(СтруктураЗаписи, «СоответствияОбъектовИнформационныхБаз», Загрузка);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(1773)}: РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьЗапись(СоответствияОбъектовИнформационныхБаз);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10470)}: ЗаписатьОбъектВИБ(Объект, ТипОбъекта, ЗаписатьОбъект, ОтправкаНазад);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(15949)}: ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2353)}: ПроизвестиЧтениеДанных(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7280)}: ОбработкаОбменаДаннымиXML.ВыполнитьЗагрузкуДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6851)}: ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}: ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3883)}: ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}: ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4879)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(969)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(398)}: ВызватьПроцедуру(ИмяПроцедуры, ПараметрыЭкспортнойПроцедуры);
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(1260)}: Результат = ДлительныеОперации.ВыполнитьВФоне(
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(1060)}: Результат = ФоновоеЗаданиеЗапуститьНаСервере(ПараметрыЗадания, ОшибкаРасхожденияВерсийПриПолученииДанных, ПроверятьРасхождениеВерсий);
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(744)}: ФоновоеЗаданиеЗапуститьНаКлиенте(ФоновоеЗаданиеВыполняемоеДействие,
{(1)}:Подключаемый_ЗагрузкаДанных_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(435)}: РезультатВычисления = Вычислить(ИмяПроцедуры);
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
Несоответствие типов (параметр номер ‘1’)
{РегистрСведений.СоответствияОбъектовИнформационныхБаз.МодульНабораЗаписей(40)}: ОбменДанными.Получатели.Добавить(Отбор.УзелИнформационнойБазы.Значение);
{ОбщийМодуль.ОбменДаннымиСлужебный.Модуль(1092)}: НаборЗаписей.Записать();
{РегистрСведений.СоответствияОбъектовИнформационныхБаз.МодульМенеджера(39)}: ОбменДаннымиСлужебный.ДобавитьЗаписьВРегистрСведений(СтруктураЗаписи, «СоответствияОбъектовИнформационныхБаз», Загрузка);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(1773)}: РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьЗапись(СоответствияОбъектовИнформационныхБаз);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10470)}: ЗаписатьОбъектВИБ(Объект, ТипОбъекта, ЗаписатьОбъект, ОтправкаНазад);
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(15949)}: ПоследнийОбъектЗагрузки = ПрочитатьОбъект();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(2353)}: ПроизвестиЧтениеДанных(ЧтениеСообщения);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(7280)}: ОбработкаОбменаДаннымиXML.ВыполнитьЗагрузкуДанных();
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6851)}: ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, СообщениеОбмена, , ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(381)}: ВыполнитьОбменДаннымиЧерезФайловыйРесурс(СтруктураНастроекОбмена, ТолькоПараметры);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(3883)}: ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы,
{Обработка.ВыполнениеОбменаДанными.МодульМенеджера(34)}: ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(
{(1)}:Обработки.ВыполнениеОбменаДанными.ВыполнитьЗапускОбменаДанными(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4879)}: Выполнить ИмяМетода + «(» + ПараметрыСтрока + «)»;
{ОбщийМодуль.ДлительныеОперации.Модуль(969)}: ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(398)}: ВызватьПроцедуру(ИмяПроцедуры, ПараметрыЭкспортнойПроцедуры);
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(1260)}: Результат = ДлительныеОперации.ВыполнитьВФоне(
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(1060)}: Результат = ФоновоеЗаданиеЗапуститьНаСервере(ПараметрыЗадания, ОшибкаРасхожденияВерсийПриПолученииДанных, ПроверятьРасхождениеВерсий);
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(744)}: ФоновоеЗаданиеЗапуститьНаКлиенте(ФоновоеЗаданиеВыполняемоеДействие,
{(1)}:Подключаемый_ЗагрузкаДанных_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее)
{Обработка.ВыполнениеОбменаДанными.Форма.Форма.Форма(435)}: РезультатВычисления = Вычислить(ИмяПроцедуры);
по причине:
Несоответствие типов (параметр номер ‘1’)
КСообщенияОбОшибках = 26
1 — 11.03.20 — 04:25
Проверил типы правил конвертации свойств источника и приемника в создаваемых планах обмена.
Все совпадает.
2 — 11.03.20 — 04:33
Отключил правило регистрации валюты в ERP, ошибка при синхронизации в БП идет все равно .
3 — 11.03.20 — 05:11
ОбменДанными.Получатели.Добавить(Отбор.УзелИнформационнойБазы.Значение); тут что ?
4 — 11.03.20 — 05:27
(3) А где это вы нашли?
5 — 11.03.20 — 05:29
(3) Понял, тут. Сейчас посмотрю
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
Несоответствие типов (параметр номер ‘1’)
{РегистрСведений.СоответствияОбъектовИнформационныхБаз.МодульНабораЗаписей(40)}: ОбменДанными.Получатели.Добавить(Отбор.УзелИнформационнойБазы.Значение);
6 — 11.03.20 — 05:32
7 — 11.03.20 — 05:33
(3) Там ссылка на план обмена .
8 — 11.03.20 — 05:38
И чего падает?
9 — 11.03.20 — 05:39
Пытаюсь понять. Может ли быть причина в правилах регистрации, из за того что не заполнены параметры плана обмена?
10 — 11.03.20 — 05:43
11 — 11.03.20 — 05:44
Меня обгладывают сомнения.
Не причина ли тут в том что КД 2.1. не подходит. Там что все время будут какие то ошибки.
Или что все же можно это сделать. Что это за ошибка тогда? Переношу просто валюты, что там где не так? Из за чего?
12 — 11.03.20 — 06:08
В ручную не смог создать запись в этом регистре.
http://joxi.ru/KAgN94ktX5Voy2
13 — 11.03.20 — 06:09
14 — 11.03.20 — 06:12
Может ошибка в конфигурации ПБ ?
15 — 11.03.20 — 06:25
Для загрузки в приемник что используется?
ExchangeRules.xml
или
CorrespondentExchangeRules.xml
16 — 11.03.20 — 06:45
Что можно посмотреть по ошибке в (0) ?
17 — 11.03.20 — 06:46
А регистр «СоответствияОбъектовИнформационныхБаз» входит в состав плана обмена «БП_ERP»?
18 — 11.03.20 — 07:37
(17) в состав обмена нет. Он же не учавствует в обмене. В обмене только валюта справочник в правилах конвертации.
Этот регистр же уже сами процедуры обрабатывают планов обмена. Или куда его нужно включить?
19 — 11.03.20 — 07:40
(17) Открыл состав полного плана обмена, там не включен этот регистр в состав. Видимо это не нужно.
http://joxi.ru/gmvaZ43tveZqPr
20 — 11.03.20 — 07:42
(19) это нужно
21 — 11.03.20 — 07:45
(20) То есть я должен включить этот регистр сведений в состав обеих баз?
Или только в источнике, так как обмен предполагается односторонний. Хотя бы что бы ошибка сейчас ушла эта.
Что бы продолжить.
22 — 11.03.20 — 07:53
(19) Полный план обмена не использует регистр «СоответствияОбъектовИнформационныхБаз»
СоответствияОбъектовИнформационныхБаз используется только при конвертации
falselight
23 — 11.03.20 — 07:57
(22) Ясно. Буду вниникать.
(20) Спасибо, добавил его в состав плана обмена, синхронизация прошла без ошибок.
Теперь мне ясно что подобные ошибки могут быть из за того что этот регистр не был включен в план обмена.
Продолжаю тестирование.
v8: Преобразование к значению типа Булево не может быть выполнено
При попытке записи элемента справочника выводится ошибка:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
: Преобразование значения к типу Булево не может быть выполнено
Отладка показывает значение РодительПодразделения.ОбособленноеПодразделение = Null.
Пытаюсь групповой обработкой справочника установить все значения ОбособленноеПодразделение в Истина. Результат: какие-то элементы обработка устанавливает, а какие-то не может, как раз по причине невозможности преобразования.
Прошу помочь разрешить эту ситуацию. Спасибо.
Статья рассчитана как на пользователей-непрограммистов, так и на тех, кто имеет желание попробовать свои силы в решении этой проблемы. Для последних в этом вопросе важно иметь представление о режиме «Конфигуратор». Однако начать стоит с малого – того, что может сделать даже не знакомый с тонкостями программирования пользователь.
1. Ошибка кэша
В зависимости от режима работы программы 1С Предприятие 8 можно попробовать перезагрузить компьютер, на котором расположена база, если режим файловый, или сервер – если программа работает в серверном режиме.
Узнать, в каком режиме работает Ваша 1С можно из окна «О программе», как показано на скриншоте ниже.
Делается это из-за возможных ошибок кэша, которые, в свою очередь, могут стать причиной появления сообщения об ошибке преобразования значения к типу Булево.
Очистив таким нехитрым образом кэш, можно избежать последующих проблем.
2. Исключение ошибки в настройках пользователя
Если ошибка повторяется только у одного пользователя, есть вариант просто исключить ее в настройках пользователя 1С.
Откроем настройки карточки данного пользователя 1С и отыщем в списке форму, на которой возникает ошибка. Если таковая в списке имеется, просто очищаем ее, путем нажатия на кнопку «Очистить» (показано на рисунке ниже).
3. Обновление типовой конфигурации 1С
Если вы работаете с типовой конфигурацией системы 1С — лучшее решение — обновить программу до версии последнего релиза. Возможно, это решит проблему.
Если описанные выше способы не стали решением проблемы, рекомендую неподкованным в программировании пользователям остановиться на этом, и обратиться за помощью к более компетентным коллегам. Далее последует информация для тех, кто уже имел опыт работы в 1С в режиме «Конфигуратор».
4. Исправление ошибки Булево в Конфигураторе 1С
Значения типа Булево в 1С имеют два значения в коде программы: Истина и Ложь (Да и Нет). Значения данного типа возвращаются в качестве результата вычисления логических выражений. То есть, если преобразование значения к типу Булево не может быть выполнено в 1С – у вас неверно сформулировано это самое логическое выражение. Ниже рассмотрим простой пример.
У вас может быть и свое условие, но его можно упростить до такого варианта: есть некоторое значение (переменная), которая имеет тип «Булево», но по какой-то причине ей присвоено значение «Неопределено». Вот условия, при которых будет возникать ошибка преобразования значения к типу Булево в 1С, и при которых она не возникнет:
Еще пример: есть переменные А и Б. Необходимо проверить, есть ли Б в некотором Списке. Ниже приведена часть кода, при котором воспроизводится и закомментированное верное условие, и ошибка не возникает:
Преобразовать в тип «булево» можно только тип «число»:
Такая ошибка может возникнуть при использовании внешней обработки или печатной формы. Вот пример реальной проблемы и ее решения из сети:
При внесении остатков склада через внешнюю обработку пользователь не указал «Вид номенклатуры» и не поставил признака «Не определена». Т.е. она просто не была заполнена.
Далее были определенные действия (использование механизма подбора в складских типах документов), при которых возникала ошибка преобразования значения к типу Булево в 1С. То есть, програмно, без проверок была создана Номенклатура со значением вида NULL.
Решение существующей проблемы: заполнить значение – простыми словами – указать соответствующий вид номенклатуры.
5. Как самостоятельно найти ошибку преобразования значения к типу Булево?
Если Вам требуется самостоятельно найти ошибку преобразования значения к типу Булево, поиск следует начать, открыв программу в режиме Конфигуратора.
Далее включаем отладку по ошибке:
Открываем программу 1С Предприятие 8 в режиме отладки:
Проверяем, запущена ли отладка (пример на файловом варианте работы системы «1С:Предприятие 8»):
В подключенных предметах отладки должно быть две строки с типом «Сервер» и «Тонкий клиент» (исключение, если режим отладки запущен в Толстом клиенте, тогда строка будет только одна – с этим типом):
Проверили. Закрыли. Теперь повторяем то же действие в режиме 1С:Предприятия, при котором возникает ошибка. В данном примере это внешняя обработка. Для выявления ошибки она открыта как в режиме Конфигуратора, так и в режиме 1С:Предприятие:
После выполнения действий, при которых возникает ошибка преобразования значения к типу Булево, появится следующая картина:
Программа в режиме отладки остановилась на шаге момента выполнения строки кода с нашей ошибкой. Далее мы видим, что во внешней обработке неверно составлено условие (см. пример выше), которое необходимо заменить на верное.
Каждая отдельная ситуация требует частного рассмотрения. Если вы имеете базовые представления об отладке, умеете читать код и обладаете весомым запасом энтузиазма и любопытства, то найдете причину и примете решение по ее устранению. Однако делать это лучше на резервной копии базы, дабы обезопасить данные.
А если у Вас недостаточно опыта, и первые три пункта из статьи не помогли исправить ошибку Булево, рекомендую поберечь время и нервы: мы в кратчайшие сроки решим ваш вопрос!
Ошибка Преобразование значения к типу булево не может быть выполнено
(3) а там и в отладчике нечего смотреть — будет возвращен подчиненный элемент по имени которого идет поиск, либо «неопределено», если искомый элемент не найден. Сответственно ни первый ни второй вариант не имеют булевого типа и преобразованы к нему не могут, о чем и говорит система.
То что вы посоветовали будет всегда возвращать ложь, поскольку ни «подчиненный элемент» ни «неопределено» не равно истине и условие никогда не выполнится
Показывать по
10
20
40
сообщений
Новая тема
Ответить
assnake44
Дата регистрации: 24.08.2016
Сообщений: 6
Пробую перенести штатными средствами. Выгружается без ошибок, но при загрузке:
«Ошибка записи объекта
ТипОбъекта = Подразделение
Объект = Магазины
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПриЗаписи’: {Справочник.ПодразделенияОрганизаций.МодульОбъекта(112)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПриЗаписи’: {ОбщийМодуль.ЗарплатаКадры.Модуль(985)}: Не удалось изменить подчиненное подразделение Магазин 76 при записи Магазин 76.
Возможно, подразделение редактируется другим пользователем
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5985)
КодСообщения = 26
Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5992)}: Ошибка записи объекта
ТипОбъекта = Подразделение
Объект = Магазины
ОписаниеОшибки = Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПриЗаписи’: {Справочник.ПодразделенияОрганизаций.МодульОбъекта(112)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика — ‘ПриЗаписи’: {ОбщийМодуль.ЗарплатаКадры.Модуль(985)}: Не удалось изменить подчиненное подразделение Магазин 76 при записи Магазин 76.
Возможно, подразделение редактируется другим пользователем
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5985)
КодСообщения = 26»
З.Ы. Подразделение – «Магазины» родитель для подразделения «Магазин 76». Подскажите куда копать?
assnake44
Дата регистрации: 24.08.2016
Сообщений: 6
Может кому-то пригодится:
Причина была в в реквизите «ЕстьОбособленныеПодразделения» в справочнике Организации. Перенесся он не корректно из-за кода в макете переноса:
ВЫБОР
КОГДА ИСТИНА В
(ВЫБРАТЬ ПЕРВЫЕ 1
ИСТИНА
ИЗ
Справочник.Организации КАК ПодчиненныеОрганизации
ГДЕ
ПодчиненныеОрганизации.ГоловнаяОрганизация = Организации.Ссылка
ОБЪЕДИНИТЬ
ВЫБРАТЬ ПЕРВЫЕ 1
ИСТИНА
ИЗ
Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
ГДЕ
НЕ ПодразделенияОрганизаций.КодПоОКАТО = «»
И НЕ ПодразделенияОрганизаций.КодПоОКТМО = «»
И ПодразделенияОрганизаций.Владелец = Организации.Ссылка)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЕстьОбособленныеПодразделения
Так как КодПоОКАТО не используется, и был не заполнен. Соответственно получается их нет.
Игорь Афанасьев
Дата регистрации: 01.11.2016
Сообщений: 1
assnake44,Полностью согласен с предыдущим ответом. При переходе на ОКТМО в некоторых подразделениях они становятся не заполненными (человек мог у подразделения заполнить только КПП — раньше проверки на ОКАТО не было.
Затем включили ОКТМО, а перезаполнять его у подразделений никто не стал.
Решение: пройтись по подразделениям, и если ОКТМО не нужно, снять галку или заполнить ОКТМО
Показывать по
10
20
40
сообщений