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