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 13 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 13 13.09.18 16:39 Сейчас в теме
Ниже перенесите
Там конечно надо смотреть все правила по хороше, если у вас договор не перноситься то скорее всего с правилом на договора что то не так.
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаВТабличнойЧасти(Объект, "Товары");
Документы.ПоступлениеТоваровУслуг.ЗаполнитьСчетаУчетаРасчетов(Объект);

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


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

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

Вакансии

Программист 1С
Салехард
зарплата от 80 000 руб. до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день


Программист 1С
Санкт-Петербург
Полный день

Программист 1С
Санкт-Петербург
Полный день