При обмене через правила КД делаю проверку на договор, вылетает ошибка...

1. user973528 13.09.18 16:03 Сейчас в теме
Проверяю если договора контрагента нету, то ищем в базе, если нет то создаём, но вылетает ошибка, не могу разобраться что ей нужно

Если Не ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
	Фл = 1;
	Выборка = Справочники.ДоговорыКонтрагентов.Выбрать(, Объект.Контрагент);
	Пока Выборка.Следующий() Цикл
		ТНаим = "Основной договор";
		Если Найти(Выборка.Наименование, ТНаим) > 0 Тогда
			Фл = 0;			
			А = Выборка.Ссылка;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Если Фл = 1 Тогда
		А = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); 
		А.Наименование = "Основной договор"; 
		А.Номер 	   = "№ " + Лев(Прав(Объект.Номер,6),5);
		А.Дата         = Объект.Дата;
		А.Организация  = Объект.Организация; 
		А.Владелец     = Объект.Контрагент;
		А.ВидДоговора  = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
		Выборка = Справочники.Валюты.Выбрать();
		Пока Выборка.Следующий() Цикл
			Сообщить(Выборка.ссылка);
			Если СтрНайти(Выборка.Наименование, "руб") > 0 Тогда
				А.ВалютаВзаиморасчетов = Выборка.Ссылка;
				Прервать;
			КонецЕсли;
		КонецЦикла;		
		А.Записать(); 
	КонецЕсли;
	Объект.ДоговорКонтрагента = А.Ссылка;
КонецЕсли; 
Показать



Загрузка в приемнике: Ошибка при загрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1274)}: Ошибка в обработчике события ПослеЗагрузкиОбъекта
ИмяПКО = ДоговорыКонтрагентов
ТипОбъекта = Договор
Объект = Поставка на склад 1,5 млн
Обработчик = ПослеЗагрузкиОбъекта
ОписаниеОшибки = Преобразование значения к типу Булево не может быть выполнено
ПозицияМодуля = (1)
КодСообщения = 21
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user973528 13.09.18 16:06 Сейчас в теме
То есть вроде как понимаю, что если договора в источнике нету, то мы после загрузки в базу приемника ищем договор "Основной" по данному контрагенту, если его нету и там, то создаём свой
3. user973528 13.09.18 16:07 Сейчас в теме
Данный документ который выгружаю имеет договор с контрагентом, но почему то валится на ошибке
4. bmk74 234 13.09.18 16:19 Сейчас в теме
Полность процедуру этого обработчика покажите
5. user973528 13.09.18 16:20 Сейчас в теме
(4)
Объект.СуммаВключаетНДС = Истина;
Объект.ВидОперации      = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия;
Объект.ВалютаДокумента  = Справочники.Валюты.НайтиПоНаименованию("руб.");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, "Товары");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаРасчетов(Объект);
 
 Если Не ЗначениеЗаполнено(Объект.ДоговорКонтрагента) Тогда
	Фл = 1;
	Выборка = Справочники.ДоговорыКонтрагентов.Выбрать(, Объект.Контрагент);
	Пока Выборка.Следующий() Цикл
		ТНаим = "Основной договор";
		Если Найти(Выборка.Наименование, ТНаим) > 0 Тогда
			Фл = 0;			
			А = Выборка.Ссылка;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	Если Фл = 1 Тогда
		А = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент(); 
		А.Наименование = "Основной договор"; 
		А.Номер 	   = "№ " + Лев(Прав(Объект.Номер,6),5);
		А.Дата         = Объект.Дата;
		А.Организация  = Объект.Организация; 
		А.Владелец     = Объект.Контрагент;
		А.ВидДоговора  = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
		А.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643");	
		А.Записать(); 
	КонецЕсли;
	Объект.ДоговорКонтрагента = А.Ссылка;
КонецЕсли; 
Показать
6. user973528 13.09.18 16:21 Сейчас в теме
(4) Документы без договоров все хорошо заходят и для них договора появляются, а вот у которых есть договор не перегружает
7. user973528 13.09.18 16:23 Сейчас в теме
(4) Вроде никаких предпосылок в коде для ошибки нету...
8. user973528 13.09.18 16:37 Сейчас в теме
(4) А вот модуль ПКО после загрузки

Если Не Объект.ВалютаВзаиморасчетов Тогда 
	Объект.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643");
КонецЕсли;
9. bmk74 234 13.09.18 16:39 Сейчас в теме
Ниже перенесите
Там конечно надо смотреть все правила по хороше, если у вас договор не перноситься то скорее всего с правилом на договора что то не так.
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, "Товары");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаРасчетов(Объект);

Универсальный обмен не всегда пишет ошибку та которая есть а то вы счета заполнить без договора пытаетесь...что не есть хорошо
10. user973528 13.09.18 16:42 Сейчас в теме
(9) Вопрос решил удалив
Если Не Объект.ВалютаВзаиморасчетов Тогда 
    Объект.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("643");
КонецЕсли;


Т.к смысла не имеет потому что делаю проверку в документах и создаю
11. bmk74 234 13.09.18 16:55 Сейчас в теме
(10)
Объект.ВалютаВзаиморасчетов

Ну вообще правильно выдавал ошибку, он не может привести значение справочника к булево
Если уж проверять то
На значениеЗапонено(Объект.ВалютаВзаиморасчетов)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот