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