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