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


По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Если просто проверить через ЗначениеЗапонено() реквизит "За руководителя по приказу". Заполнен - выводим номер доверенности, нет - не выводим.
Если у вас в "За руководителя по приказу" ссылочный тип, можете просто сравнить с пустой ссылкой этого типа.
Если у вас в "За руководителя по приказу" ссылочный тип, можете просто сравнить с пустой ссылкой этого типа.
(2)
Вот так прописал не работает
Если ЗаРуководителяПоПриказу = Документы.СчетНаОплатуПокупателю.ПустаяСсылка() И
Организация = ОрганизацияПодписи И
Должность = ДолжностьРуководителя И
ИВС_Подразделение = Подразделение Тогда
Доверенность.Параметры.НомерДоверенности = Наименование;
Иначе Доверенность.Параметры.НомерДоверенности = Неопределено
КонецЕсли;
Вот так прописал не работает
(11) То есть если я печатаю документ "Счет на оплату покупателю" и во вкладке "Подписи" указан определенный руководитель например Антонова (так же как на скрине) то в печать выходит номер доверенности именно по ней из справочника "ОснованияНаПравоПодписи". Сейчас же у меня работает так, что если у меня указана Антонова(реквизит "Руководитель", документ "Счет на оплату покупателю") в документе, то печатается номер доверенности по Астаевой(ревезеит "Сотрудник", справочник "ОснованияНаПравоПодписи"). Находит почему то именно её, а не того кто указан в документе
(12) Заполняйте тогда параметр Запроса для получения номера доверенности в зависимости от заполнения ЗаРуководителяПоПриказу .
Если Не ЗаРуководителяПоПриказу = Спрачовники.Сотрудники.ПустаяСсылка()
Запрос.УстановитьПараметр("Сотрудник", ВыборкаДетальныеЗаписи.СотрудникПодписи);
Иначе
Запрос.УстановитьПараметр("Сотрудник", ЭтотОбъект.СсылкаНаОбъект.Руководитель);
КонецЕсли;
Если Не ЗаРуководителяПоПриказу = Спрачовники.Сотрудники.ПустаяСсылка()
Запрос.УстановитьПараметр("Сотрудник", ВыборкаДетальныеЗаписи.СотрудникПодписи);
Иначе
Запрос.УстановитьПараметр("Сотрудник", ЭтотОбъект.СсылкаНаОбъект.Руководитель);
КонецЕсли;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот