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