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