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