Управление торговлей, редакция 11 (11.4.14.140)
Так как в УТ 11.4 механизм договоров по умолчанию какой то не обычный и не явный ,пытаюсь допилить ее что бы он был принудительным!
1.Для этого в Справочник.ДоговорыКонтрагентов добавил реквизит "ОсновнойДоговор" , добавил его на формы и.т.д, теперь у договора есть признак "ОсновнойДоговор = Истина"
2.В документе "Заказ Клиента" есть "Процедура ЗаполнитьДоговорПоУмолчанию" Которая ссылается на главный модуль ПродажиСервер.ПолучитьДоговорПоУмолчанию()
3.Функция ПолучитьДоговорПоУмолчанию()
Уберу под спойлер данную функцию
spoiler// Выполняет поиск действующего договора с контрагентом по заданным реквизитам.
// Если найден один действующий договор, возвращает ссылку на него, в противном случае - пустую ссылку.
//
// Параметры:
// ТекущийДоговор - СправочникСсылка.ДоговорыКонтрагентов - Ссылка на текущий договор/
// Партнер - СправочникСсылка.Партнеры - Деловой партнер предприятия, которому осуществляются продажи.
// Контрагент - СправочникСсылка.Контрагенты - Контрагент, с которым заключен договор.
// Организация - СправочникСсылка.Организации - Организация предприятия, от имени которой заключен договор.
// ХозяйственныеОперации - ПеречислениеСсылка.ХозяйственныеОперации, Массив - Одна или несколько хозяйственных
// операций (тип договора).
// ВалютаВзаиморасчетов - СправочникСсылка.Валюты - Валюта взаиморасчетов с партнером по договору.
// Соглашение - СправочникСсылка.СоглашенияСКлиентами - Если не задан порядок, он будет получен из
// соглашения с клиентом.
//
// Возвращаемое значение:
// СправочникСсылка.ДоговорыКонтрагентов - договор контрагента по умолчанию.
//
Функция ПолучитьДоговорПоУмолчанию(
Объект,
ХозяйственныеОперации,
ВалютаВзаиморасчетов = Неопределено,
НаправлениеДеятельности = Неопределено
) Экспорт
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьДоговорыСКлиентами") Тогда
Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами")
И ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Объект, "Соглашение") Тогда
ПоСоглашениюИспользуютсяДоговорыКонтрагентов = ЗначениеЗаполнено(Объект.Соглашение)
И ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Соглашение, "ИспользуютсяДоговорыКонтрагентов");
Если Не ПоСоглашениюИспользуютсяДоговорыКонтрагентов Тогда
Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
СписокПартнеров = Новый СписокЗначений;
ПартнерыИКонтрагенты.ЗаполнитьСписокПартнераСРодителями(Объект.Партнер, СписокПартнеров);
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДоговорыКонтрагентов.Ссылка
|
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|
|ГДЕ
| (НЕ ДоговорыКонтрагентов.ПометкаУдаления)
| И ДоговорыКонтрагентов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| И ДоговорыКонтрагентов.Партнер В (&СписокПартнеров)
| И ДоговорыКонтрагентов.Контрагент = &Контрагент
| И ДоговорыКонтрагентов.Организация = &Организация
| И ((НЕ &ОтборХозяйственнаяОперация)
| ИЛИ ДоговорыКонтрагентов.ХозяйственнаяОперация В (&ХозяйственнаяОперация))
| И ((НЕ &ОтборВалютаВзаиморасчетов)
| ИЛИ ДоговорыКонтрагентов.ВалютаВзаиморасчетов = &ВалютаВзаиморасчетов)
| И ДоговорыКонтрагентов.Ссылка = &ТекущийДоговор
| И ((НЕ &ОтборНаправлениеДеятельности)
| ИЛИ ДоговорыКонтрагентов.НаправлениеДеятельности = &НаправлениеДеятельности);
|
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 2
| ДоговорыКонтрагентов.Ссылка
|
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|
|ГДЕ
| (НЕ ДоговорыКонтрагентов.ПометкаУдаления)
| И ДоговорыКонтрагентов.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДоговоровКонтрагентов.Действует)
| И ДоговорыКонтрагентов.Партнер В (&СписокПартнеров)
| И ДоговорыКонтрагентов.Контрагент = &Контрагент
| И ДоговорыКонтрагентов.Организация = &Организация
| И ((НЕ &ОтборХозяйственнаяОперация)
| ИЛИ ДоговорыКонтрагентов.ХозяйственнаяОперация В (&ХозяйственнаяОперация))
| И ((НЕ &ОтборВалютаВзаиморасчетов)
| ИЛИ ДоговорыКонтрагентов.ВалютаВзаиморасчетов = &ВалютаВзаиморасчетов)
| И ((НЕ &ОтборНаправлениеДеятельности)
| ИЛИ ДоговорыКонтрагентов.НаправлениеДеятельности = &НаправлениеДеятельности)
|");
Запрос.УстановитьПараметр("ТекущийДоговор", Объект.Договор);
Запрос.УстановитьПараметр("СписокПартнеров", СписокПартнеров);
Запрос.УстановитьПараметр("Контрагент", Объект.Контрагент);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("ОтборХозяйственнаяОперация", ЗначениеЗаполнено(ХозяйственныеОперации));
Запрос.УстановитьПараметр("ХозяйственнаяОперация", ХозяйственныеОперации);
Запрос.УстановитьПараметр("ОтборВалютаВзаиморасчетов", ЗначениеЗаполнено(ВалютаВзаиморасчетов));
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("ОтборНаправлениеДеятельности", НаправлениеДеятельности <> Неопределено
И ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности"));
Запрос.УстановитьПараметр("НаправлениеДеятельности",НаправлениеДеятельности);
МассивРезультатов = Запрос.ВыполнитьПакет();
Если Не МассивРезультатов[0].Пустой() Тогда
Выборка = МассивРезультатов[0].Выбрать();
Выборка.Следующий();
ДоговорПоУмолчанию = Выборка.Ссылка;
Иначе
Выборка = МассивРезультатов[1].Выбрать();
Если Не Выборка.Следующий() Тогда
ДоговорПоУмолчанию = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
ИначеЕсли Выборка.Количество() = 1 Тогда
ДоговорПоУмолчанию = Выборка.Ссылка;
Иначе
ДоговорПоУмолчанию = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Возврат ДоговорПоУмолчанию;
КонецФункции
Прошу помочь дописать данный запрос, нужно добавить условие что бы выбирал ДоговорыКонтрагентов.Контрагент = ОсновнойДоговор = Истина
Планирую данный модуль добавить в расширение &Вместо