#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
МакетПоставляемыеДанные = Справочники.ГосударственныеКонтракты.ПолучитьМакет("ИдентификаторыИнформацииОЗакупке").ПолучитьТекст();
ИдентификаторыИнформацииОЗакупке = ОбщегоНазначения.ПрочитатьXMLВТаблицу(МакетПоставляемыеДанные).Данные;
КодСпособаОпределенияПоставщикаСписокВыбора = Элементы.КодСпособаОпределенияПоставщика.СписокВыбора;
Для каждого СтрокаТаблицы Из ИдентификаторыИнформацииОЗакупке Цикл
КодСпособаОпределенияПоставщикаСписокВыбора.Добавить(Число(СтрокаТаблицы.Код), "(" + СтрокаТаблицы.Код + ") " + СтрокаТаблицы.Наименование);
КонецЦикла;
ИспользуетсяНесколькоОрганизаций =
ЭлектронноеАктированиеЕИСВызовСервера.ИспользуетсяНесколькоОрганизаций();
Для каждого Строка Из Объект.ОбъектыЗакупки Цикл
Строка.ДанныеСтрокиКонтракта = ТекстСсылкиДанныеСтрокиКонтракта();
КонецЦикла;
Если Объект.Ссылка.Пустая() Тогда
Объект.Контрагент = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Параметры.ПараметрыВыбора, "Контрагент", Объект.Контрагент);
Объект.Организация = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(
Параметры.ПараметрыВыбора, "Организация", Объект.Организация);
КонецЕсли;
ЗаполнитьДеревоОбъектовЗакупки();
УправлениеФормой(ЭтотОбъект);
ОбновитьИнформациюПоДоговорам();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
УстановитьВидимостьЭлементов();
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если Не ТекущийОбъект.Код = "" Тогда
ТекущийОбъект.Код = "";
КонецЕсли;
Если ТекущийОбъект.ТипНаправленияДеятельности = Перечисления.ТипыНаправленийДеятельности.КонтрактГОЗ
И Не НомерГОЗУникален() Тогда
ОписаниеОшибки = НСтр("ru='Номер по государственному оборонному заказу не уникален.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.НомерГОЗ");
Отказ = Истина;
КонецЕсли;
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
Если Модифицированность Тогда
ТекущийОбъект.НоменклатураОбъектовЗакупки.Очистить();
Дерево = РеквизитФормыВЗначение("ДеревоОбъектовЗакупки");
Для каждого СтрокаНоменклатуры Из Дерево Цикл
Если ЗначениеЗаполнено(СтрокаНоменклатуры.Номенклатура) Тогда
Строка = ТекущийОбъект.НоменклатураОбъектовЗакупки.Добавить();
Строка.Номенклатура = СтрокаНоменклатуры.Номенклатура;
Строка.НоменклатураПартнера = СтрокаНоменклатуры.НоменклатураПартнера;
Строка.Идентификатор = СтрокаНоменклатуры.Идентификатор;
Строка.Характеристика = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаНоменклатуры.НоменклатураПартнера, "Характеристика");
Строка.Упаковка = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаНоменклатуры.НоменклатураПартнера, "Упаковка");
Строка.Количество = СтрокаНоменклатуры.Количество;
КонецЕсли;
КонецЦикла;
КонецЕсли;
ЭлектронноеАктированиеЕИС.ПередЗаписьюНаСервереГосударственногоКонтракта(
ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
Если НЕ ПустаяСтрока(АдресДанныхКонтракта) Тогда
ЭлектронноеАктированиеЕИС.
СохранитьДанныеКонтракта(ТекущийОбъект.Ссылка, АдресДанныхКонтракта);
КонецЕсли;
Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначенияКлиентСервер.КартинкаКомментария(Объект.Комментарий);
ЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СформироватьНаименованиеКонтракта();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ПараметрОповещения = Новый Структура("Ссылка", Объект.Ссылка);
Оповестить(
ЭлектронноеАктированиеЕИСКлиентСервер.ИмяСобытияЗаписьГосконтрактаЕИС(),
ПараметрОповещения);
Оповестить(
ИнтерфейсДокументовЭДОКлиент.ИмяСобытияОбновленияСостоянияЭДО(),
Объект.Ссылка,
ЭтотОбъект);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКоманд
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда)
ЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьИдентификатор(Команда)
Объект.НомерГОЗ = Прав(Строка(Год(Объект.ДатаЗаключения)), 2)
+ Прав(Строка(Объект.ГодОкончанияСрокаДействия), 2)
+ Объект.КодГосударственногоЗаказчика
+ Строка(Объект.КодСпособаОпределенияПоставщика)
+ Объект.ПорядковыйНомер
+ Объект.ВидЦены
+ Объект.ДополнительныеРазряды;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура КодГосударственногоЗаказчикаПриИзменении(Элемент)
Объект.КодГосударственногоЗаказчика = СтрЗаменить(Объект.КодГосударственногоЗаказчика, " ", "0");
КонецПроцедуры
&НаКлиенте
Процедура КодГосударственногоЗаказчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("СтрокаПоиска", Объект.КодГосударственногоЗаказчика);
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Код государственного заказчика'"));
СтруктураПараметров.Вставить("ГодПлатежа", Год(Объект.ДатаЗаключения));
ОткрытьФорму("Справочник.ГосударственныеКонтракты.Форма.ВыборКодаИзКлассификатора", СтруктураПараметров, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПорядковыйНомерПриИзменении(Элемент)
Объект.ПорядковыйНомер = СтрЗаменить(Объект.ПорядковыйНомер, " ", "0");
КонецПроцедуры
&НаКлиенте
Процедура ДополнительныеРазрядыПриИзменении(Элемент)
Объект.ДополнительныеРазряды = СтрЗаменить(Объект.ДополнительныеРазряды, " ", "0");
КонецПроцедуры
&НаКлиенте
Процедура ДатаЗаключенияПриИзменении(Элемент)
Объект.ГодЗаключения = Год(Объект.ДатаЗаключения);
Если Не ЗначениеЗаполнено(Объект.ГодОкончанияСрокаДействия)
Или Объект.ГодЗаключения > Объект.ГодОкончанияСрокаДействия Тогда
Объект.ГодОкончанияСрокаДействия = Объект.ГодЗаключения;
КонецЕсли;
СформироватьНаименованиеКонтракта(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ГодОкончанияСрокаДействияПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ГодЗаключения)
И Объект.ГодЗаключения > Объект.ГодОкончанияСрокаДействия Тогда
Объект.ГодОкончанияСрокаДействия = Объект.ГодЗаключения;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДоговорОбработкаВыбора(ВыбранноеЗначение, Контекст = Неопределено) Экспорт
НужнаЗаписьИзмененийДоговора = Ложь;
Если ВыбранноеЗначение <> Неопределено Тогда
ВладельцыКонтракта.Добавить(ВыбранноеЗначение);
НужнаЗаписьИзмененийДоговора = Истина;
КонецЕсли;
ДоговорОбработкаВыбораСервер(НужнаЗаписьИзмененийДоговора);
КонецПроцедуры
&НаСервере
Процедура ДоговорОбработкаВыбораСервер(ИзменятьДоговор)
Если ИзменятьДоговор Тогда
ДоговорКонтрагентаСсылка = ВладельцыКонтракта[0].Значение;
РеквизитыДоговора = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДоговорКонтрагентаСсылка,"Организация,Контрагент");
Объект.Организация = РеквизитыДоговора.Организация;
Объект.Контрагент = РеквизитыДоговора.Контрагент;
Попытка
ЗаблокироватьДанныеДляРедактирования(ДоговорКонтрагентаСсылка);
ДоговорКонтрагента = ДоговорКонтрагентаСсылка.ПолучитьОбъект();
ДоговорКонтрагента.ГосударственныйКонтракт = Объект.Ссылка;
ДоговорКонтрагента.ДоговорСУчастникомГОЗ = ЗначениеЗаполнено(Объект.НомерГОЗ);
ДоговорКонтрагента.Записать();
Исключение
ТекстСообщения = СтрШаблон(
НСтр("ru = 'Не удалось заблокировать элемент справочника: %1. Возможно, он редактируется другим пользователем.'"),
ДоговорКонтрагентаСсылка);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
КонецПопытки;
КонецЕсли;
УправлениеФормой(ЭтотОбъект);
ОбновитьИнформациюПоДоговорам();
КонецПроцедуры
&НаКлиенте
Процедура НомерГОЗПриИзменении(Элемент)
ОписаниеТипаДата = Новый ОписаниеТипов("Дата");
Если ЗначениеЗаполнено(Объект.НомерГОЗ) Тогда
Объект.ДатаЗаключения = ОписаниеТипаДата.ПривестиЗначение("20" + Лев(Объект.НомерГОЗ, 2) + "0101");
Объект.ГодЗаключения = "20" + Лев(Объект.НомерГОЗ, 2);
Объект.ГодОкончанияСрокаДействия = "20" + Сред(Объект.НомерГОЗ, 3, 2);
Объект.КодГосударственногоЗаказчика = Сред(Объект.НомерГОЗ, 5, 3);
Объект.КодСпособаОпределенияПоставщика = Сред(Объект.НомерГОЗ, 8, 1);
Объект.ПорядковыйНомер = Сред(Объект.НомерГОЗ, 9, 4);
Объект.ВидЦены = Сред(Объект.НомерГОЗ, 13, 1);
Объект.ДополнительныеРазряды = Сред(Объект.НомерГОЗ, 14, 12);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТекстВладельцыКонтрактаОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
ОчиститьСообщения();
Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьФормуДоговора" Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ЗаголовокФормы", НСтр("ru = 'Договора с контрагентами'"));
ПараметрыФормы.Вставить("МассивДокументов", ВладельцыКонтракта.ВыгрузитьЗначения());
ОткрытьФорму("ОбщаяФорма.СписокПроизвольныхОбъектовУП",
ПараметрыФормы,
ЭтаФорма,
,
,
,
,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьФормуДоговора" Тогда
СтандартнаяОбработка = Ложь;
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ДоговорОбработкаВыбора", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Ключ", ВладельцыКонтракта[0].Значение);
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаОбъекта", ПараметрыФормы, ЭтаФорма,,,, ОповещениеОЗакрытии);
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ВыбратьДоговор" Тогда
ОчиститьСообщения();
СтандартнаяОбработка = Ложь;
Если НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Государственный контракт еще не записан. Перед выбором договора необходимо записать государственный контракт.'"));
Иначе
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ДоговорОбработкаВыбора", ЭтотОбъект);
Отбор = Новый Структура;
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
Отбор.Вставить("Контрагент", Объект.Контрагент);
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Организация) Тогда
Отбор.Вставить("Организация", Объект.Организация);
КонецЕсли;
ПараметрыФормы = Новый Структура("Отбор", Отбор);
ОткрытьФорму("Справочник.ДоговорыКонтрагентов.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,, ОповещениеОЗакрытии);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТипНаправленияДеятельностиПриИзменении(Элемент)
ТипНаправленияДеятельностиПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ТипНаправленияДеятельностиПриИзмененииНаСервере()
УстановитьВидимостьЭлементов();
ОбработчикЭтоКонтрактГОЗПриИзменении(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НомерРеестровойЗаписиПриИзменении(Элемент)
СформироватьНаименованиеКонтракта(Истина);
КонецПроцедуры
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
СформироватьНаименованиеКонтракта(Истина);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоОбъектов
&НаКлиенте
Процедура ДеревоОбъектовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ДеревоОбъектовЗакупки.Количество() = 0 Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовКоличествоПриИзменении(Элемент)
ПересчитатьСумму();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовЦенаПриИзменении(Элемент)
ПересчитатьСумму();
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовНоменклатураПартнераПриИзменении(Элемент)
ТекущиеДанные = Элементы.ДеревоОбъектов.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.НоменклатураПартнера) Тогда
ДанныеНоменклатурыПартнера = ДанныеНоменклатурыПартнера(ТекущиеДанные.НоменклатураПартнера);
ТекущиеДанные.Номенклатура = ДанныеНоменклатурыПартнера.Номенклатура;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовПриАктивизацииСтроки(Элемент)
Если Элемент.ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элемент.ТекущиеДанные;
ТипДанныхПоля = ТипЗнч(ТекущиеДанные.Наименование);
Если ТипНоменклатура.СодержитТип(ТипДанныхПоля) Тогда
Возврат;
КонецЕсли;
Элемент.ТекущиеДанные.Наименование = ТипНоменклатура.ПривестиЗначение(Неопределено);
КонецПроцедуры
&НаКлиенте
Процедура ДеревоОбъектовПриИзменении(Элемент)
Модифицированность = Истина;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура ПолучитьИзЕИС(Команда)
ПолучитьИзЕИСНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьИзОткрытойЧастиЕИС(Команда)
ПолучитьИзОткрытойЧастиЕИСНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СоздатьДоговор(Команда)
СоздатьДоговорНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКонтрактВФайл(Команда)
Адрес = АдресДанныхКонтракта();
Если ЗначениеЗаполнено(Адрес) Тогда
ФайловаяСистемаКлиент.СохранитьФайл(Неопределено, Адрес);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьИзФайла(Команда)
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОписаниеОшибки = НСтр("ru='Не заполнена организация.'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ОписаниеОшибки, , , "Объект.Организация");
Возврат;
КонецЕсли;
Оповещение = Новый ОписаниеОповещения("ПрочитатьИзФайлаПослеЗагрузки", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = 'Файлы контрактов (*.xml)|*.xml|Все файлы (*.*)|*.*'");
ФайловаяСистемаКлиент.ЗагрузитьФайл(Оповещение, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ОбъектыЗакупкиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя = "ДеревоОбъектовДанныеСтрокиКонтракта" Тогда
ТекущиеДанные = Элемент.ТекущиеДанные;
СтандартнаяОбработка = Ложь;
Если ТекущиеДанные.ЭтоЛекарственныйПрепарат Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ИдентификаторОбъектаЗакупки", ТекущиеДанные.Идентификатор);
ПараметрыФормы.Вставить("Контракт", Объект.Ссылка);
ОткрытьФорму("Справочник.ГосударственныеКонтракты.Форма.ФормаЛекарственногоПрепарата",
ПараметрыФормы, , УникальныйИдентификатор, , , ,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
ЭлектронноеАктированиеЕИСКлиент.ОткрытьФормуСтрокиКонтракта(
Объект.Ссылка,
ТекущиеДанные.Идентификатор,
ЭтотОбъект,
Истина);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ОбработчикЭтоКонтрактГОЗПриИзменении(Форма)
ЭтоКонтрактГОЗ = Форма.Объект.ТипНаправленияДеятельности = ПредопределенноеЗначение("Перечисление.ТипыНаправленийДеятельности.КонтрактГОЗ");
ЭтоГосконтрактИзЕИС = ЗначениеЗаполнено(Форма.Объект.ВнутреннийИдентификаторЕИС);
Форма.Элементы.ГоловнойИсполнитель.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.УполномоченныйБанк.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.НомерГОЗ.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.ЗаполнитьИдентификатор.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.КодСпособаОпределенияПоставщика.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.КодГосударственногоЗаказчика.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.ПорядковыйНомер.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.ВидЦены.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.ДополнительныеРазряды.Видимость = ЭтоКонтрактГОЗ;
Форма.Элементы.Состояние.АвтоОтметкаНезаполненного = Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.ДатаЗаключения.АвтоОтметкаНезаполненного = Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.ГодОкончанияСрокаДействия.АвтоОтметкаНезаполненного = Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.УполномоченныйБанк.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ И Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.НомерГОЗ.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ;
Форма.Элементы.КодСпособаОпределенияПоставщика.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ И Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.КодГосударственногоЗаказчика.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ И Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.ПорядковыйНомер.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ И Не ЭтоГосконтрактИзЕИС;
Форма.Элементы.ДополнительныеРазряды.АвтоОтметкаНезаполненного = ЭтоКонтрактГОЗ И Не ЭтоГосконтрактИзЕИС;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма)
Элементы = Форма.Элементы;
Объект = Форма.Объект;
Элементы.НомерГОЗ.Видимость = Объект.ТипНаправленияДеятельности = ПредопределенноеЗначение("Перечисление.ТипыНаправленийДеятельности.КонтрактГОЗ");
ОбъектыЗакупкиЗаполнены = Форма.ДеревоОбъектовЗакупки.Количество() > 0;
Если ОбъектыЗакупкиЗаполнены Тогда
Элементы.КнопкаПолучитьИзЕИС.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;
Элементы.ФормаПрочитатьИзФайла.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВДополнительномПодменю;
Элементы.ДеревоОбъектов.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Авто;
Иначе
Элементы.КнопкаПолучитьИзЕИС.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанелиИВДополнительномПодменю;
Элементы.ФормаПрочитатьИзФайла.ПоложениеВКоманднойПанели = ПоложениеКнопкиВКоманднойПанели.ВКоманднойПанелиИВДополнительномПодменю;
Элементы.ДеревоОбъектов.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
КонецЕсли;
Элементы.КнопкаПолучитьИзЕИС.КнопкаПоУмолчанию = НЕ ОбъектыЗакупкиЗаполнены;
Элементы.СтраницаБанковскиеРеквизитыПоставщика.Видимость =
Объект.РеквизитыСчетаПоставщика.Количество() > 0;
Элементы.ГруппаВалютаКонтракта.Видимость = Объект.ЭтоВалютныйКонтракт;
Если ЗначениеЗаполнено(Форма.Объект.ВнутреннийИдентификаторЕИС) Тогда
ИнтеграцияСЕИС = Истина;
Иначе
ИнтеграцияСЕИС = Ложь;
КонецЕсли;
Элементы.ГруппаОбъектыЗакупки.Видимость = ИнтеграцияСЕИС;
Элементы.ГруппаЭтапыИсполнения.Видимость = ИнтеграцияСЕИС;
Элементы.ГруппаПрочее.Видимость = ИнтеграцияСЕИС;
Элементы.ТекстЗагруженИзЕИС.Видимость = ИнтеграцияСЕИС;
Элементы.КнопкаПолучитьИзЕИС.Видимость = ИнтеграцияСЕИС;
Элементы.ФормаСохранитьКонтрактВФайл.Видимость = ИнтеграцияСЕИС;
Элементы.ФормаПрочитатьИзФайла.Видимость = ИнтеграцияСЕИС;
ОбработчикЭтоКонтрактГОЗПриИзменении(Форма);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСумму()
ТекущиеДанные = Элементы.ДеревоОбъектов.ТекущиеДанные;
ТекущиеДанные.Сумма = ТекущиеДанные.Количество * ТекущиеДанные.Цена;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьИзФайлаПослеЗагрузки(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
НастройкиПоставщика = НастройкиОбменаЕИСПоставщика(Объект.Организация);
ЭтоКонтрактДляЗаказчика = НастройкиПоставщика = Неопределено;
ЗаполнитьИзДанныхКонтракта(Результат.Хранение, , ЭтоКонтрактДляЗаказчика);
АдресДанныхКонтракта = Результат.Хранение;
Если НЕ ЗначениеЗаполнено(Объект.РеестровыйНомерКонтракта) Тогда
Оповещение = Новый ОписаниеОповещения(
"ПослеВводаРеестровогоНомераКонтракта", ЭтотОбъект);
Подсказка = НСтр("ru = 'Введите реестровый номер загружаемого контракта:'");
ПоказатьВводЧисла(Оповещение, , Подсказка, 19);
Возврат;
Иначе
ПослеВводаРеестровогоНомераКонтракта(Объект.РеестровыйНомерКонтракта, Неопределено);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция НастройкиОбменаЕИСПоставщика(Организация)
НастройкаПоставщика = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИС(Организация);
Возврат НастройкаПоставщика;
КонецФункции
&НаКлиенте
Процедура ПослеВводаРеестровогоНомераКонтракта(Номер, ДополнительныеПараметры) Экспорт
Если НЕ ЗначениеЗаполнено(Номер) Тогда
Возврат;
КонецЕсли;
Объект.РеестровыйНомерКонтракта = Формат(Номер, "ЧГ=0;");
ПослеЗаполненияДанныхКонтрактаИзВнешнегоИсточника();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекстСсылкиДанныеСтрокиКонтракта()
Возврат "Открыть"
КонецФункции
&НаСервере
Процедура ЗаполнитьДеревоОбъектовЗакупки()
ДеревоОбъектов = РеквизитФормыВЗначение("ДеревоОбъектовЗакупки");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Количество КАК Количество,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Идентификатор КАК Идентификатор,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Наименование КАК НаименованиеОбъекта,
| ЕСТЬNULL(ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Количество, 0) КАК КоличествоНоменклатура,
| ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.НоменклатураПартнера КАК НоменклатураПартнера,
| ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Номенклатура КАК Номенклатура,
| ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Характеристика КАК Характеристика,
| ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Упаковка КАК Упаковка,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.НомерСтроки КАК НомерСтроки,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.ЕдиницаИзмеренияНаименование КАК ЕдиницаИзмерения,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Цена КАК Цена,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Сумма КАК Сумма,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.КодТовараДляЕИС КАК КодТовараДляЕИС,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.СтавкаНДС КАК СтавкаНДС,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Тип КАК Тип,
| &ТекстСтрокиКонтракта КАК ДанныеСтрокиКонтракта,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.ЭтоЛекарственныйПрепарат КАК ЭтоЛекарственныйПрепарат,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.СтранаПроизводителя КАК СтранаПроизводителя,
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.СтранаПроисхождения КАК СтранаПроисхождения
|ИЗ
| Справочник.ГосударственныеКонтракты.ОбъектыЗакупки КАК ГосударственныеКонтрактыЕИСОбъектыЗакупки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГосударственныеКонтракты.НоменклатураОбъектовЗакупки КАК ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки
| ПО ГосударственныеКонтрактыЕИСОбъектыЗакупки.Идентификатор = ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Идентификатор
|ГДЕ
| ГосударственныеКонтрактыЕИСОбъектыЗакупки.Ссылка = &Ссылка
| И ГосударственныеКонтрактыЕИСНоменклатураОбъектовЗакупки.Ссылка = &Ссылка";
Запрос.Параметры.Вставить("ТекстСтрокиКонтракта", ТекстСсылкиДанныеСтрокиКонтракта());
Запрос.Параметры.Вставить("Ссылка", Объект.Ссылка);
ДеревоОбъектов = Запрос.Выполнить().Выгрузить();
МассивТипов = Новый Массив();
МассивТипов.Добавить(Тип("Строка"));
Описание = Новый ОписаниеТипов(Метаданные.ОпределяемыеТипы.НоменклатураБЭД.Тип, МассивТипов);
ДеревоОбъектов.Колонки.Добавить("Наименование", Описание);
Для каждого ОбъектЗакупки Из ДеревоОбъектов Цикл
ОбъектЗакупки.ДанныеСтрокиКонтракта = ТекстСсылкиДанныеСтрокиКонтракта();
ОбъектЗакупки.Наименование = СокрЛП(ОбъектЗакупки.НаименованиеОбъекта);
КонецЦикла;
ЗначениеВРеквизитФормы(ДеревоОбъектов, "ДеревоОбъектовЗакупки");
ЭлектронноеАктированиеЕИС.ЗаполнитьОграничениеТипаНоменклатуры(
Элементы.ДеревоОбъектовНоменклатура, ТипНоменклатура, Перечисления.ТипыОбъектовЗакупкиЕИС.Товар);
КонецПроцедуры
&НаСервере
Процедура СформироватьНаименованиеКонтракта(Перезаполнить = Ложь)
Если НЕ ЗначениеЗаполнено(Объект.Наименование) ИЛИ Перезаполнить Тогда
Шаблон = НСтр("ru='РК %1 №%2 от %3'");
ДатаСтрока = Формат(Объект.ДатаЗаключения, "ДЛФ=D;");
Представление = СтрШаблон(Шаблон, Объект.РеестровыйНомерКонтракта, Объект.Номер, ДатаСтрока);
Объект.Наименование = Представление;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьИзЕИСНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОписаниеОшибки = НСтр("ru='Не заполнена организация.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.Организация");
Возврат;
КонецЕсли;
Настройки = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИС(Объект.Организация);
Если НЕ ЗначениеЗаполнено(Настройки) Тогда
Если ЭлектронноеАктированиеЕИС.ИспользоватьЭлектронноеАктированиеЗаказчикаВЕИС() Тогда
Настройки = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИСЗаказчика(Объект.Организация);
Если НЕ ЗначениеЗаполнено(Настройки) Тогда
ОписаниеОшибки = НСтр("ru='Не заполнены настройки обмена с ЕИС для организации.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.Организация");
Иначе
ПолучитьИзОткрытойЧастиЕИСНаСервере();
КонецЕсли;
КонецЕсли;
Возврат;
КонецЕсли;
Если НЕ ПроверитьРеестровыйНомер() Тогда
Возврат;
КонецЕсли;
РезультатПолучения = ЭлектронноеАктированиеЕИС.
СведенияОКонтрактеПоставщика(Объект.Организация, Объект.РеестровыйНомерКонтракта);
Если НЕ РезультатПолучения.Выполнено Тогда
ОбщегоНазначения.СообщитьПользователю(РезультатПолучения.ОписаниеОшибки);
Возврат;
КонецЕсли;
Если РезультатПолучения.Контракты.Количество() = 0 Тогда
Если ЭлектронноеАктированиеЕИС.ИспользоватьЭлектронноеАктированиеЗаказчикаВЕИС() Тогда
Настройки = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИСЗаказчика(
Объект.Организация);
Если ЗначениеЗаполнено(Настройки) Тогда
ПолучитьИзОткрытойЧастиЕИСНаСервере();
Возврат;
КонецЕсли;
КонецЕсли;
ОписаниеОшибки = НСтр("ru='Контракт не найден в личном кабинете поставщика.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки);
Возврат;
КонецЕсли;
СодержимоеКонтракта = РезультатПолучения.Контракты[0];
Если СодержимоеКонтракта.ОшибкаПриСкачивании Тогда
ОписаниеОшибки = НСтр("ru='Не удалось скачать данные контракта с сервера ЕИС.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки);
Возврат;
КонецЕсли;
Контракт = СодержимоеКонтракта.ДанныеКонтракта;
ЗаполнитьИзДанныхКонтракта(Контракт);
АдресДанныхКонтракта =
ПоместитьВоВременноеХранилище(
СодержимоеКонтракта.ДвоичныеДанныеКонтракта, УникальныйИдентификатор);
ПослеЗаполненияДанныхКонтрактаИзВнешнегоИсточника();
КонецПроцедуры
&НаСервере
Процедура ПолучитьИзОткрытойЧастиЕИСНаСервере()
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ОписаниеОшибки = НСтр("ru='Не заполнена организация.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.Организация");
Возврат;
КонецЕсли;
Если НЕ ПроверитьРеестровыйНомер() Тогда
Возврат;
КонецЕсли;
СсылкаДляЗагрузки = "https://zakupki.gov.ru/epz/contract/printForm/"
+ "viewXml.html?contractReestrNumber=" + Объект.РеестровыйНомерКонтракта;
РезультатЗагрузки = ПолучениеФайловИзИнтернета.СкачатьФайлВоВременноеХранилище(
СсылкаДляЗагрузки);
Если НЕ РезультатЗагрузки.Статус Тогда
ОписаниеОшибки = НСтр("ru = 'При загрузке контракта с сервера ЕИС возникла ошибка:'")
+ Символы.ПС + РезультатЗагрузки.СообщениеОбОшибке;
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки);
Возврат;
КонецЕсли;
АдресДанныхКонтракта = РезультатЗагрузки.Путь;
НастройкиПоставщика = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИС(Объект.Организация);
НастройкиЗаказчика = ЭлектронноеАктированиеЕИС.НастройкиОбменаЕИСЗаказчика(Объект.Организация);
ЭтоКонтрактДляЗаказчика = НастройкиПоставщика = Неопределено ИЛИ НЕ НастройкиЗаказчика = Неопределено;
ЗаполнитьИзДанныхКонтракта(АдресДанныхКонтракта, Объект.Код, ЭтоКонтрактДляЗаказчика);
ПослеЗаполненияДанныхКонтрактаИзВнешнегоИсточника();
КонецПроцедуры
&НаСервере
Функция ПроверитьРеестровыйНомер()
Результат = Ложь;
Если НЕ ЗначениеЗаполнено(Объект.РеестровыйНомерКонтракта) Тогда
ОписаниеОшибки = НСтр("ru='Не заполнен реестровый номер контракта.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.РеестровыйНомерКонтракта");
Возврат Результат;
КонецЕсли;
Если СтрДлина(СокрЛП(Объект.РеестровыйНомерКонтракта)) < 19 Тогда
ОписаниеОшибки = НСтр("ru='Длина реестрового номера меньше 19.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.РеестровыйНомерКонтракта");
Возврат Результат;
КонецЕсли;
ТолькоЦифры = СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Объект.РеестровыйНомерКонтракта, , Истина);
Если НЕ ТолькоЦифры Тогда
ОписаниеОшибки = НСтр("ru='Реестровый номер может содержать только цифры.'");
ОбщегоНазначения.СообщитьПользователю(ОписаниеОшибки, , , "Объект.РеестровыйНомерКонтракта");
Возврат Результат;
КонецЕсли;
Возврат Истина;
КонецФункции
&НаСервере
Процедура ЗаполнитьИзДанныхКонтракта(ДанныеКонтрактаИлиАдрес,
Знач РеестровыйНомер = "", ЭтоКонтрактДляЗаказчика = Ложь)
Если ЭтоАдресВременногоХранилища(ДанныеКонтрактаИлиАдрес) Тогда
Данные = ПолучитьИзВременногоХранилища(ДанныеКонтрактаИлиАдрес);
ДанныеКонтракта = ЭлектронноеАктированиеЕИС.РазобратьФайлКонтракта(Данные, "", Истина);
Иначе
ДанныеКонтракта = ДанныеКонтрактаИлиАдрес;
КонецЕсли;
ЭлектронноеАктированиеЕИСПолучениеВходящих.
ЗаполнитьИзДанныхКонтракта(ДанныеКонтракта, Объект, ЭтоКонтрактДляЗаказчика);
Если НЕ ПустаяСтрока(РеестровыйНомер)
И ПустаяСтрока(Объект.РеестровыйНомерКонтракта) Тогда
Объект.РеестровыйНомерКонтракта = РеестровыйНомер;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияДанныхКонтрактаИзВнешнегоИсточника()
СформироватьНаименованиеКонтракта(Истина);
Записать();
ЭлектронноеАктированиеЕИС.ПослеЗагрузкиКонтрактаИзЕИС(Объект.Ссылка);
ЗаполнитьДеревоОбъектовЗакупки();
УправлениеФормой(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура СоздатьДоговорНаСервере()
Результат = ЭлектронноеАктированиеЕИС.СоздатьДоговорНаОснованииКонтракта(Объект.Ссылка);
Если Результат.Выполнено Тогда
УправлениеФормой(ЭтотОбъект);
Иначе
ОбщегоНазначения.СообщитьПользователю(Результат.ОписаниеОшибки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция АдресДанныхКонтракта()
ДанныеКонтракта = ЭлектронноеАктированиеЕИС.ДанныеГосударственногоКонтракта(Объект.Ссылка, Истина);
Если НЕ ЗначениеЗаполнено(ДанныеКонтракта) Тогда
ТекстОшибки = НСтр("ru='Данные контракта отсутствуют.'");
ОбщегоНазначения.СообщитьПользователю(ТекстОшибки);
Возврат "";
КонецЕсли;
Адрес = ПоместитьВоВременноеХранилище(ДанныеКонтракта, УникальныйИдентификатор);
Возврат Адрес;
КонецФункции
&НаСервере
Функция ДанныеНоменклатурыПартнера(НоменклатураПартнера)
Данные = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(НоменклатураПартнера, "Номенклатура, Характеристика, Упаковка");
Возврат Данные;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция НомерГОЗУникален()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ГосударственныеКонтракты.Ссылка КАК Ссылка
|ИЗ
| Справочник.ГосударственныеКонтракты КАК ГосударственныеКонтракты
|ГДЕ
| ГосударственныеКонтракты.Ссылка <> &Ссылка
| И ГосударственныеКонтракты.НомерГОЗ = &НомерГОЗ
| И
| ГосударственныеКонтракты.ТипНаправленияДеятельности = ЗНАЧЕНИЕ(Перечисление.ТипыНаправленийДеятельности.КонтрактГОЗ)";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.УстановитьПараметр("НомерГОЗ", Объект.НомерГОЗ);
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса.Пустой();
КонецФункции
&НаСервере
Функция ОбновитьИнформациюПоДоговорам()
МассивСтрок = Новый Массив();
ВладельцыКонтракта = ЭлектронноеАктированиеЕИСУТ.ПолучитьВсеДоговораГосконтракта(Объект.Ссылка);
Если ВладельцыКонтракта.Количество() = 0 Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(НСтр("ru = 'Выбрать договор контрагента'"), , WebЦвета.Кирпичный, , "ВыбратьДоговор"));
ИначеЕсли ВладельцыКонтракта.Количество() = 1 Тогда
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(Строка(ВладельцыКонтракта[0].Значение), , ЦветаСтиля.ГиперссылкаЦвет, , ПолучитьНавигационнуюСсылку(ВладельцыКонтракта[0].Значение)));
Иначе
ТекстПокупателей = ОбщегоНазначенияУТКлиентСервер.СклонениеСлова(
ВладельцыКонтракта.Количество(),
НСтр("ru = 'договор с контрагентом, договора с контрагентами, договоров с контрагентами, м'"));
Текст = СтрШаблон(НСтр("ru = 'Выбрано %1 %2'"), ВладельцыКонтракта.Количество(), ТекстПокупателей);
МассивСтрок.Добавить(
Новый ФорматированнаяСтрока(Текст, , ЦветаСтиля.ГиперссылкаЦвет, , "ОткрытьФормуДоговора"));
КонецЕсли;
ТекстВладельцыКонтракта = Новый ФорматированнаяСтрока(МассивСтрок);
КонецФункции
&НаСервере
Процедура УстановитьВидимостьЭлементов()
ОбычныйГосконтракт = Объект.ТипНаправленияДеятельности = Перечисления.ТипыНаправленийДеятельности.ГосударственныйКонтракт;
ЗависимыеЭлементы = Новый Массив;
ЗависимыеЭлементы.Добавить("УполномоченныйБанк");
ЗависимыеЭлементы.Добавить("ГоловнойИсполнитель");
ЗависимыеЭлементы.Добавить("КодСпособаОпределенияПоставщика");
ЗависимыеЭлементы.Добавить("ПорядковыйНомер");
ЗависимыеЭлементы.Добавить("ВидЦены");
ЗависимыеЭлементы.Добавить("ДополнительныеРазряды");
ЗависимыеЭлементы.Добавить("КодГосударственногоЗаказчика");
ЗависимыеЭлементы.Добавить("ЗаполнитьИдентификатор");
ЗависимыеЭлементы.Добавить("НомерГОЗ");
Для каждого ЗависимыйЭлемент Из ЗависимыеЭлементы Цикл
Элементы[ЗависимыйЭлемент].Видимость = Не ОбычныйГосконтракт;
КонецЦикла;
КонецПроцедуры
#КонецОбласти