#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
Объект.ДатаВыполнения = НачалоДня(ТекущаяДатаСеанса());
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ПоручениеЭкспедитору", ПараметрыЗаписи, Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СпособДоставкиПриИзменении(Элемент)
СпособДоставкиПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура НадписьОснованиеНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Объект.Основания.Количество() = 1 Тогда
ПоказатьЗначение(,Объект.Основания[0].Основание);
Иначе
Основания = Новый Массив;
Для Каждого Стр Из Объект.Основания Цикл
Основания.Добавить(Стр.Основание);
КонецЦикла;
ОткрытьФорму("ОбщаяФорма.СписокПроизвольныхОбъектовУП",
Новый Структура("МассивДокументов,ЗаголовокФормы", Основания, НСтр("ru = 'Основания поручения экспедитору'")),,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АдресПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект.АдресДоставки,
Объект.АдресДоставкиЗначенияПолей,
Объект.АдресДоставкиЗначение);
КонецПроцедуры
&НаКлиенте
Процедура АдресНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПунктПриИзменении(Элемент)
ПунктПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура АдресПунктаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект.АдресДоставки,
Объект.АдресДоставкиЗначенияПолей);
Если ДоставкаТоваровКлиентСервер.ДопИнфоИзмененоПользователем(Элементы, Объект)
И ВыбранноеЗначение.Свойство("ДополнительнаяИнформацияПоДоставке") Тогда
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение, , "ДополнительнаяИнформацияПоДоставке");
Иначе
ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение);
КонецЕсли;
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПунктНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПоказатьВыборИзСписка(Новый ОписаниеОповещения("ПунктНачалоВыбораНачалоВыбораЗавершение", ЭтотОбъект), СписокВыбораПунктов, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
Если Объект.ДатаВыполнения < Объект.Дата Тогда
Объект.ДатаВыполнения = Объект.Дата;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьОписаниеОснованиями(Команда)
ДополнитьОписаниеОснованиямиНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Если Не ЗначениеЗаполнено(Объект.Ответственный) Тогда
Объект.Ответственный = Пользователи.ТекущийПользователь();
КонецЕсли;
СписокВыбораПунктов.Очистить();
Если ПравоДоступа("Чтение", Метаданные.Справочники.Партнеры) Тогда
СписокВыбораПунктов.Добавить(НСтр("ru = '<выбрать партнера>'"));
КонецЕсли;
СписокВыбораПунктов.Добавить(НСтр("ru = '<выбрать подразделение>'"));
СписокВыбораПунктов.Добавить(НСтр("ru = '<выбрать склад>'"));
СписокВыбораПунктов.Добавить(НСтр("ru = '<ввести произвольный текст>'"));
Если Объект.Основания.Количество() > 0 Тогда
ДанныеОснований = Документы.ПоручениеЭкспедитору.ДанныеОснований(Объект.Основания.Выгрузить().ВыгрузитьКолонку("Основание"));
Для Каждого Значение Из ДанныеОснований.Пункты Цикл
Если ТипЗнч(Значение) = Тип("Строка") Тогда
ПредставлениеОбъекта = НСтр("ru = 'Текст'");
Иначе
ПредставлениеОбъекта = Значение.Метаданные().ПредставлениеОбъекта;
КонецЕсли;
ПредставлениеЗначения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1: %2'"),
ПредставлениеОбъекта, Значение);
СписокВыбораПунктов.Добавить(Значение, ПредставлениеЗначения);
КонецЦикла;
Элементы.Склад.СписокВыбора.ЗагрузитьЗначения(ДанныеОснований.Склады);
Элементы.КонтактноеЛицо.СписокВыбора.ЗагрузитьЗначения(ДанныеОснований.Контакты);
Иначе
Элементы.НадписьОснование.Видимость = Ложь;
КонецЕсли;
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
Если Не ЗначениеЗаполнено(Объект.Ссылка)
И Не ЗначениеЗаполнено(Объект.АдресДоставки)
И ЗначениеЗаполнено(Объект.Пункт)
И Элементы.АдресПункта.СписокВыбора.Количество() > 0 Тогда
ПерваяСтруктураВСписке = Элементы.АдресПункта.СписокВыбора[0].Значение;
ЗаполнитьЗначенияСвойств(Объект, ПерваяСтруктураВСписке);
КонецЕсли;
УстановитьДоступностьЭлементов();
ОтобразитьОснование();
СпособДоставкиПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура СпособДоставкиПриИзмененииНаСервере()
Если Объект.СпособДоставки = Перечисления.СпособыДоставки.ПоручениеЭкспедиторуСоСклада Тогда
Элементы.ЗаголовокОткуда.Видимость = Истина;
Элементы.ОтступОткуда.Видимость = Истина;
Элементы.Склад.Видимость = Истина;
Элементы.ЗаголовокСклад.Видимость = Истина;
Элементы.ЗаголовокОткуда.Заголовок = НСтр("ru = 'Откуда'");
Элементы.ЗаголовокКуда.Заголовок = НСтр("ru = 'Куда'");
ИначеЕсли Объект.СпособДоставки = Перечисления.СпособыДоставки.ПоручениеЭкспедиторуНаСклад Тогда
Элементы.ЗаголовокОткуда.Видимость = Истина;
Элементы.ОтступОткуда.Видимость = Истина;
Элементы.Склад.Видимость = Истина;
Элементы.ЗаголовокСклад.Видимость = Истина;
Элементы.ЗаголовокОткуда.Заголовок = НСтр("ru = 'Куда'");
Элементы.ЗаголовокКуда.Заголовок = НСтр("ru = 'Откуда'");
Иначе
Элементы.ЗаголовокОткуда.Видимость = Ложь;
Элементы.ОтступОткуда.Видимость = Ложь;
Элементы.Склад.Видимость = Ложь;
Элементы.ЗаголовокСклад.Видимость = Ложь;
Элементы.ЗаголовокКуда.Заголовок = НСтр("ru = 'Где'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОтобразитьОснование()
Если Объект.Основания.Количество() = 0 Тогда
Элементы.НадписьОснование.Заголовок = НСтр("ru = 'Основание'");
НадписьОснование = НСтр("ru = '<Добавить>'");
ИначеЕсли Объект.Основания.Количество() = 1 Тогда
Элементы.НадписьОснование.Заголовок = НСтр("ru = 'Основание'");
НадписьОснование = Строка(Объект.Основания[0].Основание);
Иначе
Элементы.НадписьОснование.Заголовок = НСтр("ru = 'Основания'");
ШаблонОснования = НСтр("ru = 'Всего документов: %1'");
НадписьОснование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ШаблонОснования,
Строка(Объект.Основания.Количество()));
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиНаСервере()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьОписаниеОснованиямиНаСервере()
Основания = Объект.Основания.Выгрузить().ВыгрузитьКолонку("Основание");
ОснованияПоТипам = ОбщегоНазначенияУТ.РазложитьМассивСсылокПоТипам(Основания);
Для Каждого КлючИЗначение Из ОснованияПоТипам Цикл
ТекстОснование = Строка(КлючИЗначение.Ключ) + ": ";
Если КлючИЗначение.Ключ = Тип("Строка") Тогда
ТекстОснование = КлючИЗначение.Значение + ".";
Иначе
Реквизиты = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(КлючИЗначение.Значение, "Номер, Дата");
ТекстОснование = Строка(КлючИЗначение.Ключ) + ?(КлючИЗначение.Значение.Количество()>1,": "," ");
Для Каждого КлючИЗначениеРеквизитов Из Реквизиты Цикл
ТекстНомерИДата = НСтр("ru = '%Номер% от %Дата%,'") + " ";
ТекстНомерИДата = СтрЗаменить(ТекстНомерИДата, "%Номер%",
ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(КлючИЗначениеРеквизитов.Значение.Номер));
ТекстНомерИДата = СтрЗаменить(ТекстНомерИДата, "%Дата%",
Формат(КлючИЗначениеРеквизитов.Значение.Дата,"ДФ=dd.MM.yy"));
ТекстОснование = ТекстОснование + ТекстНомерИДата;
КонецЦикла;
ТекстОснование = Лев(ТекстОснование, СтрДлина(ТекстОснование)-2) + ".";
КонецЕсли;
Если СтрНайти(Объект.ОсобыеУсловияПеревозкиОписание, ТекстОснование) = 0 Тогда
Если Не ПустаяСтрока(Объект.ОсобыеУсловияПеревозкиОписание) Тогда
Объект.ОсобыеУсловияПеревозкиОписание = Объект.ОсобыеУсловияПеревозкиОписание + Символы.ПС;
КонецЕсли;
Объект.ОсобыеУсловияПеревозкиОписание = Объект.ОсобыеУсловияПеревозкиОписание + ТекстОснование;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПунктПриИзмененииНаСервере()
Элементы.АдресПункта.СписокВыбора.Очистить();
ПустыеРеквизиты = ДоставкаТоваровКлиентСервер.ПолучитьПустуюСтруктуруРеквизитовДоставки(Объект);
ЗаполнитьЗначенияСвойств(Объект, ПустыеРеквизиты,,"СпособДоставки,ДополнительнаяИнформацияПоДоставке");
Если ЗначениеЗаполнено(Объект.Пункт) Тогда
ДоставкаТоваров.ЗаполнитьСпискиВыбораАдресовПолучателяОтправителя(Элементы, Объект);
Если Элементы.АдресПункта.СписокВыбора.Количество() > 0 Тогда
ПерваяСтруктураВСписке = Элементы.АдресПункта.СписокВыбора[0].Значение;
Если ДоставкаТоваровКлиентСервер.ДопИнфоИзмененоПользователем(Элементы, Объект) Тогда
ЗаполнитьЗначенияСвойств(Объект, ПерваяСтруктураВСписке,
"АдресДоставки, АдресДоставкиЗначенияПолей, ЗонаДоставки, ВремяДоставкиС, ВремяДоставкиПо");
Иначе
ЗаполнитьЗначенияСвойств(Объект, ПерваяСтруктураВСписке);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПроверитьЗаполнитьКонтактноеЛицо();
УстановитьДоступностьЭлементов();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементов()
Элементы.КонтактноеЛицо.Доступность = (ТипЗнч(Объект.Пункт) = Тип("СправочникСсылка.Партнеры"));
Элементы.ДополнитьИнформациюПоДоставкеКонтактами.Доступность =
(ТипЗнч(Объект.Пункт) <> Тип("СправочникСсылка.СтруктураПредприятия")
И ТипЗнч(Объект.Пункт) <> Тип("Строка"));
Элементы.ДополнитьОписаниеОснованиями.Доступность = (Объект.Основания.Количество() > 0);
КонецПроцедуры
&НаСервере
Процедура ПроверитьЗаполнитьКонтактноеЛицо()
Если ТипЗнч(Объект.Пункт) <> Тип("СправочникСсылка.Партнеры") Тогда
Объект.КонтактноеЛицо = Справочники.КонтактныеЛицаПартнеров.ПустаяСсылка();
Возврат;
КонецЕсли;
ПартнерыИКонтрагенты.ЗаполнитьКонтактноеЛицоПартнераПоУмолчанию(Объект.Пункт, Объект.КонтактноеЛицо);
КонецПроцедуры
&НаКлиенте
Процедура ПунктНачалоВыбораНачалоВыбораЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
Если ВыбранныйЭлемент = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбранноеЗначение = ВыбранныйЭлемент.Значение;
ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВыбораПункта",ЭтотОбъект);
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
ИначеЕсли ВыбранноеЗначение = НСтр("ru = '<выбрать партнера>'") Тогда
ОткрытьФорму("Справочник.Партнеры.Форма.ФормаВыбора", , ЭтотОбъект,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли ВыбранноеЗначение = НСтр("ru = '<выбрать подразделение>'") Тогда
ОткрытьФорму("Справочник.СтруктураПредприятия.Форма.ФормаВыбора",, ЭтотОбъект,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли ВыбранноеЗначение = НСтр("ru = '<выбрать склад>'") Тогда
ОткрытьФорму("Справочник.Склады.Форма.ФормаВыбора", , ЭтотОбъект,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ИначеЕсли ВыбранноеЗначение = НСтр("ru = '<ввести произвольный текст>'") Тогда
Объект.Пункт = "";
Иначе
Объект.Пункт = ВыбранноеЗначение;
КонецЕсли;
ПунктПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораПункта(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.Пункт = ВыбранноеЗначение;
ПунктПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#КонецОбласти