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