Цитата |
---|
dumbass88 пишет: И еще вопрос появился. Создается новый договор для существующего контрагента. Как с этим бороться? |
Скорей всего в обработке загрузки подправить код где генерится новый договор. 1С проверяет есть ли у покупателя поле основной договор,если его нет создает его по умолчанию
Код |
---|
Функция СоздатьДоговорПоПараметрам(Контрагент, Организация, ВалютаВзаиморасчетов)
НайденныйДоговорОбъект = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НайденныйДоговорОбъект.Наименование = "Договор WEB - сайт";
Если НЕ ЗначениеЗаполнено(ВалютаВзаиморасчетов) Тогда
ВалютаВзаиморасчетов = глЗначениеПеременной("ВалютаУправленческогоУчета");
КонецЕсли;
НайденныйДоговорОбъект.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
НайденныйДоговорОбъект.Организация = Организация;
НайденныйДоговорОбъект.Владелец = Контрагент;
НайденныйДоговорОбъект.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.БезДополнительныхУсловий;
НайденныйДоговорОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
НайденныйДоговорОбъект.ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам;
Попытка
НайденныйДоговорОбъект.Записать();
Исключение
СообщитьОбИсключительнойОшибке(Ложь, ОписаниеОшибки(), "Не удалось записать договор контрагента.");
Возврат Неопределено;
КонецПопытки;
Возврат НайденныйДоговорОбъект.Ссылка;
КонецФункции
Функция ПроверитьОсновнойДоговорКонтрагента(КонтрагентСсылка, ДокОбъект)
Успешно = Истина;
Если ЗначениеЗаполнено(КонтрагентСсылка.ОсновнойДоговорКонтрагента) Тогда
Возврат Успешно;
КонецЕсли;
Если Не ЗначениеЗаполнено(ДокОбъект.Организация) Тогда
СообщитьПользователю("Не удалось определить основной договор контрагента (не найдена организация).", Ложь);
Возврат Ложь;
КонецЕсли;
// ищем договр по контрагенту, организации и валюте
Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка КАК Ссылка,
| ДоговорыКонтрагентов.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.ВидВзаиморасчетов = Значение(Перечисление.ВедениеВзаиморасчетовПоДоговорам.ПоЗаказам)
| И ДоговорыКонтрагентов.ВидДоговора = Значение(Перечисление.ВидыДоговоровКонтрагентов.СПокупателем)";
Запрос.УстановитьПараметр("Организация", ДокОбъект.Организация);
Выборка = Запрос.Выполнить().Выбрать();
ТекущийДоговор = Неопределено;
ВалютаВзаиморасчетов = ДокОбъект.ВалютаДокумента;
Если НЕ ЗначениеЗаполнено(ВалютаВзаиморасчетов) Тогда
ВалютаВзаиморасчетов = глЗначениеПеременной("ВалютаУправленческогоУчета");
КонецЕсли;
Пока Выборка.Следующий() Цикл
ТекущийДоговор = Выборка.Ссылка;
Если Выборка.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(ТекущийДоговор) Тогда
ТекущийДоговор = СоздатьДоговорПоПараметрам(КонтрагентСсылка, ДокОбъект.Организация, ВалютаВзаиморасчетов);
Если Не ЗначениеЗаполнено(ТекущийДоговор) Тогда
Возврат Ложь;
КонецЕсли;
КонецЕсли;
Попытка
КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();
КонтрагентОбъект.ОсновнойДоговорКонтрагента = ТекущийДоговор;
КонтрагентОбъект.Записать();
Исключение
СообщитьОбИсключительнойОшибке(Ложь, ОписаниеОшибки(), "Не удалось записать основной договор контрагенту.");
Успешно = Ложь;
КонецПопытки;
Возврат Успешно;
КонецФункции
|