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