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