|
Ошибка при записи объекта, который создается с помощью конвертации данных | ☑ | ||
---|---|---|---|---|
0
Leo_Lito
27.10.23
✎
10:39
|
КД 2.1 В ПКО (После загрузки) следующий код:
ДатаДоговора = ПараметрыОбъекта.Получить("ДатаДоговора"); СрокДействия = ПараметрыОбъекта.Получить("СрокДействия"); НомерДоговора = ПараметрыОбъекта.Получить("НомерДоговора"); ВалютаВзаиморасчетов = ПараметрыОбъекта.Получить("ВалютаВзаиморасчетов"); Владелец = ПараметрыОбъекта.Получить("Владелец"); ВедениеВзаиморасчетов = ПараметрыОбъекта.Получить("ВедениеВзаиморасчетов"); КонтрагентНаименование = Владелец.Наименование; ПартнерСсылка = Справочники.Партнеры.НайтиПоРеквизиту("НаименованиеПолное", КонтрагентНаименование); Партнер = ПартнерСсылка.ПолучитьОбъект(); ДоговорПроверка = Справочники.БУХ_ДоговорыКонтрагентов.НайтиПоКоду(Объект.Код); Если ДоговорПроверка = Справочники.БУХ_ДоговорыКонтрагентов.ПустаяСсылка() Тогда ОсновнойДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); Иначе Если ДоговорПроверка.Владелец <> Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда ОсновнойДоговорСсылка = ДоговорПроверка.Владелец; ОсновнойДоговор = ОсновнойДоговорСсылка.ПолучитьОбъект(); Иначе ОсновнойДоговор = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); КонецЕсли; КонецЕсли; ОсновнойДоговор.Наименование = Объект.Наименование; Если Объект.ТипДоговора = Перечисления.БУХ_ВидыДоговоровКонтрагентов.СПокупателем Тогда ОсновнойДоговор.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем; Партнер.Клиент = Истина; ИначеЕсли Объект.ТипДоговора = Перечисления.БУХ_ВидыДоговоровКонтрагентов.СПоставщиком Тогда ОсновнойДоговор.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком; Партнер.Поставщик = Истина; ИначеЕсли Объект.ТипДоговора = Перечисления.БУХ_ВидыДоговоровКонтрагентов.СКомиссионером Тогда ОсновнойДоговор.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером; Партнер.ПрочиеОтношения = Истина; ИначеЕсли Объект.ТипДоговора = Перечисления.БУХ_ВидыДоговоровКонтрагентов.СКомитентом Тогда ОсновнойДоговор.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом; Партнер.ПрочиеОтношения = Истина; КонецЕсли; Партнер.Записать(); Если ВедениеВзаиморасчетов = 1 Тогда ОсновнойДоговор.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов; Иначе ОсновнойДоговор.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным; КонецЕсли; ОсновнойДоговор.Дата = ДатаДоговора; ОсновнойДоговор.ДатаНачалаДействия = ДатаДоговора; ОсновнойДоговор.ДатаОкончанияДействия = СрокДействия; ОсновнойДоговор.Номер = НомерДоговора; ОсновнойДоговор.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов; ОсновнойДоговор.Контрагент = Владелец; ОсновнойДоговор.Партнер = ПартнерСсылка; ОсновнойДоговор.Записать(); Объект.Владелец = ОсновнойДоговор.Ссылка; При исполнении кода возникает ошибка: "Ошибка при выполнении обработчика ""Перед Записью" по причине: Не удалось найти объект расчетов. Код ошибки = 21" Ссылается на строку кода ОсновнойДоговор.Записать(); |
|||
1
Волшебник
27.10.23
✎
10:41
|
ищите ошибку в программном коде по фразе
Не удалось найти объект расчетов. Код ошибки = 21 |
|||
2
Михаил Козлов
27.10.23
✎
10:47
|
Конфигурация приемник не указана. Посмотрите в модуле объекта справочника ДоговорыКонтрагентов что связано с объектом расчетов. В отладчике можно встать в этом модуле в ПередЗаписью. И проверьте там ЭтотОбъект.ОбменДанными.Загрузка.
|
|||
3
Leo_Lito
27.10.23
✎
11:07
|
(2) ОбменДанными.Загрузка = Ложь.
В этом же правиле, но в другом ПКО (После загрузки) написал следующее: КонтрагентПроверка = Справочники.Контрагенты.НайтиПоНаименованию(Объект.Наименование); Если КонтрагентПроверка = Неопределено Тогда Партнер = Справочники.Партнеры.СоздатьЭлемент(); Иначе ПартнерСсылка = КонтрагентПроверка.Партнер; Партнер = ПартнерСсылка.ПолучитьОбъект(); КонецЕсли; Партнер.Наименование = Объект.Наименование; Партнер.НаименованиеПолное = Объект.Наименование; Если Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо Тогда Партнер.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.ЧастноеЛицо; ИначеЕсли Не РезидентРБ И Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо Тогда Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицоНеРезидент; Партнер.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.Компания; Иначе Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо; Партнер.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.Компания; КонецЕсли; Если Объект.КонтактнаяИнформация.Количество() Тогда Для каждого Строка Из Объект.КонтактнаяИнформация Цикл СтрокаКонтактнаяПартнеры = Партнер.КонтактнаяИнформация.Добавить(); СтрокаКонтактнаяПартнеры.Тип = Строка.Тип; СтрокаКонтактнаяПартнеры.Вид = Строка.Вид; СтрокаКонтактнаяПартнеры.Представление = Строка.Представление; КонецЦикла; КонецЕсли; Партнер.Записать(); Объект.Партнер = Партнер.Ссылка; Здесь всё отработало и ни на что не ругалось. Алгоритмы действий фактически одинаковы. |
|||
4
olegves
27.10.23
✎
11:09
|
и не забыть в отладчике установить флаг перехвата фоновых сеансов
|
|||
5
Leo_Lito
27.10.23
✎
11:13
|
(4) Стоит
|
|||
6
Михаил Козлов
27.10.23
✎
11:36
|
Как я понял, у Вас ошибка на записи договора и связана с объектом расчетов. Попробуйте перед ОсновнойДоговор.Записать(); поставить ОсновнойДоговор.ОбменДанными.Загрузка = ИСТИНА;
а лучше разобраться, что не так с объектом расчетов. |
|||
7
Leo_Lito
27.10.23
✎
11:56
|
(6) Да, спасибо за объяснение. Уже нашел, где попадаю в исключение.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |