Звонит бухгалтер:
"Ой у меня обработка не работает"
Залезаю посмотреть и вижу сабж.
Открываю конфигуратор, и вижу, точнее не вижу объекта ОсновнойДоговорКонтрагента О_о
Оказывается в декабрьских релизах (проверена на БП3.0) был удален объект, добавили УдалитьОсновнойДоговорКонтрагента.
1С это аргументирует тем, что в будущем можно будет указывать основной договор с отбором (например по организации).
Ну а нам как быть, как выяснить основной договор, если в справочнике контрагенты никак не фиксируется сие?
Сначала я попробовал сделать запрос, уже наполовину завершил, и тут задумался, а как они устанавливают основной договор (возможность то осталась), копал копал и наткнулся на:
В общих модулях появился модуль РаботаСДоговорамиКонтрагентовБП в котором, есть замечательная функция УстановитьДоговорКонтрагента.
Название поражает, т.к. "Установить" в данном контексте двойственно, но оно выполняет свою функцию.
Вот что написали 1С-вцы в комментарии:
// Устанавливает договор контрагента по умолчанию с учетом условий отбора.
// Возвращается основной договор или единственный или пустая ссылка
//
// Параметры
// ВладелецДоговора – <СправочникСсылка.Контрагенты>
// Контрагент, договор которого нужно получить
// ОрганизацияДоговора – <СправочникСсылка.Организации>
// Организация, договор которой нужно получить
// СписокВидовДоговора – <Массив> или <СписокЗначений>, состоящий из значений типа <ПеречислениеСсылка.ВидыДоговоровКонтрагентов>
// Нужные виды договора
// СтруктураПараметров – <Структура>
// Структура дополнительных параметров отбора договоров по реквизитам.
// Элементы структуры СтруктураПараметров:
// Ключ - имя реквизита договора, Значение - еще одна структура
//
// Элементы структуры, которая находится в Значение:
// Ключ - "ЗначениеОтбора", Значение - значение реквизита договора для отбора. Обязательный элемент.
// Ключ - "ВидСравненияОтбора", Значение - <ВидСравнения>. Необязательный элемент, по умолчанию ВидСравнения.Равно
//
// Возвращаемое значение:
// <СправочникСсылка.ДоговорыКонтрагентов> – найденный счет или пустая ссылка
//
"Ой у меня обработка не работает"
Залезаю посмотреть и вижу сабж.
Открываю конфигуратор, и вижу, точнее не вижу объекта ОсновнойДоговорКонтрагента О_о
Оказывается в декабрьских релизах (проверена на БП3.0) был удален объект, добавили УдалитьОсновнойДоговорКонтрагента.
1С это аргументирует тем, что в будущем можно будет указывать основной договор с отбором (например по организации).
Ну а нам как быть, как выяснить основной договор, если в справочнике контрагенты никак не фиксируется сие?
Сначала я попробовал сделать запрос, уже наполовину завершил, и тут задумался, а как они устанавливают основной договор (возможность то осталась), копал копал и наткнулся на:
В общих модулях появился модуль РаботаСДоговорамиКонтрагентовБП в котором, есть замечательная функция УстановитьДоговорКонтрагента.
Название поражает, т.к. "Установить" в данном контексте двойственно, но оно выполняет свою функцию.
Вот что написали 1С-вцы в комментарии:
// Устанавливает договор контрагента по умолчанию с учетом условий отбора.
// Возвращается основной договор или единственный или пустая ссылка
//
// Параметры
// ВладелецДоговора – <СправочникСсылка.Контрагенты>
// Контрагент, договор которого нужно получить
// ОрганизацияДоговора – <СправочникСсылка.Организации>
// Организация, договор которой нужно получить
// СписокВидовДоговора – <Массив> или <СписокЗначений>, состоящий из значений типа <ПеречислениеСсылка.ВидыДоговоровКонтрагентов>
// Нужные виды договора
// СтруктураПараметров – <Структура>
// Структура дополнительных параметров отбора договоров по реквизитам.
// Элементы структуры СтруктураПараметров:
// Ключ - имя реквизита договора, Значение - еще одна структура
//
// Элементы структуры, которая находится в Значение:
// Ключ - "ЗначениеОтбора", Значение - значение реквизита договора для отбора. Обязательный элемент.
// Ключ - "ВидСравненияОтбора", Значение - <ВидСравнения>. Необязательный элемент, по умолчанию ВидСравнения.Равно
//
// Возвращаемое значение:
// <СправочникСсылка.ДоговорыКонтрагентов> – найденный счет или пустая ссылка
//
Ох.
Все прекрасно, но они несколько некорректно написали.
Изначально функция возвращает Булево (пусто, али нет), а вот в переменную ДоговорКонтрагента передается ссылка.
Короче:
//Раньше
ОсновнойДоговор=СсылкаНаКонтрагент.ОсновнойДоговорКонтрагента.Ссылка;
Если ОсновнойДоговор=Справочники.ДоговрыКонтрагентов.ПустаяСсылка() Тогда
//Говорим пусто
КонецЕсли;
//Теперь
ДоговорКонтрагента=Неопределено;
РезультатОсновнойДоговор=РаботаСДоговорамиКонтрагентовБП.УстановитьДоговорКонтрагента(ДоговорКонтрагента,СсылкаНаКонтрагент,Организация);
Если НЕ РезультатОсновнойДоговор Тогда
//Говорим пусто
КонецЕсли;
И соответственно появилась функция, которая делает договор основным УстановитьОсновнойДоговорКонтрагента() в том же модуле.
Комментариев нет:
Отправить комментарий