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