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