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