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