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