#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Параметры.Свойство("ПроверкаПриСозданииДоговора", ПроверкаПриСозданииДоговора);
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтотОбъект);
ОповеститьОСозданииОбъектаРасчетов = Параметры.ОповеститьОСозданииОбъектаРасчетов;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если Не ПроверитьФлагиПартнераКлиентПоставщик(Объект.Партнер, Объект.ХозяйственнаяОперация, Истина) Тогда
Отказ = Истина;
КонецЕсли;
Если Параметры.Свойство("ТекстЗаполнения")
И ЗначениеЗаполнено(Параметры.ТекстЗаполнения) Тогда
Объект.Наименование = Параметры.ТекстЗаполнения;
КонецЕсли;
ПриЧтенииСозданииНаСервере();
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
И ТолькоКомиссионныеПродажи25 Тогда
Объект.КомиссионныеПродажи25 = Истина;
КонецЕсли;
Если ЗначениеЗаполнено(Объект.КомиссионерПартнер) Тогда
КомиссионерПартнерПриИзмененииНаСервере();
КонецЕсли;
Если ЗначениеЗаполнено(Объект.ДоговорСКомиссионером) Тогда
ДоговорСКомиссионеромПриИзмененииНаСервере();
КонецЕсли;
ТипДоговораПриИзмененииСервер();
УстановитьЗначенияРеквизитовДисконтирования();
КонецЕсли;
Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ПараметрыПриСозданииНаСервере = ОбменСКонтрагентами.ПараметрыПриСозданииНаСервере_ФормаСправочника();
ПараметрыПриСозданииНаСервере.Форма = ЭтотОбъект;
ПараметрыПриСозданииНаСервере.СправочникСсылка = Объект.Ссылка;
ПараметрыПриСозданииНаСервере.МестоРазмещенияКоманд = Элементы.КомандыЭДО;
ПараметрыПриСозданииНаСервере.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПриСозданииНаСервере.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриСозданииНаСервере_ФормаСправочника(ПараметрыПриСозданииНаСервере);
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
ДоговорыКонтрагентовЛокализация.ПриСозданииНаСервереФормаЭлемента(ЭтаФорма, Отказ, СтандартнаяОбработка);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
УправлениеЭлементамиДисконтирования();
УправлениеЭлементамиВариантКурсаДоговора();
ЛокализацияРФ = ПолучитьФункциональнуюОпцию("ЛокализацияРФ");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
УстановитьВидимостьОплатаВВалюте();
УстановитьТекстПодсказкиПорядокЗачетаДокументов();
Элементы.ГруппаСуммаДоговора.Видимость = Не (Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
ИЛИ Объект.КомиссионныеПродажи25);
НастроитьРаботуСписокФайлов();
УчетОригиналовПервичныхДокументов.ПриСозданииНаСервере_ФормаДокумента(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
ПараметрыПриОткрытии = ОбменСКонтрагентамиКлиент.ПараметрыПриОткрытии();
ПараметрыПриОткрытии.Форма = ЭтотОбъект;
ПараметрыПриОткрытии.ЕстьОбработчикОбновитьКомандыЭДО = Истина;
ОбменСКонтрагентамиКлиент.ПриОткрытии(ПараметрыПриОткрытии);
ДоговорыКонтрагентовКлиентЛокализация.ПриОткрытии(Отказ, ЭтаФорма);
Если ЕстьПравоДобавленияФайла Тогда
ДоступнаКомандаСканировать = РаботаСФайламиСлужебныйКлиент.ДоступноСканирование();
Элементы.ДобавитьФайлСоСканера.Видимость = ДоступнаКомандаСканировать;
Элементы.СписокКонтекстноеМенюДобавитьФайлСоСканера.Видимость = ДоступнаКомандаСканировать;
КонецЕсли;
#Если Не МобильныйКлиент Тогда
ДобавитьПолеПредпросмотраДокументаPDF();
#КонецЕсли
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
ПараметрыЭДОПриСоздании = ОбменСКонтрагентами.ПараметрыПриЧтенииНаСервере_ФормаСправочника();
ПараметрыЭДОПриСоздании.Форма = ЭтотОбъект;
ПараметрыЭДОПриСоздании.СправочникСсылка = Объект.Ссылка;
ПараметрыЭДОПриСоздании.МестоРазмещенияКоманд = Элементы.КомандыЭДО;
ПараметрыЭДОПриСоздании.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыЭДОПриСоздании.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПриЧтенииНаСервере_ФормаСправочника(ПараметрыЭДОПриСоздании);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
МассивНепроверяемыхРеквизитов = Новый Массив();
Если ФиксированнаяСуммаДоговора И Объект.Сумма = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнена сумма договора.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"Объект.Сумма",,
Отказ);
КонецЕсли;
Если ПрименитьСтавкуДисконтированияПоРассрочке Тогда
Если Объект.СтавкаДисконтирования = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнена ставка дисконтирования.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"Объект.СтавкаДисконтирования",,
Отказ);
КонецЕсли;
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре
И ЧислительКурсаВалютыДоговора = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнен курс валюты договора.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"ЧислительКурсаВалютыДоговора",,
Отказ);
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре
И ЗнаменательКурсаВалютыДоговора = 0 Тогда
ТекстОшибки = НСтр("ru = 'Не заполнена кратность курса валюты договора.'");
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки,
Объект.Ссылка,
"ЗнаменательКурсаВалютыДоговора",,
Отказ);
КонецЕсли;
ИспользоватьОформлениеЗакупок = ИспользоватьОформлениеЗакупок();
ВариантПриемкиОбязателенДляЗаполнения = (ИспользоватьОрдернуюСхемуПриПоступлении
Или ИспользоватьТоварыВПутиОтПоставщиков
Или ИспользоватьНеотфактурованныеПоставки)
И ИспользоватьОформлениеЗакупок;
Если Не ВариантПриемкиОбязателенДляЗаполнения Тогда
МассивНепроверяемыхРеквизитов.Добавить("ОформлениеОрдера");
МассивНепроверяемыхРеквизитов.Добавить("ПриемкаТоваров");
КонецЕсли;
ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
ДоговорыКонтрагентовЛокализация.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты, ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ДоговорыКонтрагентовЛокализация.ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи, ЭтаФорма);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ЗаписатьЗначенияКурсаВалютыДоговора(ТекущийОбъект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбновитьЗаголовокФормы();
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
УстановитьКоличествоФилиалов(Элементы.ДекорацияФилиалы, Объект.Филиалы.Количество());
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтаФорма);
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ДоговорыКонтрагентовЛокализация.ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи, ЭтаФорма);
ПараметрыПослеЗаписи = ОбменСКонтрагентами.ПараметрыПослеЗаписиНаСервере_ФормаСправочника();
ПараметрыПослеЗаписи.Форма = ЭтотОбъект;
ПараметрыПослеЗаписи.СправочникСсылка = Объект.Ссылка;
ПараметрыПослеЗаписи.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыПослеЗаписи.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентами.ПослеЗаписиНаСервере_ФормаСправочника(ТекущийОбъект, ПараметрыЗаписи, ПараметрыПослеЗаписи);
НастроитьВидимостьКомандСозданияСписокФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "Запись_ГрафикИсполненияДоговора" Тогда
Если Объект.Ссылка = Параметр.Договор Тогда
Объект.ГрафикИсполненияДоговора = Источник;
Объект.Сумма = Параметр.СуммаДоговора;
ИзменениеГрафикаИсполненияНаСервере();
КонецЕсли;
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ИзмененаОплатаСервер(ИмяСобытия, Параметр);
КонецЕсли;
ДоговорыКонтрагентовКлиентЛокализация.ОбработкаОповещения(ИмяСобытия, Параметр, Источник, ЭтаФорма);
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСправочника();
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
ПараметрыОповещенияЭДО.СправочникСсылка = Объект.Ссылка;
ПараметрыОповещенияЭДО.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещенияЭДО.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСправочника(ИмяСобытия, Параметр, Источник,
ПараметрыОповещенияЭДО);
РаботаСФайламиОбработкаОповещения(ИмяСобытия, Параметр, Источник);
УчетОригиналовПервичныхДокументовКлиент.ОбработчикОповещенияФормаДокумента(ИмяСобытия, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПроизведенаЗапись = Истина;
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
ОбменСКонтрагентамиКлиент.ПослеЗаписи_ФормаСправочника(ЭтотОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
Если Не ЗавершениеРаботы И ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если ПроверкаПриСозданииДоговора Тогда
ДополнительныеПараметры = ОписаниеОповещенияОЗакрытии.ДополнительныеПараметры;
ДополнительныеПараметры.Вставить("Договор", Объект.Ссылка)
КонецЕсли;
Если ОповеститьОСозданииОбъектаРасчетов Тогда
ВзаиморасчетыКлиент.ФормаПриЗакрытии(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
#Область УниверсальныеОбработчикиСобытий
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент)
ДоговорыКонтрагентовКлиентЛокализация.ПриИзмененииРеквизита(
Элемент,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбработкаНавигационнойСсылкиФормы(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоговорыКонтрагентовКлиентЛокализация.ОбработкаНавигационнойСсылкиФормы(Элемент,
НавигационнаяСсылкаФорматированнойСтроки,
СтандартнаяОбработка,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПриОкончанииИзмененияРеквизитаЛокализации(ИмяЭлемента, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ТребуетсяВызовСервера Тогда
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ДополнительныеПараметры.ПараметрыОбработки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере(ИмяЭлемента, ПараметрыОбработки)
ДоговорыКонтрагентовЛокализация.ПриОкончанииИзмененияРеквизита(ИмяЭлемента, ЭтаФорма, ПараметрыОбработки);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован И
Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Действует")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыДоговоровКонтрагентов.Закрыт") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
КонецПроцедуры
&НаКлиенте
Процедура ТипДоговораНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
МассивТипов = Новый Массив;
МассивТипов.Добавить(ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СПереработчиком"));
ДоступныеТипыДоговоров = Неопределено;
Если МассивТипов.Найти(Объект.ТипДоговора) <> Неопределено Тогда
ДоступныеТипыДоговоров = ДоступныеТипыДоговоров(Объект.ТипДоговора, СтандартнаяОбработка)
КонецЕсли;
Если ДоступныеТипыДоговоров <> Неопределено Тогда
ДанныеВыбора = ДоступныеТипыДоговоров;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТипДоговораПриИзменении(Элемент)
Объект.ПорядокРасчетов = Неопределено;
ТипДоговораПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
ПартнерПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПартнерПриИзмененииНаСервере()
Если Не Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
ПартнерПриИзмененииСервер(Объект.Партнер,
Объект.Контрагент,
Объект.ОплатаВВалюте,
Объект.БанковскийСчетКонтрагента,
Объект.КонтактноеЛицо,
КонтрагентЮрФизЛицо,
Объект.Организация);
Иначе
БанковскийСчетКонтрагента = Неопределено;
КонтактноеЛицо = Неопределено;
КонтрагентЮрФизЛицоКлиент = Неопределено;
ПартнерПриИзмененииСервер(Объект.Партнер,
Объект.Контрагент,
Ложь,
БанковскийСчетКонтрагента,
КонтактноеЛицо,
КонтрагентЮрФизЛицоКлиент,
Объект.Организация);
Если Объект.КомиссионныеПродажи25 Тогда
УстановитьПараметрыВыбораВидаЦенНаСервере();
КонецЕсли;
КонецЕсли;
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Контрагент", Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ПартнерОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОчиститьСообщения();
СтандартнаяОбработка = ПроверитьФлагиПартнераКлиентПоставщик(ВыбранноеЗначение, Объект.ХозяйственнаяОперация, Не ЗначениеЗаполнено(Объект.Ссылка));
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
КонецЕсли;
КонтактноеЛицоПриИзмененииСервер(Объект.Партнер,
Объект.Контрагент,
Объект.ОплатаВВалюте,
Объект.БанковскийСчетКонтрагента,
Объект.КонтактноеЛицо,
КонтрагентЮрФизЛицо,
Объект.Организация);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
КонтрагентПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура КонтрагентПриИзмененииНаСервере()
КонтрагентПриИзмененииСервер(Объект.Контрагент, Объект.ОплатаВВалюте, Объект.БанковскийСчетКонтрагента, КонтрагентЮрФизЛицо, Объект.Организация);
ЗаполнитьНалогообложениеИВидДеятельности();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Контрагент", Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияДействияПриИзменении(Элемент)
ДатаОкончанияДействияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ОчиститьСообщения();
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаВзаиморасчетовПриИзменении(Элемент)
ОчиститьСообщения();
ВалютаВзаиморасчетовПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НаименованиеПриИзменении(Элемент)
Элементы.НаименованиеДляПечати.СписокВыбора.Очистить();
Элементы.НаименованиеДляПечати.СписокВыбора.Добавить(Объект.Наименование);
КонецПроцедуры
&НаКлиенте
Процедура КлассификацияЗадолженностиПриИзменении(Элемент)
УстановитьКлассификациюЗадолженности(КлассификацияЗадолженности);
КонецПроцедуры
&НаКлиенте
Процедура ПорядокРасчетовПриИзменении(Элемент)
ПорядокРасчетовПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ФиксированнаяСуммаДоговораПриИзменении(Элемент)
Если Не ФиксированнаяСуммаДоговора Тогда
ГрафикИсполненияВДоговоре = 0;
Объект.ЗаданГрафикИсполнения = Ложь;
Объект.Сумма = 0;
СуммаПриИзмененииСервер();
КонецЕсли;
УправлениеЭлементамиГрафикИсполнения();
КонецПроцедуры
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
СуммаПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПрименитьСтавкуДисконтированияПоРассрочкеПриИзменении(Элемент)
Если Не ПрименитьСтавкуДисконтированияПоРассрочке Тогда
Объект.СтавкаДисконтирования = 0;
Объект.СрокДляПримененияДисконтирования = 0;
Иначе
УстановитьЗначенияРеквизитовДисконтирования();
Если Объект.СтавкаДисконтирования = 0 И Не ПрименитьСтавкуДисконтированияПоРассрочке Тогда
ПрименитьСтавкуДисконтированияПоРассрочке = Истина;
КонецЕсли;
КонецЕсли;
УправлениеЭлементамиДисконтирования(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВариантКурсаДоговораПриИзменении(Элемент)
ОчиститьСообщения();
ВариантКурсаДоговораПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьИсторияКурсаДоговораНажатие(Элемент)
Если Не ЗначениеЗаполнено(Объект.Ссылка) Или Модифицированность Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Данные еще не записаны.
|Переход к истории курса валюты договора возможен только после записи данных.'"));
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура("Отбор", Новый Структура("Договор", Объект.Ссылка));
ОткрытьФорму("РегистрСведений.КурсыВалютРасчетовПоДоговорам.Форма.ФормаСпискаПоДоговору", ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура ЧислительКурсаВалютыДоговораПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ЗнаменательКурсаВалютыДоговораПриИзменении(Элемент)
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Ложь;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость = Истина;
Модифицированность = Истина;
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаКлиенте
Процедура ГрафикИсполненияВДоговореПриИзменении(Элемент)
Объект.ЗаданГрафикИсполнения = (ГрафикИсполненияВДоговоре = 1);
УправлениеЭлементамиГрафикИсполнения();
КонецПроцедуры
&НаКлиенте
Процедура НадписьГрафикИсполненияНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(Объект.Ссылка) Или Модифицированность Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Договор еще не записан. Переход к редактированию графика возможен только после записи договора и установки статуса ""Действует"".'"));
Возврат;
ИначеЕсли Не ЗначениеЗаполнено(Объект.Дата)
И Не ЗначениеЗаполнено(Объект.ГрафикИсполненияДоговора) Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Для ввода графика укажите дату договора.'"));
Возврат;
КонецЕсли;
СтруктураОтбор = Новый Структура;
СтруктураОтбор.Вставить("Договор", Объект.Ссылка);
СтруктураПараметры = Новый Структура("Основание", СтруктураОтбор);
СтруктураПараметры.Вставить("Сумма", Объект.Сумма);
СтруктураПараметры.Вставить("Ключ", Объект.ГрафикИсполненияДоговора);
ОткрытьФорму("Документ.ГрафикИсполненияДоговора.ФормаОбъекта", СтруктураПараметры, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
ВзаиморасчетыКлиент.РасчетыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПорядокЗачетаДокументовПриИзменении(Элемент)
УстановитьТекстПодсказкиПорядокЗачетаДокументов();
КонецПроцедуры
&НаКлиенте
Процедура ТекстОстатокДопустимогоКредитаНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеПоСуммеПродажи = Новый Структура("СуммаВзаиморасчетов, Организация", Объект.Сумма, Объект.Организация);
ПродажиКлиент.ОткрытьОтчетРасшифровкиЗапретаОтгрузки(Объект.Ссылка, ДанныеПоСуммеПродажи, Объект.Ссылка, НоваяАрхитектураВзаиморасчетов);
КонецПроцедуры
&НаКлиенте
Процедура РежимНалогообложенияПриИзменении(Элемент)
РежимНалогообложенияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура РежимРаздельногоУчетаНДСПриИзменении(Элемент)
Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе = ?(РежимРаздельногоУчетаНДС = 1, Истина, Ложь);
ЗаполнитьНалогообложениеИВидДеятельности();
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
&НаКлиенте
Процедура НалогообложениеНДСПриИзменении(Элемент)
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ИспользоватьОформлениеДокументовРаздельнойЗакупкиПриИзменении(Элемент)
ИспользоватьОформлениеДокументовРаздельнойЗакупкиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОформленияРаздельнойЗакупкиПриИзменении(Элемент)
ВариантОформленияРаздельнойЗакупкиПриИзмененииНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура ОформлениеОрдераПриИзменении(Элемент)
Модифицированность = Истина;
ПриИзмененииНастроекПриемкиСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПриемкаТоваровПриИзменении(Элемент)
Модифицированность = Истина;
ПриИзмененииНастроекПриемкиСервер();
КонецПроцедуры
&НаКлиенте
Процедура КомиссионерПартнерПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
КомиссионерПартнерПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура КомиссионерПартнерПриИзмененииНаСервере()
БанковскийСчетКонтрагента = Неопределено;
КонтактноеЛицо = Неопределено;
КонтрагентЮрФизЛицоКлиент = Неопределено;
ПартнерПриИзмененииСервер(Объект.КомиссионерПартнер,
Объект.КомиссионерКонтрагент,
Ложь,
БанковскийСчетКонтрагента,
КонтактноеЛицо,
КонтрагентЮрФизЛицоКлиент,
Объект.Организация);
УстановитьДоговорСКомиссионеромПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура АрендодательПартнерПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
АрендодательПартнерПриИзмененииСервер(АрендодательПартнер, АрендодательКонтрагент);
КонецПроцедуры
&НаКлиенте
Процедура КомиссионерКонтрагентПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
УстановитьДоговорСКомиссионеромПоУмолчанию();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСКомиссионеромПриИзменении(Элемент)
Подключаемый_ПриИзмененииРеквизита(Элемент);
ДоговорСКомиссионеромПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорСКомиссионеромСоздание(Элемент, СтандартнаяОбработка)
ОчиститьСообщения();
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Договор еще не записан. Перед созданием договора с комиссионером необходимо записать данный договор с клиентом.'"));
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДоговорСКомиссионеромПриИзмененииНаСервере()
Если ЗначениеЗаполнено(Объект.ДоговорСКомиссионером) Тогда
ДоговорСКомиссионером = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ДоговорСКомиссионером,
"ПорядокРасчетов, ВестиРасчетыЧерезКонечныхПокупателей, ВалютаВзаиморасчетов, ГруппаФинансовогоУчетаКлиента, ГруппаФинансовогоУчета, СтавкаНДС");
Объект.ПорядокРасчетов = ДоговорСКомиссионером.ПорядокРасчетов;
Если ДоговорСКомиссионером.ВестиРасчетыЧерезКонечныхПокупателей Тогда
ГруппаФинансовогоУчета = ДоговорСКомиссионером.ГруппаФинансовогоУчетаКлиента;
Иначе
ГруппаФинансовогоУчета = ДоговорСКомиссионером.ГруппаФинансовогоУчета;
КонецЕсли;
ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию(Объект.ВалютаВзаиморасчетов, Объект.Организация);
ГФУВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ГруппаФинансовогоУчета, "РасчетыВВалюте");
Если Объект.ВалютаВзаиморасчетов = ДоговорСКомиссионером.ВалютаВзаиморасчетов
Или ОплатаВВалюте И ЗначениеЗаполнено(ГФУВВалюте) И ГФУВВалюте Тогда
Объект.ГруппаФинансовогоУчета = ГруппаФинансовогоУчета;
Иначе
Объект.ГруппаФинансовогоУчета = Справочники.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка();
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВалютаВзаиморасчетов) Тогда
Объект.ВалютаВзаиморасчетов = ДоговорСКомиссионером.ВалютаВзаиморасчетов;
КонецЕсли;
Объект.СтавкаНДС = ДоговорСКомиссионером.СтавкаНДС;
Объект.ВестиРасчетыЧерезКонечныхПокупателей = ДоговорСКомиссионером.ВестиРасчетыЧерезКонечныхПокупателей;
Иначе
Объект.ВестиРасчетыЧерезКонечныхПокупателей = Ложь;
КонецЕсли;
УправлениеЭлементамиВариантКурсаДоговора();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
#Область Доставка
&НаКлиенте
Процедура СпособДоставкиПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(
ПолучитьИмяРеквизитаАдресаДоставки(Элемент));
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(
ПолучитьИмяРеквизитаАдресаДоставки(Элемент));
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПолучитьИмяРеквизитаАдресаДоставки(Элемент)
Если СтрНайти(Элемент.Имя, "АдресДоставкиПеревозчика") > 0 Тогда
ИмяРеквизитаАдреса = "АдресДоставкиПеревозчика";
Иначе
ИмяРеквизитаАдреса = "АдресДоставки";
КонецЕсли;
Возврат ИмяРеквизитаАдреса;
КонецФункции
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
АдресДоставкиПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
АдресДоставкиПриИзменении(Элемент);
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ОплатаВВалютеПриИзменении(Элемент)
ОплатаВВалютеПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПодразделениеПриИзменении(Элемент)
ОчиститьСообщения();
ОрганизацияПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЦентрализованныйДоговорПриИзменении(Элемент)
Элементы.ДекорацияФилиалы.Доступность = Объект.ЦентрализованныйДоговор;
Элементы.РазрешаетсяПередачаОплатМеждуФилиалами.Видимость = Объект.ЦентрализованныйДоговор;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияФилиалыНажатие(Элемент)
ПараметрыФормы = Новый Структура("Филиалы", Объект.Филиалы);
ПараметрыФормы.Вставить("Организация", Объект.Организация);
ОбработкаСохраненияСпискаФилиалов = Новый ОписаниеОповещения("ЗавершениеРедактированияСпискаФилиалов", ЭтотОбъект);
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаСпискаФилиалов", ПараметрыФормы, ЭтотОбъект,
УникальныйИдентификатор,,, ОбработкаСохраненияСпискаФилиалов, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ВестиРасчетыЧерезКонечныхПокупателейПриИзменении(Элемент)
ВестиРасчетыЧерезКонечныхПокупателейПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура РазбиватьОтчетКомитентуПоЗакупкамПриИзменении(Элемент)
Объект.РазбиватьОтчетПоДокументам = РазбиватьОтчет;
КонецПроцедуры
&НаКлиенте
Процедура ДекорацияСостояниеЭДОНажатие(Элемент)
ОбменСКонтрагентамиУТКлиент.ПередВыполнениемКомандыЭДОСправочник();
ОбменСКонтрагентамиКлиент.СостояниеЭДОНажатие_ФормаСправочника(ЭтотОбъект, Ложь);
КонецПроцедуры
#Область РаботаСФайлами
&НаКлиенте
Процедура ДекорацияДатаСинхронизацииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "OpenJournal" Тогда
СтандартнаяОбработка = Ложь;
ПараметрыОтбора = ДанныеОтбораЖурналаРегистрации(УчетнаяЗапись);
ЖурналРегистрацииКлиент.ОткрытьЖурналРегистрации(ПараметрыОтбора, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()
УчетОригиналовПервичныхДокументовКлиент.ОткрытьМенюВыбораСостояния(ЭтотОбъект, Элементы.ДекорацияСостояниеОригинала);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ДоговорССамозанятымПриИзменении(Элемент)
ДоговорССамозанятымПриИзмененииСервер();
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ВидДоходаИностранногоКонтрагентаПриИзменении(Элемент)
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ВидДоходаИностранногоКонтрагента", Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура УникальныйНомерВалютногоКонтроляПриИзменении(Элемент)
ОчиститьСообщения();
ДенежныеСредстваКлиентСерверЛокализация.ПроверитьУникальныйНомерВалютногоКонтракта(
Объект.Ссылка, Объект.УникальныйНомерВалютногоКонтроля);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
#Область РаботаСФайлами
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Элементы.Список.РежимВыбора Тогда
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ЭтоГруппа Тогда
ПоказатьЗначение(, ВыбраннаяСтрока);
Возврат;
КонецЕсли;
Если Поле.Имя = "ОтправленПолученЭД" И Не ТекущиеДанные.ФайлРедактируется
И (ТекущиеДанные.Расширение = "pdf" Или ТекущиеДанные.Расширение = "xml") Тогда
ИнтерфейсДокументовЭДОУТКлиент.КонтроллерСостояниеЭДОНажатиеДоговорногоДокумента(ЭтотОбъект, СтандартнаяОбработка, ТекущиеДанные.Ссылка);
Если Не ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.СуществуетАктуальныйДокумент Тогда
ФайлОтправленПолученЭД = ТекущиеДанные.Ссылка;
КонецЕсли;
Возврат;
КонецЕсли;
КакОткрывать = РаботаСФайламиСлужебныйКлиент.ПерсональныеНастройкиРаботыСФайлами().ДействиеПоДвойномуЩелчкуМыши;
Если КакОткрывать = "ОткрыватьКарточку" Тогда
ПоказатьЗначение(, ВыбраннаяСтрока);
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ВыбраннаяСтрока,
Неопределено, УникальныйИдентификатор, Неопределено, ПредыдущийАдресФайла);
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
Обработчик = Новый ОписаниеОповещения("СписокВыборПослеВыбораРежимаРедактирования", ЭтотОбъект, ПараметрыОбработчика);
РаботаСФайламиСлужебныйКлиент.ВыбратьРежимИРедактироватьФайл(Обработчик, ДанныеФайла, Элементы.ФормаРедактировать.Доступность);
КонецПроцедуры
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
ОбновитьДоступностьФайловыхКоманд();
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
Если Копирование Тогда
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ПараметрыФормы = Новый Структура;
ПараметрыФормы = Новый Структура("ЗначениеКопирования", ТекущиеДанные);
Если ТекущиеДанные.ЭтоГруппа Тогда
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ГруппаФайлов", ПараметрыФормы);
Иначе
РаботаСФайламиКлиент.СкопироватьФайл(Объект.Ссылка, ТекущиеДанные.Ссылка, ПараметрыФормы);
КонецЕсли;
Иначе
ДобавитьФайл();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
Отказ = Истина;
ОткрытьКарточкуФайла();
КонецПроцедуры
&НаКлиенте
Процедура СписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
СтандартнаяОбработка = Ложь;
Если ФайлыРедактируютсяВОблачномСервисе Тогда
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
ПараметрыПеретаскивания.Значение = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
ВладелецСправочникФайлы = Ложь;
МассивИменФайлов = Новый Массив;
Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив")
И ПараметрыПеретаскивания.Значение.Количество() > 0 Тогда
ПеретаскиваемыйФайл = ПараметрыПеретаскивания.Значение[0];
Если ТипЗнч(ПеретаскиваемыйФайл) <> Тип("Файл") Тогда
ВладелецФайловСовпадает = ВладелецФайловСовпадает(Объект.Ссылка, ПеретаскиваемыйФайл);
Если ТипЗнч(ПеретаскиваемыйФайл) = Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы")
И ВладелецФайловСовпадает Тогда
Возврат;
КонецЕсли;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Для Каждого ПеретаскиваемыйФайл Из ПараметрыПеретаскивания.Значение Цикл
Если ТипЗнч(ПеретаскиваемыйФайл) = Тип("Файл")
И ПеретаскиваемыйФайл.ЭтоФайл() Тогда
МассивИменФайлов.Добавить(ПеретаскиваемыйФайл.ПолноеИмя);
ВладелецСправочникФайлы = Истина;
Иначе
МассивИменФайлов.Добавить(ПеретаскиваемыйФайл);
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Файл")
И ПараметрыПеретаскивания.Значение.ЭтоФайл() Тогда
СтандартнаяОбработка = Ложь;
МассивИменФайлов.Добавить(ПараметрыПеретаскивания.Значение.ПолноеИмя);
ВладелецСправочникФайлы = Истина;
КонецЕсли;
Если МассивИменФайлов.Количество() > 0 Тогда
Если ВладелецСправочникФайлы = Истина Тогда
РаботаСФайламиСлужебныйКлиент.ДобавитьФайлыПеретаскиванием(
Объект.Ссылка, УникальныйИдентификатор, МассивИменФайлов);
Иначе
Действие = ?(ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование,
"Копирование", "Перемещение");
ПереместитьИлиСкопироватьПрисоединенныеФайлы(МассивИменФайлов, Объект.Ссылка, Действие);
ОповеститьОбИзменении(Объект.Ссылка);
Оповестить("Запись_Файл", Новый Структура("ЭтоНовый, ВладелецФайла", Истина, Объект.Ссылка),
МассивИменФайлов);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПриИзменении(Элемент)
ОповеститьОбИзменении(Объект.Ссылка);
ПараметрыСобытия = Новый Структура;
ПараметрыСобытия.Вставить("Событие", "ДанныеФайлаИзменены");
ПараметрыСобытия.Вставить("ЭтоНовый", Ложь);
Оповестить("Запись_Файл", ПараметрыСобытия, Элемент.ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиКомандФормы
#Область УниверсальныеОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЛокализации(Команда)
ДоговорыКонтрагентовКлиентЛокализация.ВыполнитьКомандуЛокализации(Команда, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПродолжитьВыполнениеКомандыЛокализации(ИмяКоманды, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ТребуетсяВызовСервера Тогда
ПродолжитьВыполнениеКомандыЛокализацииНаСервере(ИмяКоманды, ДополнительныеПараметры.ПараметрыОбработки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПродолжитьВыполнениеКомандыЛокализацииНаСервере(ИмяКоманды, ПараметрыОбработки)
ДоговорыКонтрагентовЛокализация.ВыполнитьКомандуЛокализации(ЭтаФорма, ИмяКоманды, ПараметрыОбработки);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура УстановитьИнтервал(Команда)
ОбщегоНазначенияУТКлиент.РедактироватьПериод(Объект,
Новый Структура("ДатаНачала, ДатаОкончания", "ДатаНачалаДействия", "ДатаОкончанияДействия"));
КонецПроцедуры
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ПараметрыРедактирования = ОбщегоНазначенияУТКлиент.ПараметрыРазрешенияРедактированияРеквизитовОбъекта();
ПараметрыРедактирования.ТолькоВидимые = Ложь;
ОбщегоНазначенияУТКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтаФорма, ПараметрыРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуЭДО(Команда)
ОбменСКонтрагентамиУТКлиент.ПередВыполнениемКомандыЭДОСправочник();
ЭлектронноеВзаимодействиеКлиент.ВыполнитьПодключаемуюКомандуЭДО(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКомандыЭДО()
ОбменСКонтрагентамиКлиент.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#Область РаботаСФайлами
&НаКлиенте
Процедура Добавить(Команда)
ДобавитьФайл();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайлПоШаблону(Команда)
ПараметрыДобавления = Новый Структура;
ПараметрыДобавления.Вставить("ОбработчикРезультата", Неопределено);
ПараметрыДобавления.Вставить("ВладелецФайла", Объект.Ссылка);
ПараметрыДобавления.Вставить("ФормаВладелец", ЭтотОбъект);
ПараметрыДобавления.Вставить("ИмяСправочникаХранилищаФайлов", "ДоговорыКонтрагентовПрисоединенныеФайлы");
РаботаСФайламиСлужебныйКлиент.ДобавитьНаОсновеШаблона(ПараметрыДобавления);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайлПоШаблонуДоговора(Команда)
ОткрытьФорму("Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы.Форма.ФормаВыбораШаблонаДоговора",
Новый Структура("ОбъектУчета", Объект.Ссылка), ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайлСоСканера(Команда)
ЗначениеПараметраКД = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВладелецФайлов"));
Если ЗначениеПараметраКД = Неопределено Тогда
ВладелецФайла = Неопределено;
Иначе
ВладелецФайла = ЗначениеПараметраКД.Значение;
КонецЕсли;
ПараметрыДобавления = Новый Структура;
ПараметрыДобавления.Вставить("ОбработчикРезультата", Неопределено);
ПараметрыДобавления.Вставить("ВладелецФайла", ВладелецФайла);
ПараметрыДобавления.Вставить("ФормаВладелец", ЭтотОбъект);
ПараметрыДобавления.Вставить("НеОткрыватьКарточкуПослеСозданияИзФайла", Истина);
ПараметрыДобавления.Вставить("ЭтоФайл", Ложь);
РаботаСФайламиСлужебныйКлиент.ДобавитьСоСканера(ПараметрыДобавления);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайлДляПросмотра(Команда)
ОткрытьФайл();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКаталогФайла(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Зашифрован Тогда
ОповеститьОбИзменении(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ФайлСсылка = ТекущиеДанные.Ссылка;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ФайлСсылка,
Неопределено, УникальныйИдентификатор, Неопределено, Неопределено);
РаботаСФайламиКлиент.ОткрытьКаталогФайла(ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура Обновить(Команда)
Элементы.Список.Обновить();
ПодключитьОбработчикОжидания("ОбновитьДоступностьФайловыхКоманд", 0.1, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьИзФайлаНаДиске(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Зашифрован Или ТекущиеДанные.ПодписанЭП Или ТекущиеДанные.ФайлРедактируется Тогда
Возврат;
КонецЕсли;
Если ПризнакОтправкиФайлаЭДО(ТекущиеДанные.Ссылка) Тогда
ОписаниеЗавершения = Новый ОписаниеОповещения("ОбновитьИзФайлаНаДискеЗавершение", ЭтотОбъект);
ЗадатьВопросПользователюПриИзмененииФайла(ОписаниеЗавершения);
Иначе
ОбновитьИзФайлаНаДискеЗавершение(Новый Структура("Значение", КодВозвратаДиалога.Да));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКак(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Зашифрован
ИЛИ (ТекущиеДанные.ФайлРедактируется И ТекущиеДанные.ФайлРедактируетТекущийПользователь) Тогда
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляСохранения(ТекущиеДанные.Ссылка, , УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.СохранитьКак(Неопределено, ДанныеФайла, Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура Скопировать(Команда)
Элементы.Список.СкопироватьСтроку();
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаления(Команда)
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные <> Неопределено Тогда
ШаблонВопроса = ?(ТекущиеДанные.ПометкаУдаления,
НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"),
НСтр("ru = 'Пометить ""%1"" на удаление?'"));
ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонВопроса, ТекущиеДанные.Наименование);
ДополнительныеПараметры = Новый Структура("ФайлСсылка", ТекущиеДанные.Ссылка);
Оповещение = Новый ОписаниеОповещения("ПослеВопросОПометкиНаУдаление", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьСвойстваФайла(Команда)
ОткрытьКарточкуФайла();
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
ПриОтправкеФайловПочтой(ПараметрыОтправки, Элементы.Список.ВыделенныеСтроки, Объект.Ссылка, УникальныйИдентификатор);
РаботаСФайламиСлужебныйКлиент.ОтправитьФайлыПоПочте(
Элементы.Список.ВыделенныеСтроки, УникальныйИдентификатор, ПараметрыОтправки);
КонецПроцедуры
&НаКлиенте
Процедура Печать(Команда)
ВыделенныеСтроки = Элементы.Список.ВыделенныеСтроки;
Если ВыделенныеСтроки.Количество() > 0 Тогда
РаботаСФайламиКлиент.НапечататьФайлы(ВыделенныеСтроки, ЭтотОбъект.УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПечатьСоШтампом(Команда)
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.Расширение = "mxl"
Или ТекущиеДанные.Расширение = "docx" Тогда
РаботаСФайламиСлужебныйКлиент.НапечататьФайлСоШтампом(ТекущиеДанные.Ссылка, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Предпросмотр(Команда)
Предпросмотр = Не Предпросмотр;
Элементы.Предпросмотр.Пометка = Предпросмотр;
УстановитьВидимостьПредпросмотра(Предпросмотр);
СохранитьВариантПредпросмотра(Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы"), Предпросмотр);
#Если ВебКлиент Тогда
ОбновитьПредпросмотр();
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура НастроитьСинхронизацию(Команда)
НастройкаСинхронизации = ПараметрыНастройкиСинхронизации(Объект.Ссылка);
Если ЗначениеЗаполнено(НастройкаСинхронизации.УчетнаяЗапись) Тогда
ТипЗначения = Тип("РегистрСведенийКлючЗаписи.НастройкиСинхронизацииФайлов");
ПараметрыЗаписи = Новый Массив(1);
ПараметрыЗаписи[0] = НастройкаСинхронизации;
КлючЗаписи = Новый(ТипЗначения, ПараметрыЗаписи);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("Ключ", КлючЗаписи);
Иначе
ПараметрыЗаписи = НастройкаСинхронизации;
КонецЕсли;
ОткрытьФорму("РегистрСведений.НастройкиСинхронизацииФайлов.Форма.ПростаяФормаЗаписиНастройки", ПараметрыЗаписи, ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура СоздатьГруппу(Команда)
ПараметрыФормы = Новый Структура;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные <> Неопределено И ТекущиеДанные.ВладелецФайла <> Объект.Ссылка Тогда
ТекущиеДанные = Неопределено;
КонецЕсли;
Если ТекущиеДанные <> Неопределено Тогда
ПараметрыФормы.Вставить("Родитель", ТекущиеДанные.Ссылка);
Иначе
ПараметрыФормы.Вставить("Родитель", Объект.Ссылка);
КонецЕсли;
ПараметрыФормы.Вставить("ВладелецФайла", Объект.Ссылка);
ПараметрыФормы.Вставить("ЭтоНоваяГруппа", Истина);
ПараметрыФормы.Вставить("ИмяСправочникаХранилищаФайлов", "ДоговорыКонтрагентовПрисоединенныеФайлы");
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ГруппаФайлов", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьФайлы(Команда)
#Если ВебКлиент Тогда
ТекстПредупреждения = НСтр("ru = 'В Веб-клиенте импорт файлов не поддерживается.
|Используйте команду ""Создать"" в списке файлов.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
#КонецЕсли
МассивИменФайлов = РаботаСФайламиСлужебныйКлиент.ИмпортируемыеФайлы();
Если МассивИменФайлов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ЗначениеПараметраКД = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВладелецФайлов"));
Если ЗначениеПараметраКД = Неопределено Тогда
ВладелецФайла = Неопределено;
Иначе
ВладелецФайла = ЗначениеПараметраКД.Значение;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПапкаДляДобавления", ВладелецФайла);
ПараметрыФормы.Вставить("МассивИменФайлов", МассивИменФайлов);
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ГруппаФайлов = Неопределено;
Если ТекущиеДанные <> Неопределено И ТекущиеДанные.ЭтоГруппа Тогда
ГруппаФайлов = ТекущиеДанные.Ссылка;
ИначеЕсли ТекущиеДанные <> Неопределено Тогда
ГруппаФайлов = ГруппаФайла(ТекущиеДанные.Ссылка);
КонецЕсли;
ПараметрыФормы.Вставить("ГруппаФайлов", ГруппаФайлов);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ЗагрузкаФайлов", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьПапку(Команда)
#Если ВебКлиент Тогда
ТекстПредупреждения = НСтр("ru = 'В веб-клиенте импорт папок недоступен.
|Используйте команду ""Создать"" в списке файлов.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
#КонецЕсли
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
ДиалогОткрытияФайла.Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Все файлы (%1)|%1'"), ПолучитьМаскуВсеФайлы());
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите каталог'");
Если Не ДиалогОткрытияФайла.Выбрать() Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПапкаДляДобавления", Объект.Ссылка);
ПараметрыФормы.Вставить("КаталогНаДиске", ДиалогОткрытияФайла.Каталог);
ПараметрыФормы.Вставить("ИмяСправочникаХранилищаФайлов", "ДоговорыКонтрагентовПрисоединенныеФайлы");
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ГруппаФайлов = Неопределено;
Если ТекущиеДанные <> Неопределено И ТекущиеДанные.ЭтоГруппа Тогда
ГруппаФайлов = ТекущиеДанные.Ссылка;
ИначеЕсли ТекущиеДанные <> Неопределено Тогда
ГруппаФайлов = ГруппаФайла(ТекущиеДанные.Ссылка);
КонецЕсли;
ПараметрыФормы.Вставить("ГруппаФайлов", ГруппаФайлов);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ЗагрузкаПапки", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьПапку(Команда)
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные = Неопределено Или Не ТекущиеДанные.ЭтоГруппа Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ПапкаЭкспорта", ТекущиеДанные.Ссылка);
ПараметрыФормы.Вставить("ИмяСправочникаХранилищаФайлов", "ДоговорыКонтрагентовПрисоединенныеФайлы");
ПараметрыФормы.Вставить("ИмяСправочникаХранилищаВерсийФайлов", "");
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.СохранениеПапки", ПараметрыФормы);
КонецПроцедуры
&НаКлиенте
Процедура СравнитьФайлы(Команда)
ЧислоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество();
Если ЧислоВыделенныхСтрок = 2 Тогда
Ссылка1 = Элементы.Список.ВыделенныеСтроки[0];
Ссылка2 = Элементы.Список.ВыделенныеСтроки[1];
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Расширение = НРег(ТекущиеДанные.Расширение);
РаботаСФайламиСлужебныйКлиент.СравнитьФайлы(УникальныйИдентификатор, Ссылка1, Ссылка2, Расширение);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПеренестиВГруппу(Команда)
Если Элементы.Список.ВыделенныеСтроки.Количество() > 0 Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("ВладелецФайлов", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ПеремещаемыеФайлы", Элементы.Список.ВыделенныеСтроки);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ВыборГруппы", ПараметрыОткрытия, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подписать(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.ФайлРедактируется
ИЛИ ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавлениеПодписейЗавершить", ЭтотОбъект);
ДополнительныеПараметры = Новый Структура("ОбработкаРезультата", ОписаниеОповещения);
РаботаСФайламиКлиент.ПодписатьФайл(ТекущиеДанные.Ссылка, УникальныйИдентификатор, ДополнительныеПараметры);
КонецПроцедуры
&НаКлиенте
Процедура СохранитьВместеСЭП(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.СохранитьФайлВместеСПодписью(
ТекущиеДанные.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьЭПИзФайла(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.ФайлРедактируется
ИЛИ ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
ПрисоединенныйФайл = ТекущиеДанные.Ссылка;
РаботаСФайламиСлужебныйКлиент.ДобавитьПодписьИзФайла(
ПрисоединенныйФайл,
УникальныйИдентификатор,
Новый ОписаниеОповещения("ДобавлениеПодписейЗавершить", ЭтотОбъект));
КонецПроцедуры
&НаКлиенте
Процедура Зашифровать(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.ФайлРедактируется
ИЛИ ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ТекущиеДанные.Ссылка);
Если ЗначениеЗаполнено(ДанныеФайла.Редактирует)
ИЛИ ДанныеФайла.Зашифрован Тогда
ОповеститьОбИзменении(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
ПараметрыОбработчика.Вставить("ОбъектСсылка", ТекущиеДанные.Ссылка);
Обработчик = Новый ОписаниеОповещения("ЗашифроватьПослеШифрованияНаКлиенте", ЭтотОбъект, ПараметрыОбработчика);
РаботаСФайламиСлужебныйКлиент.Зашифровать(Обработчик, ДанныеФайла, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗашифроватьПослеШифрованияНаКлиенте(Результат, ПараметрыВыполнения) Экспорт
Если Не Результат.Успех Тогда
Возврат;
КонецЕсли;
ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя();
МассивФайловВРабочемКаталогеДляУдаления = Новый Массив;
ЗашифроватьСервер(
Результат.МассивДанныхДляЗанесенияВБазу,
Результат.МассивОтпечатков,
МассивФайловВРабочемКаталогеДляУдаления,
ИмяРабочегоКаталога,
ПараметрыВыполнения.ОбъектСсылка);
РаботаСФайламиСлужебныйКлиент.ИнформироватьОШифровании(
МассивФайловВРабочемКаталогеДляУдаления,
ПараметрыВыполнения.ДанныеФайла.Владелец,
ПараметрыВыполнения.ОбъектСсылка);
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаСервере
Процедура ЗашифроватьСервер(МассивДанныхДляЗанесенияВБазу, МассивОтпечатков,
МассивФайловВРабочемКаталогеДляУдаления,
ИмяРабочегоКаталога, ОбъектСсылка)
ПараметрыЗаписиИнформацииОШифровании = РаботаСФайламиСлужебный.ПараметрыЗаписиИнформацииОШифровании();
ПараметрыЗаписиИнформацииОШифровании.ИмяРабочегоКаталога = ИмяРабочегоКаталога;
ПараметрыЗаписиИнформацииОШифровании.МассивДанныхДляЗанесенияВБазу = МассивДанныхДляЗанесенияВБазу;
ПараметрыЗаписиИнформацииОШифровании.МассивОтпечатков = МассивОтпечатков;
ПараметрыЗаписиИнформацииОШифровании.МассивФайловВРабочемКаталогеДляУдаления = МассивФайловВРабочемКаталогеДляУдаления;
РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании(
ОбъектСсылка, ПараметрыЗаписиИнформацииОШифровании);
КонецПроцедуры
&НаКлиенте
Процедура Расшифровать(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если НЕ ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
ОбъектСсылка = ТекущиеДанные.Ссылка;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИКоличествоВерсий(ОбъектСсылка);
ПараметрыОбработчика = Новый Структура;
ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
ПараметрыОбработчика.Вставить("ОбъектСсылка", ОбъектСсылка);
Обработчик = Новый ОписаниеОповещения("РасшифроватьПослеРасшифровкиНаКлиенте", ЭтотОбъект, ПараметрыОбработчика);
РаботаСФайламиСлужебныйКлиент.Расшифровать(
Обработчик,
ДанныеФайла.Ссылка,
УникальныйИдентификатор,
ДанныеФайла);
КонецПроцедуры
&НаКлиенте
Процедура РасшифроватьПослеРасшифровкиНаКлиенте(Результат, ПараметрыВыполнения) Экспорт
Если Результат = Ложь Или Не Результат.Успех Тогда
Возврат;
КонецЕсли;
ИмяРабочегоКаталога = РаботаСФайламиСлужебныйКлиент.РабочийКаталогПользователя();
РасшифроватьСервер(
Результат.МассивДанныхДляЗанесенияВБазу,
ИмяРабочегоКаталога,
ПараметрыВыполнения.ОбъектСсылка);
РаботаСФайламиСлужебныйКлиент.ИнформироватьОРасшифровке(
ПараметрыВыполнения.ДанныеФайла.Владелец,
ПараметрыВыполнения.ОбъектСсылка);
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаСервере
Процедура РасшифроватьСервер(МассивДанныхДляЗанесенияВБазу,
ИмяРабочегоКаталога, ОбъектСсылка)
ПараметрыЗаписиИнформацииОШифровании = РаботаСФайламиСлужебный.ПараметрыЗаписиИнформацииОШифровании();
ПараметрыЗаписиИнформацииОШифровании.Зашифровать = Ложь;
ПараметрыЗаписиИнформацииОШифровании.ИмяРабочегоКаталога = ИмяРабочегоКаталога;
ПараметрыЗаписиИнформацииОШифровании.МассивДанныхДляЗанесенияВБазу = МассивДанныхДляЗанесенияВБазу;
РаботаСФайламиСлужебный.ЗаписатьИнформациюОШифровании(
ОбъектСсылка, ПараметрыЗаписиИнформацииОШифровании);
КонецПроцедуры
&НаКлиенте
Процедура Редактировать(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если (ТекущиеДанные.ФайлРедактируется И НЕ ТекущиеДанные.ФайлРедактируетТекущийПользователь)
ИЛИ ТекущиеДанные.Зашифрован
ИЛИ ТекущиеДанные.ПодписанЭП Тогда
Возврат;
КонецЕсли;
Если ПризнакОтправкиФайлаЭДО(ТекущиеДанные.Ссылка) Тогда
ОписаниеЗавершения = Новый ОписаниеОповещения("РедактироватьЗавершение", ЭтотОбъект);
ЗадатьВопросПользователюПриИзмененииФайла(ОписаниеЗавершения);
Иначе
РедактироватьЗавершение(Новый Структура("Значение", КодВозвратаДиалога.Да));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакончитьРедактирование(Команда)
МассивФайлов = Новый Массив;
Для Каждого ЭлементСписка Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = ДанныеСтрокиСписка(ЭлементСписка);
Если НЕ ДанныеСтроки.ФайлРедактируется
Или НЕ ДанныеСтроки.ФайлРедактируетТекущийПользователь Тогда
Продолжить;
КонецЕсли;
МассивФайлов.Добавить(ДанныеСтроки.Ссылка);
КонецЦикла;
Если МассивФайлов.Количество() > 1 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("МассивФайлов", МассивФайлов);
ПараметрыФормы.Вставить("ЕстьВерсииФайлов", Ложь);
ПараметрыФормы.Вставить("Редактирует", ДанныеСтроки.РедактируетПользователь);
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ЗавершениеРедактирования", ПараметрыФормы, ЭтотОбъект);
ИначеЕсли МассивФайлов.Количество() = 1 Тогда
Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект);
ПараметрыОбновленияФайла = РаботаСФайламиСлужебныйКлиент.ПараметрыОбновленияФайла(Обработчик, ДанныеСтроки.Ссылка, УникальныйИдентификатор);
ПараметрыОбновленияФайла.Вставить("СоздатьНовуюВерсию", Ложь);
РаботаСФайламиСлужебныйКлиент.ЗакончитьРедактированиеСОповещением(ПараметрыОбновленияФайла);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Освободить(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.ОсвободитьФайлы(Элементы.Список);
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаКлиенте
Процедура Занять(Команда)
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ПризнакОтправкиФайлаЭДО(ТекущиеДанные.Ссылка) Тогда
ОписаниеЗавершения = Новый ОписаниеОповещения("ЗанятьЗавершение", ЭтотОбъект);
ЗадатьВопросПользователюПриИзмененииФайла(ОписаниеЗавершения);
Иначе
ЗанятьЗавершение(Новый Структура("Значение", КодВозвратаДиалога.Да));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Удалить(Команда)
Если Элементы.Список.ТекущаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
РаботаСФайламиСлужебныйКлиент.УдалитьДанные(
Новый ОписаниеОповещения("ПослеУдаленияДанных", ЭтотОбъект),
ТекущиеДанные.Ссылка, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоказыватьПомеченныеФайлы(Команда)
РаботаСФайламиСлужебныйКлиент.ИзменитьОтборПоПометкеУдаления(Список.Отбор, Элементы.ПоказыватьПомеченныеФайлы);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ТипДоговораПриИзмененииСервер()
СтараяХозяйственнаяОперация = Объект.ХозяйственнаяОперация;
Объект.ХозяйственнаяОперация = Справочники.ДоговорыКонтрагентов.ХозяйственнаяОперация(Объект.ТипДоговора,
Объект.ВариантОформленияЗакупок);
Если СтараяХозяйственнаяОперация <> Объект.ХозяйственнаяОперация Тогда
Объект.ГруппаФинансовогоУчета = Справочники.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка();
Объект.ГруппаФинансовогоУчетаКлиента = Справочники.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка();
КонецЕсли;
ОперацииЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
РеквизитыПартнера = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.Партнер, "Клиент, Поставщик");
Если ЗначениеЗаполнено(Объект.Партнер)
И (Не РеквизитыПартнера.Клиент
И (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи)
ИЛИ Не РеквизитыПартнера.Поставщик
И (ОперацииЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииИмпорта.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчикаВСтранахЕАЭС2_5
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи)) Тогда
Объект.Партнер = Справочники.Партнеры.ПустаяСсылка();
Объект.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Объект.БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
ПартнерПриИзмененииНаСервере();
КонецЕсли;
УстановитьВидимостьКонтроляЗадолженности(ЭтаФорма);
Если Объект.ХозяйственнаяОперация <> Перечисления.ХозяйственныеОперации.РеализацияКлиенту Тогда
Объект.ОграничиватьСуммуЗадолженности = Ложь;
КонецЕсли;
Если Объект.ТипДоговора <> Перечисления.ТипыДоговоров.СПокупателем Тогда
Объект.ЗапрещаетсяПросроченнаяЗадолженность = Ложь;
КонецЕсли;
ЗаполнитьНалогообложениеИВидДеятельности();
Если Объект.ТипДоговора <> Перечисления.ТипыДоговоров.СПоклажедателем
И Объект.ТипДоговора <> Перечисления.ТипыДоговоров.СКомитентомНаЗакупку
И Объект.ТипДоговора <> Перечисления.ТипыДоговоров.СДавальцем2_5 Тогда
Объект.ПорядокОформленияСписанияНедостачТоваровПринятыхНаХранение = Перечисления.ПорядокОформленияСписанияТоваровПринятыхНаХранение.ПустаяСсылка();
Объект.ПорядокОформленияСписанияВПроизводствоТоваровПринятыхНаХранение = Перечисления.ПорядокОформленияСписанияТоваровПринятыхНаХранение.ПустаяСсылка();
Иначе
Объект.ПорядокОформленияСписанияНедостачТоваровПринятыхНаХранение = Перечисления.ПорядокОформленияСписанияТоваровПринятыхНаХранение.ОформлятьВыкуп;
Объект.ПорядокОформленияСписанияВПроизводствоТоваровПринятыхНаХранение = Перечисления.ПорядокОформленияСписанияТоваровПринятыхНаХранение.ОформлятьВыкуп;
КонецЕсли;
Если Не (Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком) Тогда
Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеРазделять;
ИнициализироватьВариантОформленияЗакупок();
КонецЕсли;
Если ИспользоватьОформлениеДокументовРаздельнойЗакупки
И Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт Тогда
Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.ТоварыВПути;
ИнициализироватьВариантОформленияЗакупок();
КонецЕсли;
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером Тогда
Если ТолькоКомиссионныеПродажи25 ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж Тогда
Объект.КомиссионныеПродажи25 = ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.КомиссионныеПродажи25, Истина);
Объект.ЗаданГрафикИсполнения = Ложь;
Объект.Сумма = 0;
КонецЕсли;
ИначеЕсли Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СХранителем
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СДавальцем2_5 Тогда
Объект.ЗаданГрафикИсполнения = Ложь;
Иначе
Объект.КомиссионныеПродажи25 = Ложь;
Объект.ВидЦенПродажи = Справочники.ВидыЦен.ПустаяСсылка();
Объект.ВидЦенУчетный = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
Если Не Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
Объект.ДоговорСКомиссионером = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
Объект.КомиссионерКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
Объект.КомиссионерПартнер = Справочники.Партнеры.ПустаяСсылка();
Объект.ГруппаФинансовогоУчетаКлиента = Справочники.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка();
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, "ТипДоговора");
ЗаполнитьПараметрыВыбораПартнера();
НастроитьСписокВыбораПорядкаРасчетов();
НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств();
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
ОбновитьЗаголовокФормы();
УправлениеЭлементамиГрафикИсполнения();
УстановитьВидимостьНаправленияДеятельности();
УстановитьВидимостьВариантовРаздельнойЗакупки();
УстановитьВидимостьПорядокСписанияПринятыхТоваров(ЭтаФорма);
УстановитьВидимостьРазбивкиОтчетаПодПринципала(ЭтаФорма);
УстановитьВидимостьНоваяСхемаКомиссии();
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.Субаренда Тогда
Элементы.ГруппаСубаренда.Видимость = Истина;
Иначе
Объект.ДоговорАренды = Справочники.ДоговорыАренды.ПустаяСсылка();
Элементы.ГруппаСубаренда.Видимость = Ложь;
КонецЕсли;
УстановитьВидимостьЦентрализованногоДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ТипДоговора", Неопределено);
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
Объект.ПереоцениватьТоварыУслугиКОтчетуКомитенту =
Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентом
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентомНаЗакупку;
УчетНДСУП.ЗаполнитьСтавкуНДСДляПлатежей(Объект.СтавкаНДС, Объект.НалогообложениеНДС, Объект.Организация, Объект.ДатаОкончанияДействия);
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("НалогообложениеНДС", Неопределено);
УстановитьЗначенияРеквизитовДисконтирования();
УправлениеЭлементамиДисконтирования();
НалогообложениеНДСПриИзмененииСервер();
ИспользоватьЭДО = Ложь;
ИспользоватьМаркировку = Ложь;
ИспользоватьЭДО = ПолучитьФункциональнуюОпцию("ИспользоватьОбменЭД");
ИспользоватьМаркировку = ПолучитьФункциональнуюОпцию("ВестиУчетМаркировкиПродукцииВГИСМ") Или ПолучитьФункциональнуюОпцию("ВестиУчетМаркируемойПродукцииИСМП");
Если (Не ИспользоватьЭДО) Или (Не ИспользоватьМаркировку) Или Объект.ДоговорССамозанятым Тогда
Элементы.ЛокализацияГруппаВариантВыбытияМаркируемойПродукции.Видимость = Ложь;
КонецЕсли;
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
УстановитьЗаголовокПоляУИП();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПараметрыВыбораПартнера()
МассивПараметровВыбораПартнера = Новый Массив;
ОперацииЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ОперацииВСтранахЕАЭС = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ОперацииПроизводстваУПереработчика2_5 = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика2_5);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера Тогда
МассивПараметровВыбораПартнера.Добавить(Новый ПараметрВыбора("Отбор.Клиент", Истина));
КонецЕсли;
Если ОперацииЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииИмпорта.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииВСтранахЕАЭС.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПроизводствоУПереработчика
Или ОперацииПроизводстваУПереработчика2_5.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
МассивПараметровВыбораПартнера.Добавить(Новый ПараметрВыбора("Отбор.Поставщик", Истина));
КонецЕсли;
Элементы.Партнер.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбораПартнера);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПартнерПриИзмененииСервер(Партнер, Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, КонтактноеЛицо, КонтрагентЮрФизЛицо, Организация)
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Партнер, Контрагент);
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Партнер, КонтактноеЛицо);
ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, Организация);
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ЮрФизЛицо");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьФлагиПартнераКлиентПоставщик(Партнер, ХозяйственнаяОперация, ЭтоНовый)
Возврат Справочники.ДоговорыКонтрагентов.ПроверитьФлагиПартнераКлиентПоставщик(Партнер, ХозяйственнаяОперация,
ЭтоНовый, Истина);
КонецФункции
&НаСервере
Процедура ВалютаВзаиморасчетовПриИзмененииСервер()
ВалютаОплатыРегл = ?(Объект.ОплатаВВалюте, Ложь, Неопределено);
Объект.ОплатаВВалюте = ВзаиморасчетыСервер.ПолучитьОплатуВВалютеПоУмолчанию(ВалютаОплатыРегл, Объект.Организация);
УстановитьДоговорСКомиссионеромПоУмолчанию();
ОбработатьБанковскиеСчета();
УстановитьВидимостьОплатаВВалюте();
УстановитьЗначенияРеквизитовДисконтирования();
ПроверитьКурсВалютыДоговора();
Если Объект.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный;
КонецЕсли;
ЗаполнитьЗначенияКурсаВалютыДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Валюта", Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ОграничиватьСуммуЗадолженностиПриИзменении(Элемент)
УстановитьВидимостьКонтроляЗадолженности(ЭтаФорма);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура КонтактноеЛицоПриИзмененииСервер(Партнер, Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, КонтактноеЛицо, КонтрагентЮрФизЛицо, Организация)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Партнер Тогда
Партнер = ВладелецКонтактногоЛица;
ПартнерПриИзмененииСервер(Партнер, Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, КонтактноеЛицо, КонтрагентЮрФизЛицо, Организация);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура КонтрагентПриИзмененииСервер(Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, КонтрагентЮрФизЛицо, Организация)
ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, Организация);
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ЮрФизЛицо");
КонецПроцедуры
&НаСервере
Процедура ПорядокРасчетовПриИзмененииСервер()
Если (Объект.ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И Объект.ПорядокРасчетов <> Перечисления.ПорядокРасчетов.ПоДоговорамНакладным)
ИЛИ (Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
И Объект.КомиссионныеПродажи25) Тогда
Объект.ЗаданГрафикИсполнения = Ложь;
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки
И Не ДоступностьФиксированногоКурсаНаДатуОтгрузки() Тогда
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный;
КонецЕсли;
УправлениеЭлементамиГрафикИсполнения();
УстановитьВидимостьЦентрализованногоДоговора();
УправлениеЭлементамиВариантКурсаДоговора();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "ПорядокРасчетов");
КонецПроцедуры
&НаСервере
Процедура НалогообложениеНДСПриИзмененииСервер()
Если ЗначениеЗаполнено(Объект.НалогообложениеНДС) Тогда
Если ЗначениеЗаполнено(Объект.СтавкаНДС) Тогда
Если Не УчетНДСУП.СтавкаНДСКорректна(Объект.СтавкаНДС, Объект.НалогообложениеНДС, Объект.Организация, Объект.ДатаОкончанияДействия) Тогда
Объект.СтавкаНДС = Справочники.СтавкиНДС.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
УчетНДСУП.ЗаполнитьСтавкуНДСДляПлатежей(Объект.СтавкаНДС,
Объект.НалогообложениеНДС,
Объект.Организация,
Объект.ДатаОкончанияДействия
);
КонецЕсли;
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("НалогообложениеНДС", Неопределено);
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Не ЗначениеЗаполнено(Объект.НаправлениеДеятельности) Тогда
Возврат;
КонецЕсли;
РеквизитыНазначения = "НалогообложениеНДСОпределяетсяВДокументе";
ЗначенияРеквизитовНазначения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.НаправлениеДеятельности, РеквизитыНазначения);
Если Перечисления.ТипыДоговоров.ЭтоДоговорПродажи(Объект.ТипДоговора) Тогда
Объект.НалогообложениеНДСОпределяетсяВДокументе = ЗначенияРеквизитовНазначения.НалогообложениеНДСОпределяетсяВДокументе;
ЗаполнитьНалогообложениеИВидДеятельности();
Если Объект.НалогообложениеНДСОпределяетсяВДокументе Тогда
РежимНалогообложения = 1;
Иначе
РежимНалогообложения = 0;
КонецЕсли;
Элементы.НалогообложениеНДС.Доступность = НЕ Объект.НалогообложениеНДСОпределяетсяВДокументе;
ИначеЕсли Перечисления.ТипыДоговоров.ЭтоДоговорЗакупки(Объект.ТипДоговора) Тогда
Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе = ЗначенияРеквизитовНазначения.НалогообложениеНДСОпределяетсяВДокументе;
ЗаполнитьНалогообложениеИВидДеятельности();
Если Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе Тогда
РежимРаздельногоУчетаНДС = 1;
Иначе
РежимРаздельногоУчетаНДС = 0;
КонецЕсли;
Элементы.ЗакупкаПодДеятельность.Доступность = НЕ Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РежимНалогообложенияПриИзмененииСервер()
Объект.НалогообложениеНДСОпределяетсяВДокументе = ?(РежимНалогообложения = 1, Истина, Ложь);
ЗаполнитьНалогообложениеИВидДеятельности();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ОбработатьБанковскиеСчета()
ПараметрыВыбораБанковскихСчетов = ПараметрыВыбораБанковскихСчетов(Объект.ОплатаВВалюте, Объект.Организация);
Элементы.БанковскийСчет.ПараметрыВыбора = ПараметрыВыбораБанковскихСчетов;
Элементы.БанковскийСчетКонтрагента.ПараметрыВыбора = ПараметрыВыбораБанковскихСчетов;
Если НЕ БанковскийСчетСоответствуетПорядкуОплаты(Объект.БанковскийСчет, Объект.ОплатаВВалюте, Объект.Организация) Тогда
Объект.БанковскийСчет = Неопределено;
КонецЕсли;
ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Объект.Организация, Объект.ОплатаВВалюте, Объект.БанковскийСчет);
Если НЕ БанковскийСчетСоответствуетПорядкуОплаты(Объект.БанковскийСчетКонтрагента, Объект.ОплатаВВалюте, Объект.Организация) Тогда
Объект.БанковскийСчетКонтрагента = Неопределено;
КонецЕсли;
ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Объект.Контрагент, Объект.ОплатаВВалюте, Объект.БанковскийСчетКонтрагента, Объект.Организация);
КонецПроцедуры
&НаСервере
Процедура СуммаПриИзмененииСервер()
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НоваяСхемаКомиссииПриИзменении(Элемент)
ТипДоговораПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура УчетныйВидЦенНачалоВыбора(Элемент, СтандартнаяОбработка)
УстановитьПараметрыВыбораВидаЦенНаСервере("ВидЦенУчетный");
КонецПроцедуры
&НаКлиенте
Процедура ВидЦенПродажиНачалоВыбора(Элемент, СтандартнаяОбработка)
УстановитьПараметрыВыбораВидаЦенНаСервере("ВидЦенПродажи");
КонецПроцедуры
&НаСервере
Процедура ВариантКурсаДоговораПриИзмененииНаСервере()
ПроверитьКурсВалютыДоговора();
Если Не (ЗначениеЗаполнено(ЧислительКурсаВалютыДоговора) И ЗначениеЗаполнено(ЗнаменательКурсаВалютыДоговора)) Тогда
ЗаполнитьЗначенияКурсаВалютыДоговора();
КонецЕсли;
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗнаменательКурсаВалютыДоговораОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Истина;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость = Ложь;
КонецПроцедуры
&НаСервере
Процедура ИспользоватьОформлениеДокументовРаздельнойЗакупкиПриИзмененииНаСервере()
Модифицированность = Истина;
ОпределитьВариантОформленияЗакупок();
ПриИзмененииНастроекПриемкиСервер();
Элементы.ВариантОформленияРаздельнойЗакупки.Доступность = ИспользоватьОформлениеДокументовРаздельнойЗакупки
И Объект.ТипДоговора <> ПредопределенноеЗначение("Перечисление.ТипыДоговоров.Импорт");
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ИспользоватьОформлениеДокументовРаздельнойЗакупки", Неопределено);
КонецПроцедуры
&НаСервере
Процедура ВариантОформленияРаздельнойЗакупкиПриИзмененииНаСервере()
Модифицированность = Истина;
ОпределитьВариантОформленияЗакупок();
ПриИзмененииНастроекПриемкиСервер();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ВариантОформленияРаздельнойЗакупки", Неопределено);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура АрендодательПартнерПриИзмененииСервер(АрендодательПартнер, АрендодательКонтрагент)
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(АрендодательПартнер, АрендодательКонтрагент);
КонецПроцедуры
&НаСервере
Процедура ОплатаВВалютеПриИзмененииСервер()
ОбработатьБанковскиеСчета();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Валюта", Неопределено);
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы)
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "Изменить", "Доступность", Ложь);
ГоловнаяОрганизация = Объект.Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "ГоловнаяОрганизация");
КонтрагентЮрФизЛицо = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Контрагент, "ЮрФизЛицо");
КлассификацияЗадолженности = ?(Объект.УстановленСрокОплаты И Объект.СрокОплаты > 365, 1, 0);
Если Не ЗначениеЗаполнено(Объект.ВалютаВзаиморасчетов) Тогда
Объект.ВалютаВзаиморасчетов = ДоходыИРасходыСервер.ПолучитьВалютуУправленческогоУчета();
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ВариантПриемкиТоваров) Тогда
Объект.ВариантПриемкиТоваров = Константы.ВариантПриемкиТоваров.Получить();
КонецЕсли;
ИспользоватьОрдернуюСхемуПриПоступлении = ПолучитьФункциональнуюОпцию("ИспользоватьОрдернуюСхемуПриПоступлении");
ИспользоватьТоварыВПутиОтПоставщиков = ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков");
ИспользоватьНеотфактурованныеПоставки = ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки");
НоваяАрхитектураВзаиморасчетов = ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
ИспользоватьНесколькоОрганизаций = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоОрганизаций");
ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс = ПолучитьФункциональнуюОпцию("ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс");
ИспользоватьСоглашенияСКлиентами = ПолучитьФункциональнуюОпцию("ИспользоватьСоглашенияСКлиентами");
ВыбиратьВерсиюКомиссионныхПродаж = ПолучитьФункциональнуюОпцию("ВыбиратьВерсиюКомиссионныхПродаж")
ИЛИ (ЗначениеЗаполнено(Объект.Ссылка) И НЕ Объект.КомиссионныеПродажи25);
ТолькоКомиссионныеПродажи25 = ПолучитьФункциональнуюОпцию("ТолькоКомиссионныеПродажи25")
ИЛИ НЕ ИспользоватьСоглашенияСКлиентами ИЛИ НЕ ВыбиратьВерсиюКомиссионныхПродаж;
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ЕстьПравоОтправкиЭД = ПравоДоступа("Редактирование", Метаданные.Документы.ЭлектронныйДокументИсходящийЭДО);
ФиксированнаяСуммаДоговора = (Объект.Сумма <> 0);
Если Объект.ЗаданГрафикИсполнения Тогда
ГрафикИсполненияВДоговоре = 1;
Иначе
ГрафикИсполненияВДоговоре = 0;
КонецЕсли;
ПрименитьСтавкуДисконтированияПоРассрочке = (Объект.СтавкаДисконтирования <> 0);
ЗаполнитьЗначенияКурсаВалютыДоговора();
ИнициализироватьВариантОформленияЗакупок();
Если Объект.НалогообложениеНДСОпределяетсяВДокументе Тогда
РежимНалогообложения = 1;
Иначе
РежимНалогообложения = 0;
КонецЕсли;
Если Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе Тогда
РежимРаздельногоУчетаНДС = 1;
Иначе
РежимРаздельногоУчетаНДС = 0;
КонецЕсли;
Если Объект.РазбиватьОтчетПоДокументам Тогда
РазбиватьОтчет = 1;
Иначе
РазбиватьОтчет = 0;
КонецЕсли;
ЗакупкиСервер.ЗаполнитьНастройкиВариантовПриемки(Объект.ВариантПриемкиТоваров, ОформлениеПоступления, ПриемкаТоваров);
ЗакупкиСервер.ЗаполнитьСписокВыбораВариантовПриемкиПоДоговорам(Элементы.ОформлениеПоступления,
Элементы.ПриемкаТоваров,
Объект.ВариантОформленияЗакупок);
ПараметрыВыбораБанковскогоСчета = ПараметрыВыбораБанковскихСчетов(Объект.ОплатаВВалюте, Объект.Организация);
Элементы.БанковскийСчет.ПараметрыВыбора = ПараметрыВыбораБанковскогоСчета;
Элементы.БанковскийСчетКонтрагента.ПараметрыВыбора = ПараметрыВыбораБанковскогоСчета;
ЗаполнитьПараметрыВыбораПартнера();
УстановитьДоступностьЭлементовПоСтатусуСервер();
НастроитьСписокВыбораПорядкаРасчетов();
УстановитьВидимостьКонтроляЗадолженности(ЭтаФорма);
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
УправлениеЭлементамиГрафикИсполнения();
УстановитьВидимостьЦентрализованногоДоговора();
УстановитьВидимостьНаправленияДеятельности();
УстановитьВидимостьВариантовРаздельнойЗакупки();
УстановитьЗаголовкиРеквизитовПриемкиТоваров();
УстановитьВидимостьПорядокСписанияПринятыхТоваров(ЭтаФорма);
УстановитьВидимостьРазбивкиОтчетаПодПринципала(ЭтаФорма);
УстановитьВидимостьНоваяСхемаКомиссии();
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.Субаренда Тогда
Элементы.ГруппаСубаренда.Видимость = Истина;
РеквизитыАренды = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект.ДоговорАренды, "Партнер, Контрагент");
АрендодательПартнер = РеквизитыАренды.Партнер;
АрендодательКонтрагент = РеквизитыАренды.Контрагент;
Иначе
Элементы.ГруппаСубаренда.Видимость = Ложь;
КонецЕсли;
ОбновитьЗаголовокФормы();
Элементы.НаименованиеДляПечати.СписокВыбора.Очистить();
Элементы.НаименованиеДляПечати.СписокВыбора.Добавить(Объект.Наименование);
Если ТолькоПросмотр Тогда
Элементы.ФиксированнаяСуммаДоговора.ТолькоПросмотр = Истина;
Элементы.КлассификацияЗадолженности.ТолькоПросмотр = Истина;
Элементы.ПрименитьСтавкуДисконтированияПоРассрочке. ТолькоПросмотр = Истина;
КонецЕсли;
Элементы.ОформлениеПоступления.Доступность = ПравоДоступа("Редактирование", Метаданные.Справочники.ДоговорыКонтрагентов);
Элементы.ПриемкаТоваров.Доступность = ПравоДоступа("Редактирование", Метаданные.Справочники.ДоговорыКонтрагентов);
УстановитьДоступностьПриемки();
УстановитьДоступностьДоставки();
ЗаполнитьНалогообложениеИВидДеятельности(Ложь);
Если Объект.КомиссионныеПродажи25
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
Элементы.ГруппаСуммаДоговора.Видимость = Ложь;
КонецЕсли;
УстановитьУсловноеОформление();
ДоговорыКонтрагентовЛокализация.ПриЧтенииСозданииНаСервере(ЭтаФорма);
НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств();
УстановитьЗаголовокПоляУИП();
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
ДоговорыКонтрагентовЛокализация.УстановитьУсловноеОформление(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.НеСогласован Тогда
УстановитьПодписку = Ложь;
ИначеЕсли Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Закрыт Или
Объект.Статус = Перечисления.СтатусыДоговоровКонтрагентов.Действует Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Номер");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("ДатаНачалаДействия");
МассивЭлементов.Добавить("ДатаОкончанияДействия");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("ВалютаВзаиморасчетов");
МассивЭлементов.Добавить("ОплатаВВалюте");
МассивЭлементов.Добавить("ТипДоговора");
МассивЭлементов.Добавить("ПорядокРасчетов");
МассивЭлементов.Добавить("УстановитьИнтервал");
МассивЭлементов.Добавить("ОграничиватьСуммуЗадолженности");
МассивЭлементов.Добавить("ДопустимаяСуммаЗадолженности");
МассивЭлементов.Добавить("СхемаКомиссии");
МассивЭлементов.Добавить("ВестиРасчетыЧерезКонечныхПокупателей");
МассивЭлементов.Добавить("ВидЦенУчетный");
МассивЭлементов.Добавить("ВидЦенПродажи");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("ОграничиватьСуммуЗадолженности");
МассивЭлементов.Добавить("ДопустимаяСуммаЗадолженности");
МассивЭлементов.Добавить("ЗапрещаетсяПросроченнаяЗадолженность");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
МассивЭлементов,
"ТолькоПросмотр", НЕ ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж());
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПараметрыВыбораБанковскихСчетов(ОплатаВВалюте, Организация)
МассивПараметров = Новый Массив;
Если НЕ ОплатаВВалюте Тогда
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ВалютаДенежныхСредств",
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация)));
Иначе
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.ВалютаДенежныхСредств", Новый ФиксированныйМассив(ИностранныеВалюты(Организация))));
КонецЕсли;
МассивПараметров.Добавить(Новый ПараметрВыбора("ВыборСчетовГоловнойОрганизации", Неопределено));
МассивПараметров.Добавить(Новый ПараметрВыбора("Отбор.Закрыт", Ложь));
Возврат Новый ФиксированныйМассив(МассивПараметров);
КонецФункции
&НаСервереБезКонтекста
Функция ИностранныеВалюты(Организация)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| Валюты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Валюты КАК Валюты
|ГДЕ
| Валюты.Ссылка <> &ВалютаРегламентированногоУчета
|");
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета",
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация));
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
&НаСервереБезКонтекста
Функция БанковскийСчетСоответствуетПорядкуОплаты(БанковскийСчет, ОплатаВВалюте, Организация)
Соответствует = Истина;
Если ЗначениеЗаполнено(БанковскийСчет) Тогда
ВалютаСчета = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчет, "ВалютаДенежныхСредств");
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
Если ОплатаВВалюте Тогда
Соответствует = ВалютаСчета <> ВалютаРегламентированногоУчета;
Иначе
Соответствует = ВалютаСчета = ВалютаРегламентированногоУчета;
КонецЕсли;
КонецЕсли;
Возврат Соответствует;
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаполнитьБанковскийСчетОрганизацииПоУмолчанию(Организация, ОплатаВВалюте, БанковскийСчет)
Если ЗначениеЗаполнено(БанковскийСчет)
ИЛИ НЕ ЗначениеЗаполнено(Организация) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 2
| БанковскиеСчетаОрганизаций.Ссылка КАК БанковскийСчет
|ИЗ
| Справочник.БанковскиеСчетаОрганизаций КАК БанковскиеСчетаОрганизаций
|ГДЕ
| БанковскиеСчетаОрганизаций.Владелец = &Организация
| И ((БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств = &ВалютаРегл И НЕ &ОплатаВВалюте)
| ИЛИ (БанковскиеСчетаОрганизаций.ВалютаДенежныхСредств <> &ВалютаРегл И &ОплатаВВалюте))
| И НЕ БанковскиеСчетаОрганизаций.ПометкаУдаления
|");
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("ОплатаВВалюте", ОплатаВВалюте);
Запрос.УстановитьПараметр("ВалютаРегл", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
БанковскийСчет = Выборка.БанковскийСчет;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЗаполнитьБанковскийСчетКонтрагентаПоУмолчанию(Контрагент, ОплатаВВалюте, БанковскийСчетКонтрагента, Организация)
Если (ЗначениеЗаполнено(БанковскийСчетКонтрагента)
И Контрагент = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(БанковскийСчетКонтрагента,"Владелец")) Тогда
Возврат;
ИначеЕсли НЕ ЗначениеЗаполнено(Контрагент) Тогда
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
Возврат;
КонецЕсли;
Запрос = Новый Запрос("
|ВЫБРАТЬ ПЕРВЫЕ 2
| БанковскиеСчетаКонтрагентов.Ссылка КАК БанковскийСчетКонтрагента
|ИЗ
| Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
|ГДЕ
| БанковскиеСчетаКонтрагентов.Владелец = &Контрагент
| И ((БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств = &ВалютаРегл И НЕ &ОплатаВВалюте)
| ИЛИ (БанковскиеСчетаКонтрагентов.ВалютаДенежныхСредств <> &ВалютаРегл И &ОплатаВВалюте))
| И НЕ БанковскиеСчетаКонтрагентов.ПометкаУдаления
| И НЕ БанковскиеСчетаКонтрагентов.Закрыт
|");
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ОплатаВВалюте", ОплатаВВалюте);
Запрос.УстановитьПараметр("ВалютаРегл", ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 1 И Выборка.Следующий() Тогда
БанковскийСчетКонтрагента = Выборка.БанковскийСчетКонтрагента;
Иначе
БанковскийСчетКонтрагента = Справочники.БанковскиеСчетаКонтрагентов.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокФормы()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЭтаФорма.Заголовок = "";
ЭтаФорма.АвтоЗаголовок = Истина;
Иначе
ЭтаФорма.АвтоЗаголовок = Ложь;
ЭтаФорма.Заголовок = Объект.Наименование;
Если ЗначениеЗаполнено(Объект.ТипДоговора) Тогда
ЭтаФорма.Заголовок = Объект.Наименование + " (" + Объект.ТипДоговора + ")";
КонецЕсли;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаголовокЭлементаПартнерВЗависимостиОтХозяйственнойОперации(
ЭтотОбъект, "Партнер", Объект.ХозяйственнаяОперация);
ПартнерыИКонтрагенты.ЗаголовокЭлементаСчетКонтрагентаВЗависимостиОтХозяйственнойОперации(
ЭтотОбъект, "БанковскийСчетКонтрагента", Объект.ХозяйственнаяОперация);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьКонтроляЗадолженности(Форма)
МассивИменЭлементов = Новый Массив;
МассивИменЭлементов.Добавить("ОграничиватьСуммуЗадолженности");
МассивИменЭлементов.Добавить("ДопустимаяСуммаЗадолженности");
МассивИменЭлементов.Добавить("НадписьВалютаВзаиморасчетов");
МассивИменЭлементов.Добавить("ЗапрещаетсяПросроченнаяЗадолженность");
МассивИменЭлементов.Добавить("ГруппаКонтрольЗадолженности");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(
Форма.Элементы,
МассивИменЭлементов,
"Видимость",
Форма.Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту"));
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементаФормы(
Форма.Элементы,
"ДопустимаяСуммаЗадолженности",
"Доступность",
Форма.Объект.ОграничиватьСуммуЗадолженности);
КонецПроцедуры
&НаСервере
Процедура НастроитьСписокВыбораПорядкаРасчетов()
ОперацииЗакупки = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщика);
ОперацииИмпорта = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпорту);
ОперацииВСтранахЕАЭС = ЗакупкиСервер.ХозяйственныеОперацииПоОсновной(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭС);
ЭтоНоваяКомиссия = ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.КомиссионныеПродажи25, ТолькоКомиссионныеПродажи25
Или Объект.КомиссионныеПродажи25);
СписокВыбора = Элементы.ПорядокРасчетов.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
Если (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию И (Не ЭтоНоваяКомиссия
Или Не Объект.ВестиРасчетыЧерезКонечныхПокупателей))
Или Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаКомиссию Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ЭтоНоваяКомиссия Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным, НСтр("ru = 'Аванс по договорам, долг по накладным (только реализация)'"));
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам, НСтр("ru = 'По отчетам комиссионера/реализациям через комиссионера'"));
Иначе
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам, НСтр("ru = 'По отчетам по комиссии'"));
КонецЕсли;
Если СписокВыбора.НайтиПоЗначению(Объект.ПорядокРасчетов) = Неопределено Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаКомиссию
И ЭтоНоваяКомиссия И Объект.ВестиРасчетыЧерезКонечныхПокупателей Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным, НСтр("ru = 'Аванс по договорам, долг по накладным (только реализация)'"));
Если СписокВыбора.НайтиПоЗначению(Объект.ПорядокРасчетов) = Неопределено Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов;
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияКлиенту
И Не ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыКлиентов") Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоНакладным);
ИначеЕсли (ОперацииЗакупки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииИмпорта.Найти(Объект.ХозяйственнаяОперация) <> Неопределено
Или ОперацииВСтранахЕАЭС.Найти(Объект.ХозяйственнаяОперация) <> Неопределено)
И Не ПолучитьФункциональнуюОпцию("ИспользоватьЗаказыПоставщикам") Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоНакладным);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи
ИЛИ Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПередачаНаХранениеСПравомПродажи Тогда
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПриемНаХранениеСПравомПродажи Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам,
НСтр("ru = 'По документам выкупа и списания товаров с хранения'"));
Иначе
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам,
НСтр("ru = 'По документам выкупа товаров хранителем'"));
КонецЕсли;
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоНакладным Тогда
Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам;
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоставкаПодПринципала Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоНакладным);
Если Константы.ВариантОбособленияТоваровВПродажах.Получить() = Перечисления.ВариантыОбособленияТоваровВПродажах.ЗаказКлиента Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам);
КонецЕсли;
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияЧерезКомиссионера Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам, НСтр("ru = 'По отчетам комиссионера/реализациям через комиссионера'"));
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
ИначеЕсли Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РеализацияУслугПоАренде Тогда
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоНакладным);
Иначе
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказам);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоДоговорамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоЗаказамНакладным);
СписокВыбора.Добавить(Перечисления.ПорядокРасчетов.ПоНакладным);
КонецЕсли;
Если СписокВыбора.НайтиПоЗначению(Объект.ПорядокРасчетов) = Неопределено Тогда
Объект.ПорядокРасчетов = СписокВыбора[0].Значение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьПараметрыВыбораСтатьиДвиженияДенежныхСредств()
ТипыДоговоровПокупатель = Новый Массив;
ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СПокупателем);
ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СКомиссионером);
ТипыДоговоровПокупатель.Добавить(Перечисления.ТипыДоговоров.СХранителем);
ТипыДоговоровПоставщик = Новый Массив;
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПоставщиком);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СКомитентом);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.Импорт);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.ВвозИзЕАЭС);
ТипыДоговоровПоставщик.Добавить(Перечисления.ТипыДоговоров.СПоклажедателем);
МассивПараметровВыбора = Новый Массив;
Если ТипыДоговоровПокупатель.Найти(Объект.ТипДоговора) <> Неопределено Тогда
ПараметрВыбора = Новый ПараметрВыбора("Отбор.ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента);
МассивПараметровВыбора.Добавить(ПараметрВыбора);
Иначе
СписокХозяйственныхОпераций = Новый Массив;
Если ТипыДоговоровПоставщик.Найти(Объект.ТипДоговора) <> Неопределено Тогда
СписокХозяйственныхОпераций.Добавить(Перечисления.ХозяйственныеОперации.ОплатаПоставщику);
КонецЕсли;
ДенежныеСредстваСервер.ДополнитьПараметрыВыбораСпискомХозяйственныхОпераций(
МассивПараметровВыбора, СписокХозяйственныхОпераций);
КонецЕсли;
Элементы.СтатьяДвиженияДенежныхСредств.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС()
Элементы.ВидАгентскогоДоговора.Видимость = Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком;
Элементы.НалогообложениеНДС.Доступность = НЕ Объект.НалогообложениеНДСОпределяетсяВДокументе;
Элементы.ЗакупкаПодДеятельность.Доступность = НЕ Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе;
Элементы.ВидАгентскогоДоговора.Доступность = (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.НалоговыйАгентПоНДС);
Элементы.СтавкаНДС.Доступность = Объект.НалогообложениеНДСОпределяетсяВДокументе
ИЛИ (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
ИЛИ (Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ЛьготноеНалогообложениеНДСНаУСН);
Элементы.ГруппаРаздельныйУчетНДС.Видимость =
(Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем);
Элементы.ГруппаНалогообложениеНДС.Видимость =
НЕ (Объект.ТипДоговора = Перечисления.ТипыДоговоров.ПустаяСсылка()
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
Или (Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
И Объект.ДоговорССамозанятым));
Элементы.ЛокализацияГруппаЗаполнениеРаздела7.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьЗаполнениеРаздела7ДекларацииПоНДС");
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьНаправленияДеятельности()
Видимость = Ложь;
Если ЗначениеЗаполнено(Объект.ТипДоговора) Тогда
Если НаправленияДеятельностиСервер.ХозяйственнаяОперацияОбразуетДоход(Объект.ХозяйственнаяОперация)
И ПолучитьФункциональнуюОпцию("ИспользоватьУчетДоходовПоНаправлениямДеятельности") Тогда
Видимость = Истина;
ИначеЕсли НаправленияДеятельностиСервер.ХозяйственнаяОперацияОбразуетАктив(Объект.ХозяйственнаяОперация)
И ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности") Тогда
Видимость = Истина;
КонецЕсли;
КонецЕсли;
Элементы.НаправлениеДеятельности.Видимость = Видимость;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиГрафикИсполнения()
ТипыДоговоров = Новый Массив;
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПокупателем);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПоставщиком);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПереработчиком);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.СПереработчиком2_5_ЕАЭС);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.Импорт);
ТипыДоговоров.Добавить(Перечисления.ТипыДоговоров.ВвозИзЕАЭС);
ЭтоДоговорСКлиентом =
Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем
ИЛИ Ложь;
ВидимостьГрафика = (ТипыДоговоров.Найти(Объект.ТипДоговора) <> Неопределено)
И (Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
ИЛИ Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным)
И НЕ (ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВПродажах")
И ЭтоДоговорСКлиентом)
И НЕ (ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВЗакупках")
И НЕ ЭтоДоговорСКлиентом);
ЗависимыеЭлементы = Новый Массив;
ЗависимыеЭлементы.Добавить(Элементы.Отступ2);
ЗависимыеЭлементы.Добавить(Элементы.ГрафикИсполненияВДоговоре);
ЗависимыеЭлементы.Добавить(Элементы.НадписьГрафикИсполнения);
Для каждого ЗависимыйЭлемент Из ЗависимыеЭлементы Цикл
ЗависимыйЭлемент.Видимость = ВидимостьГрафика;
КонецЦикла;
Элементы.Сумма.Доступность = ФиксированнаяСуммаДоговора;
Элементы.Сумма.АвтоОтметкаНезаполненного = ФиксированнаяСуммаДоговора;
Элементы.ГрафикИсполненияВДоговоре.Доступность = ФиксированнаяСуммаДоговора;
Элементы.НадписьГрафикИсполнения.Видимость = Элементы.НадписьГрафикИсполнения.Видимость И ГрафикИсполненияВДоговоре;
НадписьГрафикИсполнения = Документы.ГрафикИсполненияДоговора.ПредставлениеГрафика(Объект.ГрафикИсполненияДоговора);
КонецПроцедуры
&НаСервере
Процедура ИзмененаОплатаСервер(ИмяСобытия, Параметр)
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаСервере
Процедура ИзменениеГрафикаИсполненияНаСервере()
Записать();
УправлениеЭлементамиГрафикИсполнения();
КонецПроцедуры
&НаСервере
Процедура ОрганизацияПриИзмененииСервер()
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ОбработатьБанковскиеСчета();
ЗаполнитьНалогообложениеИВидДеятельности();
НалогообложениеНДСПриИзмененииСервер();
ГоловнаяОрганизация = Объект.Организация = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Организация, "ГоловнаяОрганизация");
Объект.Филиалы.Очистить();
УстановитьВидимостьЦентрализованногоДоговора();
УстановитьДоговорСКомиссионеромПоУмолчанию();
УстановитьЗначенияРеквизитовДисконтирования();
УправлениеЭлементамиДисконтирования();
НалогообложениеНДСПриИзмененииСервер();
УстановитьВидимостьОплатаВВалюте();
ВалютаРегламентированногоУчета = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
ПроверитьКурсВалютыДоговора();
Если Объект.ВалютаВзаиморасчетов = ВалютаРегламентированногоУчета Тогда
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный;
КонецЕсли;
УправлениеЭлементамиВариантКурсаДоговора();
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("Организация", Неопределено);
КонецПроцедуры
&НаСервере
Процедура ВестиРасчетыЧерезКонечныхПокупателейПриИзмененииНаСервере()
ЭтоДоговорСКомиссионером = ?(Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СКомиссионером"),
Истина, Ложь);
ЭтоНоваяКомиссия = ЭтоДоговорСКомиссионером
И ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.КомиссионныеПродажи25, ТолькоКомиссионныеПродажи25
Или Объект.КомиссионныеПродажи25);
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, "ГруппаФинансовогоУчетаКлиента",
"Видимость", ЭтоНоваяКомиссия И Объект.ВестиРасчетыЧерезКонечныхПокупателей);
НастроитьСписокВыбораПорядкаРасчетов();
ВзаиморасчетыСервер.ПриИзмененииПараметровМеханизма(ЭтотОбъект);
УправлениеЭлементамиВариантКурсаДоговора();
КонецПроцедуры
&НаСервере
Процедура ДатаОкончанияДействияПриИзмененииСервер()
ЗаполнитьНалогообложениеИВидДеятельности();
НалогообложениеНДСПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьКлассификациюЗадолженности(КлассификацияЗадолженности)
Если КлассификацияЗадолженности = 1 Тогда
Объект.УстановленСрокОплаты = Истина;
Объект.СрокОплаты = 366;
Иначе
Объект.УстановленСрокОплаты = Ложь;
Объект.СрокОплаты = 0;
КонецЕсли;
ЭтаФорма.Модифицированность = Истина;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьВариантовРаздельнойЗакупки()
ДоговорДоступенДляЗакупокДвухходовки = Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком;
ДоступноОформлениеРаздельнойЗакупки = ИспользоватьТоварыВПутиОтПоставщиков
Или ИспользоватьНеотфактурованныеПоставки;
ИспользоватьВариантыОформленияРаздельнойЗакупки = ИспользоватьТоварыВПутиОтПоставщиков
И ИспользоватьНеотфактурованныеПоставки;
Элементы.ГруппаОформлениеДокументовРаздельнойЗакупки.Видимость = ДоговорДоступенДляЗакупокДвухходовки
И ДоступноОформлениеРаздельнойЗакупки;
Элементы.ГруппаВариантОформленияРаздельнойЗакупки.Видимость = ИспользоватьВариантыОформленияРаздельнойЗакупки;
Элементы.ВариантОформленияРаздельнойЗакупки.Доступность = ИспользоватьОформлениеДокументовРаздельнойЗакупки
И Объект.ТипДоговора <> Перечисления.ТипыДоговоров.Импорт;
ИспользоватьОформлениеЗакупок = ИспользоватьОформлениеЗакупок();
Элементы.ГруппаВариантыПриемки.Видимость = ИспользоватьОформлениеЗакупок
И (ИспользоватьОрдернуюСхемуПриПоступлении
Или ДоступноОформлениеРаздельнойЗакупки);
КонецПроцедуры
&НаСервере
Процедура ИнициализироватьВариантОформленияЗакупок()
Если Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеРазделять Тогда
ИспользоватьОформлениеДокументовРаздельнойЗакупки = Ложь;
Если ПолучитьФункциональнуюОпцию("ИспользоватьТоварыВПутиОтПоставщиков") Тогда
ВариантОформленияРаздельнойЗакупки = "ТоварыВПути";
ИначеЕсли ПолучитьФункциональнуюОпцию("ИспользоватьНеотфактурованныеПоставки") Тогда
ВариантОформленияРаздельнойЗакупки = "НеотфактурованныеПоставкиТоваровИУслуг";
КонецЕсли;
Иначе
ИспользоватьОформлениеДокументовРаздельнойЗакупки = Истина;
Если Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.ТоварыВПути Тогда
ВариантОформленияРаздельнойЗакупки = "ТоварыВПути";
ИначеЕсли Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг Тогда
ВариантОформленияРаздельнойЗакупки = "НеотфактурованныеПоставкиТоваровИУслуг";
ИначеЕсли Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров Тогда
ВариантОформленияРаздельнойЗакупки = "НеотфактурованныеПоставкиТоваров";
КонецЕсли;
КонецЕсли;
Если ВариантОформленияРаздельнойЗакупки = "НеотфактурованныеПоставкиТоваров" Тогда
ЭлементСпискаДляУдаления = Элементы.ВариантОформленияРаздельнойЗакупки.СписокВыбора.НайтиПоЗначению("НеотфактурованныеПоставкиТоваровИУслуг");
Иначе
ЭлементСпискаДляУдаления = Элементы.ВариантОформленияРаздельнойЗакупки.СписокВыбора.НайтиПоЗначению("НеотфактурованныеПоставкиТоваров");
КонецЕсли;
Если НЕ ЭлементСпискаДляУдаления = Неопределено Тогда
Элементы.ВариантОформленияРаздельнойЗакупки.СписокВыбора.Удалить(ЭлементСпискаДляУдаления);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьПриемки()
Если ОформлениеПоступления = "ПоДоговору" Тогда
Элементы.ПриемкаТоваров.Доступность = Ложь;
ПриемкаТоваров = "НеРазделена";
Иначе
Элементы.ПриемкаТоваров.Доступность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииНастроекПриемкиСервер();
ЗакупкиСервер.ЗаполнитьСписокВыбораВариантовПриемкиПоДоговорам(Элементы.ОформлениеПоступления,
Элементы.ПриемкаТоваров,
Объект.ВариантОформленияЗакупок);
Если Элементы.ОформлениеПоступления.СписокВыбора.Количество() = 1 Тогда
ОформлениеПоступления = Элементы.ОформлениеПоступления.СписокВыбора[0].Значение;
КонецЕсли;
Объект.ВариантПриемкиТоваров = ЗакупкиСервер.ПолучитьВариантовПриемкиПоНастройкам(ОформлениеПоступления, ПриемкаТоваров);
Если Объект.ВариантОформленияЗакупок = Перечисления.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров
И (Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных
Или Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным) Тогда
Если Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеНакладных Тогда
Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.ПоДоговорамПослеЗаказовИлиНакладных;
ИначеЕсли Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаТолькоПоНакладным Тогда
Объект.ВариантПриемкиТоваров = Перечисления.ВариантыПриемкиТоваров.РазделенаПоЗаказамИНакладным;
КонецЕсли;
ЗакупкиСервер.ЗаполнитьНастройкиВариантовПриемки(Объект.ВариантПриемкиТоваров, ОформлениеПоступления, ПриемкаТоваров);
КонецЕсли;
Если Объект.СпособДоставки = Перечисления.СпособыДоставки.ОпределяетсяВРаспоряжении
И Справочники.ДоговорыКонтрагентов.ДоговорИспользуетсяПриПриемке(Объект.ВариантПриемкиТоваров) Тогда
Объект.СпособДоставки = Перечисления.СпособыДоставки.ПустаяСсылка();
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
КонецЕсли;
Если Элементы.ОформлениеПоступления.СписокВыбора.НайтиПоЗначению(ОформлениеПоступления) = Неопределено Тогда
ОформлениеПоступления = "";
КонецЕсли;
УстановитьДоступностьПриемки();
УстановитьДоступностьДоставки();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьДоставки()
ЭтоДоговорРаспоряжениеНаПриемку = Справочники.ДоговорыКонтрагентов.ДоговорИспользуетсяПриПриемке(Объект.ВариантПриемкиТоваров);
ДоступныеСпособыДоставки = ДоступныеСпособыДоставки(ЭтоДоговорРаспоряжениеНаПриемку);
Элементы.СпособДоставки.СписокВыбора.ЗагрузитьЗначения(ДоступныеСпособыДоставки);
КонецПроцедуры
&НаСервере
Функция ДоступныеСпособыДоставки(ЭтоДоговорРаспоряжениеНаПриемку)
ВозвращаемыйМассив = Новый Массив();
Если Не ЭтоДоговорРаспоряжениеНаПриемку Тогда
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.ОпределяетсяВРаспоряжении);
КонецЕсли;
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.СиламиПоставщикаДоНашегоСклада);
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.СиламиПеревозчикаДоНашегоСклада);
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.СиламиПеревозчикаДоПунктаПередачи);
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.НашимиСиламиСАдресаОтправителя);
ВозвращаемыйМассив.Добавить(Перечисления.СпособыДоставки.ОтОтправителяОпределяетСлужбаДоставки);
Возврат ВозвращаемыйМассив;
КонецФункции
&НаСервере
Функция ИспользоватьОформлениеЗакупок()
ИспользоватьОформлениеЗакупок = Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.ВвозИзЕАЭС
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.Импорт
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоклажедателем;
Возврат ИспользоватьОформлениеЗакупок;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьПорядокСписанияПринятыхТоваров(Форма)
Форма.Элементы.ПорядокОформленияСписанияНедостачТоваровПринятыхНаХранение.Видимость = ?(
Форма.Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СПоклажедателем")
Или Форма.Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СКомитентомНаЗакупку"),
Истина,
Ложь);
Форма.Элементы.ПорядокОформленияСписанияВПроизводствоТоваровПринятыхНаХранение.Видимость =
?(Форма.Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СПоклажедателем"),
Истина,
Ложь);
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиВариантКурсаДоговора()
ВидимостьЭлементов =
НоваяАрхитектураВзаиморасчетов
И Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета
И ЗначениеЗаполнено(ВалютаРегламентированногоУчета);
Элементы.ГруппаВариантКурсаДоговора.Видимость = ВидимостьЭлементов;
Если Не ВидимостьЭлементов Тогда
Возврат;
КонецЕсли;
ТекстПодсказки = "";
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.Переменный Тогда
ТекстПодсказки = НСтр("ru='Задолженность переоценивается'");
ИначеЕсли Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки Тогда
ТекстПодсказки = НСтр("ru='Задолженность не переоценивается'");
ИначеЕсли Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ТекстПодсказки = НСтр("ru='Задолженность переоценивается по курсу договора'");
КонецЕсли;
Элементы.ВариантКурсаДоговора.Подсказка = ТекстПодсказки;
УстановитьСписокВыбораВариантаКурсаДоговора();
Элементы.ГруппаКурсУказанныйВДоговоре.Видимость =
Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
Элементы.ГруппаРедактированиеКратностиКурса.Видимость = Не Элементы.НадписьЗнаменательКурсаВалютыДоговора.Видимость;
Если ЗнаменательКурсаВалютыДоговора < 10 И Цел(ЗнаменательКурсаВалютыДоговора) = ЗнаменательКурсаВалютыДоговора Тогда
Элементы.НадписьЗнаменательКурсаВалютыДоговора.Ширина = 9;
Элементы.НадписьЗнаменательКурсаВалютыДоговора.РастягиватьПоГоризонтали = Ложь;
КонецЕсли;
СтрокаЗнаменательКурсаВалютыДоговора = ?(
ЗнаменательКурсаВалютыДоговора = Цел(ЗнаменательКурсаВалютыДоговора),
Формат(ЗнаменательКурсаВалютыДоговора, "ЧДЦ=0"),
Формат(ЗнаменательКурсаВалютыДоговора, "ЧДЦ=4"));
СтрокаЗнаменательКурсаВалютыДоговора = Новый ФорматированнаяСтрока(СтрокаЗнаменательКурсаВалютыДоговора,,,, "ЗнаменательКурсаВалютыДоговораНажатие");
НадписьЗнаменательКурсаВалютыДоговора = Новый ФорматированнаяСтрока(
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 за'") + " ",
ВалютаРегламентированногоУчета),
СтрокаЗнаменательКурсаВалютыДоговора,
" ",
Строка(Объект.ВалютаВзаиморасчетов));
Элементы.ЗнаменательКурсаВалютыДоговора.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='%1 за'"),
ВалютаРегламентированногоУчета);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТекстПодсказкиПорядокЗачетаДокументов()
ТекстПодсказки = "";
Если Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеВидуДокумента") Тогда
ТекстПодсказки = НСтр("ru='По дате и виду документа – постоплаты будут сначала распределяться на накладные с минимальной датой проведения документа, накладные будут зачитывать авансы с минимальной датой документа.
|Документы в пределах дня будут зачитываться по виду: сначала переносы авансов и задолженности, накладные,
|возвраты товаров и корректировки накладных, оплаты, возвраты ДС и пр.'");
ИначеЕсли Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеВремениДокумента") Тогда
ТекстПодсказки = НСтр("ru='По дате и времени документа – постоплаты будут сначала распределяться на накладные с минимальной датой проведения документа, накладные будут зачитывать авансы с минимальной датой документа.
|Документы в пределах дня будут зачитываться по времени проведения, типу и номеру.'");
ИначеЕсли Объект.ПорядокЗачетаОплатНакладных = ПредопределенноеЗначение("Перечисление.ПорядкиЗачетаОплатНакладных.ПоДатеПлановогоПогашения") Тогда
ТекстПодсказки = НСтр("ru='По плановой дате погашения – постоплаты будут сначала распределяться на накладные с минимальной датой платежа, накладные будут зачитывать авансы с минимальной датой погашения.
|Документы в пределах дня будут зачитываться по типу и номеру.'");
Иначе
ТекстПодсказки = Константы.ПорядокЗачетаОплатНакладных.Получить();
КонецЕсли;
Элементы.ПорядокЗачетаОплатНакладных.Подсказка = ТекстПодсказки;
КонецПроцедуры
&НаСервере
Процедура УстановитьСписокВыбораВариантаКурсаДоговора()
ДоступенФиксированныйНаДатуОтгрузки = ДоступностьФиксированногоКурсаНаДатуОтгрузки();
ТребуетсяИзменениеСпискаВыбора =
Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 0
Или (Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 2
И ДоступенФиксированныйНаДатуОтгрузки)
Или (Элементы.ВариантКурсаДоговора.СписокВыбора.Количество() = 3
И Не ДоступенФиксированныйНаДатуОтгрузки);
Если ТребуетсяИзменениеСпискаВыбора Тогда
Элементы.ВариантКурсаДоговора.СписокВыбора.Очистить();
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.Переменный);
Если ДоступенФиксированныйНаДатуОтгрузки Тогда
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.ФиксированныйНаДатуОтгрузки);
КонецЕсли;
Элементы.ВариантКурсаДоговора.СписокВыбора.Добавить(Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьВидимостьРазбивкиОтчетаПодПринципала(Форма)
Форма.Элементы.РазбиватьОтчетКомитентуПоЗакупкам.Видимость = ?(
Форма.Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СКомитентомНаЗакупку") , Истина, Ложь);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьНоваяСхемаКомиссии()
ЭтоДоговорСКомиссионером = ?(Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.СКомиссионером"),
Истина, Ложь);
ЭтоДоговорСКонечнымКлиентом = ?(Объект.ТипДоговора = ПредопределенноеЗначение("Перечисление.ТипыДоговоров.РеализацияЧерезКомиссионера"),
Истина, Ложь);
ЭтоНоваяКомиссия = ЭтоДоговорСКомиссионером
И ?(ЗначениеЗаполнено(Объект.Ссылка), Объект.КомиссионныеПродажи25, ТолькоКомиссионныеПродажи25
Или Объект.КомиссионныеПродажи25);
Элементы.ГруппаКомиссионнаяПродажа.Видимость = ЭтоДоговорСКомиссионером;
Элементы.СхемаКомиссии.Видимость = ?(
ЭтоДоговорСКомиссионером И ВыбиратьВерсиюКомиссионныхПродаж
И НЕ ТолькоКомиссионныеПродажи25 И ИспользоватьСоглашенияСКлиентами, Истина, Ложь);
Элементы.ГруппаНастроекВидовЦенКомиссионнойПродажи.Видимость = ЭтоНоваяКомиссия;
Элементы.ВестиРасчетыЧерезКонечныхПокупателей.Видимость = ЭтоНоваяКомиссия;
Элементы.УчетныйВидЦен.Видимость = ЭтоНоваяКомиссия;
Элементы.ВидЦенПродажи.Видимость = ЭтоНоваяКомиссия;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы,
"ЛокализацияГруппаВариантВыбытияМаркируемойПродукции, РазрешенаРаботаСДочернимиПартнерами",
"Видимость", Не ЭтоДоговорСКонечнымКлиентом);
Элементы.ГруппаПорядокРасчетов.ТолькоПросмотр = ЭтоДоговорСКонечнымКлиентом;
Элементы.СтатьяДвиженияДенежныхСредств.Видимость = Не ЭтоДоговорСКонечнымКлиентом;
Элементы.НаправлениеДеятельности.Видимость = Не ЭтоДоговорСКонечнымКлиентом;
ИзменениеГруппаФинансовогоУчетаКлиента = ЭтоДоговорСКомиссионером Или (ЭтоДоговорСКонечнымКлиентом
И Объект.ВестиРасчетыЧерезКонечныхПокупателей);
Элементы.ГруппаФинансовогоУчетаКлиента.ТолькоПросмотр = Не ИзменениеГруппаФинансовогоУчетаКлиента;
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, "БанковскийСчет, БанковскийСчетКонтрагента, КонтактноеЛицо, ЗачетОплатыФорма",
"Видимость", Не ЭтоДоговорСКонечнымКлиентом);
Элементы.ГруппаКомиссионер.Видимость = ЭтоДоговорСКонечнымКлиентом;
Если ЭтоНоваяКомиссия Тогда
УстановитьПараметрыВыбораВидаЦенНаСервере();
КонецЕсли;
Элементы.ГруппаОрганизация.Заголовок = НСтр("ru = 'Данные организации'");
Элементы.ГруппаОрганизация.ОтображатьЗаголовок = ЭтоДоговорСКонечнымКлиентом;
Элементы.ГруппаПартнерКонтрагент.Заголовок = НСтр("ru = 'Данные клиента'");
Элементы.ГруппаПартнерКонтрагент.ОтображатьЗаголовок = ЭтоДоговорСКонечнымКлиентом;
Элементы.ГруппаФинансовогоУчета.Заголовок = ?(ЭтоНоваяКомиссия, НСтр("ru = 'Группа фин. учета расчетов с комиссионером'"), "");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, "ГруппаФинансовогоУчетаКлиента",
"Видимость", ЭтоНоваяКомиссия И Объект.ВестиРасчетыЧерезКонечныхПокупателей);
Элементы.ГруппаСуммаДоговора.Видимость = Не (Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера
ИЛИ ЭтоНоваяКомиссия);
НастроитьСписокВыбораСхемыКомиссии();
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиРеквизитовПриемкиТоваров()
ДоступноОформлениеРаздельнойЗакупки = ИспользоватьТоварыВПутиОтПоставщиков
Или ИспользоватьНеотфактурованныеПоставки;
ЗаголовокПриемкиТоваров = ?(ДоступноОформлениеРаздельнойЗакупки,
НСтр("ru = 'Оформление поступлений и приемки на склад'"),
НСтр("ru = 'Оформление поступлений и приемки на ордерный склад'"));
ЗаголовокОформлениеПоступления = ?(ДоступноОформлениеРаздельнойЗакупки,
НСтр("ru = 'Оформление поступления и ордера доступно'"),
НСтр("ru = 'Оформление ордера доступно'"));
ПодсказкаОформлениеПоступления = ?(ДоступноОформлениеРаздельнойЗакупки,
НСтр("ru = 'Оформление приходного ордера и поступления товаров может происходить после оформления заказа,
|либо после оформления накладной или по договору, без оформления каких-либо документов.'"),
НСтр("ru = 'Оформление приходного ордера может происходить после оформления заказа,
|либо после оформления накладной или по договору, без оформления каких-либо документов.'"));
ПодсказкаПриемкаТоваров = ?(ДоступноОформлениеРаздельнойЗакупки,
НСтр("ru = 'Приемку товаров на складе можно сгруппировать по договору,
|либо разделить по документам.'"),
НСтр("ru = 'Приемку товаров на ордерном складе можно сгруппировать по договору,
|либо разделить по документам.'"));
Элементы.ГруппаВариантыПриемки.Заголовок = ЗаголовокПриемкиТоваров;
Элементы.ОформлениеПоступления.Заголовок = ЗаголовокОформлениеПоступления;
Элементы.ОформлениеПоступления.Подсказка = ПодсказкаОформлениеПоступления;
Элементы.ПриемкаТоваров.Подсказка = ПодсказкаПриемкаТоваров;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЦентрализованногоДоговора()
Элементы.ГруппаФилиалы.Видимость = НоваяАрхитектураВзаиморасчетов
И ГоловнаяОрганизация И ИспользоватьНесколькоОрганизаций
И ИспользоватьОбособленныеПодразделенияВыделенныеНаБаланс
И (Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПокупателем
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СПоставщиком
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомиссионером
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СХранителем
ИЛИ Объект.ТипДоговора = Перечисления.ТипыДоговоров.СКомитентомНаЗакупку);
Если НЕ Элементы.ГруппаФилиалы.Видимость И Объект.ЦентрализованныйДоговор Тогда
Объект.ЦентрализованныйДоговор = Ложь;
КонецЕсли;
Элементы.ДекорацияФилиалы.Доступность = Объект.ЦентрализованныйДоговор;
Элементы.РазрешаетсяПередачаОплатМеждуФилиалами.Видимость = Объект.ЦентрализованныйДоговор;
УстановитьКоличествоФилиалов(Элементы.ДекорацияФилиалы, Объект.Филиалы.Количество());
КонецПроцедуры
&НаКлиенте
Процедура ЗавершениеРедактированияСпискаФилиалов(Результат, ДополнительныеПараметры = Неопределено) Экспорт
Если ТипЗнч(Результат) = Тип("ДанныеФормыКоллекция") Тогда
Объект.Филиалы.Очистить();
Для каждого Стр Из Результат Цикл
НоваяСтрокаЗаполненияДвижений = Объект.Филиалы.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрокаЗаполненияДвижений, Стр);
КонецЦикла;
УстановитьКоличествоФилиалов(Элементы.ДекорацияФилиалы, Объект.Филиалы.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьКоличествоФилиалов(ДекорацияФилиалы, КоличествоФилиалов)
ДекорацияФилиалы.Заголовок = НСтр("ru = 'Доступен филиалам'");
Если КоличествоФилиалов > 0 Тогда
ДекорацияФилиалы.Заголовок = ДекорацияФилиалы.Заголовок + " (" + КоличествоФилиалов + ")";
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьНалогообложениеИВидДеятельности(ПерезаполнитьНалогообложениеИВидДеятельности = Истина)
Если Перечисления.ТипыДоговоров.ЭтоДоговорПродажи(Объект.ТипДоговора) Тогда
ПараметрыЗаполнения = Справочники.ДоговорыКонтрагентов.ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект);
Если Объект.НалогообложениеНДСОпределяетсяВДокументе
И ЗначениеЗаполнено(Объект.НалогообложениеНДС) Тогда
Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПустаяСсылка();
ИначеЕсли Не Объект.НалогообложениеНДСОпределяетсяВДокументе
И ПерезаполнитьНалогообложениеИВидДеятельности Тогда
УчетНДСУП.ЗаполнитьНалогообложениеНДСПродажи(Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСПродажи(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ИначеЕсли Перечисления.ТипыДоговоров.ЭтоДоговорЗакупки(Объект.ТипДоговора) Тогда
ПараметрыЗаполнения = Справочники.ДоговорыКонтрагентов.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);
Если Объект.НалогообложениеНДСОпределяетсяВДокументе
И ЗначениеЗаполнено(Объект.НалогообложениеНДС) Тогда
Объект.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПустаяСсылка();
ИначеЕсли Не Объект.НалогообложениеНДСОпределяетсяВДокументе
И ПерезаполнитьНалогообложениеИВидДеятельности Тогда
УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораНалогообложенияНДСЗакупки(Элементы.НалогообложениеНДС,
Объект.НалогообложениеНДС,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ПараметрыЗаполнения = Справочники.ДоговорыКонтрагентов.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе
И ЗначениеЗаполнено(Объект.ЗакупкаПодДеятельность) Тогда
Объект.ЗакупкаПодДеятельность = Перечисления.ТипыНалогообложенияНДС.ПустаяСсылка();
ИначеЕсли Не Объект.ЗакупкаПодДеятельностьОпределяетсяВДокументе
И ПерезаполнитьНалогообложениеИВидДеятельности Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
ВыборВидаДеятельностиНДС = Элементы.ЗакупкаПодДеятельность.Видимость;
Элементы.РежимРаздельногоУчетаНДСОпределяетсяЗначением.Видимость = ВыборВидаДеятельностиНДС;
Элементы.РежимРаздельногоУчетаНДС.Видимость = ВыборВидаДеятельностиНДС;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗначенияРеквизитовДисконтирования()
Если Перечисления.ТипыДоговоров.ЭтоДоговорЗакупки(Объект.ТипДоговора) Тогда
НастройкиУчетнойПолитикиФинУчета = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату(
"УчетнаяПолитикаФинансовогоУчета",
Объект.Организация);
Объект.СтавкаДисконтирования = РегистрыСведений.СтавкиДисконтирования.ПолучитьСтавкуДисконтированияПоУмолчанию(
НастройкиУчетнойПолитикиФинУчета.Период,
НастройкиУчетнойПолитикиФинУчета.Организация,
Объект.ВалютаВзаиморасчетов);
ПрименитьСтавкуДисконтированияПоРассрочке = Объект.СтавкаДисконтирования <> 0;
Объект.СрокДляПримененияДисконтирования = НастройкиУчетнойПолитикиФинУчета.СрокДляПримененияДисконтирования;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УправлениеЭлементамиДисконтирования(ВыключеноДисконтирование=Ложь)
ВидимостьРеквизитовДисконтирования = Ложь;
Если Перечисления.ТипыДоговоров.ЭтоДоговорЗакупки(Объект.ТипДоговора) Тогда
НастройкиУчетнойПолитикиФинУчета = НастройкиНалоговУчетныхПолитик.ДействующиеПараметрыНалоговУчетныхПолитикНаДату("УчетнаяПолитикаФинансовогоУчета", Объект.Организация);
ВидимостьРеквизитовДисконтирования = НастройкиУчетнойПолитикиФинУчета.УчетДисконтированнойКредиторскойЗадолженностиПоставщикам;
ВидимостьРеквизитовДисконтирования = ВидимостьРеквизитовДисконтирования И ПолучитьФункциональнуюОпцию("НоваяАрхитектураВзаиморасчетов");
Если Не ВидимостьРеквизитовДисконтирования Тогда
Если Объект.СтавкаДисконтирования > 0 Тогда
ВидимостьРеквизитовДисконтирования = Истина;
Элементы.ГруппаОтключеноДисконтирование.Видимость = Истина;
ИначеЕсли ВыключеноДисконтирование Тогда
ВидимостьРеквизитовДисконтирования = Истина;
Элементы.ГруппаОтключеноДисконтирование.Видимость = Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Элементы.ГруппаДисконтирование.Видимость = ВидимостьРеквизитовДисконтирования;
Элементы.ГруппаСрокДисконтирования.Видимость = ВидимостьРеквизитовДисконтирования;
Элементы.СтавкаДисконтирования.Доступность = ПрименитьСтавкуДисконтированияПоРассрочке;
Элементы.СтавкаДисконтирования.АвтоОтметкаНезаполненного = ПрименитьСтавкуДисконтированияПоРассрочке;
Элементы.СрокДляПримененияДисконтирования.Доступность = ПрименитьСтавкуДисконтированияПоРассрочке;
Элементы.ДекорацияДней.Доступность = ПрименитьСтавкуДисконтированияПоРассрочке;
Элементы.ДекорацияПроцент.Доступность = ПрименитьСтавкуДисконтированияПоРассрочке;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ДоступныеТипыДоговоров(ТипДоговораДоИзменения, СтандартнаяОбработка)
ПараметрыВыбора = Новый Структура;
ДоступныеТипы = Перечисления.ТипыДоговоров.ПолучитьДанныеВыбора(ПараметрыВыбора);
Если ДоступныеТипы.НайтиПоЗначению(ТипДоговораДоИзменения) = Неопределено Тогда
СтандартнаяОбработка = Ложь;
ДоступныеТипы.Добавить(ТипДоговораДоИзменения);
ДоступныеТипы.СортироватьПоЗначению();
Иначе
ДоступныеТипы = Неопределено;
КонецЕсли;
Возврат ДоступныеТипы;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьОплатаВВалюте()
Элементы.ОплатаВВалюте.Видимость = Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета Или Объект.ОплатаВВалюте;
КонецПроцедуры
&НаСервере
Процедура УстановитьПараметрыВыбораВидаЦенНаСервере(ИмяВидаЦен = "")
ВидЦенПродажи = Объект.ВидЦенПродажи;
ВидЦенУчетный = Объект.ВидЦенУчетный;
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("ВыводитьПроизвольныйВидЦен", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ИспользоватьПриПродаже", Истина));
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.Статус", Перечисления.СтатусыДействияВидовЦен.Действует));
Если ЗначениеЗаполнено(ВидЦенУчетный) И (ИмяВидаЦен = "" ИЛИ ИмяВидаЦен = "ВидЦенПродажи") Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ЦенаВключаетНДС", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидЦенУчетный, "ЦенаВключаетНДС")));
ИначеЕсли ЗначениеЗаполнено(ВидЦенПродажи) И (ИмяВидаЦен = "" ИЛИ ИмяВидаЦен = "ВидЦенУчетный") Тогда
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ЦенаВключаетНДС", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидЦенПродажи, "ЦенаВключаетНДС")));
КонецЕсли;
ПараметрыОтбораВидаЦен = Новый ФиксированныйМассив(МассивПараметровВыбора);
Если ИмяВидаЦен = "ВидЦенУчетный" Тогда
Элементы.УчетныйВидЦен.ПараметрыВыбора = ПараметрыОтбораВидаЦен;
Иначе
Элементы.ВидЦенПродажи.ПараметрыВыбора = ПараметрыОтбораВидаЦен;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьСписокВыбораСхемыКомиссии()
СписокВыбора = Элементы.СхемаКомиссии.СписокВыбора;
СписокВыбора.Очистить();
СписокВыбора.Добавить(Ложь, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии20());
СписокВыбора.Добавить(Истина, КомиссионнаяТорговляСервер.ПостфиксСхемыКомиссии25());
КонецПроцедуры
&НаСервере
Процедура УстановитьДоговорСКомиссионеромПоУмолчанию()
Если Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера Тогда
Объект.ДоговорСКомиссионером = КомиссионнаяТорговляСервер.ПолучитьДоговорСКомиссионеромПоУмолчанию(Объект);
ДоговорСКомиссионеромПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗначенияКурсаВалютыДоговора()
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ЕстьКурс = РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЕстьЗаписиКурсаВалютыДоговора(Объект.Ссылка);
Если ЕстьКурс И Не ОчиститьКурсВалютыДоговора Тогда
ЗначенияКурса = РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ПолучитьЗначенияКурсаВалютыДоговора(Объект.Ссылка, ТекущаяДатаСеанса());
Иначе
ЗначенияКурса = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Объект.ВалютаВзаиморасчетов, ТекущаяДатаСеанса(), ВалютаРегламентированногоУчета);
КонецЕсли;
ЧислительКурсаВалютыДоговора = ЗначенияКурса.КурсЧислитель;
ЗнаменательКурсаВалютыДоговора = ЗначенияКурса.КурсЗнаменатель;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаписатьЗначенияКурсаВалютыДоговора(СсылкаНаЗаписанныйЭлемент)
Если ОчиститьКурсВалютыДоговора Тогда
РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ОчиститьИсториюКурсовПоДоговору(СсылкаНаЗаписанныйЭлемент);
КонецЕсли;
Если Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЗаписатьЗначенияКурсаВалютыДоговора(
СсылкаНаЗаписанныйЭлемент,
ТекущаяДатаСеанса(),
ЧислительКурсаВалютыДоговора,
ЗнаменательКурсаВалютыДоговора);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьКурсВалютыДоговора()
Если РегистрыСведений.КурсыВалютРасчетовПоДоговорам.ЕстьЗаписиКурсаВалютыДоговора(Объект.Ссылка) Тогда
Если НоваяАрхитектураВзаиморасчетов
И Объект.ВалютаВзаиморасчетов <> ВалютаРегламентированногоУчета
И ЗначениеЗаполнено(ВалютаРегламентированногоУчета)
И Объект.ВариантКурсаДоговора = Перечисления.ВариантыКурсаДоговора.УстановленныйВДоговоре Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'История курса валюты расчетов договора будет очищена и заполнена новыми значениями при записи договора.'"));
Иначе
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'История курса валюты расчетов договора будет очищена при записи договора.'"));
КонецЕсли;
ОчиститьКурсВалютыДоговора = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОпределитьВариантОформленияЗакупок()
Если ИспользоватьОформлениеДокументовРаздельнойЗакупки Тогда
Если ВариантОформленияРаздельнойЗакупки = "ТоварыВПути" Тогда
Объект.ВариантОформленияЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.ТоварыВПути");
ИначеЕсли ВариантОформленияРаздельнойЗакупки = "НеотфактурованныеПоставкиТоваровИУслуг" Тогда
Объект.ВариантОформленияЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваровИУслуг");
Иначе
Объект.ВариантОформленияЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеотфактурованныеПоставкиТоваров");
КонецЕсли;
Иначе
Объект.ВариантОформленияЗакупок = ПредопределенноеЗначение("Перечисление.ВариантыОформленияЗакупок.НеРазделять");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ДоступностьФиксированногоКурсаНаДатуОтгрузки()
РасчетыКомиссия25 = (Объект.КомиссионныеПродажи25 И Не Объект.ВестиРасчетыЧерезКонечныхПокупателей
Или Объект.ТипДоговора = Перечисления.ТипыДоговоров.РеализацияЧерезКомиссионера);
Возврат Не (Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
Или Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам И Не РасчетыКомиссия25);
КонецФункции
&НаСервере
Процедура УстановитьЗаголовокПоляУИП()
Элементы.ИдентификаторПлатежа.Заголовок =
?(Справочники.ДоговорыКонтрагентов.ЭтоДоговорСКлиентом(Объект.ТипДоговора),
НСтр("ru = 'УИП (для входящих платежей)'"),
НСтр("ru = 'УИП (для исходящих платежей)'"));
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВалютаВзаиморасчетов" Тогда
ВалютаВзаиморасчетовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ОплатаВВалюте" Тогда
ОплатаВВалютеПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ТипДоговора" Тогда
ТипДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПорядокРасчетов" Тогда
ПорядокРасчетовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ОграничиватьСуммуЗадолженности" Тогда
ОграничиватьСуммуЗадолженностиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "СхемаКомиссии" Тогда
НоваяСхемаКомиссииПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВидЦенУчетный" Тогда
УстановитьПараметрыВыбораВидаЦенНаСервере("ВидЦенУчетный");
ИначеЕсли Элемент.Имя = "ВидЦенПродажи" Тогда
УстановитьПараметрыВыбораВидаЦенНаСервере("ВидЦенПродажи");
ИначеЕсли Элемент.Имя = "ВестиРасчетыЧерезКонечныхПокупателей" Тогда
ВестиРасчетыЧерезКонечныхПокупателейПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаОкончанияДействия" Тогда
ДатаОкончанияДействияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВариантКурсаДоговора" Тогда
ВариантКурсаДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЧислительКурсаВалютыДоговора" Тогда
ЧислительКурсаВалютыДоговораПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ЗнаменательКурсаВалютыДоговора" Тогда
ЗнаменательКурсаВалютыДоговораПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "УстановитьИнтервал" Тогда
УстановитьИнтервал(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
УстановитьДоступностьЭлементовПоСтатусуСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область РаботаСФайлами
&НаКлиенте
Процедура ПослеУдаленияДанных(Результат, ДополнительныеПараметры) Экспорт
Элементы.Список.Обновить();
Если Элементы.ПоказыватьПомеченныеФайлы.Пометка = Истина Тогда
ПоказыватьПомеченныеФайлы(Истина);
КонецЕсли;
ОбновитьЗаголовокСпискаФайлов();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьФайл()
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ГруппаФайлов = Неопределено;
Если ТекущиеДанные <> Неопределено И ТекущиеДанные.ЭтоГруппа Тогда
ГруппаФайлов = ТекущиеДанные.Ссылка;
ИначеЕсли ТекущиеДанные <> Неопределено Тогда
ГруппаФайлов = ГруппаФайла(ТекущиеДанные.Ссылка);
КонецЕсли;
РаботаСФайламиКлиент.ДобавитьФайлы(Объект.Ссылка, УникальныйИдентификатор, , ГруппаФайлов);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайл()
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Зашифрован Тогда
Возврат;
КонецЕсли;
Если ЗапрещенныеРасширения.НайтиПоЗначению(ТекущиеДанные.Расширение) <> Неопределено Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ТекущиеДанные", ТекущиеДанные);
Оповещение = Новый ОписаниеОповещения("ОткрытьФайлПослеПодтверждения", ЭтотОбъект, ДополнительныеПараметры);
ПараметрыФормы = Новый Структура("Ключ", "ПередОткрытиемФайла");
ПараметрыФормы.Вставить("ИмяФайла",
ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением(ТекущиеДанные.Наименование, ТекущиеДанные.Расширение));
ОткрытьФорму("ОбщаяФорма.ПредупреждениеБезопасности", ПараметрыФормы, , , , , Оповещение);
Возврат;
КонецЕсли;
ФайлРедактируется = ТекущиеДанные.ФайлРедактируется И ТекущиеДанные.ФайлРедактируетТекущийПользователь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор);
Если ДанныеФайла.Зашифрован Тогда
ОповеститьОбИзменении(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла, ФайлРедактируется);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьКарточкуФайла()
Если НЕ ФайловыеКомандыДоступны() Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ТекущиеДанные.Ссылка);
ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ПараметрыФормы.Вставить("ПараметрыОтправки", ПараметрыОтправки);
Если ТекущиеДанные.ЭтоГруппа Тогда
ОткрытьФорму("Обработка.РаботаСФайлами.Форма.ГруппаФайлов", ПараметрыФормы);
Иначе
РаботаСФайламиКлиент.ОткрытьФормуФайла(ТекущиеДанные.Ссылка,, ПараметрыФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФайлПослеПодтверждения(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено И Результат = "Продолжить" Тогда
ТекущиеДанные = ДополнительныеПараметры.ТекущиеДанные;
ФайлРедактируется = ТекущиеДанные.ФайлРедактируется И ТекущиеДанные.ФайлРедактируетТекущийПользователь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор);
Если ДанныеФайла.Зашифрован Тогда
ОповеститьОбИзменении(ТекущиеДанные.Ссылка);
Возврат;
КонецЕсли;
РаботаСФайламиКлиент.ОткрытьФайл(ДанныеФайла, ФайлРедактируется);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗадатьВопросПользователюПриИзмененииФайла(ОписаниеЗавершения)
ТекстВопроса =
НСтр("ru = 'Выбранный файл используется в обмене по ЭДО.
|При изменении или замене файла электронный документ будет аннулирован.
|
|Продолжить?'");
ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопроса.Заголовок = НСтр("ru = 'Изменение файла отправленного по ЭДО'");
ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
ПараметрыВопроса.БлокироватьВесьИнтерфейс = Истина;
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
ОписаниеЗавершения,
ТекстВопроса,
РежимДиалогаВопрос.ДаНет,
ПараметрыВопроса);
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьЗавершение(Результат, Параметры = Неопределено) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Значение = КодВозвратаДиалога.Да Тогда
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные.Расширение = "xml" И ПризнакОтправкиФайлаЭДО(ТекущиеДанные.Ссылка) Тогда
РедактироватьXMLЗавершение(Новый Структура("Значение", КодВозвратаДиалога.Да))
ИначеЕсли ТекущиеДанные.Расширение = "xml" Тогда
ОписаниеЗавершения = Новый ОписаниеОповещения("РедактироватьXMLЗавершение", ЭтотОбъект);
ТекстВопроса =
НСтр("ru = 'Редактировать выбранный файл в редакторе XML-формата договорного документа для ЭДО?'");
ПараметрыВопроса = СтандартныеПодсистемыКлиент.ПараметрыВопросаПользователю();
ПараметрыВопроса.Заголовок = НСтр("ru = 'Редактирование XML-файла'");
ПараметрыВопроса.ПредлагатьБольшеНеЗадаватьЭтотВопрос = Ложь;
ПараметрыВопроса.БлокироватьВесьИнтерфейс = Истина;
СтандартныеПодсистемыКлиент.ПоказатьВопросПользователю(
ОписаниеЗавершения,
ТекстВопроса,
РежимДиалогаВопрос.ДаНет,
ПараметрыВопроса);
Возврат;
КонецЕсли;
РаботаСФайламиСлужебныйКлиент.РедактироватьСОповещением(Неопределено, ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РедактироватьXMLЗавершение(Результат, Параметры = Неопределено) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если Результат.Значение = КодВозвратаДиалога.Да Тогда
РезультатПолученияФайла = РаботаСФайламиСлужебныйВызовСервера.ЗанятьФайлДляРедактирования(ТекущиеДанные.Ссылка);
Если Не РезультатПолученияФайла.ДанныеПолучены Тогда
РаботаСФайламиКлиентПереопределяемый.ПриОшибкеЗахватаФайла(РезультатПолученияФайла.ДанныеФайла, Истина);
ПоказатьПредупреждение(, РезультатПолученияФайла.ТекстСообщения);
Возврат;
КонецЕсли;
Если Не РезультатПолученияФайла.ФайлУжеРедактируетТекущийПользователь Тогда
РаботаСФайламиСлужебныйКлиент.ИзменитьКоличествоЗанятыхФайлов(1);
КонецЕсли;
ПоказатьОповещениеПользователя(
НСтр("ru = 'Редактирование файла'"),
РезультатПолученияФайла.ДанныеФайла.НавигационнаяСсылка,
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Файл ""%1""
|занят для редактирования.'"),
Строка(ТекущиеДанные.Ссылка)),
БиблиотекаКартинок.Информация32);
Оповестить("Запись_Файл");
Оповестить("Запись_Файл", Новый Структура("Событие", "ДанныеФайлаИзменены"), ТекущиеДанные.Ссылка);
ПараметрыОткрытия = Новый Структура();
ПараметрыОткрытия.Вставить("ОбъектУчета", Объект.Ссылка);
ПараметрыОткрытия.Вставить("ДобавленныйФайл", ТекущиеДанные.Ссылка);
ПараметрыОткрытия.Вставить("Режим", "РедактированиеXML");
ПараметрыОткрытия.Вставить("ИдентификаторОсновногоФайла", ТекущиеДанные.Наименование);
ОткрытьФорму("Обработка.ФорматДоговорнойДокумент101XML.Форма.ФормаРедактированияФайлаXMLЭД", ПараметрыОткрытия);
Иначе
РаботаСФайламиСлужебныйКлиент.РедактироватьСОповещением(Неопределено, ТекущиеДанные.Ссылка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗанятьЗавершение(Результат, Параметры = Неопределено) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Значение = КодВозвратаДиалога.Да Тогда
КоличествоФайлов = Элементы.Список.ВыделенныеСтроки.Количество();
Если КоличествоФайлов = 1 Тогда
Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект);
РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, Элементы.Список.ТекущаяСтрока);
ИначеЕсли КоличествоФайлов > 1 Тогда
МассивФайлов = Новый Массив;
Для Каждого ЭлементСписка Из Элементы.Список.ВыделенныеСтроки Цикл
ДанныеСтроки = ДанныеСтрокиСписка(ЭлементСписка);
Если ЗначениеЗаполнено(ДанныеСтроки.РедактируетПользователь) Тогда
Продолжить;
КонецЕсли;
МассивФайлов.Добавить(ДанныеСтроки.Ссылка);
КонецЦикла;
Обработчик = Новый ОписаниеОповещения("УстановитьДоступностьФайловыхКоманд", ЭтотОбъект, МассивФайлов);
РаботаСФайламиСлужебныйКлиент.ЗанятьСОповещением(Обработчик, МассивФайлов);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьИзФайлаНаДискеЗавершение(Результат, Параметры = Неопределено) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Значение = КодВозвратаДиалога.Да Тогда
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаИРабочийКаталог(Элементы.Список.ТекущаяСтрока);
РаботаСФайламиСлужебныйКлиент.ОбновитьИзФайлаНаДискеСОповещением(Неопределено, ДанныеФайла, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПереместитьИлиСкопироватьПрисоединенныеФайлы(Знач МассивИменФайлов, Знач ВладелецФайла, Знач Действие)
ВладелецПеретаскиваемогоФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(МассивИменФайлов[0], "ВладелецФайла");
Если ТипЗнч(ВладелецПеретаскиваемогоФайла) <> ТипЗнч(ВладелецФайла) Тогда
Возврат;
КонецЕсли;
Если Действие = "Перемещение" Тогда
РаботаСФайламиСлужебныйВызовСервера.ПеренестиФайлы(МассивИменФайлов, ВладелецФайла);
ИначеЕсли Действие = "Копирование" Тогда
РаботаСФайламиСлужебныйВызовСервера.СкопироватьФайлы(МассивИменФайлов, ВладелецФайла);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ДанныеСтрокиСписка(ЭлементСписка)
Возврат Элементы.Список.ДанныеСтроки(ЭлементСписка);
КонецФункции
&НаСервере
Процедура НастроитьРаботуСписокФайлов()
НастроитьДинамическийСписокФайлов();
НастроитьВидимостьКомандСозданияСписокФайлов();
МетаданныеСправочникаСФайлами = Метаданные.Справочники.ДоговорыКонтрагентовПрисоединенныеФайлы;
ПоказыватьКолонкуРазмер = РаботаСФайламиСлужебный.ПоказыватьКолонкуРазмер();
Если Не ПоказыватьКолонкуРазмер Тогда
Элементы.СписокРазмер.Видимость = Ложь;
КонецЕсли;
ПараметрыОтправки = РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки();
НастройкиФайлов = РаботаСФайламиСлужебный.НастройкиФайлов();
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
ЕстьПравоИспользоватьШаблоны = МодульУправлениеДоступом.ЕстьПраво("Чтение", Справочники.ПапкиФайлов.Шаблоны);
Иначе
ЕстьПравоИспользоватьШаблоны = ПравоДоступа("Чтение", Метаданные.Справочники.Файлы) И ПравоДоступа("Чтение", Метаданные.Справочники.ПапкиФайлов)
КонецЕсли;
Если НЕ ЕстьПравоИспользоватьШаблоны Или НастройкиФайлов.НеСоздаватьФайлыПоШаблону.Найти(Метаданные.Справочники.ДоговорыКонтрагентов) <> Неопределено Тогда
Элементы.ДобавитьФайлПоШаблону.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблону.Видимость = Ложь;
КонецЕсли;
ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
ОбновитьПояснениеОблачногоСервиса();
Элементы.НастроитьСинхронизацию.Видимость = ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиСинхронизацииФайлов);
ЕстьЭлектроннаяПодписьФайлов = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись");
Элементы.ПечатьСоШтампом.Видимость = ЕстьЭлектроннаяПодписьФайлов;
Элементы.СравнитьФайлы.Видимость = Не ОбщегоНазначения.ЭтоLinuxКлиент() И Не ОбщегоНазначения.ЭтоВебКлиент();
ЗапрещенныеРасширения = РаботаСФайламиСлужебный.СписокЗапрещенныхРасширений();
ЕстьПравоДобавленияФайла = Истина;
Если НЕ ПравоДоступа("ИнтерактивноеДобавление", МетаданныеСправочникаСФайлами) Тогда
Элементы.ДобавитьИзФайлаНаДиске.Видимость = Ложь;
Элементы.ДобавитьФайлПоШаблону.Видимость = Ложь;
Элементы.ДобавитьФайлСоСканера.Видимость = Ложь;
Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюГруппаКомандДобавить.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь;
Элементы.СоздатьГруппу.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь;
Элементы.ФормаСкопировать.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюСкопировать.Видимость = Ложь;
ЕстьПравоДобавленияФайла = Ложь;
КонецЕсли;
ИменаЭлементовКнопокФормы = ОпределитьИменаЭлементовКнопокФормы();
Если Не ПравоДоступа("Редактирование", МетаданныеСправочникаСФайлами) Или ТолькоПросмотр Тогда
ИменаКоманд = ИменаКомандИзмененияОбъектов();
Для каждого ИмяЭлементаФормы Из ИменаЭлементовКнопокФормы Цикл
ЭлементФормы = Элементы.Найти(ИмяЭлементаФормы);
Если ИменаКоманд[ЭлементФормы.ИмяКоманды] <> Неопределено Тогда
ЭлементФормы.Видимость = Ложь;
КонецЕсли;
КонецЦикла;
Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
КонецЕсли;
ИспользоватьПредпросмотр = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы"), "Предпросмотр");
Если ИспользоватьПредпросмотр <> Неопределено Тогда
Предпросмотр = ИспользоватьПредпросмотр;
КонецЕсли;
Элементы.АдресДанныхФайла.Видимость = Предпросмотр;
Элементы.Предпросмотр.Пометка = Предпросмотр;
РасширенияПоддерживающиеПредпросмотр = РаботаСФайламиСлужебный.СписокРасширенийДляПредпросмотра();
УстановитьУсловноеОформлениеСпискаФайлов();
РаботаСФайламиСлужебный.УстановитьОтборПоПометкеУдаления(Список.Отбор);
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
ПараметрыРазмещения = МодульПодключаемыеКоманды.ПараметрыРазмещения();
Типы = Новый Массив;
Типы.Добавить(Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы"));
ПараметрыРазмещения.Источники = Новый ОписаниеТипов(Типы);
ПараметрыРазмещения.ПрефиксГрупп = "Файлы";
ПараметрыРазмещения.КоманднаяПанель = Элементы.Список.КоманднаяПанель;
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыРазмещения);
КонецЕсли;
Если ОбщегоНазначения.ЭтоМобильныйКлиент() Тогда
Элементы.ПодменюДобавить.Отображение = ОтображениеКнопки.Картинка;
Элементы.ДобавитьФайлСоСканера.Заголовок = НСтр("ru = 'С камеры устройства...'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НастроитьДинамическийСписокФайлов()
СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
ТекстЗапроса =
"ВЫБРАТЬ
| Файлы.Ссылка КАК Ссылка,
| Файлы.ПометкаУдаления КАК ПометкаУдаления,
| ВЫБОР
| КОГДА Файлы.ПометкаУдаления = ИСТИНА
| ТОГДА ЕСТЬNULL(Файлы.ИндексКартинки, 2) + 1
| ИНАЧЕ ЕСТЬNULL(Файлы.ИндексКартинки, 2)
| КОНЕЦ КАК ИндексКартинки,
| Файлы.Наименование КАК Наименование,
| ВЫРАЗИТЬ(Файлы.Описание КАК СТРОКА(500)) КАК Описание,
| Файлы.Автор КАК Автор,
| Файлы.ДатаСоздания КАК ДатаСоздания,
| Файлы.Изменил КАК Отредактировал,
| ДОБАВИТЬКДАТЕ(Файлы.ДатаМодификацииУниверсальная, СЕКУНДА, &СекундДоМестногоВремени) КАК ДатаИзменения,
| ВЫРАЗИТЬ(Файлы.Размер / 1024 КАК ЧИСЛО(10, 0)) КАК Размер,
| Файлы.ПодписанЭП КАК ПодписанЭП,
| Файлы.Зашифрован КАК Зашифрован,
| ВЫБОР
| КОГДА Файлы.ПодписанЭП
| И Файлы.Зашифрован
| ТОГДА 2
| КОГДА Файлы.Зашифрован
| ТОГДА 1
| КОГДА Файлы.ПодписанЭП
| ТОГДА 0
| ИНАЧЕ -1
| КОНЕЦ КАК НомерКартинкиПодписанЗашифрован,
| ВЫБОР
| КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируется,
| ВЫБОР
| КОГДА Файлы.Редактирует = &ТекущийПользователь
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируетТекущийПользователь,
| ВЫБОР
| КОГДА НЕ Файлы.Редактирует В (&ПустыеПользователи)
| И Файлы.Редактирует <> &ТекущийПользователь
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ФайлРедактируетДругойПользователь,
| Файлы.Расширение КАК Расширение,
| ВЫБОР
| КОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись <> НЕОПРЕДЕЛЕНО
| И Файлы.Редактирует = НЕОПРЕДЕЛЕНО
| ТОГДА СтатусыСинхронизацииФайловСОблачнымСервисом.УчетнаяЗапись
| ИНАЧЕ Файлы.Редактирует
| КОНЕЦ КАК Редактирует,
| Файлы.Редактирует КАК РедактируетПользователь,
| Файлы.ЭтоГруппа КАК ЭтоГруппа,
| ЛОЖЬ КАК Служебный,
| Файлы.ВладелецФайла КАК ВладелецФайла,
| ВЫБОР
| КОГДА Файлы.Расширение В (&Расширение)
| И Файлы.ОтправленПолученЭД = ИСТИНА
| ТОГДА &ТекстКолонкиСостояниеЭДО
| КОГДА Файлы.Расширение В (&Расширение)
| И Файлы.ОтправленПолученЭД = ЛОЖЬ
| ТОГДА &ТекстКолонкиЭДО
| ИНАЧЕ """"
| КОНЕЦ КАК ОтправленПолученЭД,
| Файлы.ХранитьВерсии КАК ХранитьВерсии
|ИЗ
| &ИмяСправочника КАК Файлы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыСинхронизацииФайловСОблачнымСервисом КАК СтатусыСинхронизацииФайловСОблачнымСервисом
| ПО Файлы.Ссылка = СтатусыСинхронизацииФайловСОблачнымСервисом.Файл
|ГДЕ
| Файлы.ВладелецФайла = &ВладелецФайлов
| И Файлы.ВладелецФайла <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)";
ПолноеИмяСправочника = "Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы";
СвойстваСписка.ОсновнаяТаблица = ПолноеИмяСправочника;
СвойстваСписка.ДинамическоеСчитываниеДанных = Истина;
ДоступноЧтениеЭДО = УправлениеДоступом.ЕстьРоль("ЧтениеЭлектронныхДокументов");
ДоступноДобавлениеЭДО = УправлениеДоступом.ЕстьРоль("ДобавлениеИзменениеЭлектронныхДокументов");
Если Не ДоступноЧтениеЭДО И Не ДоступноДобавлениеЭДО Или ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие = Неопределено Тогда
Элементы.ОтправленПолученЭД.Видимость = Ложь;
ИначеЕсли ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.СуществуетАктуальныйДокумент Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """""");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """"+ ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.ПредставлениеСостояния +"""");
ИначеЕсли ДоступноДобавлениеЭДО Тогда
ТекстКолонкиЭДО = НСтр("ru = 'Отправить по ЭДО'");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """"+ТекстКолонкиЭДО+"""");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """""");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиЭДО", """""");
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстКолонкиСостояниеЭДО", """""");
КонецЕсли;
ОбъектыУчетаМассив = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка);
НастройкиОтправки = ОбменСКонтрагентами.НастройкиОтправки(ОбъектыУчетаМассив);
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
НастройкиОтправки = НастройкиОтправки.Получить(Объект.Ссылка);
Если НастройкиОтправки <> Неопределено Тогда
Если НастройкиОтправки.Формат = "ON_DOGDOC_1_999_01_01_01_01" Тогда
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """"+"pdf"+"""");
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """"+"xml"+"""");
КонецЕсли;
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """pdf"", ""xml""");
КонецЕсли;
Иначе
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&Расширение", """pdf"", ""xml""");
КонецЕсли;
СвойстваСписка.ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ИмяСправочника", ПолноеИмяСправочника);
ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
ПустыеПользователи = Новый Массив;
ПустыеПользователи.Добавить(Неопределено);
ПустыеПользователи.Добавить(Справочники.Пользователи.ПустаяСсылка());
ПустыеПользователи.Добавить(Справочники.ВнешниеПользователи.ПустаяСсылка());
ПустыеПользователи.Добавить(Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка());
Список.Параметры.УстановитьЗначениеПараметра("ВладелецФайлов", Объект.Ссылка);
Список.Параметры.УстановитьЗначениеПараметра("ТекущийПользователь", Пользователи.АвторизованныйПользователь());
Список.Параметры.УстановитьЗначениеПараметра("ПустыеПользователи", ПустыеПользователи);
ДатаУниверсальная = ТекущаяДатаСеанса();
Список.Параметры.УстановитьЗначениеПараметра("СекундДоМестногоВремени",
МестноеВремя(ДатаУниверсальная, ЧасовойПоясСеанса()) - ДатаУниверсальная);
ОбновитьЗаголовокСпискаФайлов();
КонецПроцедуры
&НаСервере
Процедура НастроитьВидимостьКомандСозданияСписокФайлов()
Если Объект.Ссылка.Пустая() Тогда
Элементы.ПодменюДобавить.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюГруппаКомандДобавить.Видимость = Ложь;
Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Ложь;
Элементы.СоздатьГруппу.Видимость = Ложь;
Элементы.ФормаГруппаИмпорт.Видимость = Ложь;
Элементы.ЗагрузитьФайлы.Видимость = Ложь;
Элементы.ЗагрузитьПапку.Видимость = Ложь;
Иначе
Элементы.ПодменюДобавить.Видимость = Истина;
Элементы.СписокКонтекстноеМенюГруппаКомандДобавить.Видимость = Истина;
Элементы.ДобавитьФайлПоШаблонуДоговора.Видимость = Истина;
Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблонуДоговора.Видимость = Истина;
Элементы.СоздатьГруппу.Видимость = Истина;
Элементы.ФормаГруппаИмпорт.Видимость = Ложь;
Элементы.ЗагрузитьФайлы.Видимость = Ложь;
Элементы.ЗагрузитьПапку.Видимость = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РаботаСФайламиОбработкаОповещения(ИмяСобытия, Параметр, Источник)
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ВРег(ИмяСобытия) = ВРег("Запись_НаборКонстант")
И (ВРег(Источник) = ВРег("ИспользоватьЭлектронныеПодписи")
Или ВРег(Источник) = ВРег("ИспользоватьШифрование")) Тогда
ПодключитьОбработчикОжидания("ПриИзмененииИспользованияПодписанияИлиШифрования", 0.3, Истина);
Возврат;
ИначеЕсли ИмяСобытия = "Запись_Файл" Тогда
Если ЗначениеЗаполнено(Параметр) И Параметр.Свойство("Событие") И Параметр.Событие = "ВерсияСохранена"
И ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие <> Неопределено
И ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.СуществуетАктуальныйДокумент Тогда
ПараметрыОповещенияЭДО = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаСправочника();
ПараметрыОповещенияЭДО.Форма = ЭтотОбъект;
ПараметрыОповещенияЭДО.СправочникСсылка = Объект.Ссылка;
ПараметрыОповещенияЭДО.КонтроллерСостояниеЭДО = Элементы.ДекорацияСостояниеЭДО;
ПараметрыОповещенияЭДО.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаСправочника(ИнтерфейсДокументовЭДОКлиент.ИмяСобытияОбновленияСостоянияЭДО(), Параметр, Источник,
ПараметрыОповещенияЭДО);
НастроитьДинамическийСписокФайлов();
КонецЕсли;
Если Не ЗначениеЗаполнено(Источник)
Или (ТипЗнч(Источник) = Тип("Массив")
И Источник.Количество() = 0) Тогда
НастроитьДинамическийСписокФайлов();
Элементы.Список.Обновить();
Возврат;
КонецЕсли;
СсылкаНаФайл = ?(ТипЗнч(Источник) = Тип("Массив"), Источник[0], Источник);
Если ТипЗнч(СсылкаНаФайл) <> Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы") Тогда
Возврат;
КонецЕсли;
Если Параметр.Свойство("ЭтоНовый") И Параметр.ЭтоНовый Тогда
Элементы.Список.ТекущаяСтрока = СсылкаНаФайл;
УстановитьДоступностьФайловыхКоманд();
ИначеЕсли ФайловыеКомандыДоступны() И ТекущиеДанные <> Неопределено
И СсылкаНаФайл = ТекущиеДанные.Ссылка Тогда
УстановитьДоступностьФайловыхКоманд();
КонецЕсли;
ОбновитьЗаголовокСпискаФайлов();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "Запись_ПапкиФайлов" Тогда
УстановитьДоступностьФайловыхКоманд();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = ИнтерфейсДокументовЭДОКлиент.ИмяСобытияОбновленияСостоянияЭДО() Тогда
Если ЗначениеЗаполнено(ФайлОтправленПолученЭД) Тогда
Если ЭтотОбъект.ПараметрыОбменаСКонтрагентами.ДанныеСостоянияЭДОТекущие.СуществуетАктуальныйДокумент Тогда
ОбменСКонтрагентамиУТВызовСервера.ОбновитьСостояниеОтправленногоФайлаДоговорногоДокумента(ФайлОтправленПолученЭД, Истина);
ФайлОтправленПолученЭД = Неопределено;
КонецЕсли;
КонецЕсли;
НастроитьДинамическийСписокФайлов();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "ДобавленФайлКЭДОДоговорныйДокумент" Тогда
Если Источник = Объект.Ссылка Тогда
ФайлОтправленПолученЭД = Параметр;
КонецЕсли;
УстановитьДоступностьФайловыхКоманд();
НастроитьДинамическийСписокФайлов();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "ОбновитьТекущиеДелаЭДО" Тогда
НастроитьДинамическийСписокФайлов();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "РедактированиеФайлаЭДО" Тогда
ФайлВСтадииРедактированияЭДО = Источник;
УстановитьДоступностьФайловыхКоманд();
Элементы.Список.Обновить();
ИначеЕсли ИмяСобытия = "ЗавершениеРедактированияФайлаЭДО" Тогда
ФайлВСтадииРедактированияЭДО = Неопределено;
УстановитьДоступностьФайловыхКоманд();
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьПояснениеОблачногоСервиса()
ВидимостьПояснения = Ложь;
Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюФайлов") Тогда
СведенияОСинхронизации = РаботаСФайламиСлужебный.СведенияОСинхронизации(Объект.Ссылка);
Если СведенияОСинхронизации <> Неопределено Тогда
ФайлыРедактируютсяВОблачномСервисе = Истина;
УчетнаяЗапись = СведенияОСинхронизации.УчетнаяЗапись;
ВидимостьПояснения = Истина;
Элементы.ДекорацияПояснение.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Работа с файлами ведется в облачном сервисе <a href=""%1"">%2</a>.'"),
СведенияОСинхронизации.АдресПапкиВОблачномСервисе, СведенияОСинхронизации.УчетнаяЗаписьНаименование);
Элементы.ДекорацияКартинкаСтатусСинхронизации.Видимость = НЕ СведенияОСинхронизации.Синхронизирован;
Элементы.ДекорацияДатаСинхронизации.ОтображениеПодсказки =?(СведенияОСинхронизации.Синхронизирован,
ОтображениеПодсказки.Нет, ОтображениеПодсказки.Кнопка);
Элементы.ДекорацияДатаСинхронизации.Заголовок = СтроковыеФункции.ФорматированнаяСтрока(
НСтр("ru = 'Синхронизировано: <a href=""%1"">%2</a>'"),
"OpenJournal", Формат(СведенияОСинхронизации.ДатаСинхронизации, "ДЛФ=DD"));
КонецЕсли;
КонецЕсли;
Элементы.ГруппаПояснениеОблачногоСервиса.Видимость = ВидимостьПояснения;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьФайловыхКоманд(Результат = Неопределено, ПараметрыВыполнения = Неопределено) Экспорт
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
ИменаКоманд = Новый Соответствие;
Если ТекущиеДанные = Неопределено И Не ФайлыРедактируютсяВОблачномСервисе Тогда
ИменаКоманд.Вставить("ДобавитьФайлСДиска", Истина);
ИменаКоманд.Вставить("ДобавитьФайлСоСканера", Истина);
ИменаКоманд.Вставить("ДобавитьФайлПоШаблону", Истина);
ИменаКоманд.Вставить("ДобавитьФайлПоШаблонуДоговора", Истина);
ИменаКоманд.Вставить("ЗагрузитьФайлы", Истина);
ИменаКоманд.Вставить("ЗагрузитьПапкуФайлов", Истина);
ИначеЕсли ТекущиеДанные <> Неопределено
И ТипЗнч(Элементы.Список.ТекущаяСтрока) = Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы") Тогда
ВозможностьОсвободитьФайл = РаботаСФайламиСлужебныйКлиент.ВозможностьОсвободитьФайл(
ТекущиеДанные.Ссылка,
ТекущиеДанные.ФайлРедактируетТекущийПользователь,
ТекущиеДанные.РедактируетПользователь);
ПризнакФайлВСтадииРедактированияЭДО = Ложь;
Если ЗначениеЗаполнено(ФайлВСтадииРедактированияЭДО)
И ТекущиеДанные.Ссылка = ФайлВСтадииРедактированияЭДО Тогда
ПризнакФайлВСтадииРедактированияЭДО = Истина;
КонецЕсли;
ПризнакФайлВСтадииОтправкиЭДО = Ложь;
Если ЕстьПравоОтправкиЭД И ИнтерфейсДокументовЭДОУТКлиент.ФормаДоговорногоДокументаОткрыта(Объект.Ссылка) Тогда
ПризнакФайлВСтадииОтправкиЭДО = Истина;
КонецЕсли;
ИменаКоманд = ДоступныеКоманды(ТекущиеДанные, ФайлыРедактируютсяВОблачномСервисе,
ВозможностьОсвободитьФайл, ПользователиКлиент.АвторизованныйПользователь(),
ПризнакФайлВСтадииРедактированияЭДО, ПризнакФайлВСтадииОтправкиЭДО);
КонецЕсли;
Если ТекущиеДанные <> Неопределено Тогда
Элементы.ПечатьСоШтампом.Видимость = ЕстьЭлектроннаяПодписьФайлов
И (ТекущиеДанные.Расширение = "mxl") ИЛИ (ТекущиеДанные.Расширение = "docx")
И ТекущиеДанные.ПодписанЭП;
КонецЕсли;
Для каждого ИмяЭлементаФормы Из ИменаЭлементовКнопокФормы Цикл
ЭлементФормы = Элементы.Найти(ИмяЭлементаФормы);
Если ИменаКоманд[ЭлементФормы.ИмяКоманды] = Истина Или ИменаКоманд[ЭлементФормы.Имя] = Истина Тогда
Если НЕ ЭлементФормы.Доступность Тогда
ЭлементФормы.Доступность = Истина;
КонецЕсли;
ИначеЕсли ЭлементФормы.Доступность Тогда
ЭлементФормы.Доступность = Ложь;
КонецЕсли;
КонецЦикла;
ПодключитьОбработчикОжидания("ОбновитьПредпросмотр", 0.1, Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИменаКомандФормы()
Результат = ИменаКомандИзмененияОбъектов();
Результат.Вставить("ОткрытьКаталогФайла", Истина);
Результат.Вставить("ОткрытьФайлДляПросмотра", Истина);
Результат.Вставить("СохранитьКак", Истина);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ИменаКомандИзмененияОбъектов()
Результат = Новый Соответствие;
Результат.Вставить("ЗакончитьРедактированиеФайла", Истина);
Результат.Вставить("ЗанятьФайл", Истина);
Результат.Вставить("ОсвободитьФайл", Истина);
Результат.Вставить("РедактироватьФайл", Истина);
Результат.Вставить("УстановитьПометкуУдаленияФайла", Истина);
Результат.Вставить("УдалитьФайл", Истина);
Результат.Вставить("КонтекстноеМенюУстановитьПометкуУдаления", Истина);
Результат.Вставить("ПодписатьФайл", Истина);
Результат.Вставить("ДобавитьЭПИзФайла", Истина);
Результат.Вставить("СохранитьФайлВместеСЭП", Истина);
Результат.Вставить("ЗашифроватьФайл", Истина);
Результат.Вставить("РасшифроватьФайл", Истина);
Результат.Вставить("ПечатьФайла", Истина);
Результат.Вставить("ПечатьСоШтампомФайла", Истина);
Результат.Вставить("ОтправитьФайл", Истина);
Результат.Вставить("ОбновитьИзФайлаНаДиске", Истина);
Результат.Вставить("ДобавитьФайлСДиска", Истина);
Результат.Вставить("ДобавитьИзФайлаНаДиске", Истина);
Результат.Вставить("ДобавитьФайлПоШаблону", Истина);
Результат.Вставить("ДобавитьФайлПоШаблонуДоговора", Истина);
Результат.Вставить("ДобавитьФайлСоСканера", Истина);
Результат.Вставить("ОткрытьСвойстваФайла", Истина);
Результат.Вставить("СкопироватьФайл", Истина);
Результат.Вставить("ЗагрузитьФайлы", Истина);
Результат.Вставить("ЗагрузитьПапкуФайлов", Истина);
Результат.Вставить("ПереместитьВГруппуФайлов", Истина);
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ДоступныеКоманды(ТекущиеДанныеФайла, ФайлыРедактируютсяВОблачномСервисе, ВозможностьОсвободитьФайл,
АвторизованныйПользователь, ПризнакФайлВСтадииРедактированияЭДО, ПризнакФайлВСтадииОтправкиЭДО)
ИменаКоманд = ИменаКомандФормы();
ФайлРедактируетТекущийПользователь = ТекущиеДанныеФайла.ФайлРедактируетТекущийПользователь;
АвторТекущийПользователь = ТекущиеДанныеФайла.Автор = АвторизованныйПользователь;
ФайлРедактируется = ТекущиеДанныеФайла.ФайлРедактируется;
ФайлПодписан = ТекущиеДанныеФайла.ПодписанЭП;
ФайлЗашифрован = ТекущиеДанныеФайла.Зашифрован;
ПризнакФайлВСтадииРедактированияЭДО = ПризнакФайлВСтадииРедактированияЭДО;
ПризнакФайлВСтадииОтправкиЭДО = ПризнакФайлВСтадииОтправкиЭДО;
Если ФайлРедактируется Тогда
Если ФайлРедактируетТекущийПользователь Тогда
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
Иначе
ИменаКоманд["ЗакончитьРедактированиеФайла"] = Ложь;
Если Не ВозможностьОсвободитьФайл Тогда
ИменаКоманд["ОсвободитьФайл"] = Ложь;
КонецЕсли;
ИменаКоманд["РедактироватьФайл"] = Ложь;
КонецЕсли;
ИменаКоманд["ЗанятьФайл"] = Ложь;
ИменаКоманд["УстановитьПометкуУдаленияФайла"] = Ложь;
ИменаКоманд["КонтекстноеМенюУстановитьПометкуУдаления"] = Ложь;
ИменаКоманд["ПодписатьФайл"] = Ложь;
ИменаКоманд["ДобавитьЭПИзФайла"] = Ложь;
ИменаКоманд["СохранитьФайлВместеСЭП"] = Ложь;
ИменаКоманд["ОткрытьСвойстваФайла"] = Ложь;
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["СохранитьКак"] = Ложь;
ИменаКоманд["ЗашифроватьФайл"] = Ложь;
ИменаКоманд["РасшифроватьФайл"] = Ложь;
ИменаКоманд["УдалитьФайл"] = Ложь;
Иначе
ИменаКоманд["ЗакончитьРедактированиеФайла"] = Ложь;
ИменаКоманд["ОсвободитьФайл"] = Ложь;
КонецЕсли;
Если ПризнакФайлВСтадииРедактированияЭДО Или ПризнакФайлВСтадииОтправкиЭДО Тогда
ИменаКоманд["ЗакончитьРедактированиеФайла"] = Ложь;
Если Не ВозможностьОсвободитьФайл Тогда
ИменаКоманд["ОсвободитьФайл"] = Ложь;
КонецЕсли;
ИменаКоманд["РедактироватьФайл"] = Ложь;
ИменаКоманд["ЗанятьФайл"] = Ложь;
ИменаКоманд["УстановитьПометкуУдаленияФайла"] = Ложь;
ИменаКоманд["КонтекстноеМенюУстановитьПометкуУдаления"] = Ложь;
ИменаКоманд["ОткрытьСвойстваФайла"] = Ложь;
ИменаКоманд["ПодписатьФайл"] = Ложь;
ИменаКоманд["ДобавитьЭПИзФайла"] = Ложь;
ИменаКоманд["СохранитьФайлВместеСЭП"] = Ложь;
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["СохранитьКак"] = Ложь;
ИменаКоманд["ЗашифроватьФайл"] = Ложь;
ИменаКоманд["РасшифроватьФайл"] = Ложь;
ИменаКоманд["УдалитьФайл"] = Ложь;
КонецЕсли;
Если ТекущиеДанныеФайла.ЭтоГруппа Тогда
ИменаКоманд["РедактироватьФайл"] = Ложь;
ИменаКоманд["ПодписатьФайл"] = Ложь;
ИменаКоманд["ДобавитьЭПИзФайла"] = Ложь;
ИменаКоманд["СохранитьФайлВместеСЭП"] = Ложь;
ИменаКоманд["ЗашифроватьФайл"] = Ложь;
ИменаКоманд["РасшифроватьФайл"] = Ложь;
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["СкопироватьФайл"] = Ложь;
ИменаКоманд["ОткрытьКаталогФайла"] = Ложь;
ИменаКоманд["ОткрытьФайлДляПросмотра"] = Ложь;
ИменаКоманд["СохранитьКак"] = Ложь;
ИменаКоманд["ЗанятьФайл"] = Ложь;
ИменаКоманд["ОтправитьФайл"] = Ложь;
ИменаКоманд["ПечатьСоШтампомФайла"] = Ложь;
ИменаКоманд["ПечатьФайла"] = Ложь;
ИменаКоманд["УдалитьФайл"] = Ложь;
КонецЕсли;
Если ФайлПодписан Тогда
ИменаКоманд["ЗакончитьРедактированиеФайла"] = Ложь;
ИменаКоманд["ОсвободитьФайл"] = Ложь;
ИменаКоманд["РедактироватьФайл"] = Ложь;
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["ЗанятьФайл"] = Ложь;
КонецЕсли;
Если ФайлЗашифрован Тогда
ИменаКоманд["ПодписатьФайл"] = Ложь;
ИменаКоманд["ДобавитьЭПИзФайла"] = Ложь;
ИменаКоманд["СохранитьФайлВместеСЭП"] = Ложь;
ИменаКоманд["ЗакончитьРедактированиеФайла"] = Ложь;
ИменаКоманд["ОсвободитьФайл"] = Ложь;
ИменаКоманд["РедактироватьФайл"] = Ложь;
ИменаКоманд["ЗанятьФайл"] = Ложь;
ИменаКоманд["ОбновитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["ЗашифроватьФайл"] = Ложь;
ИменаКоманд["ОткрытьКаталогФайла"] = Ложь;
ИменаКоманд["ОткрытьФайлДляПросмотра"] = Ложь;
ИменаКоманд["СохранитьКак"] = Ложь;
Иначе
ИменаКоманд["РасшифроватьФайл"] = Ложь;
КонецЕсли;
Если ФайлыРедактируютсяВОблачномСервисе Тогда
ИменаКоманд["ДобавитьФайлСДиска"] = Ложь;
ИменаКоманд["ДобавитьИзФайлаНаДиске"] = Ложь;
ИменаКоманд["ДобавитьФайлПоШаблону"] = Ложь;
ИменаКоманд["ДобавитьФайлПоШаблонуДоговора"] = Ложь;
ИменаКоманд["ДобавитьФайлСоСканера"] = Ложь;
ИменаКоманд["СкопироватьФайл"] = Ложь;
ИменаКоманд["СоздатьГруппуФайлов"] = Ложь;
ИменаКоманд["ПереместитьВГруппуФайлов"] = Ложь;
ИменаКоманд["УстановитьПометкуУдаленияФайла"] = Ложь;
ИменаКоманд["КонтекстноеМенюУстановитьПометкуУдаления"] = Ложь;
ИменаКоманд["ЗанятьФайл"] = Ложь;
ИменаКоманд["ОсвободитьФайл"] = Ложь;
ИменаКоманд["ЗагрузитьФайлы"] = Ложь;
ИменаКоманд["ЗагрузитьПапкуФайлов"] = Ложь;
ИменаКоманд["УдалитьФайл"] = Ложь;
ИменаКоманд["ПодписатьФайл"] = Ложь;
ИменаКоманд["ДобавитьЭПИзФайла"] = Ложь;
ИменаКоманд["ЗашифроватьФайл"] = Ложь;
ИменаКоманд["РасшифроватьФайл"] = Ложь;
КонецЕсли;
Если Не АвторТекущийПользователь Тогда
ИменаКоманд["УдалитьФайл"] = Ложь;
КонецЕсли;
Возврат ИменаКоманд;
КонецФункции
&НаКлиенте
Процедура ДобавлениеПодписейЗавершить(Успех, Контекст) Экспорт
Если Успех = Истина Тогда
УстановитьДоступностьФайловыхКоманд();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииИспользованияПодписанияИлиШифрования()
ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере()
РаботаСФайламиСлужебный.КриптографияПриСозданииФормыНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СохранитьВариантПредпросмотра(ТипСправочникаСФайлами, Предпросмотр)
ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы"), "Предпросмотр", Предпросмотр);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПриОтправкеФайловПочтой(ПараметрыОтправки, Знач ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор)
РаботаСФайламиПереопределяемый.ПриОтправкеФайловПочтой(ПараметрыОтправки, ФайлыДляОтправки, ВладелецФайлов, УникальныйИдентификатор);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьСнятьПометкуУдаления(ФайлСсылка)
ФайлСсылка.ПолучитьОбъект().УстановитьПометкуУдаления(Не ФайлСсылка.ПометкаУдаления);
КонецПроцедуры
&НаСервере
Процедура ДобавитьПолеПредпросмотраДокументаPDF()
ДобавляемыеРеквизиты = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("ДокументPDF", Новый ОписаниеТипов("ДокументPDF"));
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
ЭтотОбъект.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
НовыйЭлемент = ЭтотОбъект.Элементы.Добавить("ДокументPDF", Тип("ПолеФормы"), Элементы.ГруппаФайлы);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеPDFДокумента;
НовыйЭлемент.Видимость = Предпросмотр;
НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовыйЭлемент.ПутьКДанным = "ДокументPDF";
КонецПроцедуры
&НаКлиенте
Процедура УстановитьВидимостьПредпросмотра(ИспользоватьПредпросмотр)
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные <> Неопределено И ТекущиеДанные.Расширение = "pdf" Тогда
#Если Не МобильныйКлиент Тогда
Элементы.ДокументPDF.Видимость = ИспользоватьПредпросмотр;
#КонецЕсли
Иначе
Элементы.АдресДанныхФайла.Видимость = ИспользоватьПредпросмотр;
КонецЕсли;
Элементы.Предпросмотр.Пометка = ИспользоватьПредпросмотр;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПредпросмотр()
Если Не Предпросмотр Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеСпискаФайлов();
Если ТекущиеДанные <> Неопределено И РасширенияПоддерживающиеПредпросмотр.НайтиПоЗначению(ТекущиеДанные.Расширение) <> Неопределено Тогда
Элементы.АдресДанныхФайла.Видимость = Истина;
#Если Не МобильныйКлиент Тогда
Элементы.ДокументPDF.Видимость = Ложь;
#КонецЕсли
Попытка
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор,, АдресДанныхФайла);
АдресДанныхФайла = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
Исключение
АдресДанныхФайла = Неопределено;
ТекстНевыбраннойКартинки = НСтр("ru = 'Предварительный просмотр недоступен по причине:'")
+ Символы.ПС + ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
ИначеЕсли ТекущиеДанные <> Неопределено И ТекущиеДанные.Расширение = "pdf" Тогда
#Если Не МобильныйКлиент Тогда
Попытка
Элементы.ДокументPDF.Видимость = Истина;
Элементы.АдресДанныхФайла.Видимость = Ложь;
ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ТекущиеДанные.Ссылка, Неопределено, УникальныйИдентификатор,, АдресДанныхФайла);
АдресДанныхФайла = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресДанныхФайла);
Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения();
ЭтотОбъект["ДокументPDF"].Прочитать(Поток);
Исключение
Элементы.АдресДанныхФайла.Видимость = Истина;
Элементы.ДокументPDF.Видимость = Ложь;
АдресДанныхФайла = Неопределено;
ТекстНевыбраннойКартинки = НСтр("ru = 'Предварительный просмотр недоступен по причине:'")
+ Символы.ПС + ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки;
#Иначе
Элементы.АдресДанныхФайла.Видимость = Истина;
АдресДанныхФайла = Неопределено;
ТекстНевыбраннойКартинки = НСтр("ru = 'Нет данных для предварительного просмотра'");
#КонецЕсли
Иначе
Элементы.АдресДанныхФайла.Видимость = Истина;
#Если Не МобильныйКлиент Тогда
Элементы.ДокументPDF.Видимость = Ложь;
#КонецЕсли
АдресДанныхФайла = Неопределено;
ТекстНевыбраннойКартинки = НСтр("ru = 'Нет данных для предварительного просмотра'");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(АдресДанныхФайла) Тогда
Элементы.АдресДанныхФайла.ТекстНевыбраннойКартинки = ТекстНевыбраннойКартинки;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыборПослеВыбораРежимаРедактирования(Результат, ПараметрыВыполнения) Экспорт
Если Результат = "Редактировать" Тогда
Обработчик = Новый ОписаниеОповещения("СписокВыборПослеРедактированияФайла", ЭтотОбъект, ПараметрыВыполнения);
РаботаСФайламиСлужебныйКлиент.РедактироватьФайл(Обработчик, ПараметрыВыполнения.ДанныеФайла);
ИначеЕсли Результат = "Открыть" Тогда
РаботаСФайламиКлиент.ОткрытьФайл(ПараметрыВыполнения.ДанныеФайла, Ложь);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокВыборПослеРедактированияФайла(Результат, ПараметрыВыполнения) Экспорт
ОповеститьОбИзменении(ПараметрыВыполнения.ДанныеФайла.Ссылка);
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросОПометкиНаУдаление(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
УстановитьСнятьПометкуУдаления(ДополнительныеПараметры.ФайлСсылка);
Оповестить("Запись_Файл", Новый Структура("Событие", "ДанныеФайлаИзменены"), Элементы.Список.ВыделенныеСтроки);
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСпискаФайлов()
Список.УсловноеОформление.Элементы.Очистить();
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФайлРедактируетДругойПользователь");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ФайлРедактируетТекущийПользователь");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ФайлЗанятыйТекущимПользователем);
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВладелецФайла");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Объект.Ссылка;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ЭтоГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь);
Элемент = Список.УсловноеОформление.Элементы.Добавить();
Элемент.Использование = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.Использование = Истина;
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Служебный");
Отбор.ПравоеЗначение = Истина;
Элемент = Список.УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОтправленПолученЭД.Имя);
ЭлементОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОтправленПолученЭД");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОтбора.Использование = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
Элемент.Использование = Истина;
КонецПроцедуры
&НаСервере
Процедура ОбновитьЗаголовокСпискаФайлов()
КоличествоПрисоединенныхФайлов = РаботаСФайламиСлужебныйВызовСервера.КоличествоПрисоединенныхФайлов(Объект.Ссылка);
Если КоличествоПрисоединенныхФайлов > 0 И Не Объект.Ссылка.Пустая() Тогда
Элементы.СтраницаФайлы.Заголовок = НСтр("ru = 'Файлы'") + " (" + Формат(КоличествоПрисоединенныхФайлов, "ЧГ=") + ")";
Иначе
Элементы.СтраницаФайлы.Заголовок = НСтр("ru = 'Файлы'");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция ТекущиеДанныеСпискаФайлов()
Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
Возврат Неопределено;
ИначеЕсли Элементы.Список.ТекущиеДанные.ВладелецФайла = Объект.Ссылка Тогда
Возврат Элементы.Список.ТекущиеДанные;
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаКлиенте
Функция ФайловыеКомандыДоступны()
Возврат РаботаСФайламиСлужебныйКлиент.ФайловыеКомандыДоступны(Элементы);
КонецФункции
&НаСервере
Функция ПараметрыНастройкиСинхронизации(ВладелецФайла)
ТипВладельцаФайла = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(Тип("СправочникСсылка.ДоговорыКонтрагентовПрисоединенныеФайлы"));
Отбор = Новый Структура(
"ВладелецФайла, ТипВладельцаФайла, УчетнаяЗапись",
ВладелецФайла,
ТипВладельцаФайла,
Справочники.УчетныеЗаписиСинхронизацииФайлов.ПустаяСсылка());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| НастройкиСинхронизацииФайлов.ВладелецФайла,
| НастройкиСинхронизацииФайлов.ТипВладельцаФайла,
| НастройкиСинхронизацииФайлов.УчетнаяЗапись
|ИЗ
| РегистрСведений.НастройкиСинхронизацииФайлов КАК НастройкиСинхронизацииФайлов
|ГДЕ
| НастройкиСинхронизацииФайлов.ВладелецФайла = &ВладелецФайла
| И НастройкиСинхронизацииФайлов.ТипВладельцаФайла = &ТипВладельцаФайла";
Запрос.УстановитьПараметр("ВладелецФайла", ВладелецФайла);
Запрос.УстановитьПараметр("ТипВладельцаФайла", ТипВладельцаФайла);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Количество() = 1 Тогда
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Отбор.УчетнаяЗапись = ВыборкаДетальныеЗаписи.УчетнаяЗапись;
КонецЦикла;
КонецЕсли;
Возврат Отбор;
КонецФункции
&НаСервереБезКонтекста
Функция ДанныеОтбораЖурналаРегистрации(Сервис)
Возврат РаботаСФайламиСлужебный.ДанныеОтбораЖурналаРегистрации(Сервис);
КонецФункции
&НаСервере
Функция ОпределитьИменаЭлементовКнопокФормы()
ИменаКомандФормы = ИменаКомандФормы();
ИменаЭлементов = Новый Массив;
Для Каждого ЭлементФормы Из Элементы Цикл
Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда
Продолжить;
КонецЕсли;
Если ИменаКомандФормы[ЭлементФормы.ИмяКоманды] <> Неопределено
Или ИменаКомандФормы[ЭлементФормы.Имя] <> Неопределено Тогда
ИменаЭлементов.Добавить(ЭлементФормы.Имя);
КонецЕсли;
КонецЦикла;
Возврат Новый ФиксированныйМассив(ИменаЭлементов);
КонецФункции
&НаКлиенте
Процедура ОбновитьДоступностьФайловыхКоманд()
УстановитьДоступностьФайловыхКоманд();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ВладелецФайловСовпадает(ВладелецФайлов, ПеретаскиваемыйФайл)
Возврат ВладелецФайлов = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПеретаскиваемыйФайл, "ВладелецФайла");
КонецФункции
&НаСервереБезКонтекста
Функция ГруппаФайла(Файл)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Файл, "Родитель");
КонецФункции
&НаСервереБезКонтекста
Функция ПризнакОтправкиФайлаЭДО(Файл)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Файл, "ОтправленПолученЭД");
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Локализация
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьОтображениеИндексыСПАРК()
ДоговорыКонтрагентовКлиентЛокализация.ОбновитьОтображениеИндексыСПАРК(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ДоговорССамозанятымПриИзмененииСервер()
ПриОкончанииИзмененияРеквизитаЛокализацииНаСервере("ДоговорССамозанятым", Неопределено);
УстановитьСвойстваЭлементовНалогообложенияИРаздельногоУчетаНДС();
КонецПроцедуры
#КонецОбласти