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