#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область Проведение
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
МеханизмыДокумента.Добавить("Взаиморасчеты");
МеханизмыДокумента.Добавить("Закупки");
МеханизмыДокумента.Добавить("ОперативныйУчетТоваровОрганизаций");
МеханизмыДокумента.Добавить("Продажи");
МеханизмыДокумента.Добавить("РеестрДокументов");
МеханизмыДокумента.Добавить("Обеспечение");
МеханизмыДокумента.Добавить("СебестоимостьИПартионныйУчет");
МеханизмыДокумента.Добавить("СуммыДокументовВВалютахУчета");
МеханизмыДокумента.Добавить("УчетДоходовРасходов");
МеханизмыДокумента.Добавить("УчетНДС");
МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
МеханизмыДокумента.Добавить("УчетРабот");
МеханизмыДокумента.Добавить("ЦеныИСкидки");
МеханизмыДокумента.Добавить("ИсправлениеДокументов");
АктВыполненныхРаботЛокализация.ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента);
КонецПроцедуры
Функция ДанныеДокументаДляПроведения(Документ, Регистры, ДопПараметры = Неопределено) Экспорт
Если ДопПараметры = Неопределено Тогда
ДопПараметры = ПроведениеДокументов.ДопПараметрыИнициализироватьДанныеДокументаДляПроведения();
КонецЕсли;
Если ТипЗнч(Документ) = Тип("ДокументОбъект.АктВыполненныхРабот") Тогда
ДокументСсылка = Документ.Ссылка;
Иначе
ДокументСсылка = Документ;
КонецЕсли;
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолучитьДанныеДокумента(Запрос, ДокументСсылка);
Если Не ДопПараметры.ПолучитьТекстыЗапроса Тогда
ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаВыручкаИСебестоимостьПродаж(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаУслугиКОформлениюОтчетовПринципалу(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры);
ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, ДокументСсылка);
ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры);
РасчетСебестоимостиПроведениеДокументов.ОтразитьВМеханизмеУчетаЗатратИСебестоимости(ДокументСсылка, Запрос, ТекстыЗапроса, Регистры);
ОтразитьВУчетеНДС(Запрос, ТекстыЗапроса, Регистры);
АктВыполненныхРаботЛокализация.ДополнитьТекстыЗапросовПроведения(Запрос, ТекстыЗапроса, Регистры);
КонецЕсли;
ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры);
ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры);
Возврат ПроведениеДокументов.ИнициализироватьДанныеДокументаДляПроведения(Запрос, ТекстыЗапроса, ДопПараметры);
КонецФункции
#КонецОбласти
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
Документы.ПоступлениеБезналичныхДенежныхСредств.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ДоверенностьВыданная.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.КорректировкаРеализации.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ОперацияПоПлатежнойКарте.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.ПриходныйКассовыйОрдер.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Справочники.Претензии.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
Документы.СчетНаОплатуКлиенту.ДобавитьКомандуСоздатьНаОснованииСчетаНаОплатуРеализацияАкт(КомандыСозданияНаОсновании);
ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
АктВыполненныхРаботЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);
КонецПроцедуры
Функция ДобавитьКомандуСоздатьНаОснованииЗаказа(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.АктВыполненныхРабот) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Обработчик = "СозданиеНаОснованииУТКлиент.АктВыполненныхРаботСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Идентификатор = "АктВыполненныхРаботСоздатьНаОснованииЗаказа";
КомандаСоздатьНаОсновании.Представление = НСтр("ru = 'Акт выполненных работ'");
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
КомандаСоздатьНаОсновании.МножественныйВыбор = Истина;
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
Если ПравоДоступа("Добавление", Метаданные.Документы.АктВыполненныхРабот) Тогда
КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.АктВыполненныхРабот.ПолноеИмя();
КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.АктВыполненныхРабот);
КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
Возврат КомандаСоздатьНаОсновании;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
КомандаОтчет = Отчеты.АнализЦенПоставщиков.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,СписокДокументов";
КонецЕсли;
Отчеты.ОтклоненияОтУсловийПродаж.ДобавитьКомандуОтчета(КомандыОтчетов);
Отчеты.ПримененныеСкидкиВДокументе.ДобавитьКомандуОтчета(КомандыОтчетов);
КомандаОтчет = Отчеты.СостояниеВыполненияДокументов.ДобавитьКомандуСостояниеВыполненияРеализацииАкта(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,СписокДокументов";
КонецЕсли;
КомандаОтчет = Отчеты.АнализЦенПоставщиков.ДобавитьКомандуОтчета(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСписка";
КомандаОтчет.Важность = "Важное";
КомандаОтчет.Порядок = 1;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.ЗадолженностьКлиентов_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСписка";
КомандаОтчет.Порядок = 2;
КонецЕсли;
КомандаОтчет = ВзаиморасчетыСервер.КарточкаРасчетовСКлиентом_ДобавитьКомандуОтчетаПоДокументам(КомандыОтчетов);
Если КомандаОтчет <> Неопределено Тогда
КомандаОтчет.ВидимостьВФормах = "ФормаСписка";
КомандаОтчет.Порядок = 3;
КонецЕсли;
АктВыполненныхРаботЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
КонецПроцедуры
Функция РеквизитыДокумента(ДокументСсылка) Экспорт
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.АктПоЗаказам КАК АктПоЗаказам,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов,
| ДанныеДокумента.КурсЧислитель КАК Курс,
| ДанныеДокумента.КурсЗнаменатель КАК Кратность
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &ДокументСсылка
|");
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Дата = Выборка.Дата;
Организация = Выборка.Организация;
Партнер = Выборка.Партнер;
Контрагент = Выборка.Контрагент;
Договор = Выборка.Договор;
НаправлениеДеятельности = Выборка.НаправлениеДеятельности;
ПорядокРасчетов = Выборка.ПорядокРасчетов;
Валюта = Выборка.Валюта;
ВалютаВзаиморасчетов = Выборка.ВалютаВзаиморасчетов;
ПоЗаказу = Выборка.АктПоЗаказам;
СуммаДокумента = Выборка.СуммаДокумента;
СуммаВзаиморасчетов = ?(Выборка.Проведен, Выборка.СуммаВзаиморасчетов, 0);
Курс = Выборка.КурсЧислитель;
Кратность = Выборка.КурсЗнаменатель;
Иначе
Дата = Дата(1,1,1);
Организация = Справочники.Организации.ПустаяСсылка();
Партнер = Справочники.Партнеры.ПустаяСсылка();
Контрагент = Справочники.Контрагенты.ПустаяСсылка();
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПустаяСсылка();
Валюта = Справочники.Валюты.ПустаяСсылка();
ВалютаВзаиморасчетов = Справочники.Валюты.ПустаяСсылка();
ПоЗаказу = Ложь;
СуммаДокумента = 0;
СуммаВзаиморасчетов = 0;
Курс = 1;
Кратность = 1;
КонецЕсли;
СтруктураРеквизитов = Новый Структура;
СтруктураРеквизитов.Вставить("Дата", Дата);
СтруктураРеквизитов.Вставить("Организация", Организация);
СтруктураРеквизитов.Вставить("Партнер", Партнер);
СтруктураРеквизитов.Вставить("Контрагент", Контрагент);
СтруктураРеквизитов.Вставить("Договор", Договор);
СтруктураРеквизитов.Вставить("ПорядокРасчетов", ПорядокРасчетов);
СтруктураРеквизитов.Вставить("Валюта", Валюта);
СтруктураРеквизитов.Вставить("ВалютаВзаиморасчетов", ВалютаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ПоЗаказу", ПоЗаказу);
СтруктураРеквизитов.Вставить("СуммаДокумента", СуммаДокумента);
СтруктураРеквизитов.Вставить("СуммаВзаиморасчетов", СуммаВзаиморасчетов);
СтруктураРеквизитов.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
СтруктураРеквизитов.Вставить("Курс", Курс);
СтруктураРеквизитов.Вставить("Кратность", Кратность);
СтруктураРеквизитов.Вставить("НаправлениеДеятельности", НаправлениеДеятельности);
Возврат СтруктураРеквизитов;
КонецФункции
Процедура ЗаполнитьПоОстаткамЗаказов(ДанныеОтбора,
Услуги,
СкидкиНаценки,
НачислениеБонусныхБаллов,
МассивЗаказов = Неопределено,
ПараметрыЗаполнения) Экспорт
ОтображатьСообщение = Истина;
Если ПараметрыЗаполнения.Свойство("ОтображатьСообщение") Тогда
ОтображатьСообщение = ПараметрыЗаполнения.ОтображатьСообщение;
КонецЕсли;
ПроверятьПорядокРасчетов = Истина;
Если ПараметрыЗаполнения.Свойство("ПроверятьПорядокРасчетов") Тогда
ПроверятьПорядокРасчетов = ПараметрыЗаполнения.ПроверятьПорядокРасчетов;
КонецЕсли;
РезультатЗапросаПоОстаткамЗаказов = ПолучитьРезультатЗапросаПоОстаткамЗаказов(
ДанныеОтбора,
ПараметрыЗаполнения,
МассивЗаказов);
Если РезультатЗапросаПоОстаткамЗаказов[1].Пустой()
И РезультатЗапросаПоОстаткамЗаказов[2].Пустой()
И ПолучитьФункциональнуюОпцию("ИспользоватьПострочнуюОтгрузкуВЗаказеКлиента")
И ОтображатьСообщение Тогда
ТекстОшибки = ПродажиСервер.ТекстОшибкиНетТоваровДоступныхДляОтгрузки(Перечисления.ВариантыОформленияПродажи.АктВыполненныхРабот);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
МассивЗаказовКлиентов = Новый Массив();
МассивПорядковРасчетов = Новый Массив();
ВыборкаУслуги = РезультатЗапросаПоОстаткамЗаказов[1].Выбрать();
Пока ВыборкаУслуги.Следующий() Цикл
Если МассивЗаказовКлиентов.Найти(ВыборкаУслуги.ЗаказКлиента) = Неопределено Тогда
МассивЗаказовКлиентов.Добавить(ВыборкаУслуги.ЗаказКлиента);
КонецЕсли;
Если ПроверятьПорядокРасчетов
И ЗначениеЗаполнено(ВыборкаУслуги.ПорядокРасчетов)
И МассивПорядковРасчетов.Найти(ВыборкаУслуги.ПорядокРасчетов) = Неопределено Тогда
МассивПорядковРасчетов.Добавить(ВыборкаУслуги.ПорядокРасчетов);
КонецЕсли;
КонецЦикла;
Если МассивЗаказов = Неопределено
И ПроверятьПорядокРасчетов
И МассивПорядковРасчетов.Количество() > 1 Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='У найденных заказов отличается поле ""Порядок расчетов""'"));
Возврат;
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| СкидкиНаценки.Ссылка КАК ЗаказКлиента,
| СкидкиНаценки.КлючСвязи КАК КлючСвязи,
| СкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка,
| СкидкиНаценки.Сумма КАК Сумма
|ИЗ
| Документ.ЗаказКлиента.СкидкиНаценки КАК СкидкиНаценки
|ГДЕ
| СкидкиНаценки.Ссылка В (&МассивЗаказовКлиентов)
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| СкидкиНаценки.Ссылка КАК ЗаказКлиента,
| СкидкиНаценки.КлючСвязи КАК КлючСвязи,
| СкидкиНаценки.СкидкаНаценка КАК СкидкаНаценка,
| СкидкиНаценки.Сумма КАК Сумма
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.СкидкиНаценки КАК СкидкиНаценки
|ГДЕ
| СкидкиНаценки.Ссылка В (&МассивЗаказовКлиентов)
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивЗаказовКлиентов", МассивЗаказовКлиентов);
СкидкиНаценкиЗаказа = Запрос.Выполнить().Выгрузить();
СкидкиНаценки.Очистить();
ИспользоватьБонусныеПрограммыЛояльности = ПолучитьФункциональнуюОпцию("ИспользоватьБонусныеПрограммыЛояльности");
Если ИспользоватьБонусныеПрограммыЛояльности Тогда
ТекстЗапроса =
"ВЫБРАТЬ
| ТабличнаяЧасть.Ссылка КАК ЗаказКлиента,
| ТабличнаяЧасть.КлючСвязи КАК КлючСвязи,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности.ВалютаКонвертацииБонусов КАК ВалютаКонвертацииБонусов,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности.КурсКонвертацииБонусовВВалюту КАК КурсКонвертацииБонусовВВалюту,
| ДОБАВИТЬКДАТЕ(ТабличнаяЧасть.ДатаНачисления, ДЕНЬ,
| РАЗНОСТЬДАТ(
| НАЧАЛОПЕРИОДА(ТабличнаяЧасть.Ссылка.Дата, ДЕНЬ),
| НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ),
| ДЕНЬ)
| ) КАК ДатаНачисления,
| ВЫБОР
| КОГДА ТабличнаяЧасть.ДатаСписания = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТабличнаяЧасть.ДатаСписания
| ИНАЧЕ
| ДОБАВИТЬКДАТЕ(
| ТабличнаяЧасть.ДатаСписания,
| ДЕНЬ,
| РАЗНОСТЬДАТ(
| НАЧАЛОПЕРИОДА(ТабличнаяЧасть.Ссылка.Дата, ДЕНЬ),
| НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ),
| ДЕНЬ))
| КОНЕЦ КАК ДатаСписания,
| ТабличнаяЧасть.СуммаБонусныхБаллов КАК СуммаБонусныхБаллов
|ИЗ
| Документ.ЗаказКлиента.НачислениеБонусныхБаллов КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка В (&МассивЗаказовКлиентов)
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| ТабличнаяЧасть.Ссылка,
| ТабличнаяЧасть.КлючСвязи,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности.ВалютаКонвертацииБонусов,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности.КурсКонвертацииБонусовВВалюту,
| ТабличнаяЧасть.ДатаНачисления,
| ТабличнаяЧасть.ДатаСписания,
| ТабличнаяЧасть.СуммаБонусныхБаллов
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.НачислениеБонусныхБаллов КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка В (&МассивЗаказовКлиентов)
|";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр("МассивЗаказовКлиентов", МассивЗаказовКлиентов);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса());
НачислениеБонусныхБалловЗаказа = Запрос.Выполнить().Выгрузить();
БонуснаяПрограммаЛояльности = Новый Структура("БонуснаяПрограммаЛояльности,
|ВалютаКонвертацииБонусов,
|КурсКонвертацииБонусовВВалюту,
|СтруктураКурсовВалютыКонвертации");
БонусныеПрограммыЛояльности = НачислениеБонусныхБалловЗаказа.Скопировать();
БонусныеПрограммыЛояльности.Свернуть("БонуснаяПрограммаЛояльности,
|ВалютаКонвертацииБонусов,
|КурсКонвертацииБонусовВВалюту");
Если БонусныеПрограммыЛояльности.Количество() > 1
И ОтображатьСообщение Тогда
ТекстОшибки = НСтр("ru='Обнаружены разные программы лояльности для начисления бонусных баллов. Заказы
|с разными бонусными программами лояльности не могут быть отгружены в одном документе.'");
ВызватьИсключение ТекстОшибки;
ИначеЕсли БонусныеПрограммыЛояльности.Количество() = 1 Тогда
ЗаполнитьЗначенияСвойств(БонуснаяПрограммаЛояльности, БонусныеПрограммыЛояльности[0]);
БонуснаяПрограммаЛояльности.СтруктураКурсовВалютыКонвертации = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(БонуснаяПрограммаЛояльности.ВалютаКонвертацииБонусов,
ТекущаяДатаСеанса(),
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеОтбора.Организация));
КонецЕсли;
КонецЕсли;
НачислениеБонусныхБаллов.Очистить();
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивЗаказовКлиентов", МассивЗаказовКлиентов);
Запрос.УстановитьПараметр("ВалютаДокумента", ДанныеОтбора.Валюта);
Запрос.Текст =
"ВЫБРАТЬ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Ссылка КАК ЗаказКлиента,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ТаблицаЗаказов.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ВЫБОР
| КОГДА
| ТаблицаЗаказов.Валюта <> &ВалютаДокумента
| ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПересчитатьВВалютуДокумента
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаЗаказов
|ГДЕ
| ТаблицаЗаказов.Ссылка В (&МассивЗаказовКлиентов)
|;
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НАЧАЛОПЕРИОДА(ТаблицаЗаказов.Дата, ДЕНЬ) КАК Дата,
| ТаблицаЗаказов.Валюта КАК Валюта,
| ТаблицаЗаказов.Организация.ВалютаРегламентированногоУчета КАК БазоваяВалюта
|ИЗ
| Документ.ЗаказКлиента КАК ТаблицаЗаказов
|ГДЕ
| ТаблицаЗаказов.Ссылка В (&МассивЗаказовКлиентов)
| И ТаблицаЗаказов.Валюта <> &ВалютаДокумента
|
|";
МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();
РезультатЗапроса = МассивРезультатовЗапроса[0];
РеквизитыЗаказов = РезультатЗапроса.Выбрать();
ТаблицаКурсовВалют = Новый ТаблицаЗначений;
ТаблицаКурсовВалют.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ТаблицаКурсовВалют.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЧислитель", Новый ОписаниеТипов("Число"));
ТаблицаКурсовВалют.Колонки.Добавить("КурсЗнаменатель", Новый ОписаниеТипов("Число"));
РезультатЗапроса = МассивРезультатовЗапроса[1];
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаКурсовВалют.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КурсыВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(Выборка.Валюта, Выборка.Дата, Выборка.БазоваяВалюта);
НоваяСтрока.КурсЧислитель = КурсыВалюты.КурсЧислитель;
НоваяСтрока.КурсЗнаменатель = КурсыВалюты.КурсЗнаменатель;
КонецЦикла;
Если ТаблицаКурсовВалют.Количество() > 0 Тогда
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(ДанныеОтбора.Валюта, ТекущаяДатаСеанса(),
ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(ДанныеОтбора.Организация));
КонецЕсли;
ВыборкаУслуги.Сбросить();
Пока ВыборкаУслуги.Следующий() Цикл
СтавкаНДСТовара = ВыборкаУслуги.СтавкаНДС;
ПересчитатьСуммы = (ВыборкаУслуги.Количество <> ВыборкаУслуги.КоличествоВЗаказе);
ИсключитьСвойства = Неопределено;
Если ПересчитатьСуммы Тогда
ИсключитьСвойства = "Сумма, СуммаНДС, СуммаАвтоматическойСкидки, СуммаРучнойСкидки";
КонецЕсли;
СтрокаТаб = Услуги.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаб, ВыборкаУслуги, , ИсключитьСвойства);
СтрокаТаб.СтавкаНДС = СтавкаНДСТовара;
Если ПересчитатьСуммы Тогда
СтрокаТаб.СуммаСНДС = СтрокаТаб.СуммаВзаиморасчетов;
КонецЕсли;
СтрокаТаб.Количество = ВыборкаУслуги.Количество;
РеквизитыЗаказов.Сбросить();
ЗаказНайден = РеквизитыЗаказов.НайтиСледующий(СтрокаТаб.ЗаказКлиента, "ЗаказКлиента");
ПараметрыОтбора = Новый Структура("Валюта,Дата", РеквизитыЗаказов.Валюта, РеквизитыЗаказов.Дата);
КурсВалюты = ТаблицаКурсовВалют.НайтиСтроки(ПараметрыОтбора);
Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента Тогда
Если КурсВалюты.Количество() = 1 Тогда
СтрокаТаб.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.Цена,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
СтрокаТаб.СуммаСНДС = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.СуммаСНДС,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
ПересчитатьСуммы = Истина;
КонецЕсли;
КонецЕсли;
КоэффициентПересчетаСкидки = ?(ПересчитатьСуммы, СтрокаТаб.Количество / ВыборкаУслуги.КоличествоВЗаказе, 1);
Если КоэффициентПересчетаСкидки <> 1 Тогда
СтрокаТаб.СуммаАвтоматическойСкидки = ОКР(ВыборкаУслуги.СуммаАвтоматическойСкидки * КоэффициентПересчетаСкидки,2);
СтрокаТаб.СуммаРучнойСкидки = ОКР(ВыборкаУслуги.СуммаРучнойСкидки * КоэффициентПересчетаСкидки,2);
СтрокаТаб.СуммаБонусныхБалловКСписанию = ОКР(ВыборкаУслуги.СуммаБонусныхБалловКСписанию * КоэффициентПересчетаСкидки,2);
СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте = ОКР(ВыборкаУслуги.СуммаБонусныхБалловКСписаниюВВалюте * КоэффициентПересчетаСкидки,2);
СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте = ОКР(ВыборкаУслуги.СуммаНачисленныхБонусныхБалловВВалюте * КоэффициентПересчетаСкидки,2);
КонецЕсли;
Если ПересчитатьСуммы Тогда
Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(
СтрокаТаб,
РеквизитыЗаказов.ЦенаВключаетНДС,
СтрокаТаб.ПроцентАвтоматическойСкидки<>0,
СтрокаТаб.ПроцентРучнойСкидки<>0,
РеквизитыЗаказов.ПересчитатьВВалютуДокумента,
"Количество");
Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И КурсВалюты.Количество() = 1 Тогда
СтрокаТаб.СуммаАвтоматическойСкидки = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.СуммаАвтоматическойСкидки,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
СтрокаТаб.СуммаРучнойСкидки = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.СуммаРучнойСкидки,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
КонецЕсли;
КонецЕсли;
СуммаКРаспределению = СтрокаТаб.СуммаАвтоматическойСкидки;
Если СтрокаТаб.КлючСвязи <> 0 Тогда
Для Каждого СтрокаСкидкиЗаказа Из СкидкиНаценкиЗаказа.НайтиСтроки(Новый Структура("ЗаказКлиента,КлючСвязи", СтрокаТаб.ЗаказКлиента, СтрокаТаб.КлючСвязи)) Цикл
СтрокаСкидки = СкидкиНаценки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСкидки, СтрокаСкидкиЗаказа);
СтрокаСкидки.Сумма = КоэффициентПересчетаСкидки * СтрокаСкидки.Сумма;
Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И КурсВалюты.Количество() > 0 Тогда
СтрокаСкидки.Сумма = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СтрокаСкидки.Сумма,
КурсВалюты[0],
СтруктураКурсовНовойВалюты);
СуммаКРаспределению = СуммаКРаспределению - СтрокаСкидки.Сумма;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И СуммаКРаспределению <> 0 Тогда
СтрокаСкидки.Сумма = СтрокаСкидки.Сумма + СуммаКРаспределению;
КонецЕсли;
Если ИспользоватьБонусныеПрограммыЛояльности Тогда
СуммаКРаспределению = СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте;
Если ЗаказНайден
И ЗначениеЗаполнено(БонуснаяПрограммаЛояльности.ВалютаКонвертацииБонусов)
И ДанныеОтбора.Валюта <> БонуснаяПрограммаЛояльности.ВалютаКонвертацииБонусов Тогда
СуммаКРаспределению = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
СуммаКРаспределению,
СтруктураКурсовНовойВалюты,
БонуснаяПрограммаЛояльности.СтруктураКурсовВалютыКонвертации);
КонецЕсли;
Если СуммаКРаспределению <> 0
И ЗначениеЗаполнено(БонуснаяПрограммаЛояльности.КурсКонвертацииБонусовВВалюту) Тогда
СуммаКРаспределению = СуммаКРаспределению / БонуснаяПрограммаЛояльности.КурсКонвертацииБонусовВВалюту;
КонецЕсли;
Если СтрокаТаб.КлючСвязи <> 0 Тогда
Для Каждого СтрокаБонусныеБаллыЗаказа Из НачислениеБонусныхБалловЗаказа.НайтиСтроки(Новый Структура("ЗаказКлиента,КлючСвязи", СтрокаТаб.ЗаказКлиента, СтрокаТаб.КлючСвязи)) Цикл
СтрокаБонусныеБаллы = НачислениеБонусныхБаллов.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаБонусныеБаллы, СтрокаБонусныеБаллыЗаказа);
СтрокаБонусныеБаллы.СуммаБонусныхБаллов = КоэффициентПересчетаСкидки * СтрокаБонусныеБаллы.СуммаБонусныхБаллов;
СуммаКРаспределению = СуммаКРаспределению - СтрокаБонусныеБаллы.СуммаБонусныхБаллов;
КонецЦикла;
КонецЕсли;
Если ЗаказНайден И СуммаКРаспределению <> 0 Тогда
СтрокаБонусныеБаллы.СуммаБонусныхБаллов = СтрокаБонусныеБаллы.СуммаБонусныхБаллов + СуммаКРаспределению;
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТаб, "НоменклатураНабора")
И ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(СтрокаТаб, "ИндексНабора")
И ЗначениеЗаполнено(СтрокаТаб.НоменклатураНабора) Тогда
СтрокаТаб.ИндексНабора = 1;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция СтруктураСостояниеВыполненияДокумента() Экспорт
СтруктураСостояние = Отчеты.СостояниеВыполненияДокументов.ИнициализироватьСтруктуруСостояниеВыполненияДокумента();
СтруктураСостояние.ВыводитьТаблицуРасчетыСКлиентами = 1;
СтруктураСостояние.ВыводитьТаблицыОтгрузка = 2;
СтруктураСостояние.ЭтоНакладная = Истина;
СтруктураСостояние.ЕстьСуммовыеПоказателиОтгрузки = Истина;
СтруктураСостояние.ИмяТЧТоварыОтгрузка = "Услуги";
СтруктураСостояние.ИмяРегистраОтгрузкаУслуг = "РаспоряженияНаОтгрузкуИВозврат";
СтруктураСостояние.СтруктураДопЗапросов = Новый Структура(
"ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено",
ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено());
Возврат СтруктураСостояние
КонецФункции
Функция ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности(Форма) Экспорт
ПорядокОбработкиДокумента = НаправленияДеятельностиСервер.ПорядокОбработкиДокументаПриИзмененииНаправленияДеятельности();
ПорядокОбработкиДокумента.ИменаТабличныхЧастейДляЗаполненияНазначения = "Услуги";
ТаблицаУсловий = НаправленияДеятельностиСервер.УсловияОбработкиНазначенийВСтроках("ТипНоменклатуры,КодСтроки");
ПорядокОбработкиДокумента.УсловияОбработкиСтрок.Вставить("Услуги", ТаблицаУсловий);
ПорядокОбработкиДокумента.ИмяЭлементаФормыОбособленно = "УслугиОбособленно";
ПорядокОбработкиДокумента.ИмяГруппыЭлементовКомандыОбособленно = "УслугиГруппаКомандыОбособленно";
ПорядокОбработкиДокумента.ИмяРеквизитаПоЗаказу = "АктПоЗаказам";
Возврат ПорядокОбработкиДокумента;
КонецФункции
Функция ПараметрыЗаполненияНалогообложенияНДСПродажи(Объект) Экспорт
ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСПродажи();
Если ТипЗнч(Объект) = Тип("ДокументОбъект.АктВыполненныхРабот")
Или ТипЗнч(Объект) = Тип("ДанныеФормыСтруктура") Тогда
ДанныеОбъекта = Объект;
ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.АктВыполненныхРабот") Тогда
ДанныеОбъекта = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Объект, "Организация,Дата,Договор,НаправлениеДеятельности,Подразделение");
КонецЕсли;
ПараметрыЗаполнения.Организация = ДанныеОбъекта.Организация;
ПараметрыЗаполнения.Дата = ДанныеОбъекта.Дата;
ПараметрыЗаполнения.Договор = ДанныеОбъекта.Договор;
ПараметрыЗаполнения.НаправлениеДеятельности = ДанныеОбъекта.НаправлениеДеятельности;
ПараметрыЗаполнения.РеализацияРаботУслуг = Истина;
ПараметрыЗаполнения.Подразделение = ДанныеОбъекта.Подразделение;
Возврат ПараметрыЗаполнения;
КонецФункции
Функция ПараметрыВзаиморасчеты(ДанныеЗаполнения = Неопределено) Экспорт
Если ОбщегоНазначения.ЗначениеСсылочногоТипа(ДанныеЗаполнения) Тогда
СтруктураДанныеЗаполнения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
ДанныеЗаполнения,
"АктПоЗаказам,
|Ссылка");
РеализацияПоЗаказам = СтруктураДанныеЗаполнения.АктПоЗаказам;
ЕстьКорректировки = Ложь;
ПродажиСервер.ПроверитьНаличиеКорректировок(СтруктураДанныеЗаполнения.Ссылка, СтруктураДанныеЗаполнения.Ссылка, ЕстьКорректировки);
ИначеЕсли ДанныеЗаполнения = Неопределено Тогда
РеализацияПоЗаказам = Ложь;
ЕстьКорректировки = Ложь;
Иначе
РеализацияПоЗаказам = ДанныеЗаполнения.АктПоЗаказам;
ЕстьКорректировки = Ложь;
ПродажиСервер.ПроверитьНаличиеКорректировок(ДанныеЗаполнения.Ссылка, ДанныеЗаполнения.Ссылка, ЕстьКорректировки);
КонецЕсли;
СтруктураПараметров = ВзаиморасчетыСервер.ПараметрыМеханизма();
СтруктураПараметров.ЭтоПродажаЗакупка = Истина;
СтруктураПараметров.ТипРасчетов = Перечисления.ТипыРасчетовСПартнерами.РасчетыСКлиентом;
СтруктураПараметров.ВалютаВзаиморасчетов = "Объект.ВалютаВзаиморасчетов";
СтруктураПараметров.СуммаВзаиморасчетов = "Объект.СуммаВзаиморасчетов";
СтруктураПараметров.КурсЧислитель = "Объект.КурсЧислитель";
СтруктураПараметров.КурсЗнаменатель = "Объект.КурсЗнаменатель";
СтруктураПараметров.ПутьКДаннымТЧ = "Объект.Услуги";
СтруктураПараметров.ИмяРеквизитаТЧЗаказ = "ЗаказКлиента";
СтруктураПараметров.ПутьКДаннымТЧРасшифровкаПлатежа = "Объект.РасшифровкаПлатежа";
СтруктураПараметров.Менеджер = "Объект.Менеджер";
СтруктураПараметров.НакладнаяПоЗаказам = "Объект.АктПоЗаказам";
СтруктураПараметров.ЗаказОснование = "Объект.ЗаказКлиента";
СтруктураПараметров.ГрафикОплаты = "Объект.ГрафикОплаты";
СтруктураПараметров.ЭлементыФормы.НадписьВалюты = "ДекорацияВалюты";
СтруктураПараметров.ЭлементыФормы.НадписьЭтапы = "ДекорацияЭтапыОплаты";
СтруктураПараметров.ЭлементыФормы.НадписьРасчеты = "ДекорацияСостояниеРасчетов";
СтруктураПараметров.ЭлементыФормы.ЗачетОплаты = "ЗачетОплатыФорма";
СтруктураПараметров.ЭлементыФормы.СуммаВзаиморасчетовТЧ = "УслугиСуммаВзаиморасчетов";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиТекст = "ДекорацияОграничениеЗадолженности";
СтруктураПараметров.ЭлементыФормы.ОграничениеЗадолженностиКартинка = "КартинкаОтгрузкаЗапрещена";
СтруктураПараметров.ЭлементыФормы.ГруппаФинансовогоУчета = "ГруппаФинансовогоУчета";
СтруктураПараметров.ЭлементыФормы.НаправлениеДеятельности = "НаправлениеДеятельности";
СтруктураПараметров.ВалютыИКурсДокументаТолькоПросмотр = ЕстьКорректировки;
СтруктураПараметров.ВалютаДокументаТолькоПросмотр = НЕ ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж() И РеализацияПоЗаказам;
СтруктураПараметров.ВалютаВзаиморасчетовТолькоПросмотр = НЕ ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж() И РеализацияПоЗаказам;
СтруктураПараметров.НеПоказыватьРасчеты = Ложь;
СтруктураПараметров.ПутьКДаннымТЧЭтапыОплаты = "Объект.ЭтапыГрафикаОплаты";
СтруктураПараметров.НадписьЭтапыОплаты = "Форма.НадписьЭтапыОплаты";
СтруктураПараметров.ИсточникСуммТабличнаяЧасть = Истина;
СтруктураПараметров.СуммаДокументаФорма = "Форма.СуммаВсего";
СтруктураПараметров.ЭтапыОплатыТолькоПросмотр = Не (ПраваПользователяПовтИсп.ОтклонениеОтУсловийПродаж() ИЛИ НЕ РеализацияПоЗаказам);
СтруктураПараметров.ВозможнаНакладнаяПоНесколькимЗаказам = ПолучитьФункциональнуюОпцию("ИспользоватьАктыВыполненныхРаботПоНесколькимЗаказам");
СтруктураПараметров.СуммаЗалогаЗаТаруФорма = "";
СтруктураПараметров.СуммаВзаиморасчетовПоТаре = "";
СтруктураПараметров.ОбъектРасчетов = "Объект.Услуги.ОбъектРасчетов";
Возврат СтруктураПараметров;
КонецФункции
#Область ОснованиеДляПечати
Функция СтруктураОснованияДляПечати(Объект) Экспорт
СтруктураОснования = СтруктураОснования(Объект, Объект.ПорядокРасчетов);
Возврат СтруктураОснования;
КонецФункции
Функция ТаблицаОснованийДляПечати(Объект) Экспорт
ТаблицаОснований = Новый ТаблицаЗначений;
ТаблицаОснований.Колонки.Добавить("Основание", Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(300)));
ТаблицаОснований.Колонки.Добавить("ОснованиеДата", Новый ОписаниеТипов("Дата",,,,,Новый КвалификаторыДаты(ЧастиДаты.Дата)));
ТаблицаОснований.Колонки.Добавить("ОснованиеНомер", Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(128)));
СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов);
Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = СтруктураОснования.Основание;
Если ЗначениеЗаполнено(СтруктураОснования.ОснованиеДата) И ЗначениеЗаполнено(СтруктураОснования.ОснованиеНомер) Тогда
ТекстРасширенный = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 № %2 от %3'"),
СтруктураОснования.Основание, СтруктураОснования.ОснованиеНомер, Формат(СтруктураОснования.ОснованиеДата, "ДЛФ=DD"));
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = ТекстРасширенный;
КонецЕсли;
КонецЕсли;
СтруктураОснования = СтруктураОснования(Объект, Перечисления.ПорядокРасчетов.ПоЗаказам);
Если ЗначениеЗаполнено(СтруктураОснования.Основание) Тогда
ДобавленнаяСтрока = ТаблицаОснований.Добавить();
ЗаполнитьЗначенияСвойств(ДобавленнаяСтрока, СтруктураОснования);
ДобавленнаяСтрока.Основание = СтруктураОснования.Основание;
КонецЕсли;
Возврат ТаблицаОснований;
КонецФункции
Функция СтруктураОснования(Объект, ПорядокРасчетов)
СтруктураОснование = Новый Структура;
СтруктураОснование.Вставить("Основание");
СтруктураОснование.Вставить("ОснованиеНомер");
СтруктураОснование.Вставить("ОснованиеДата");
Если (ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамНакладным)
И ЗначениеЗаполнено(Объект.Договор) Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДоговорыКонтрагентов.НаименованиеДляПечати КАК Основание,
| ДоговорыКонтрагентов.Дата КАК ОснованиеДата,
| ДоговорыКонтрагентов.Номер КАК ОснованиеНомер
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка", Объект.Договор);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СтруктураОснование.Основание = СокрЛП(Выборка.Основание);
СтруктураОснование.ОснованиеДата = Выборка.ОснованиеДата;
СтруктураОснование.ОснованиеНомер = СокрЛП(Выборка.ОснованиеНомер);
КонецЕсли;
ИначеЕсли (ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказам
Или ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоЗаказамНакладным)
И Объект.АктПоЗаказам Тогда
МассивЗаказов = Неопределено;
Если ЗначениеЗаполнено(Объект.ЗаказКлиента) Тогда
МассивЗаказов = Новый Массив;
МассивЗаказов.Добавить(Объект.ЗаказКлиента);
ИначеЕсли Объект.Услуги.Количество() <> 0 Тогда
Если ТипЗнч(Объект) = Тип("Структура") Тогда
МассивЗаказов = Объект.Услуги.ВыгрузитьКолонку("ЗаказКлиента");
Иначе
МассивЗаказов = Объект.Услуги.Выгрузить(,"ЗаказКлиента").ВыгрузитьКолонку("ЗаказКлиента");
КонецЕсли;
КонецЕсли;
Если МассивЗаказов <> Неопределено Тогда
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказыКлиентов.НомерПоДаннымКлиента КАК НомерПоДаннымКлиента,
| ЗаказыКлиентов.ДатаПоДаннымКлиента КАК ДатаПоДаннымКлиента,
| ЗаказыКлиентов.Номер КАК Номер,
| ЗаказыКлиентов.Дата КАК Дата,
| &СинонимЗаказа КАК Синоним
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказыКлиентов
|ГДЕ
| ЗаказыКлиентов.Ссылка В(&МассивЗаказов)");
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.УстановитьПараметр("СинонимЗаказа", НСтр("ru='Заказ клиента'"));
Выборка = Запрос.Выполнить().Выбрать();
ТекстПоЗаказам = "";
ОдноОснование = Выборка.Количество() = 1;
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.НомерПоДаннымКлиента) И ЗначениеЗаполнено(Выборка.ДатаПоДаннымКлиента) Тогда
ТекстПоЗаказам = ТекстПоЗаказам + ", " +
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = '%1 № %2 от %3'"),
Выборка.Синоним, Выборка.НомерПоДаннымКлиента, Формат(Выборка.ДатаПоДаннымКлиента, "ДЛФ=DD"));
ДатаПоЗаказам = Выборка.ДатаПоДаннымКлиента;
НомерПоЗаказам = Выборка.НомерПоДаннымКлиента;
Иначе
ТекстПоЗаказам = ТекстПоЗаказам + ", " + ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(Выборка, Выборка.Синоним);
ДатаПоЗаказам = Выборка.Дата;
НомерПоЗаказам = Выборка.Номер;
КонецЕсли;
КонецЦикла;
СтруктураОснование.Основание = СокрЛП(Сред(ТекстПоЗаказам, 3));
СтруктураОснование.ОснованиеДата = ?(ОдноОснование, ДатаПоЗаказам, "");
СтруктураОснование.ОснованиеНомер = ?(ОдноОснование,ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(НомерПоЗаказам),"");
КонецЕсли;
КонецЕсли;
Возврат СтруктураОснование;
КонецФункции
#КонецОбласти
#Область ПроведениеПоРеглУчету
#КонецОбласти
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Организация)
| И ЗначениеРазрешено(Подразделение)
| И ЗначениеРазрешено(Партнер)";
Ограничение.ТекстДляВнешнихПользователей =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК ЭтотСписок
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиПартнеры
| ПО ВнешниеПользователиПартнеры.ОбъектАвторизации = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
| ПО КонтактныеЛицаПартнеров.Владелец = ЭтотСписок.Партнер
|
|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВнешниеПользователи КАК ВнешниеПользователиКонтактныеЛица
| ПО ВнешниеПользователиКонтактныеЛица.ОбъектАвторизации = КонтактныеЛицаПартнеров.Ссылка
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(ВнешниеПользователиПартнеры.Ссылка)
| ИЛИ ЗначениеРазрешено(ВнешниеПользователиКонтактныеЛица.Ссылка)";
КонецПроцедуры
#КонецОбласти
#Область УчетНДС
Функция ПараметрыРегистрацииСчетовФактурВыданных(Объект) Экспорт
ПараметрыРегистрации = УчетНДСУПКлиентСервер.ПараметрыРегистрацииСчетовФактурВыданных();
ПараметрыРегистрации.Ссылка = Объект.Ссылка;
ПараметрыРегистрации.Дата = Объект.Дата;
ПараметрыРегистрации.Организация = Объект.Организация;
ПараметрыРегистрации.Контрагент = Объект.Контрагент;
ПараметрыРегистрации.НалогообложениеНДС = Объект.НалогообложениеНДС;
ПараметрыРегистрации.РеализацияРаботУслуг = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
#КонецОбласти
Процедура ЗадатьОписаниеЗаполняемыхРеквизитовПоСтатистике(ОписаниеРеквизитов) Экспорт
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Организация", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, ЗаказКлиента, Менеджер";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Партнер, Соглашение";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Подразделение", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчетОрганизации", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Автор, Организация";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Автор, Организация";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"Касса", Параметры);
Параметры = ЗаполнениеОбъектовПоСтатистике.ПараметрыЗаполняемыхРеквизитов();
Параметры.РазрезыСбораСтатистики.ИспользоватьВсегда = "Контрагент";
Параметры.РазрезыСбораСтатистики.ИспользоватьТолькоЗаполненные = "Договор, Валюта";
Параметры.ЗаполнятьПриУсловии.ПоляОбъектаЗаполнены = "Контрагент";
ЗаполнениеОбъектовПоСтатистике.ДобавитьОписаниеЗаполняемыхРеквизитов(ОписаниеРеквизитов,
"БанковскийСчетКонтрагента", Параметры);
КонецПроцедуры
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
ТаблицыДокумента = Новый Структура("Услуги");
Возврат ТаблицыДокумента;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
ИсточникиДанных = Новый Соответствие;
Возврат ИсточникиДанных;
КонецФункции
Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ДанныеДокументаУслуги.ЗаказКлиента.ЭтоЗаказКакСчет КАК ЭтоЗаказКакСчет
|ПОМЕСТИТЬ ДанныеДокументаУслуги
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ДанныеДокументаУслуги
|ГДЕ
| ДанныеДокументаУслуги.Ссылка = &Ссылка
|;
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.ЗаказКлиента КАК ЗаказКлиента,
| ДанныеДокумента.Валюта КАК Валюта,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.АктПоЗаказам КАК АктПоЗаказам,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Менеджер КАК Менеджер,
|
| ДанныеДокумента.Договор.ДопустимаяСуммаЗадолженности КАК ДопустимаяСуммаЗадолженности,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ЕСТЬNULL(ДанныеДокументаУслуги.ЭтоЗаказКакСчет, НЕОПРЕДЕЛЕНО) КАК ЭтоЗаказКакСчет,
| ДанныеДокумента.КартаЛояльности.Владелец.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ДанныеДокументаУслуги
| ПО ИСТИНА
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка";
Реквизиты = Запрос.Выполнить().Выбрать();
Реквизиты.Следующий();
Запрос.УстановитьПараметр("Период", Реквизиты.Период);
Запрос.УстановитьПараметр("Валюта", Реквизиты.Валюта);
Запрос.УстановитьПараметр("Организация", Реквизиты.Организация);
Запрос.УстановитьПараметр("ВалютаРегламентированногоУчета", Реквизиты.ВалютаРегламентированногоУчета);
Запрос.УстановитьПараметр("Партнер", Реквизиты.Партнер);
Запрос.УстановитьПараметр("Контрагент", Реквизиты.Контрагент);
Запрос.УстановитьПараметр("ЗаказКлиента", Реквизиты.ЗаказКлиента);
Запрос.УстановитьПараметр("Договор", Реквизиты.Договор);
Запрос.УстановитьПараметр("ГруппаФинансовогоУчета", Реквизиты.ГруппаФинансовогоУчета);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", ?(Реквизиты.ЦенаВключаетНДС, 0, 1));
Запрос.УстановитьПараметр("АктПоЗаказам", Реквизиты.АктПоЗаказам);
Запрос.УстановитьПараметр("Подразделение", Реквизиты.Подразделение);
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", Реквизиты.ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("Соглашение", Реквизиты.Соглашение);
Запрос.УстановитьПараметр("ФормаОплаты", Реквизиты.ФормаОплаты);
Запрос.УстановитьПараметр("ДопустимаяСуммаЗадолженности", Реквизиты.ДопустимаяСуммаЗадолженности);
Запрос.УстановитьПараметр("НалогообложениеНДС", Реквизиты.НалогообложениеНДС);
Запрос.УстановитьПараметр("Менеджер", Реквизиты.Менеджер);
Запрос.УстановитьПараметр("ГруппаФинансовогоУчета", Реквизиты.ГруппаФинансовогоУчета);
Запрос.УстановитьПараметр("НаправлениеДеятельности", Реквизиты.НаправлениеДеятельности);
Запрос.УстановитьПараметр("СписокТиповСАналитикойПодразделение", ПродажиСервер.ТипыНоменклатурыСАналитикойПодразделение());
Запрос.УстановитьПараметр("БонуснаяПрограммаЛояльности", Реквизиты.БонуснаяПрограммаЛояльности);
Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяУниверсальнаяДата());
Запрос.УстановитьПараметр("СуммаДокумента", Реквизиты.СуммаДокумента);
Запрос.УстановитьПараметр("Номер", Реквизиты.Номер);
Запрос.УстановитьПараметр("Комментарий", Реквизиты.Комментарий);
Запрос.УстановитьПараметр("ПометкаУдаления", Реквизиты.ПометкаУдаления);
Запрос.УстановитьПараметр("Проведен", Реквизиты.Проведен);
Запрос.УстановитьПараметр("Автор", Реквизиты.Автор);
ЗначенияПараметровПроведения = ЗначенияПараметровПроведения(Реквизиты);
Для каждого КлючИЗначение Из ЗначенияПараметровПроведения Цикл
Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
КонецЦикла;
Если Реквизиты.ЭтоЗаказКакСчет = Неопределено Тогда
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"));
Иначе
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента", Не Реквизиты.ЭтоЗаказКакСчет);
КонецЕсли;
УчетНДСУП.УстановитьПараметрыЗапросаСтавкиНДС(Запрос.Параметры, Запрос.Параметры.Организация, Запрос.Параметры.Период);
РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
КонецПроцедуры
Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)
ЗначенияПараметровПроведения = Новый Структура;
ЗначенияПараметровПроведения.Вставить("ИдентификаторМетаданных", ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Документ.АктВыполненныхРабот"));
ЗначенияПараметровПроведения.Вставить("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.РеализацияКлиенту);
ЗначенияПараметровПроведения.Вставить("НастройкаХозяйственнойОперации", Справочники.НастройкиХозяйственныхОпераций.РеализацияКлиенту);
ЗначенияПараметровПроведения.Вставить("ВалютаУправленческогоУчета", Константы.ВалютаУправленческогоУчета.Получить());
ЗначенияПараметровПроведения.Вставить("ИспользоватьПродажуАгентскихУслуг", ПолучитьФункциональнуюОпцию("ИспользоватьПродажуАгентскихУслуг"));
ЗначенияПараметровПроведения.Вставить("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"));
Если Реквизиты <> Неопределено Тогда
Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
ШаблонСтроки = "ru = 'По договору ""%1""'";
ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
КонецЕсли;
ЗначенияПараметровПроведения.Вставить("ИнформацияПоДоговору", ИнформацияПоДоговору);
ЗначенияПараметровПроведения.Вставить("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
КонецЕсли;
Возврат ЗначенияПараметровПроведения;
КонецФункции
Процедура СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса, Регистры = Неопределено) Экспорт
ТекстЗапросаДанныхДокументов = "
|ВЫБРАТЬ
| ""ТоварыРаботыУслуги"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
|
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Валюта КАК ВалютаДокумента,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Дата КАК ПериодБазыНДС,
| ДанныеДокумента.Дата КАК ДатаКурса,
|
| ТаблицаУслуги.НомерСтроки КАК НомерСтроки,
| ТаблицаУслуги.ИдентификаторСтроки КАК ИдентификаторСтроки,
|
| ТаблицаУслуги.СуммаСНДС - ТаблицаУслуги.СуммаНДС КАК СуммаБезНДС,
| ТаблицаУслуги.СтавкаНДС КАК СтавкаНДС,
| ТаблицаУслуги.СуммаНДС КАК СуммаНДС,
| ТаблицаУслуги.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ИСТИНА КАК ОтражаетсяВРасчетах,
| ТаблицаУслуги.ОбъектРасчетов КАК ОбъектРасчетов,
| ИСТИНА КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокумента
| ПО ТаблицаУслуги.Ссылка = ДанныеДокумента.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ТаблицаУслуги.Ссылка = ТаблицаВидыЗапасов.Ссылка
| И ТаблицаУслуги.АналитикаУчетаНоменклатуры = ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
|ГДЕ
| ТаблицаУслуги.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ""ТоварыРаботыУслуги"" КАК ИсточникДанных,
| ИСТИНА КАК РаспределятьОбщуюСумму,
|
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Валюта КАК ВалютаДокумента,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.Дата КАК ПериодБазыНДС,
| ДанныеДокумента.Дата КАК ДатаКурса,
|
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
|
| ТаблицаВидыЗапасов.СуммаСНДС - ТаблицаВидыЗапасов.СуммаНДС КАК СуммаБезНДС,
| ТаблицаВидыЗапасов.СтавкаНДС КАК СтавкаНДС,
| ТаблицаВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| 0 КАК СуммаНДСВзаиморасчетов,
| 0 КАК СуммаБезНДСРегл,
| 0 КАК СуммаБезНДСУпр,
|
| ИСТИНА КАК ОтражаетсяВРасчетах,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ИСТИНА КАК ПересчитыватьПоДаннымРасчетов
|ИЗ
| Документ.АктВыполненныхРабот.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокумента
| ПО ТаблицаВидыЗапасов.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка В(&Ссылка)
|";
РегистрыСведений.СуммыДокументовВВалютахУчета.СформироватьПоДаннымДокумента(
Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаДанныхДокументов);
КонецПроцедуры
Процедура ИнициализироватьАналитикуУчетаПоПартнерам(Запрос)
Если Запрос.Параметры.Свойство("АналитикаУчетаПоПартнерам") Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам",
РегистрыСведений.АналитикаУчетаПоПартнерам.ЗначениеКлючаАналитики(Запрос.Параметры));
КонецПроцедуры
Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
Возврат;
КонецЕсли;
ЗапросАналитик = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Серия КАК Серия,
| Таблица.Назначение КАК Назначение,
| Таблица.Склад КАК Склад
|ИЗ
| (
| ВЫБРАТЬ
| ТаблицаУслуги.Номенклатура КАК Номенклатура,
| ТаблицаУслуги.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ВЫБОР
| КОГДА ТаблицаУслуги.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ТаблицаУслуги.Подразделение
| КОНЕЦ КАК Склад
| ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказыКлиентов
| ПО ЗаказыКлиентов.Ссылка = ТаблицаУслуги.ЗаказКлиента
| ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТаблицаУслуги.Номенклатура КАК Номенклатура,
| ТаблицаУслуги.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаУслуги.Назначение КАК Назначение,
| ТаблицаУслуги.Подразделение КАК Склад
| ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
| ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
| И ТаблицаУслуги.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) КАК Назначение,
| ЕСТЬNULL(Услуги.Характеристика.Принципал, СпрНоменклатура.Принципал) КАК Склад
| ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Услуги
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = Услуги.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Услуги.Номенклатура = Аналитика.Номенклатура
| И Услуги.Характеристика = Аналитика.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = Аналитика.Серия
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = Аналитика.Назначение
| И ЕСТЬNULL(Услуги.Характеристика.Принципал, СпрНоменклатура.Принципал) = Аналитика.МестоХранения
| ГДЕ
| Услуги.Ссылка = &Ссылка
| И ЕСТЬNULL(Услуги.Характеристика.Принципал, СпрНоменклатура.Принципал) <> НЕОПРЕДЕЛЕНО
| И ЕСТЬNULL(Услуги.Характеристика.Принципал, СпрНоменклатура.Принципал) <> &Организация
| И Аналитика.КлючАналитики ЕСТЬ NULL
| И СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ) КАК Таблица
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК Аналитика
| ПО Аналитика.Номенклатура = Таблица.Номенклатура
| И Аналитика.Характеристика = Таблица.Характеристика
| И Аналитика.Серия = Таблица.Серия
| И Аналитика.Назначение = Таблица.Назначение
| И Аналитика.МестоХранения = Таблица.Склад
|ГДЕ
| Аналитика.Номенклатура ЕСТЬ NULL
|");
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
ЗапросАналитик.УстановитьПараметр("Организация", Запрос.Параметры.Организация);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНоменклатуры.СоздатьКлючАналитики(Выборка)
КонецЦикла;
ЗапросАналитик = Новый Запрос("
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Ключи.НоменклатураНабора КАК НоменклатураНабора,
| Ключи.ХарактеристикаНабора КАК ХарактеристикаНабора
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасов КАК Товары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНаборов КАК Ключи
| ПО Товары.АналитикаУчетаНаборов = Ключи.КлючАналитики
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНаборов КАК Аналитика
| ПО Ключи.НоменклатураНабора = Аналитика.НоменклатураНабора
| И Ключи.ХарактеристикаНабора = Аналитика.ХарактеристикаНабора
|ГДЕ
| Аналитика.НоменклатураНабора ЕСТЬ NULL
|");
ЗапросАналитик.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
ЗапросАналитик.УстановитьПараметр("Ссылка", Запрос.Параметры.Ссылка);
Выборка = ЗапросАналитик.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
РегистрыСведений.АналитикаУчетаНаборов.СоздатьКлючАналитики(Выборка);
КонецЦикла;
Запрос.УстановитьПараметр("КлючиАналитикиУчетаНоменклатурыИнициализированы", Истина);
КонецПроцедуры
Процедура ИнициализироватьКурсыВалют(Запрос) Экспорт
Если Запрос.Параметры.Свойство("КоэффициентПересчетаВВалютуУПР") Тогда
Возврат;
КонецЕсли;
Коэффициенты = РаботаСКурсамивалютУТ.ПолучитьКоэффициентыПересчетаВалюты(Запрос.Параметры.Валюта,
Запрос.Параметры.ВалютаВзаиморасчетов, Запрос.Параметры.Период, Запрос.Параметры.Организация);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУПР", Коэффициенты.КоэффициентПересчетаВВалютуУПР);
Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
КонецПроцедуры
Процедура УстановитьПараметрЗапросаТипыНалогообложенияНДСОблагаемые(Запрос) Экспорт
Если Запрос.Параметры.Свойство("ТипыНалогообложенияНДСОблагаемые") Тогда
Возврат;
КонецЕсли;
Запрос.УстановитьПараметр("ТипыНалогообложенияНДСОблагаемые", УчетНДСУП.ВидыДеятельностиНДСПринимаетсяКВозмещению());
КонецПроцедуры
Функция ТекстЗапросаТаблицаРаспоряженияНаОтгрузку(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РаспоряженияНаОтгрузкуИВозврат";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаУслуги.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| ТаблицаУслуги.ЗаказКлиента КАК Распоряжение,
| ТаблицаУслуги.Номенклатура КАК Номенклатура,
| ТаблицаУслуги.Характеристика КАК Характеристика,
| ТаблицаУслуги.КодСтроки КАК КодСтроки,
| ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка) КАК Склад,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ТаблицаПоказателей.Ссылка КАК Показатель,
| ТаблицаУслуги.Количество КАК Количество,
| ТаблицаУслуги.СуммаВзаиморасчетов КАК Сумма
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат КАК ТаблицаПоказателей
| ПО ТаблицаПоказателей.Ссылка В (ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Оформлено),
| ЗНАЧЕНИЕ(Перечисление.ПоказателиРаспоряженийНаОтгрузкуИВозврат.Отгружено))
|ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
| И &АктПоЗаказам
| И &ИспользоватьРасширенныеВозможностиЗаказаКлиента
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки,
| Показатель";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтПодходящиеСоглашения(ТекстыЗапроса)
ИмяРегистра = "ВтПодходящиеСоглашения";
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| КОформлению.Номенклатура КАК Номенклатура,
| КОформлению.Характеристика КАК Характеристика,
| ЕСТЬNULL(СоглашениеСПоставщиком.Ссылка, СоглашениеСПоставщикомБезУслуг.Ссылка) КАК Ссылка,
| ЕСТЬNULL(СоглашениеСПоставщиком.Ссылка.Статус, СоглашениеСПоставщикомБезУслуг.Статус) КАК Статус,
| ЕСТЬNULL(СоглашениеСПоставщиком.Ссылка.ДатаОкончанияДействия,
| СоглашениеСПоставщикомБезУслуг.ДатаОкончанияДействия) КАК ДатаОкончанияДействия
|ПОМЕСТИТЬ ВтПодходящиеСоглашения_Услуги
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК КОформлению
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками.АгентскиеУслуги КАК СоглашениеСПоставщиком
| ПО СоглашениеСПоставщиком.Ссылка.Партнер = ЕСТЬNULL(КОформлению.Характеристика.Принципал,
| КОформлению.Номенклатура.Принципал)
| И СоглашениеСПоставщиком.Ссылка.Организация = &Организация
| И СоглашениеСПоставщиком.Ссылка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| И СоглашениеСПоставщиком.Ссылка.Статус В (ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует),
| ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Закрыто))
| И &Период >= СоглашениеСПоставщиком.Ссылка.ДатаНачалаДействия
| И (&Период <= СоглашениеСПоставщиком.Ссылка.ДатаОкончанияДействия
| ИЛИ СоглашениеСПоставщиком.Ссылка.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1))
| И КОформлению.Номенклатура = СоглашениеСПоставщиком.Номенклатура
| И КОформлению.Характеристика = СоглашениеСПоставщиком.Характеристика
| И СоглашениеСПоставщиком.Ссылка.ИспользоватьУказанныеАгентскиеУслуги
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками КАК СоглашениеСПоставщикомБезУслуг
| ПО СоглашениеСПоставщикомБезУслуг.Партнер = ЕСТЬNULL(КОформлению.Характеристика.Принципал,
| КОформлению.Номенклатура.Принципал)
| И СоглашениеСПоставщикомБезУслуг.Организация = &Организация
| И СоглашениеСПоставщикомБезУслуг.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОказаниеАгентскихУслуг)
| И СоглашениеСПоставщикомБезУслуг.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
| И &Период >= СоглашениеСПоставщикомБезУслуг.ДатаНачалаДействия
| И (&Период <= СоглашениеСПоставщикомБезУслуг.ДатаОкончанияДействия
| ИЛИ СоглашениеСПоставщикомБезУслуг.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1))
| И НЕ СоглашениеСПоставщикомБезУслуг.ИспользоватьУказанныеАгентскиеУслуги
|
|ГДЕ
| КОформлению.Ссылка = &Ссылка
| И КОформлению.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| И ЕСТЬNULL(КОформлению.Характеристика.Принципал, КОформлению.Номенклатура.Принципал) <> &Организация
| И ЕСТЬNULL(КОформлению.Характеристика.Принципал, КОформлению.Номенклатура.Принципал) <> НЕОПРЕДЕЛЕНО
| И &ИспользоватьПродажуАгентскихУслуг
|;
|
|
|ВЫБРАТЬ
| ВыбранныеСоглашения.Номенклатура КАК Номенклатура,
| ВыбранныеСоглашения.Характеристика КАК Характеристика,
| ВыбранныеСоглашения.Ссылка КАК Ссылка,
| СоглашениеСПоставщиком.Статус КАК Статус,
| СоглашениеСПоставщиком.Валюта КАК Валюта
| ПОМЕСТИТЬ ВтПодходящиеСоглашения
|ИЗ
| (ВЫБРАТЬ
| ДанныеПоУслугам.Номенклатура КАК Номенклатура,
| ДанныеПоУслугам.Характеристика КАК Характеристика,
| ДанныеПоУслугам.Ссылка КАК Ссылка
| ИЗ
| ВтПодходящиеСоглашения_Услуги КАК ДанныеПоУслугам
| ГДЕ
| ДанныеПоУслугам.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДанныеПоУслугам.Номенклатура,
| ДанныеПоУслугам.Характеристика,
| МАКСИМУМ(ДанныеПоУслугам.Ссылка)
| ИЗ
| ВтПодходящиеСоглашения_Услуги КАК ДанныеПоУслугам
| ГДЕ
| ДанныеПоУслугам.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Закрыто)
| И (ДанныеПоУслугам.Номенклатура, ДанныеПоУслугам.Характеристика, ДанныеПоУслугам.ДатаОкончанияДействия) В
| (ВЫБРАТЬ
| Номенклатура,
| Характеристика,
| МАКСИМУМ(ДатаОкончанияДействия)
| ИЗ
| ВтПодходящиеСоглашения_Услуги
| ГДЕ
| ДанныеПоУслугам.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Закрыто)
| СГРУППИРОВАТЬ ПО
| Номенклатура,
| Характеристика)
|
| СГРУППИРОВАТЬ ПО
| ДанныеПоУслугам.Номенклатура,
| ДанныеПоУслугам.Характеристика) КАК ВыбранныеСоглашения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СоглашенияСПоставщиками КАК СоглашениеСПоставщиком
| ПО ВыбранныеСоглашения.Ссылка = СоглашениеСПоставщиком.Ссылка
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтАгентскиеУслуги(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтАгентскиеУслуги";
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтПодходящиеСоглашения", ТекстыЗапроса) Тогда
ТекстЗапросаВтПодходящиеСоглашения(ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВЫБОР
| КОГДА НЕ СоглашениеПоУслугамДействующие.Ссылка ЕСТЬ NULL
| ТОГДА СоглашениеПоУслугамДействующие.Ссылка
| ИНАЧЕ ЕСТЬNULL(СоглашениеПоУслугамЗакрытые.Ссылка, НЕОПРЕДЕЛЕНО)
| КОНЕЦ КАК Соглашение,
| ВЫБОР
| КОГДА НЕ СоглашениеПоУслугамДействующие.Ссылка ЕСТЬ NULL
| ТОГДА СоглашениеПоУслугамДействующие.Валюта
| ИНАЧЕ ЕСТЬNULL(СоглашениеПоУслугамЗакрытые.Валюта, &Валюта)
| КОНЕЦ КАК Валюта,
| КОформлению.Номенклатура КАК Номенклатура,
| КОформлению.Характеристика КАК Характеристика,
| ЕСТЬNULL(КОформлению.Характеристика.Принципал, КОформлению.Номенклатура.Принципал) КАК Принципал
|ПОМЕСТИТЬ ВтАгентскиеУслуги
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК КОформлению
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтПодходящиеСоглашения КАК СоглашениеПоУслугамДействующие
| ПО КОформлению.Номенклатура = СоглашениеПоУслугамДействующие.Номенклатура
| И КОформлению.Характеристика = СоглашениеПоУслугамДействующие.Характеристика
| И СоглашениеПоУслугамДействующие.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Действует)
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтПодходящиеСоглашения КАК СоглашениеПоУслугамЗакрытые
| ПО КОформлению.Номенклатура = СоглашениеПоУслугамЗакрытые.Номенклатура
| И КОформлению.Характеристика = СоглашениеПоУслугамЗакрытые.Характеристика
| И СоглашениеПоУслугамЗакрытые.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСПоставщиками.Закрыто)
| И СоглашениеПоУслугамДействующие.Ссылка ЕСТЬ NULL
|
|ГДЕ
| КОформлению.Ссылка = &Ссылка
| И КОформлению.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| И ЕСТЬNULL(КОформлению.Характеристика.Принципал, КОформлению.Номенклатура.Принципал) <> &Организация
| И ЕСТЬNULL(КОформлению.Характеристика.Принципал, КОформлению.Номенклатура.Принципал) <> НЕОПРЕДЕЛЕНО
| И &ИспользоватьПродажуАгентскихУслуг";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтАналитика(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтАналитика";
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаУслуги.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаУслуги.Номенклатура КАК Номенклатура,
| ТаблицаУслуги.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаУслуги.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ТОГДА ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
| ИНАЧЕ ТаблицаУслуги.Подразделение
| КОНЕЦ КАК Склад,
| ТаблицаУслуги.Назначение КАК Назначение
|ПОМЕСТИТЬ ВтАналитика
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
|
|ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| ЗаказКлиента,
| Номенклатура,
| Характеристика,
| Назначение";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтРаботыУслуги(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтРаботыУслуги";
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
УстановитьПараметрЗапросаТипыНалогообложенияНДСОблагаемые(Запрос);
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ИнициализироватьКурсыВалют(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтАгентскиеУслуги", ТекстыЗапроса) Тогда
ТекстЗапросаВтАгентскиеУслуги(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтАналитика", ТекстыЗапроса) Тогда
ТекстЗапросаВтАналитика(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаУслуги.НомерСтроки КАК НомерСтроки,
| КлючиАналитики.КлючАналитики КАК АналитикаУчетаНоменклатуры,
| КлючиАналитикиБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| КлючиАналитики.МестоХранения КАК Склад,
| ТаблицаУслуги.Назначение КАК Назначение,
| СпрНоменклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| СпрНоменклатура.ПрослеживаемыйТовар КАК ПрослеживаемыйТовар,
| ТаблицаУслуги.Номенклатура КАК Номенклатура,
| ТаблицаУслуги.Характеристика КАК Характеристика,
| ТаблицаУслуги.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаУслуги.ОбъектРасчетов КАК ОбъектРасчетов,
| ВЫБОР
| КОГДА ТаблицаУслуги.Номенклатура.ТипНоменклатуры В (&СписокТиповСАналитикойПодразделение)
| ТОГДА ТаблицаУслуги.Подразделение
| ИНАЧЕ
| &Подразделение
| КОНЕЦ КАК Подразделение,
|
| ТаблицаУслуги.Количество КАК Количество,
| ТаблицаУслуги.СуммаСНДС КАК СуммаСНДС,
| ТаблицаУслуги.СуммаНДС КАК СуммаНДС,
| ТаблицаУслуги.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаУслуги.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ТаблицаУслуги.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
|
| ЕСТЬNULL(Суммы.СуммаСНДСУпр, 0) КАК СуммаСНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| ЕСТЬNULL(Суммы.СуммаСНДСРегл, 0) КАК СуммаСНДСРегл,
| ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
|
| АгентскиеУслуги.Соглашение КАК Соглашение,
| АгентскиеУслуги.Валюта КАК Валюта,
| ЕСТЬNULL(КлючиПринципала.КлючАналитики, НЕОПРЕДЕЛЕНО) КАК АналитикаНоменклатурыПринципала,
| ЕСТЬNULL(АгентскиеУслуги.Принципал, НЕОПРЕДЕЛЕНО) КАК Принципал,
| (ВЫБОР
| КОГДА ТаблицаУслуги.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| И &НалогообложениеНДС В (&ТипыНалогообложенияНДСОблагаемые)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт) ТОГДА
| ВЫБОР ТаблицаУслуги.СтавкаНДС
| КОГДА &СтавкаНДСНаЭкспорт ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг)
| КОГДА ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| КОНЕЦ
| ИНАЧЕ &НалогообложениеНДС КОНЕЦ) КАК НалогообложениеНДС,
|
| ТаблицаУслуги.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВЫБОР
| КОГДА СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И СпрНоменклатура.ПрослеживаемыйТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПрослеживаемаяРабота
|
|ПОМЕСТИТЬ ВтРаботыУслуги
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТаблицаУслуги
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАналитика КАК ВтАналитика
| ПО ВтАналитика.ЗаказКлиента = ТаблицаУслуги.ЗаказКлиента
| И ВтАналитика.Номенклатура = ТаблицаУслуги.Номенклатура
| И ВтАналитика.Характеристика = ТаблицаУслуги.Характеристика
| И ВтАналитика.Назначение = ТаблицаУслуги.Назначение
| И ВЫБОР
| КОГДА ТаблицаУслуги.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ТОГДА ИСТИНА
| ИНАЧЕ ВтАналитика.Склад = ТаблицаУслуги.Подразделение
| КОНЕЦ
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиАналитики
| ПО ВтАналитика.Номенклатура = КлючиАналитики.Номенклатура
| И ВтАналитика.Характеристика = КлючиАналитики.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиАналитики.Серия
| И ВтАналитика.Назначение = КлючиАналитики.Назначение
| И ВтАналитика.Склад = КлючиАналитики.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиАналитикиБезНазначения
| ПО ВтАналитика.Номенклатура = КлючиАналитикиБезНазначения.Номенклатура
| И ВтАналитика.Характеристика = КлючиАналитикиБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиАналитикиБезНазначения.Серия
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиАналитикиБезНазначения.Назначение
| И ВтАналитика.Склад = КлючиАналитикиБезНазначения.МестоХранения
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = ТаблицаУслуги.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАгентскиеУслуги КАК АгентскиеУслуги
| ПО ТаблицаУслуги.Номенклатура = АгентскиеУслуги.Номенклатура
| И ТаблицаУслуги.Характеристика = АгентскиеУслуги.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиПринципала
| ПО КлючиПринципала.Номенклатура = АгентскиеУслуги.Номенклатура
| И КлючиПринципала.Характеристика = АгентскиеУслуги.Характеристика
| И КлючиПринципала.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И КлючиПринципала.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| И КлючиПринципала.МестоХранения = АгентскиеУслуги.Принципал
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаУслуги.Ссылка = Суммы.Ссылка
| И ТаблицаУслуги.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|ГДЕ
| ТаблицаУслуги.Ссылка = &Ссылка
| И СпрНоменклатура.ТипНоменклатуры В (
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа))
|
| И ТаблицаУслуги.АналитикаУчетаНоменклатуры НЕ В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВидыЗапасов.АналитикаУчетаНоменклатуры
| ИЗ
| ДанныеДокументаТаблицаВидыЗапасов КАК ВидыЗапасов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| КлючиАналитикиБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
|
| Аналитика.МестоХранения КАК Склад,
| Аналитика.Назначение КАК Назначение,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыНоменклатураТипНоменклатуры КАК ТипНоменклатуры,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыНоменклатураПрослеживаемыйТовар КАК ПрослеживаемыйТовар,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
|
| ТаблицаВидыЗапасов.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыНоменклатураТипНоменклатуры В (&СписокТиповСАналитикойПодразделение)
| ТОГДА Аналитика.МестоХранения
| ИНАЧЕ &Подразделение
| КОНЕЦ КАК Подразделение,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС,
| ТаблицаВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ТаблицаВидыЗапасов.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаВидыЗапасов.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
|
| ЕСТЬNULL(Суммы.СуммаСНДСУпр, 0) КАК СуммаСНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| ЕСТЬNULL(Суммы.СуммаСНДСРегл, 0) КАК СуммаСНДСРегл,
| ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК СуммаНДСРегл,
|
| НЕОПРЕДЕЛЕНО КАК Соглашение,
| НЕОПРЕДЕЛЕНО КАК Валюта,
| НЕОПРЕДЕЛЕНО КАК АналитикаНоменклатурыПринципала,
| НЕОПРЕДЕЛЕНО КАК Принципал,
|
| (ВЫБОР
| КОГДА ТаблицаВидыЗапасов.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| И &НалогообложениеНДС В (&ТипыНалогообложенияНДСОблагаемые)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт) ТОГДА
| ВЫБОР ТаблицаВидыЗапасов.СтавкаНДС
| КОГДА &СтавкаНДСНаЭкспорт ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг)
| КОГДА ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| КОНЕЦ
| ИНАЧЕ &НалогообложениеНДС КОНЕЦ) КАК НалогообложениеНДС,
|
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ВЫБОР
| КОГДА СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И СпрНоменклатура.ПрослеживаемыйТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПрослеживаемаяРабота
|
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК КлючиАналитикиБезНазначения
| ПО Аналитика.Номенклатура = КлючиАналитикиБезНазначения.Номенклатура
| И Аналитика.Характеристика = КлючиАналитикиБезНазначения.Характеристика
| И ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) = КлючиАналитикиБезНазначения.Серия
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = КлючиАналитикиБезНазначения.Назначение
| И Аналитика.МестоХранения = КлючиАналитикиБезНазначения.МестоХранения
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО СпрНоменклатура.Ссылка = Аналитика.Номенклатура
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО ТаблицаВидыЗапасов.Ссылка = Суммы.Ссылка
| И ТаблицаВидыЗапасов.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаКурсыВалют(Запрос, ТекстыЗапроса)
ИмяРегистра = "КурсыВалют";
ТекстЗапроса = "
|ВЫБРАТЬ
| КурсыВалют.Валюта КАК Валюта,
|
| (КурсВалютыДокумента.КурсЧислитель * КурсыВалют.КурсЗнаменатель)
| / (КурсВалютыДокумента.КурсЗнаменатель * КурсыВалют.КурсЧислитель) КАК КоэффициентПересчета
|
|ПОМЕСТИТЬ КурсыВалют
|ИЗ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(&Период,
| Валюта В (
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Услуги.Валюта КАК Валюта
| ИЗ
| ВтАгентскиеУслуги КАК Услуги
| )
| И БазоваяВалюта = &ВалютаРегламентированногоУчета) КАК КурсыВалют
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| РегистрСведений.ОтносительныеКурсыВалют.СрезПоследних(
| &Период,
| Валюта = &Валюта И БазоваяВалюта = &ВалютаРегламентированногоУчета) КАК КурсВалютыДокумента
| ПО
| ИСТИНА
|
|ГДЕ
| КурсВалютыДокумента.КурсЗнаменатель <> 0";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаВыручкаИСебестоимостьПродаж(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ВыручкаИСебестоимостьПродаж";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ИнициализироватьАналитикуУчетаПоПартнерам(Запрос);
ИнициализироватьКурсыВалют(Запрос);
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтРаботыУслуги", ТекстыЗапроса) Тогда
ТекстЗапросаВтРаботыУслуги(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаУслуги.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| &Подразделение КАК Подразделение,
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| ТаблицаУслуги.АналитикаУчетаНоменклатуры
| ИНАЧЕ
| ТаблицаУслуги.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ВЫБОР
| КОГДА &АктПоЗаказам
| ТОГДА ТаблицаУслуги.ЗаказКлиента
| ИНАЧЕ &Ссылка
| КОНЕЦ КАК ЗаказКлиента,
| ВЫБОР
| КОГДА ТаблицаУслуги.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.АгентскаяУслуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| КОНЕЦ КАК ТипЗапасов,
| НЕОПРЕДЕЛЕНО КАК ВидЗапасов,
| (ВЫБОР
| КОГДА ТаблицаУслуги.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты)
| ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ) КАК РазделУчета,
| ТаблицаУслуги.НалогообложениеНДС КАК ВидДеятельностиНДС,
| &Менеджер КАК Менеджер,
| ВЫБОР
| КОГДА ТаблицаУслуги.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаУслуги.СуммаСНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК Стоимость,
| ВЫБОР
| КОГДА ТаблицаУслуги.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаУслуги.СуммаБезНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьБезНДС,
| ВЫБОР
| КОГДА ТаблицаУслуги.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаУслуги.СуммаБезНДСРегл
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьРегл,
| ВЫБОР
| КОГДА ТаблицаУслуги.Принципал <> НЕОПРЕДЕЛЕНО
| И &УправленческийУчетОрганизаций
| ТОГДА ТаблицаУслуги.СуммаБезНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьУпр,
| ТаблицаУслуги.Количество КАК Количество,
| ТаблицаУслуги.СуммаСНДСУпр КАК СуммаВыручки,
| ТаблицаУслуги.СуммаБезНДСУпр КАК СуммаВыручкиБезНДС,
| ТаблицаУслуги.СуммаБезНДСРегл КАК СуммаВыручкиРегл,
| ТаблицаУслуги.СуммаБезНДСРегл + ТаблицаУслуги.СуммаНДСРегл КАК СуммаВыручкиСНДСРегл,
|
| ВЫРАЗИТЬ(ТаблицаУслуги.СуммаРучнойСкидки
| * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаРучнойСкидки,
|
| ВЫРАЗИТЬ(ТаблицаУслуги.СуммаАвтоматическойСкидки
| * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаАвтоматическойСкидки,
|
| ТаблицаУслуги.Склад КАК Склад,
| &Договор КАК Договор,
| &Соглашение КАК Соглашение,
|
| &НаправлениеДеятельности КАК НаправлениеДеятельностиКонтрагента,
| (ВЫБОР
| КОГДА ТаблицаУслуги.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
| ТОГДА &НаправлениеДеятельности
| ИНАЧЕ ТаблицаУслуги.Назначение.НаправлениеДеятельности КОНЕЦ) КАК НаправлениеДеятельностиНоменклатуры,
|
| &ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ТаблицаУслуги.СуммаВзаиморасчетов КАК СуммаВВалютеВзаиморасчетов,
|
| ТаблицаУслуги.СуммаВзаиморасчетов -
| ВЫБОР КОГДА ТаблицаУслуги.СуммаСНДС <> 0 ТОГДА
| ВЫРАЗИТЬ(ТаблицаУслуги.СуммаВзаиморасчетов * ТаблицаУслуги.СуммаНДС / ТаблицаУслуги.СуммаСНДС КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаБезНДСВВалютеВзаиморасчетов,
|
| &Валюта КАК ВалютаДокумента,
| ТаблицаУслуги.СуммаСНДС КАК СуммаВВалютеДокумента,
| ТаблицаУслуги.СуммаСНДС - ТаблицаУслуги.СуммаНДС КАК СуммаБезНДСВВалютеДокумента,
|
| ТаблицаУслуги.НалогообложениеНДС КАК НалогообложениеНДС,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|
| ТаблицаУслуги.Номенклатура КАК ИсточникГФУНоменклатуры,
| ТаблицаУслуги.ОбъектРасчетов КАК ИсточникГФУРасчетов,
|
| ТаблицаУслуги.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| ВтРаботыУслуги КАК ТаблицаУслуги
|
|ГДЕ
| НЕ ТаблицаУслуги.ПрослеживаемыйТовар
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| &Период КАК Период,
| &Подразделение КАК Подразделение,
| ВЫБОР КОГДА &УчитыватьСебестоимостьТоваровПоНазначениям ТОГДА
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры
| ИНАЧЕ
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатурыБезНазначения
| КОНЕЦ КАК АналитикаУчетаНоменклатуры,
| &АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ВЫБОР
| КОГДА &АктПоЗаказам
| ТОГДА ТаблицаВидыЗапасов.ЗаказКлиента
| ИНАЧЕ &Ссылка
| КОНЕЦ КАК ЗаказКлиента,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.АгентскаяУслуга)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.Услуга)
| КОНЕЦ КАК ТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ПроизводственныеЗатраты) КАК РазделУчета,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| &Менеджер КАК Менеджер,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаВидыЗапасов.СуммаСНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК Стоимость,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьБезНДС,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.Принципал <> НЕОПРЕДЕЛЕНО
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСРегл
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьРегл,
| ВЫБОР
| КОГДА ТаблицаВидыЗапасов.Принципал <> НЕОПРЕДЕЛЕНО
| И &УправленческийУчетОрганизаций
| ТОГДА ТаблицаВидыЗапасов.СуммаБезНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СтоимостьУпр,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.СуммаСНДСУпр КАК СуммаВыручки,
| ТаблицаВидыЗапасов.СуммаБезНДСУпр КАК СуммаВыручкиБезНДС,
| ТаблицаВидыЗапасов.СуммаБезНДСРегл КАК СуммаВыручкиРегл,
| ТаблицаВидыЗапасов.СуммаБезНДСРегл + ТаблицаВидыЗапасов.НДСРегл КАК СуммаВыручкиСНДСРегл,
|
| ВЫРАЗИТЬ(ТаблицаВидыЗапасов.СуммаРучнойСкидки
| * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаРучнойСкидки,
|
| ВЫРАЗИТЬ(ТаблицаВидыЗапасов.СуммаАвтоматическойСкидки
| * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаАвтоматическойСкидки,
|
| ТаблицаВидыЗапасов.Склад КАК Склад,
| &Договор КАК Договор,
| &Соглашение КАК Соглашение,
|
| &НаправлениеДеятельности КАК НаправлениеДеятельностиКонтрагента,
| ТаблицаВидыЗапасов.Назначение.НаправлениеДеятельности КАК НаправлениеДеятельностиНоменклатуры,
|
| &ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВВалютеВзаиморасчетов,
|
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов -
| ВЫБОР КОГДА ТаблицаВидыЗапасов.СуммаСНДС <> 0 ТОГДА
| ВЫРАЗИТЬ(ТаблицаВидыЗапасов.СуммаВзаиморасчетов * ТаблицаВидыЗапасов.СуммаНДС / ТаблицаВидыЗапасов.СуммаСНДС КАК ЧИСЛО(31,2))
| ИНАЧЕ
| 0
| КОНЕЦ КАК СуммаБезНДСВВалютеВзаиморасчетов,
|
| &Валюта КАК ВалютаДокумента,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаВВалютеДокумента,
| ТаблицаВидыЗапасов.СуммаСНДС - ТаблицаВидыЗапасов.СуммаНДС КАК СуммаБезНДСВВалютеДокумента,
|
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК НалогообложениеНДС,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
|
| ТаблицаВидыЗапасов.Номенклатура КАК ИсточникГФУНоменклатуры,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ИсточникГФУРасчетов,
|
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|
|ГДЕ
| ТаблицаВидыЗапасов.ПрослеживаемаяРабота
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаМатериалыИРаботыВПроизводстве(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "МатериалыИРаботыВПроизводстве";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтРаботыУслуги", ТекстыЗапроса) Тогда
ТекстЗапросаВтРаботыУслуги(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| ТаблицаУслуги.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| &Период КАК ДатаРегистратора,
| &Организация КАК Организация,
| ТаблицаУслуги.Номенклатура,
| ТаблицаУслуги.Характеристика,
| ТаблицаУслуги.Подразделение КАК Подразделение,
| ТаблицаУслуги.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаУслуги.Количество КАК Количество,
| ТаблицаУслуги.НалогообложениеНДС КАК НалогообложениеНДС,
| ТаблицаУслуги.Назначение КАК Назначение
|ИЗ
| ВтРаботыУслуги КАК ТаблицаУслуги
|ГДЕ
| ТаблицаУслуги.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И НЕ ТаблицаУслуги.ПрослеживаемыйТовар
|
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтТаблицаВидыЗапасов";
СформироватьСуммыДокументаВВалютахУчета(Запрос, ТекстыЗапроса);
УстановитьПараметрЗапросаТипыНалогообложенияНДСОблагаемые(Запрос);
ИнициализироватьКлючиАналитикиНоменклатуры(Запрос);
ИнициализироватьКурсыВалют(Запрос);
ТекстЗапроса =
"ВЫБРАТЬ
| ВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ВидыЗапасов.Ссылка КАК Ссылка,
| Аналитика.МестоХранения КАК Склад,
| Аналитика.МестоХранения.ЦеховаяКладовая КАК ЦеховаяКладовая,
| ВидыЗапасов.ЗаказКлиента КАК ЗаказКлиента,
| &Организация КАК Организация,
|
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Аналитика.Номенклатура.ПрослеживаемыйТовар КАК ПрослеживаемыйТовар,
| Аналитика.Характеристика КАК Характеристика,
| Аналитика.Назначение КАК Назначение,
| Аналитика.Подразделение КАК Подразделение,
|
| ВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ВидыЗапасов.ВидЗапасовРеализацияЗапасовДругойОрганизации КАК ВидЗапасовРеализацияЗапасовДругойОрганизации,
| ВидыЗапасов.ВидЗапасовВидЗапасовВладельцаОрганизация КАК ВидЗапасовВидЗапасовВладельцаОрганизация,
| ВидыЗапасов.ВидЗапасовВидЗапасовВладельца КАК ВидЗапасовВидЗапасовВладельца,
| ВидыЗапасов.ВидЗапасовСоглашение КАК ВидЗапасовСоглашение,
| ВидыЗапасов.ВидЗапасовВидЗапасовВладельцаВалюта КАК ВидЗапасовВидЗапасовВладельцаВалюта,
| ВидыЗапасов.ВидЗапасовВидЗапасовВладельцаТипЗапасов КАК ВидЗапасовВидЗапасовВладельцаТипЗапасов,
|
| ВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ВидыЗапасов.ОбъектРасчетовОрганизация КАК ОбъектРасчетовОрганизация,
| ВидыЗапасов.ОбъектРасчетовДоговор КАК ОбъектРасчетовДоговор,
| ВидыЗапасов.ОбъектРасчетовНаправлениеДеятельности КАК ОбъектРасчетовНаправлениеДеятельности,
| ВидыЗапасов.ОбъектРасчетовУникальныйИдентификатор КАК ОбъектРасчетовУникальныйИдентификатор,
|
| ВидыЗапасов.Количество КАК Количество,
| ВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ВидыЗапасов.СуммаСНДС КАК СуммаСНДС,
| ВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ВидыЗапасов.СтавкаНДС КАК СтавкаНДС,
| ВидыЗапасов.НомерГТД КАК НомерГТД,
|
| ВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| АналитикаБезНазначения.КлючАналитики КАК АналитикаУчетаНоменклатурыБезНазначения,
| ВидыЗапасов.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
| ВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,
| СпрНазначения.НаправлениеДеятельности КАК НаправлениеДеятельности,
|
| ЕСТЬNULL(Суммы.СуммаСНДСУпр, 0) КАК СуммаСНДСУпр,
| ЕСТЬNULL(Суммы.СуммаБезНДСУпр, 0) КАК СуммаБезНДСУпр,
| ЕСТЬNULL(Суммы.СуммаСНДСРегл, 0) КАК СуммаСНДСРегл,
| ЕСТЬNULL(Суммы.СуммаБезНДСРегл, 0) КАК СуммаБезНДСРегл,
| ЕСТЬNULL(Суммы.СуммаНДСРегл, 0) КАК НДСРегл,
| ВидыЗапасов.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ВидыЗапасов.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ВЫБОР
| КОГДА ВидыЗапасов.СуммаСНДС <> 0
| ТОГДА ВЫРАЗИТЬ(ВидыЗапасов.СуммаВзаиморасчетов * ВидыЗапасов.СуммаНДС / ВидыЗапасов.СуммаСНДС КАК ЧИСЛО(31,2))
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВзаиморасчетовНДС,
| ВЫРАЗИТЬ(ВидыЗапасов.СуммаРучнойСкидки * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаРучнойСкидкиУпр,
| ВЫРАЗИТЬ(ВидыЗапасов.СуммаАвтоматическойСкидки * &КоэффициентПересчетаВВалютуУпр КАК ЧИСЛО(31,2)) КАК СуммаАвтоматическойСкидкиУпр,
|
| (ВЫБОР
| КОГДА ВидыЗапасов.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| И &НалогообложениеНДС В (&ТипыНалогообложенияНДСОблагаемые)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИНАЧЕ &НалогообложениеНДС
| КОНЕЦ) КАК ВидДеятельностиНДС,
| ЕСТЬNULL(АналитикаРасчетов.КлючАналитики, &АналитикаУчетаПоПартнерам) КАК АналитикаУчетаПоПартнерам,
| (ВЫБОР
| КОГДА ВидыЗапасов.СтавкаНДС = ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС)
| И &НалогообложениеНДС В (&ТипыНалогообложенияНДСОблагаемые)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| КОГДА &НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт) ТОГДА
| ВЫБОР ВидыЗапасов.СтавкаНДС
| КОГДА &СтавкаНДСНаЭкспорт ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг)
| КОГДА ЗНАЧЕНИЕ(Справочник.СтавкиНДС.БезНДС) ТОГДА
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИНАЧЕ
| ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС)
| КОНЕЦ
| ИНАЧЕ &НалогообложениеНДС КОНЕЦ) КАК НалогообложениеНДС,
| ЕСТЬNULL(АгентскиеУслуги.Принципал, НЕОПРЕДЕЛЕНО) КАК Принципал,
| ВЫБОР
| КОГДА СпрНоменклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И СпрНоменклатура.ПрослеживаемыйТовар
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПрослеживаемаяРабота
|
|ПОМЕСТИТЬ ВтТаблицаВидыЗапасов
|
|ИЗ
| ДанныеДокументаТаблицаВидыЗапасов КАК ВидыЗапасов
| ЛЕВОЕ СОЕДИНЕНИЕ
| ВтСуммыДокументовВВалютахУчета КАК Суммы
| ПО
| ВидыЗапасов.Ссылка = Суммы.Ссылка
| И ВидыЗапасов.ИдентификаторСтроки = Суммы.ИдентификаторСтроки
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО
| ВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ
| РегистрСведений.АналитикаУчетаНоменклатуры КАК АналитикаБезНазначения
| ПО
| Аналитика.Номенклатура = АналитикаБезНазначения.Номенклатура
| И Аналитика.Характеристика = АналитикаБезНазначения.Характеристика
| И Аналитика.Серия = АналитикаБезНазначения.Серия
| И Аналитика.МестоХранения = АналитикаБезНазначения.МестоХранения
| И ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка) = АналитикаБезНазначения.Назначение
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК АналитикаРасчетов
| ПО АналитикаРасчетов.Партнер = &Партнер
| И АналитикаРасчетов.Организация = &Организация
| И АналитикаРасчетов.Контрагент = &Контрагент
| И АналитикаРасчетов.Договор = ВидыЗапасов.ОбъектРасчетовДоговор
| И АналитикаРасчетов.НаправлениеДеятельности = ВидыЗапасов.ОбъектРасчетовНаправлениеДеятельности
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
| ПО Аналитика.Номенклатура = СпрНоменклатура.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Назначения КАК СпрНазначения
| ПО Аналитика.Назначение = СпрНазначения.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ ВтАгентскиеУслуги КАК АгентскиеУслуги
| ПО Аналитика.Номенклатура = АгентскиеУслуги.Номенклатура
| И Аналитика.Характеристика = АгентскиеУслуги.Характеристика
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтТоварыОрганизаций(Запрос, ТекстыЗапроса) Экспорт
ИмяТаблицы = "ВтТоварыОрганизаций";
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТаблицаВидыЗапасов", ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК ОрганизацияОтгрузки,
| &Организация КАК Организация,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.Номенклатура КАК Номенклатура,
| ТаблицаВидыЗапасов.Характеристика КАК Характеристика,
| ТаблицаВидыЗапасов.Склад КАК Склад,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.НоменклатураПартнера КАК НоменклатураПартнера,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.СуммаБезНДСРегл КАК СтоимостьПоРНПТ,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ВидДеятельностиНДС КАК НалогообложениеНДС,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов
|ПОМЕСТИТЬ ВтТоварыОрганизаций
|ИЗ
| ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяТаблицы);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаТоварыОрганизаций(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "ТоварыОрганизаций";
Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтТоварыОрганизаций", ТекстыЗапроса) Тогда
ТекстЗапросаВтТоварыОрганизаций(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| втТоварыОрганизаций.ВидДвижения КАК ВидДвижения,
| втТоварыОрганизаций.Период КАК Период,
| втТоварыОрганизаций.ОрганизацияОтгрузки КАК ОрганизацияОтгрузки,
| втТоварыОрганизаций.Организация КАК Организация,
| втТоварыОрганизаций.ВидЗапасов КАК ВидЗапасов,
| втТоварыОрганизаций.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| втТоварыОрганизаций.Номенклатура КАК Номенклатура,
| втТоварыОрганизаций.Характеристика КАК Характеристика,
| втТоварыОрганизаций.Склад КАК Склад,
| втТоварыОрганизаций.НомерГТД КАК НомерГТД,
| втТоварыОрганизаций.НоменклатураПартнера КАК НоменклатураПартнера,
| втТоварыОрганизаций.Количество КАК Количество,
| втТоварыОрганизаций.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| втТоварыОрганизаций.ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| втТоварыОрганизаций.НалогообложениеНДС КАК НалогообложениеНДС,
| втТоварыОрганизаций.КорАналитикаУчетаНоменклатуры КАК КорАналитикаУчетаНоменклатуры,
| втТоварыОрганизаций.КорВидЗапасов КАК КорВидЗапасов
|ИЗ
| втТоварыОрганизаций КАК втТоварыОрганизаций
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаУслугиКОформлениюОтчетовПринципалу(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "УслугиКОформлениюОтчетовПринципалу";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтРаботыУслуги", ТекстыЗапроса) Тогда
ТекстЗапросаВтРаботыУслуги(Запрос, ТекстыЗапроса);
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("КурсыВалют", ТекстыЗапроса) Тогда
ТекстЗапросаКурсыВалют(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса = "
|ВЫБРАТЬ
| КОформлению.НомерСтроки КАК НомерСтроки,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| &Период КАК Период,
| &Организация КАК Организация,
| КОформлению.АналитикаНоменклатурыПринципала КАК АналитикаУчетаНоменклатуры,
| КОформлению.Соглашение КАК Соглашение,
| КОформлению.Валюта КАК Валюта,
| КОформлению.Количество КАК Количество,
| КОформлению.СуммаСНДС
| * КурсыВалют.КоэффициентПересчета КАК СуммаВыручки,
| КОформлению.СуммаНДС
| * КурсыВалют.КоэффициентПересчета КАК СуммаНДС,
| ВЫБОР
| КОГДА ЕСТЬNULL(КОформлению.Соглашение.ПереоцениватьУслугиКОтчетуКомитенту, ЛОЖЬ)
| ТОГДА КОформлению.СуммаСНДСРегл
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВыручкиРегл,
| ВЫБОР
| КОГДА ЕСТЬNULL(КОформлению.Соглашение.ПереоцениватьУслугиКОтчетуКомитенту, ЛОЖЬ)
| ТОГДА КОформлению.СуммаСНДСУпр
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаВыручкиУпр,
| &Контрагент КАК Покупатель,
| &Ссылка КАК ДокументРеализации,
| КОформлению.ИдентификаторСтроки КАК ИдентификаторСтроки,
| КОформлению.ОбъектРасчетов.УникальныйИдентификатор КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| ВтРаботыУслуги КАК КОформлению
|
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВалют КАК КурсыВалют
| ПО КОформлению.Валюта = КурсыВалют.Валюта
|ГДЕ
| КОформлению.АналитикаНоменклатурыПринципала <> НЕОПРЕДЕЛЕНО
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, Регистры)
ИмяРегистра = "РеестрДокументов";
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| &Ссылка КАК Ссылка,
| &Период КАК ДатаДокументаИБ,
| &Номер КАК НомерДокументаИБ,
| &ИдентификаторМетаданных КАК ТипСсылки,
| &Организация КАК Организация,
| &ХозяйственнаяОперация КАК ХозяйственнаяОперация,
| &Партнер КАК Партнер,
| &Контрагент КАК Контрагент,
| &Договор КАК Договор,
| &НаправлениеДеятельности КАК НаправлениеДеятельности,
| НЕОПРЕДЕЛЕНО КАК МестоХранения,
| &Подразделение КАК Подразделение,
| &Менеджер КАК Ответственный,
| &Комментарий КАК Комментарий,
| &Валюта КАК Валюта,
| &СуммаДокумента КАК Сумма,
| НЕОПРЕДЕЛЕНО КАК Статус,
| &Проведен КАК Проведен,
| &ПометкаУдаления КАК ПометкаУдаления,
| ЛОЖЬ КАК ДополнительнаяЗапись,
| &ИнформацияПоДоговору КАК Дополнительно,
| &Период КАК ДатаПервичногоДокумента,
| &НомерНаПечать КАК НомерПервичногоДокумента,
| &Автор КАК Автор,
| &Период КАК ДатаОтраженияВУчете,
| НЕОПРЕДЕЛЕНО КАК Приоритет";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаБонусныеБаллы(Запрос, ТекстыЗапроса, Регистры, Документ)
ИмяРегистра = "БонусныеБаллы";
Если НЕ БонусныеБаллыСервер.ТребуетсяДобавитьДвиженияПоРегиструБонусныеБаллы(Документ) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
Возврат "";
КонецЕсли;
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтБонусныеБаллы", ТекстыЗапроса) Тогда
ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| БонусныеБаллы.Период КАК Период,
| БонусныеБаллы.ДатаНачалаДействия КАК ДатаНачалаДействия,
| БонусныеБаллы.ДатаКОбработке КАК ДатаКОбработке,
| БонусныеБаллы.ВидДвижения КАК ВидДвижения,
| БонусныеБаллы.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер КАК Партнер,
| СУММА(БонусныеБаллы.Начислено) КАК Начислено,
| СУММА(БонусныеБаллы.КСписанию) КАК КСписанию
|ИЗ
| ВтБонусныеБаллы КАК БонусныеБаллы
|
|СГРУППИРОВАТЬ ПО
| БонусныеБаллы.БонуснаяПрограммаЛояльности,
| БонусныеБаллы.Партнер,
| БонусныеБаллы.Период,
| БонусныеБаллы.ДатаНачалаДействия,
| БонусныеБаллы.ДатаКОбработке,
| БонусныеБаллы.ВидДвижения
|ИМЕЮЩИЕ
| СУММА(БонусныеБаллы.Начислено) <> 0 ИЛИ
| СУММА(БонусныеБаллы.КСписанию) <> 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Функция ТекстЗапросаВтБонусныеБаллы(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтБонусныеБаллы";
ТекстЗапроса =
"ВЫБРАТЬ
| ТабличнаяЧасть.ДатаНачисления КАК Период,
| ВЫБОР
| КОГДА ТабличнаяЧасть.ДатаСписания <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ТабличнаяЧасть.ДатаНачисления
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаНачалаДействия,
| ВЫБОР
| КОГДА ТабличнаяЧасть.ДатаСписания <> ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА &ТекущаяДата
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1)
| КОНЕЦ КАК ДатаКОбработке,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| ТабличнаяЧасть.СуммаБонусныхБаллов КАК Начислено,
| 0 КАК КСписанию
|ПОМЕСТИТЬ ВтБонусныеБаллы
|ИЗ
| Документ.АктВыполненныхРабот.НачислениеБонусныхБаллов КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И ТабличнаяЧасть.ДатаНачисления <> ДатаВремя(1,1,1)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТабличнаяЧасть.ДатаСписания КАК Период,
| ТабличнаяЧасть.ДатаНачисления КАК ДатаНачалаДействия,
| &ТекущаяДата КАК ДатаКОбработке,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
| ТабличнаяЧасть.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| &Партнер КАК Партнер,
| 0 КАК Начислено,
| ТабличнаяЧасть.СуммаБонусныхБаллов КАК КСписанию
|ИЗ
| Документ.АктВыполненныхРабот.НачислениеБонусныхБаллов КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И ТабличнаяЧасть.ДатаСписания <> ДатаВремя(1,1,1)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачалоПериода(&Период, ДЕНЬ),
| ДатаВремя(1,1,1),
| &ТекущаяДата,
| ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
| &БонуснаяПрограммаЛояльности,
| &Партнер,
| ТабличнаяЧасть.СуммаБонусныхБалловКСписанию,
| 0
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка
| И ТабличнаяЧасть.СуммаБонусныхБалловКСписанию <> 0
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ОтразитьВУчетеНДС(Запрос, ТекстыЗапроса, Регистры)
Если Не УчетНДСУП.ТребуетсяПроведениеПоРегистрамНДС(Регистры) Тогда
Возврат;
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса("ВтВидыЗапасовРабот", ТекстыЗапроса) Тогда
ТекстЗапросаВтВидыЗапасовРабот(Запрос, ТекстыЗапроса);
КонецЕсли;
ТекстУслуги =
"ВЫБРАТЬ
| Услуги.Ссылка.Дата КАК Период,
| Услуги.Ссылка КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| Услуги.Ссылка.Контрагент КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| Услуги.Ссылка.Договор КАК Договор,
| Услуги.Ссылка.Организация КАК Организация,
| Услуги.Ссылка.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК ПокупательКомиссионногоТовара,
| ЛОЖЬ КАК РеализацияЧерезКомиссионера,
| Услуги.Ссылка КАК ДокументРеализации,
| НЕОПРЕДЕЛЕНО КАК ДокументКорректировкиРеализации,
| ЛОЖЬ КАК ИсправлениеОшибок,
| ЛОЖЬ КАК КорректировкаПоСогласованиюСторон,
| ЛОЖЬ КАК РеализацияВРозницу,
| Услуги.ОбъектРасчетов КАК ОбъектРасчетов,
| Услуги.Ссылка.НалогообложениеНДС КАК НалогообложениеНДС,
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| Услуги.НоменклатураПартнера КАК НоменклатураПартнера,
| Услуги.НоменклатураНабора КАК НоменклатураНабора,
| Услуги.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Услуги.Содержание КАК Содержание,
| Услуги.Количество КАК Количество,
| Услуги.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| 0 КАК КоличествоПоРНПТ,
| ЗНАЧЕНИЕ(Справочник.НомераГТД.ПустаяСсылка) КАК НомерГТД,
| Услуги.СтавкаНДС КАК СтавкаНДС,
| НЕОПРЕДЕЛЕНО КАК КодТНВЭД,
| ЗНАЧЕНИЕ(Справочник.ВидыЗапасов.ПустаяСсылка) КАК ВидЗапасов,
| Услуги.НомерСтроки КАК НомерСтроки,
| Услуги.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Услуги.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Услуги
| ЛЕВОЕ СОЕДИНЕНИЕ ВтВидыЗапасовРабот КАК ВидыЗапасов
| ПО Услуги.Ссылка = ВидыЗапасов.Ссылка
| И Услуги.АналитикаУчетаНоменклатуры = ВидыЗапасов.АналитикаУчетаНоменклатуры
|
|ГДЕ
| Услуги.Ссылка В (&Ссылка)
| И ВидыЗапасов.Ссылка ЕСТЬ NULL
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Дата КАК Период,
| ДанныеДокумента.Ссылка КАК Ссылка,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Контрагент КАК Контрагент,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| ДанныеДокумента.Договор КАК Договор,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| НЕОПРЕДЕЛЕНО КАК ПокупательКомиссионногоТовара,
| ЛОЖЬ КАК РеализацияЧерезКомиссионера,
| ДанныеДокумента.Ссылка КАК ДокументРеализации,
| НЕОПРЕДЕЛЕНО КАК ДокументКорректировкиРеализации,
| ЛОЖЬ КАК ИсправлениеОшибок,
| ЛОЖЬ КАК КорректировкаПоСогласованиюСторон,
| ЛОЖЬ КАК РеализацияВРозницу,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| Аналитика.Номенклатура КАК Номенклатура,
| Аналитика.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка) КАК НоменклатураПартнера,
| ТаблицаВидыЗапасов.АналитикаУчетаНаборов.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаВидыЗапасов.АналитикаУчетаНаборов.ХарактеристикаНабора КАК ХарактеристикаНабора,
| """" КАК Содержание,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| СправочникНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.СтавкаНДС КАК СтавкаНДС,
| НЕОПРЕДЕЛЕНО КАК КодТНВЭД,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот.ВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ДанныеДокумента.Ссылка = ТаблицаВидыЗапасов.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК Аналитика
| ПО ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры = Аналитика.Ссылка
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
| ПО Аналитика.Номенклатура = СправочникНоменклатура.Ссылка
|ГДЕ
| ДанныеДокумента.Ссылка В(&Ссылка)
|";
УчетНДСУП.ОтразитьРеализациюКлиенту(Запрос, ТекстыЗапроса, Регистры, ТекстУслуги);
КонецПроцедуры
#Область ПартионныйУчет
Функция ОписаниеРегистровУчетаЗатратИСебестоимости(Документ) Экспорт
ОписаниеРегистров = Новый Массив;
ОписаниеРегистров.Добавить(Метаданные.РегистрыНакопления.СебестоимостьТоваров);
Возврат ОписаниеРегистров;
КонецФункции
Функция УстановитьДополнительныеПараметрыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено) Экспорт
ДополнительныеПараметры = Новый Массив;
ДополнительныеПараметры.Добавить("АналитикаУчетаПоПартнерам");
Если Запрос <> Неопределено Тогда
ИнициализироватьАналитикуУчетаПоПартнерам(Запрос);
КонецЕсли;
Возврат ДополнительныеПараметры;
КонецФункции
Функция СформироватьДополнительныеТаблицыОперацийУчетаЗатратИСебестоимости(Документ, Запрос = Неопределено, ТекстыЗапроса = Неопределено) Экспорт
ДополнительныеТаблицы = Новый Массив;
ДополнительныеТаблицы.Добавить("ВтРаботыУслуги");
ДополнительныеТаблицы.Добавить("ВтТаблицаВидыЗапасов");
Если Запрос <> Неопределено Тогда
Если НЕ ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[0], ТекстыЗапроса) Тогда
ТекстЗапросаВтРаботыУслуги(Запрос, ТекстыЗапроса);
КонецЕсли;
Если Не ПроведениеДокументов.ЕстьТаблицаЗапроса(ДополнительныеТаблицы[1], ТекстыЗапроса) Тогда
ТекстЗапросаВтТаблицаВидыЗапасов(Запрос, ТекстыЗапроса);
КонецЕсли;
КонецЕсли;
Возврат ДополнительныеТаблицы;
КонецФункции
Функция ОписаниеОперацийУчетаСебестоимости(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Реализация_Услуги
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаПартий,
| &АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ВЫБОР КОГДА &АктПоЗаказам ТОГДА
| ТаблицаВидыЗапасов.ЗаказКлиента
| ИНАЧЕ
| ТаблицаДокумента.Ссылка
| КОНЕЦ КАК ЗаказКлиента,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.АктВыполненныхРабот КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтРаботыУслуги КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
| И НЕ ТаблицаВидыЗапасов.ПрослеживаемаяРабота
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Реализация,
ТекстЗапроса);
#КонецОбласти
#Область Реализация_ПрослеживаемыеРаботы
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаПартий,
| &АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ВЫБОР КОГДА &АктПоЗаказам ТОГДА
| ТаблицаВидыЗапасов.ЗаказКлиента
| ИНАЧЕ
| ТаблицаДокумента.Ссылка
| КОНЕЦ КАК ЗаказКлиента,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ИдентификаторСтроки,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.АктВыполненныхРабот КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтТаблицаВидыЗапасов КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.ПрослеживаемаяРабота
|";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Реализация,
ТекстЗапроса);
#КонецОбласти
Возврат ОписаниеОпераций;
КонецФункции
Функция ОписаниеОперацийУчетаВыручки(Документ) Экспорт
ОписаниеОпераций = Новый Массив;
#Область Реализация
ТекстЗапроса =
"ВЫБРАТЬ
| ТаблицаДокумента.Дата КАК Период,
| ТаблицаДокумента.Ссылка КАК Ссылка,
| НЕОПРЕДЕЛЕНО КАК ДокументИсточник,
| НЕОПРЕДЕЛЕНО КАК ПериодДокументаИсточника,
| НЕОПРЕДЕЛЕНО КАК КорректируемыйДокумент,
|
| ТаблицаДокумента.Организация КАК Организация,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДС,
| ТаблицаВидыЗапасов.НалогообложениеНДС КАК ВидДеятельностиНДСДокумента,
|
| НЕОПРЕДЕЛЕНО КАК КорОрганизация,
| НЕОПРЕДЕЛЕНО КАК КорАналитикаУчетаНоменклатуры,
| НЕОПРЕДЕЛЕНО КАК КорВидЗапасов,
| НЕОПРЕДЕЛЕНО КАК КорПартия,
| &АналитикаУчетаПоПартнерам КАК АналитикаУчетаПоПартнерам,
| ВЫБОР КОГДА &АктПоЗаказам ТОГДА
| ТаблицаВидыЗапасов.ЗаказКлиента
| ИНАЧЕ
| ТаблицаДокумента.Ссылка
| КОНЕЦ КАК ЗаказКлиента,
|
| ТаблицаДокумента.Сделка КАК Сделка,
| ТаблицаДокумента.Подразделение КАК Подразделение,
| ТаблицаДокумента.Менеджер КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК ГруппаПродукции,
|
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
|
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторФинЗаписи,
| &НастройкаХозяйственнойОперации КАК НастройкаХозяйственнойОперации
|
|ИЗ
| Документ.АктВыполненныхРабот КАК ТаблицаДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтРаботыУслуги КАК ТаблицаВидыЗапасов
| ПО ИСТИНА
|ГДЕ
| ТаблицаДокумента.Ссылка В (&Ссылка)
| И ТаблицаВидыЗапасов.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
РасчетСебестоимостиПроведениеДокументов.ДобавитьОписаниеОперацииДляОтраженияВУчетеСебестоимости(
ОписаниеОпераций,
Перечисления.ОперацииУчетаСебестоимости.Реализация,
ТекстЗапроса);
#Конецобласти
КонецФункции
#КонецОбласти
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктВыполненныхРаботБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Акт выполненных работ'");
КонецЕсли;
Если Пользователи.ЭтоПолноправныйПользователь() Тогда
ИмяМакета = "ПФ_DOC_Акт" + "_" + ОбщегоНазначения.КодОсновногоЯзыка();
Если Метаданные.Документы.АктВыполненныхРабот.Макеты.Найти(ИмяМакета) <> Неопределено Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьАктВыполненныхРаботMicrosoftWord";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "АктMicrosoftWord";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ (Microsoft Word)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Акт выполненных работ (Microsoft Word)'");
КонецЕсли;
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктВыполненныхРаботБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Акт выполненных работ'");
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктВыполненныхРабот";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Акт выполненных работ'");
КонецЕсли;
Если ПраваПользователяПовтИсп.ЭтоПартнер() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Идентификатор = "АктВыполненныхРаботБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ОсновнаяПечатнаяФорма = Истина;
КомандаПечати.НаименованиеПечатнойФормы = НСтр("ru = 'Акт выполненных работ'");
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуНеВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплату";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуНеВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимилеБезСкидок";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Ложь);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПраваПользователяПовтИсп.ЭтоПартнер()
И ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуВыбиратьВариантВыводаСкидок") Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "СчетНаОплатуСФаксимиле";
КомандаПечати.Представление = НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьСкидки", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("ОтображатьФаксимиле", Истина);
КомандаПечати.ДополнительныеПараметры.Вставить("Представление", КомандаПечати.Представление);
КонецЕсли;
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСчетаНаОплатуКлиентам")
И Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Обработка.ПечатьСчетовНаОплату";
КомандаПечати.Идентификатор = "ProformaInvoiceEn";
КомандаПечати.Представление = НСтр("ru = 'Proforma invoice (en)'");
КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
КонецЕсли;
АктВыполненныхРаботЛокализация.ДобавитьКомандыПечати(КомандыПечати);
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Акт") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "Акт", НСтр("ru = 'Акт выполненных работ'"), СформироватьПечатнуюФормуАктОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктВыполненныхРабот") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктВыполненныхРабот", НСтр("ru = 'Акт выполненных работ'"), СформироватьПечатнуюФормуАктОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктВыполненныхРаботБезСкидок") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АктВыполненныхРаботБезСкидок", НСтр("ru = 'Акт выполненных работ (не выводить скидки)'"), СформироватьПечатнуюФормуАктОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, ПараметрыПечати));
КонецЕсли;
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "КомплектДокументов") Тогда
КоллекцияПечатныхФорм.Очистить();
СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати);
КонецЕсли;
АктВыполненныхРаботЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция ПолучитьДанныеПечати(знач МассивДокументов, знач МассивИменМакетов) Экспорт
Возврат Новый Структура("Данные,Макеты",
ПолучитьДанныеОбъектаПоМакетам(МассивДокументов, МассивИменМакетов),
ПолучитьМакетыИОписанияСекций(МассивИменМакетов));
КонецФункции
Функция ПолучитьДанныеОбъектаПоМакетам(знач МассивДокументов, знач МассивИменМакетов) Экспорт
ДанныеПоВсемОбъектам = Новый Соответствие;
СтруктураРезультатов = ПолучитьДанныеДляПечати(МассивДокументов, Неопределено);
ДанныеПечати = СтруктураРезультатов.РезультатПоШапке.Выбрать();
ВыборкаПоДокументам = СтруктураРезультатов.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ДанныеПечати.Следующий() Цикл
ДанныеОбъектаПоМакетам = Новый Структура;
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
Если НайденСледующий Тогда
ВыборкаПоУслугам = ВыборкаПоДокументам.Выбрать();
Иначе
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют услуги. Печать акта выполненных работ (услуг) не требуется.'"),
ДанныеПечати.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ДанныеПечати.Ссылка);
Продолжить;
КонецЕсли;
ДанныеОбъекта = ПолучитьДанныеОбъектаПоВыборке(ДанныеПечати, ВыборкаПоУслугам);
Для Каждого ИмяМакета Из МассивИменМакетов Цикл
ДанныеОбъектаПоМакетам.Вставить(ИмяМакета, ДанныеОбъекта);
КонецЦикла;
ДанныеПоВсемОбъектам.Вставить(ДанныеПечати.Ссылка, ДанныеОбъектаПоМакетам);
КонецЦикла;
Возврат ДанныеПоВсемОбъектам;
КонецФункции
Функция ПолучитьМакетыИОписанияСекций(знач МассивИменМакетов) Экспорт
ОписаниеСекций = Новый Структура;
ДвоичныеДанныеМакетов = Новый Структура;
Для Каждого ИмяМакета Из МассивИменМакетов Цикл
Макет = Неопределено;
ОписаниеСекцийМакета = Неопределено;
Если ИмяМакета = "ПФ_DOC_Акт" Тогда
ОписаниеСекцийМакета = ПолучитьОписаниеОбластейАктВыполненныхРабот();
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.АктВыполненныхРабот.ПФ_DOC_Акт");
КонецЕсли;
Если ОписаниеСекцийМакета <> Неопределено И Макет <> Неопределено Тогда
ОписаниеСекций.Вставить(ИмяМакета, ОписаниеСекцийМакета);
ДвоичныеДанныеМакетов.Вставить(ИмяМакета, Макет);
КонецЕсли;
КонецЦикла;
Возврат Новый Структура(
"ОписаниеСекций,ДвоичныеДанныеМакетов",
ОписаниеСекций,
ДвоичныеДанныеМакетов);
КонецФункции
Функция ПолучитьДанныеДляПечати(МассивОбъектов, ПараметрыПечати) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
Запрос = Новый Запрос(
"ВЫБРАТЬ
| АктВыполненныхРабот.Ссылка КАК Ссылка,
| АктВыполненныхРабот.Номер КАК Номер,
| АктВыполненныхРабот.Дата КАК Дата,
| АктВыполненныхРабот.Партнер КАК Партнер,
| АктВыполненныхРабот.Контрагент КАК Контрагент,
| АктВыполненныхРабот.Организация КАК Организация,
| АктВыполненныхРабот.Организация.Префикс КАК Префикс,
| АктВыполненныхРабот.Валюта КАК Валюта,
| АктВыполненныхРабот.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ВЫБОР
| КОГДА АктВыполненныхРабот.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| АктВыполненныхРабот.ДополнительнаяИнформация КАК ДополнительнаяИнформация,
| АктВыполненныхРабот.ДополнительнаяИнформацияШапки КАК ДополнительнаяИнформацияШапки,
| АктВыполненныхРабот.БанковскийСчетОрганизации КАК СчетОрганизации,
| АктВыполненныхРабот.БанковскийСчетКонтрагента КАК СчетКонтрагента
|ИЗ
| Документ.АктВыполненныхРабот КАК АктВыполненныхРабот
|ГДЕ
| АктВыполненныхРабот.Ссылка В(&МассивДокументов)
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| АктВыполненныхРабот.Ссылка КАК Ссылка,
| ВариантыКомплектацииНоменклатуры.Ссылка КАК ВариантКомплектацииНоменклатуры,
| ВариантыКомплектацииНоменклатуры.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатуры.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| АктВыполненныхРабот.НоменклатураНабора КАК НоменклатураНабора,
| АктВыполненныхРабот.ХарактеристикаНабора КАК ХарактеристикаНабора,
| АктВыполненныхРабот.Номенклатура КАК Номенклатура,
| АктВыполненныхРабот.Содержание КАК Содержание,
| 1 КАК Коэффициент,
| АктВыполненныхРабот.ПроцентРучнойСкидки + АктВыполненныхРабот.ПроцентАвтоматическойСкидки КАК ПроцентСкидки,
| АктВыполненныхРабот.Характеристика КАК Характеристика,
| АктВыполненныхРабот.СтавкаНДС КАК СтавкаНДС,
| ВЫБОР
| КОГДА &ОтображатьСкидки
| ТОГДА АктВыполненныхРабот.Цена
| ИНАЧЕ АктВыполненныхРабот.Сумма / АктВыполненныхРабот.Количество
| КОНЕЦ КАК Цена,
| АктВыполненныхРабот.Количество КАК Количество,
| АктВыполненныхРабот.Количество КАК КоличествоУпаковок,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка) КАК Упаковка,
| АктВыполненныхРабот.Сумма КАК Сумма,
| ВЫБОР
| КОГДА &ОтображатьСкидки
| ТОГДА АктВыполненныхРабот.СуммаРучнойСкидки + АктВыполненныхРабот.СуммаАвтоматическойСкидки
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСкидки,
| АктВыполненныхРабот.Сумма + АктВыполненныхРабот.СуммаРучнойСкидки + АктВыполненныхРабот.СуммаАвтоматическойСкидки КАК СуммаБезСкидки,
| АктВыполненныхРабот.СуммаНДС КАК СуммаНДС,
| АктВыполненныхРабот.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ Товары
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК АктВыполненныхРабот
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
| ПО (ВариантыКомплектацииНоменклатуры.Владелец = АктВыполненныхРабот.НоменклатураНабора)
| И (ВариантыКомплектацииНоменклатуры.Характеристика = АктВыполненныхРабот.ХарактеристикаНабора)
| И (ВариантыКомплектацииНоменклатуры.Основной)
|ГДЕ
| АктВыполненныхРабот.Ссылка В(&МассивДокументов)
| И НЕ АктВыполненныхРабот.Номенклатура.ТипНоменклатуры В (ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Товар),
| ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.МногооборотнаяТара))
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ТоварыРазличные
|ИЗ
| Товары КАК ТаблицаТоваров
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.НоменклатураНабора КАК НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора КАК ХарактеристикаНабора,
| МИНИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| СУММА(ТаблицаТоваров.Сумма) КАК Сумма,
| СУММА(ТаблицаТоваров.СуммаБезСкидки) КАК СуммаБезСкидки,
| СУММА(ТаблицаТоваров.СуммаСкидки) КАК СуммаСкидки,
| СУММА(ТаблицаТоваров.СуммаНДС) КАК СуммаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыПодготовка
|ИЗ
| Товары КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.НоменклатураНабора,
| ТаблицаТоваров.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| Товары.Ссылка КАК Ссылка,
| Товары.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Товары.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Товары.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Товары.НоменклатураНабора КАК НоменклатураНабора,
| Товары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА Товары.ВариантКомплектацииНоменклатуры.НоменклатураОсновногоКомпонента = Товары.Номенклатура
| И Товары.ВариантКомплектацииНоменклатуры.ХарактеристикаОсновногоКомпонента = Товары.Характеристика
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОсновнаяКомплектующая,
| 0 КАК КоличествоПоУмолчанию,
| Товары.Количество КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьПервая
|ИЗ
| Товары КАК Товары
|ГДЕ
| Товары.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ЛОЖЬ,
| СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество),
| 0
|ИЗ
| Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыРазличные КАК ТоварыРазличные
| ПО (ИСТИНА)
|ГДЕ
| ВариантыКомплектацииНоменклатурыТовары.Ссылка В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Т.ВариантКомплектацииНоменклатуры
| ИЗ
| Товары КАК Т)
|
|СГРУППИРОВАТЬ ПО
| ТоварыРазличные.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
| ВариантыКомплектацииНоменклатурыТовары.Характеристика,
| ВариантыКомплектацииНоменклатурыТовары.Упаковка,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантПредставленияНабораВПечатныхФормах,
| ВариантыКомплектацииНоменклатурыТовары.Ссылка.ВариантРасчетаЦеныНабора
|;
|
|
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика,
| МАКСИМУМ(Таблица.ОсновнаяКомплектующая) КАК ОсновнаяКомплектующая,
| СУММА(Таблица.КоличествоПоУмолчанию) КАК КоличествоПоУмолчанию,
| СУММА(Таблица.Количество) КАК Количество
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительноЧастьВторая
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьПервая КАК Таблица
|
|СГРУППИРОВАТЬ ПО
| Таблица.Ссылка,
| Таблица.ВариантКомплектацииНоменклатуры,
| Таблица.ВариантРасчетаЦеныНабора,
| Таблица.ВариантПредставленияНабораВПечатныхФормах,
| Таблица.НоменклатураНабора,
| Таблица.ХарактеристикаНабора,
| Таблица.Номенклатура,
| Таблица.Характеристика
|;
|
|
|ВЫБРАТЬ
| Результат.Ссылка КАК Ссылка,
| Результат.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора КАК НоменклатураНабора,
| Результат.ХарактеристикаНабора КАК ХарактеристикаНабора,
| (ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| И Результат.ОсновнаяКомплектующая
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК ЧИСЛО(10, 0))) - 1 КАК Количество,
| МАКСИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) КАК КоэффициентМаксимум,
| (ВЫРАЗИТЬ(МИНИМУМ(ВЫБОР
| КОГДА Результат.КоличествоПоУмолчанию <> 0
| ТОГДА Результат.Количество / Результат.КоличествоПоУмолчанию
| ИНАЧЕ NULL
| КОНЕЦ) + 0.5 КАК ЧИСЛО(10, 0))) - 1 КАК КоэффициентМинимум
|ПОМЕСТИТЬ ВременнаяТаблицаНаборыДополнительно
|ИЗ
| ВременнаяТаблицаНаборыДополнительноЧастьВторая КАК Результат
|
|СГРУППИРОВАТЬ ПО
| Результат.Ссылка,
| Результат.ВариантКомплектацииНоменклатуры,
| Результат.ВариантРасчетаЦеныНабора,
| Результат.ВариантПредставленияНабораВПечатныхФормах,
| Результат.НоменклатураНабора,
| Результат.ХарактеристикаНабора
|;
|
|
|ВЫБРАТЬ
| ВременнаяТаблицаНаборыДополнительно.ВариантКомплектацииНоменклатуры КАК ВариантКомплектацииНоменклатуры,
| ВременнаяТаблицаНаборыДополнительно.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборыДополнительно.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| Таблица.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК КоличествоУпаковок,
| ЕСТЬNULL(ВременнаяТаблицаНаборыДополнительно.Количество, 1) КАК Количество,
| ВЫБОР
| КОГДА ВременнаяТаблицаНаборыДополнительно.КоэффициентМинимум = ВременнаяТаблицаНаборыДополнительно.КоэффициентМаксимум
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПолныйНабор,
| Таблица.Сумма КАК Сумма,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.НоменклатураНабора.СтавкаНДС КАК СтавкаНДС
|ПОМЕСТИТЬ ВременнаяТаблицаНаборы
|ИЗ
| ВременнаяТаблицаНаборыПодготовка КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборыДополнительно КАК ВременнаяТаблицаНаборыДополнительно
| ПО Таблица.НоменклатураНабора = ВременнаяТаблицаНаборыДополнительно.НоменклатураНабора
| И Таблица.ХарактеристикаНабора = ВременнаяТаблицаНаборыДополнительно.ХарактеристикаНабора
| И Таблица.Ссылка = ВременнаяТаблицаНаборыДополнительно.Ссылка
|;
|
|
|ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка КАК Ссылка,
| ВложенныйЗапрос.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| ВложенныйЗапрос.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| ВложенныйЗапрос.НоменклатураНабора КАК НоменклатураНабора,
| ВложенныйЗапрос.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВложенныйЗапрос.ЭтоНабор КАК ЭтоНабор,
| ВложенныйЗапрос.ЭтоКомплектующие КАК ЭтоКомплектующие,
| ВложенныйЗапрос.ПолныйНабор КАК ПолныйНабор,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.Содержание КАК УслугаНаименованиеПолное,
| ВложенныйЗапрос.Номенклатура.Код КАК Код,
| ВложенныйЗапрос.Номенклатура.Артикул КАК Артикул,
| ВложенныйЗапрос.Характеристика КАК Характеристика,
| ВложенныйЗапрос.Характеристика.НаименованиеПолное КАК ХарактеристикаНаименованиеПолное,
| ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС,
| ВложенныйЗапрос.Цена КАК Цена,
| ВложенныйЗапрос.Количество КАК Количество,
| ВложенныйЗапрос.Сумма КАК Сумма,
| ВложенныйЗапрос.СуммаНДС КАК СуммаНДС,
| ВложенныйЗапрос.СуммаСкидки КАК СуммаСкидки,
| ВложенныйЗапрос.СуммаБезСкидки КАК СуммаБезСкидки,
| ВложенныйЗапрос.НомерСтроки КАК НомерСтроки,
| ВложенныйЗапрос.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| ВложенныйЗапрос.Номенклатура.ЕдиницаИзмерения.Наименование КАК ЕдиницаИзмеренияНаименование,
| ВложенныйЗапрос.Номенклатура.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод
|ИЗ
| (ВЫБРАТЬ
| Таблица.ВариантПредставленияНабораВПечатныхФормах КАК ВариантПредставленияНабораВПечатныхФормах,
| Таблица.ВариантРасчетаЦеныНабора КАК ВариантРасчетаЦеныНабора,
| Таблица.Ссылка КАК Ссылка,
| Таблица.НоменклатураНабора КАК НоменклатураНабора,
| Таблица.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ЭтоКомплектующие,
| ЛОЖЬ КАК ЭтоНабор,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.НомерСтроки
| ИНАЧЕ Таблица.НомерСтроки
| КОНЕЦ КАК НомерСтроки,
| ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.НомерСтроки, 0) <> 0
| ТОГДА ВременнаяТаблицаНаборы.ПолныйНабор
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ПолныйНабор,
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Содержание КАК Содержание,
| Таблица.Количество КАК Количество,
| Таблица.КоличествоУпаковок КАК КоличествоУпаковок,
| Таблица.Цена КАК Цена,
| Таблица.Сумма КАК Сумма,
| Таблица.СтавкаНДС КАК СтавкаНДС,
| Таблица.СуммаНДС КАК СуммаНДС,
| Таблица.Характеристика КАК Характеристика,
| Таблица.Упаковка КАК Упаковка,
| Таблица.СуммаСкидки КАК СуммаСкидки,
| Таблица.СуммаБезСкидки КАК СуммаБезСкидки
| ИЗ
| Товары КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ПО (ВременнаяТаблицаНаборы.НоменклатураНабора = Таблица.НоменклатураНабора)
| И (ВременнаяТаблицаНаборы.ХарактеристикаНабора = Таблица.ХарактеристикаНабора)
| И (ВременнаяТаблицаНаборы.Ссылка = Таблица.Ссылка)
| ГДЕ
| (Таблица.НоменклатураНабора = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ИЛИ Таблица.НоменклатураНабора <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| И Таблица.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоКомплектующие),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие)))
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах,
| ВременнаяТаблицаНаборы.ВариантРасчетаЦеныНабора,
| ВременнаяТаблицаНаборы.Ссылка,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЛОЖЬ,
| ИСТИНА,
| ВременнаяТаблицаНаборы.НомерСтроки,
| ВременнаяТаблицаНаборы.ПолныйНабор,
| ВременнаяТаблицаНаборы.НоменклатураНабора,
| ВременнаяТаблицаНаборы.НоменклатураНабора.НаименованиеПолное,
| ВременнаяТаблицаНаборы.Количество,
| ВременнаяТаблицаНаборы.КоличествоУпаковок,
| ВЫБОР
| КОГДА &ОтображатьСкидки
| ТОГДА ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0
| ТОГДА ВременнаяТаблицаНаборы.СуммаБезСкидки / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1) <> 0
| ТОГДА ВременнаяТаблицаНаборы.Сумма / ЕСТЬNULL(ВременнаяТаблицаНаборы.КоличествоУпаковок, 1)
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ,
| ВременнаяТаблицаНаборы.Сумма,
| ВременнаяТаблицаНаборы.НоменклатураНабора.СтавкаНДС,
| ВременнаяТаблицаНаборы.СуммаНДС,
| ВременнаяТаблицаНаборы.ХарактеристикаНабора,
| ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка),
| ВременнаяТаблицаНаборы.СуммаСкидки,
| ВременнаяТаблицаНаборы.СуммаБезСкидки
| ИЗ
| ВременнаяТаблицаНаборы КАК ВременнаяТаблицаНаборы
| ГДЕ
| ВременнаяТаблицаНаборы.ВариантПредставленияНабораВПечатныхФормах В (ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.ТолькоНабор),
| ЗНАЧЕНИЕ(Перечисление.ВариантыПредставленияНаборовВПечатныхФормах.НаборИКомплектующие))) КАК ВложенныйЗапрос
|
|УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Ссылка,
| НомерСтроки,
| ЭтоНабор УБЫВ
|ИТОГИ
| СУММА(СуммаСкидки)
|ПО
| Ссылка");
Запрос.УстановитьПараметр("МассивДокументов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатПоШапке = МассивРезультатов[0];
РезультатПоТабличнойЧасти = МассивРезультатов[8];
СтруктураДанныхДляПечати = Новый Структура("РезультатПоШапке, РезультатПоТабличнойЧасти",
РезультатПоШапке, РезультатПоТабличнойЧасти);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеОбъектаПоВыборке(ДанныеПечати, ВыборкаПоУслугам)
ДанныеОбъекта = Новый Структура;
ДанныеОбъекта.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Акт'")));
ДанныеОбъекта.Вставить("ДополнительнаяИнформацияШапки", ДанныеПечати.ДополнительнаяИнформацияШапки);
СведенияОИсполнителе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Организация,
ДанныеПечати.Дата,
,
ДанныеПечати.СчетОрганизации);
СведенияОЗаказчике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Контрагент,
ДанныеПечати.Дата,
,
ДанныеПечати.СчетКонтрагента);
ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ВыборкаПоУслугам, Истина);
ДанныеОбъекта.Вставить("ПредставлениеИсполнителя", СведенияОИсполнителе.ОфициальноеНаименование);
ДанныеОбъекта.Вставить("ПредставлениеЗаказчика", СведенияОЗаказчике.ОфициальноеНаименование);
ДанныеОбъекта.Вставить("ЮрАдресИсполнителя", СведенияОИсполнителе.ЮридическийАдрес);
ДанныеОбъекта.Вставить("ЮрАдресЗаказчика", СведенияОЗаказчике.ЮридическийАдрес);
ДанныеОбъекта.Вставить("ИННИсполнителя", СведенияОИсполнителе.ИНН);
ДанныеОбъекта.Вставить("ИННЗаказчика", СведенияОЗаказчике.ИНН);
ДанныеОбъекта.Вставить("КППИсполнителя", СведенияОИсполнителе.КПП);
ДанныеОбъекта.Вставить("КППЗаказчика", СведенияОЗаказчике.КПП);
ДанныеОбъекта.Вставить("РасчетныйСчетИсполнителя", СведенияОИсполнителе.НомерСчета);
ДанныеОбъекта.Вставить("РасчетныйСчетЗаказчика", СведенияОЗаказчике.НомерСчета);
ДанныеОбъекта.Вставить("КорСчетИсполнителя", СведенияОИсполнителе.КоррСчет);
ДанныеОбъекта.Вставить("КорСчетЗаказчика", СведенияОЗаказчике.КоррСчет);
ДанныеОбъекта.Вставить("БанкИсполнителя", СведенияОИсполнителе.Банк);
ДанныеОбъекта.Вставить("БанкЗаказчика", СведенияОЗаказчике.Банк);
ДанныеОбъекта.Вставить("БИКИсполнителя", СведенияОИсполнителе.БИК);
ДанныеОбъекта.Вставить("БИКЗаказчика", СведенияОЗаказчике.БИК);
ДанныеОбъекта.Вставить("ДополнительнаяИнформация", ДанныеПечати.ДополнительнаяИнформация);
ДанныеОбъекта.Вставить("УчитыватьНДС", ДанныеПечати.УчитыватьНДС);
ДанныеОбъекта.Вставить("ПоказыватьНДС", Константы.ВыводитьДопКолонкиНДС.Получить());
ДанныеОбъекта.Вставить("ЕстьСкидки", ЗаголовокСкидки.ЕстьСкидки);
ДанныеОбъекта.Вставить("ЗаголовокСкидки", ЗаголовокСкидки.Скидка);
ДанныеОбъекта.Вставить("ЗаголовокСуммаБезСкидки", ЗаголовокСкидки.СуммаСкидки);
ДанныеОбъекта.Вставить("ТолькоНаценка", ЗаголовокСкидки.ТолькоНаценка);
Если ДанныеПечати.УчитыватьНДС Тогда
ДанныеОбъекта.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС,
НСтр("ru = 'В том числе НДС:'", ОбщегоНазначения.КодОсновногоЯзыка()),
НСтр("ru = 'Сумма НДС:'", ОбщегоНазначения.КодОсновногоЯзыка())));
Иначе
ДанныеОбъекта.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
КонецЕсли;
ДанныеОбъекта.Вставить("Услуги", Новый Массив);
ДанныеОбъекта.Вставить("ИспользоватьНаборы", Ложь);
ВыборкаПоУслугам.Сбросить();
ВыборкаПоУслугам.Следующий();
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоУслугам, "ЭтоНабор") Тогда
ДанныеОбъекта.ИспользоватьНаборы = Истина;
КонецЕсли;
ПустыеДанные = НаборыСервер.ПустыеДанные();
Сумма = 0;
СуммаНДС = 0;
НомерСтроки = 0;
ВыборкаПоУслугам.Сбросить();
Пока ВыборкаПоУслугам.Следующий() Цикл
НомерСтрокиПечать = "";
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоУслугам, ДанныеОбъекта.ИспользоватьНаборы) Тогда
Иначе
НомерСтроки = НомерСтроки + 1;
НомерСтрокиПечать = НомерСтроки;
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоУслугам, ДанныеОбъекта.ИспользоватьНаборы);
СтрокаТаблицыУслуги = Новый Структура;
СтрокаТаблицыУслуги.Вставить("НомерСтроки", НомерСтрокиПечать);
СтрокаТаблицыУслуги.Вставить("Товар", ПрефиксИПостфикс.Префикс + ВыборкаПоУслугам.УслугаНаименованиеПолное + ПрефиксИПостфикс.Постфикс);
СтрокаТаблицыУслуги.Вставить("Количество", ВыборкаПоУслугам.Количество);
СтрокаТаблицыУслуги.Вставить("ЕдиницаИзмерения", ВыборкаПоУслугам.ЕдиницаИзмерения);
СтрокаТаблицыУслуги.Вставить("Цена", Формат(ВыборкаПоУслугам.Цена,"ЧДЦ=2; ЧРД=,"));
СтрокаТаблицыУслуги.Вставить("Скидка", Формат(ВыборкаПоУслугам.СуммаСкидки,"ЧДЦ=2; ЧРД=,"));
СтрокаТаблицыУслуги.Вставить("Сумма", Формат(ВыборкаПоУслугам.Сумма,"ЧДЦ=2; ЧРД=,"));
СтрокаТаблицыУслуги.Вставить("СтавкаНДС", ВыборкаПоУслугам.СтавкаНДС);
СтрокаТаблицыУслуги.Вставить("СуммаНДС", Формат(ВыборкаПоУслугам.СуммаНДС,"ЧДЦ=2; ЧРД=,"));
СтрокаТаблицыУслуги.Вставить("СуммаБезСкидки", Формат(ВыборкаПоУслугам.СуммаБезСкидки,"ЧДЦ=2; ЧРД=,"));
СтрокаТаблицыУслуги.Вставить("ЭтоНабор", ВыборкаПоУслугам.ЭтоНабор);
СтрокаТаблицыУслуги.Вставить("ЭтоКомплектующие", ВыборкаПоУслугам.ЭтоКомплектующие);
СтрокаТаблицыУслуги.Вставить("ВариантПредставленияНабораВПечатныхФормах", ВыборкаПоУслугам.ВариантПредставленияНабораВПечатныхФормах);
СтрокаТаблицыУслуги.Вставить("ВариантРасчетаЦеныНабора", ВыборкаПоУслугам.ВариантРасчетаЦеныНабора);
Если ДанныеОбъекта.ЕстьСкидки Тогда
СтрокаТаблицыУслуги.Скидка = ?(ДанныеОбъекта.ТолькоНаценка,- СтрокаТаблицыУслуги.Скидка,СтрокаТаблицыУслуги.Скидка);
СтрокаТаблицыУслуги.Скидка = Формат(СтрокаТаблицыУслуги.Скидка,"ЧДЦ=2; ЧРД=,");
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоУслугам, ДанныеОбъекта.ИспользоватьНаборы) Тогда
ЗаполнитьЗначенияСвойств(СтрокаТаблицыУслуги, ПустыеДанные);
КонецЕсли;
ДанныеОбъекта.Услуги.Добавить(СтрокаТаблицыУслуги);
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоУслугам, ДанныеОбъекта.ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоУслугам.Сумма;
СуммаНДС = СуммаНДС + ВыборкаПоУслугам.СуммаНДС;
КонецЕсли;
КонецЦикла;
ДанныеОбъекта.Вставить("Всего", Сумма);
ДанныеОбъекта.Вставить("ВсегоНДС", СуммаНДС);
СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
ИтоговаяСтрока = НСтр("ru = 'Всего выполнено работ (оказано услуг) %КоличествоНаименований%, на сумму %СуммаДокумента%'", ОбщегоНазначения.КодОсновногоЯзыка());
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%КоличествоНаименований%", НомерСтроки);
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%СуммаДокумента%", ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
ДанныеОбъекта.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
ДанныеОбъекта.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
Возврат ДанныеОбъекта;
КонецФункции
Функция ПолучитьОписаниеОбластейАктВыполненныхРабот()
Секции = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ВерхнийКолонтитул", "ВерхнийКолонтитул");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "НижнийКолонтитул", "НижнийКолонтитул");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ЗаголовокДокумента", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ЗаголовокШапки", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ДополнительнаяИнформацияШапки", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "Предложение", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ШапкаТаблицы", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "Строка", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаНабор", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаКомплектующие", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаКомплектующиеКонец", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ШапкаТаблицыСоСкидкой", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкой", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойНабор", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойКомплектующие", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойКомплектующиеКонец", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ШапкаТаблицыСоСкидкойСНДС", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойСНДС", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойСНДСНабор", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойСНДСКомплектующие", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСоСкидкойСНДСКомплектующиеКонец", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ШапкаТаблицыСНДС", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСНДС", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСНДСНабор", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСНДСКомплектующие", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СтрокаСНДСКомплектующиеКонец", "СтрокаТаблицы");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "Итого", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ИтогоНДС", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "СуммаПрописью", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "Подписи", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(Секции, "ДополнительнаяИнформация", "Общая");
Возврат Секции;
КонецФункции
Функция ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Если ПараметрыПечати <> Неопределено И ПараметрыПечати.Свойство("ОтображатьСкидки") Тогда
ОтображатьСкидки = ПараметрыПечати.ОтображатьСкидки;
Иначе
ОтображатьСкидки = (Константы.ОтображениеСкидокВПечатныхФормахДокументовПродажи.Получить()
<> Перечисления.ВариантыВыводаСкидокВПечатныхФормах.НеВыводитьСкидки);
КонецЕсли;
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ОтветственныеЛицаСервер.СформироватьВременнуюТаблицуОтветственныхЛицДокументов(МассивОбъектов, МенеджерВременныхТаблиц);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| Документы.Ссылка КАК Ссылка,
| Документы.Номер КАК Номер,
| Документы.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК ДокументОснование,
| ЕСТЬNULL(Документы.БанковскийСчетОрганизации.Владелец, Документы.Организация) КАК Организация,
| Документы.Организация КАК ОрганизацияПоставщик,
| ТаблицаОтветственныеЛица.РуководительНаименование КАК Руководитель,
| ТаблицаОтветственныеЛица.РуководительДолжность КАК ДолжностьРуководителя,
| ТаблицаОтветственныеЛица.ГлавныйБухгалтерНаименование КАК ГлавныйБухгалтер,
| ВЫБОР
| КОГДА Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС)
| ИЛИ Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК УчитыватьНДС,
| Документы.НалогообложениеНДС = ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя) КАК ОперацияОблагаетсяНДСУПокупателя,
| Документы.Контрагент КАК Контрагент,
| Документы.Контрагент.ЮрФизЛицо КАК КонтрагентЮрФизЛицо,
| Документы.БанковскийСчетОрганизации КАК БанковскийСчет,
|
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.ИностранныйБанк
| ИЛИ Документы.БанковскийСчетОрганизации.ВалютаДенежныхСредств <> Документы.Организация.ВалютаРегламентированногоУчета
| ИЛИ Документы.БанковскийСчетКонтрагента.ИностранныйБанк ТОГДА
| ИСТИНА
| ИНАЧЕ
| ЛОЖЬ
| КОНЕЦ КАК ПлатежЗаРубеж,
| Документы.БанковскийСчетОрганизации.ВалютаДенежныхСредств КАК ВалютаДенежныхСредств,
|
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаМеждународное
| ИНАЧЕ Документы.БанковскийСчетОрганизации.Банк.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаДляРасчетовМеждународное
| ИНАЧЕ Документы.БанковскийСчетОрганизации.БанкДляРасчетов.МеждународноеНаименование КОНЕЦ КАК НаименованиеБанкаДляРасчетовМеждународное,
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчетОрганизации.СВИФТБанка
| ИНАЧЕ Документы.БанковскийСчетОрганизации.Банк.СВИФТБИК КОНЕЦ КАК СВИФТБанка,
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчетОрганизации.СВИФТБанкаДляРасчетов
| ИНАЧЕ Документы.БанковскийСчетОрганизации.БанкДляРасчетов.СВИФТБИК КОНЕЦ КАК СВИФТБанкаДляРасчетов,
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка ТОГДА Документы.БанковскийСчетОрганизации.АдресБанкаМеждународный
| ИНАЧЕ Документы.БанковскийСчетОрганизации.Банк.АдресМеждународный КОНЕЦ КАК АдресБанка,
| ВЫБОР КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов ТОГДА Документы.БанковскийСчетОрганизации.АдресБанкаДляРасчетовМеждународный
| ИНАЧЕ Документы.БанковскийСчетОрганизации.БанкДляРасчетов.АдресМеждународный КОНЕЦ КАК АдресБанкаДляРасчетов,
|
| Документы.БанковскийСчетОрганизации.СчетВБанкеДляРасчетов КАК СчетВБанкеДляРасчетов,
| ЕСТЬNULL(Документы.БанковскийСчетОрганизации.СчетЦифровогоРубля, ЛОЖЬ) КАК ЭтоСчетЦифровогоРубля,
| ВЫБОР
| КОГДА ЕСТЬNULL(Документы.БанковскийСчетОрганизации.СчетЦифровогоРубля, ЛОЖЬ)
| ТОГДА Документы.БанковскийСчетОрганизации.ИдентификаторСчетаЦифровогоРубля
| ИНАЧЕ Документы.БанковскийСчетОрганизации.НомерСчета
| КОНЕЦ КАК НомерБанковскогоСчета,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.БИКБанка
| ИНАЧЕ КлассификаторБанков.Код
| КОНЕЦ КАК БИКБанк,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанка
| ИНАЧЕ КлассификаторБанков.Наименование
| КОНЕЦ КАК НаименованиеБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.КоррСчетБанка
| ИНАЧЕ КлассификаторБанков.КоррСчет
| КОНЕЦ КАК КоррСчетБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанка
| ИНАЧЕ КлассификаторБанков.Город
| КОНЕЦ КАК ГородБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.БИКБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Код
| КОНЕЦ КАК БИКБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.НаименованиеБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Наименование
| КОНЕЦ КАК НаименованиеБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.КоррСчетБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.КоррСчет
| КОНЕЦ КАК КоррСчетБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаДляРасчетов
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.Город
| КОНЕЦ КАК ГородБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаМеждународный
| ИНАЧЕ КлассификаторБанков.ГородМеждународный
| КОНЕЦ КАК ГородБанкаМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СтранаБанка
| ИНАЧЕ СтраныБанков.Ссылка
| КОНЕЦ КАК СтранаБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.ГородБанкаДляРасчетовМеждународный
| ИНАЧЕ КлассификаторБанковКорреспондентовРФ.ГородМеждународный
| КОНЕЦ КАК ГородБанкаДляРасчетовМеждународный,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА Документы.БанковскийСчетОрганизации.СтранаБанкаДляРасчетов
| ИНАЧЕ СтраныБанковКорреспондентовРФ.Ссылка
| КОНЕЦ КАК СтранаБанкаДляРасчетов,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанка
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанков.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанка,
| ВЫБОР
| КОГДА Документы.БанковскийСчетОрганизации.РучноеИзменениеРеквизитовБанкаДляРасчетов
| ТОГДА """"
| ИНАЧЕ ЕСТЬNULL(КлассификаторБанковКорреспондентовРФ.БИКРКЦ.Наименование, """")
| КОНЕЦ КАК НаименованиеРКЦБанкаДляРасчетов,
| Документы.БанковскийСчетОрганизации.ТекстКорреспондента КАК БанковскийСчетТекстКорреспондента,
| Документы.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| Документы.Валюта КАК Валюта,
| Документы.Менеджер.ФизическоеЛицо КАК Менеджер,
| НЕОПРЕДЕЛЕНО КАК Грузоотправитель,
| НЕОПРЕДЕЛЕНО КАК Грузополучатель,
| Документы.СуммаДокумента КАК СуммаКВозврату,
| ЛОЖЬ КАК ЧастичнаяОплата,
| """" КАК НазначениеПлатежа,
| 100 КАК ПроцентОплаты,
| """" КАК ДополнительнаяИнформация,
| Документы.СуммаДокумента КАК СуммаДокумента,
| Документы.ИдентификаторПлатежа КАК ИдентификаторПлатежа,
| ЛОЖЬ КАК СчетКВозврату
|ИЗ
| Документ.АктВыполненныхРабот КАК Документы
| ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОтветственныеЛица КАК ТаблицаОтветственныеЛица
| ПО Документы.Ссылка = ТаблицаОтветственныеЛица.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанков
| ПО Документы.БанковскийСчетОрганизации.Банк = КлассификаторБанков.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанков
| ПО КлассификаторБанков.КодСтраны = СтраныБанков.Код
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторБанков КАК КлассификаторБанковКорреспондентовРФ
| ПО Документы.БанковскийСчетОрганизации.БанкДляРасчетов = КлассификаторБанковКорреспондентовРФ.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СтраныМира КАК СтраныБанковКорреспондентовРФ
| ПО КлассификаторБанковКорреспондентовРФ.КодСтраны = СтраныБанковКорреспондентовРФ.Код
|ГДЕ
| Документы.Ссылка В(&МассивОбъектов)
|
|УПОРЯДОЧИТЬ ПО
| Документы.МоментВремени
|;
|
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| 1 КАК НомерСтроки,
| ДанныеДокумента.Дата КАК ДатаПлатежа,
| 100 КАК ПроцентПлатежа,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаПлатежа,
| ЛОЖЬ КАК ЭтоЗалогЗаТару
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
|
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
| И ДанныеДокумента.СуммаВзаиморасчетов > 0
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка
|
|ИМЕЮЩИЕ
| ДанныеДокумента.СуммаВзаиморасчетов > 0
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки
|;
|
|
|ВЫБРАТЬ
| Услуги.Ссылка КАК Ссылка,
| Услуги.НомерСтроки КАК НомерСтроки,
| Услуги.Номенклатура КАК Номенклатура,
| Услуги.Номенклатура.Код КАК Код,
| Услуги.Номенклатура.Артикул КАК Артикул,
| ЕСТЬNULL(НоменклатураПредставления.НаименованиеПолное, Услуги.Номенклатура.НаименованиеПолное) КАК НаименованиеПолное,
| Услуги.Содержание КАК Содержание,
| ПРЕДСТАВЛЕНИЕ(Услуги.Номенклатура.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
| Услуги.Количество КАК Количество,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Услуги.Цена
| ИНАЧЕ Услуги.Сумма/Услуги.Количество
| КОНЕЦ КАК Цена,
| Услуги.Сумма КАК Сумма,
| Услуги.СтавкаНДС КАК СтавкаНДС,
| Услуги.СуммаНДС КАК СуммаНДС,
| ЛОЖЬ КАК ЭтоВозвратнаяТара,
| ЕСТЬNULL(ХарактеристикиНоменклатурыПредставления.НаименованиеПолное, ЕСТЬNULL(Услуги.Характеристика.НаименованиеПолное, """")) КАК Характеристика,
| Неопределено КАК Упаковка,
| ВЫБОР
| КОГДА &ОтображатьСкидки ТОГДА
| Услуги.СуммаРучнойСкидки + Услуги.СуммаАвтоматическойСкидки
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаСкидки,
| Услуги.Сумма + Услуги.СуммаРучнойСкидки + Услуги.СуммаАвтоматическойСкидки КАК СуммаБезСкидки
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Услуги
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.Представления КАК НоменклатураПредставления
| ПО (Услуги.Номенклатура = НоменклатураПредставления.Ссылка
| И НоменклатураПредставления.КодЯзыка = &КодЯзыка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры.Представления КАК ХарактеристикиНоменклатурыПредставления
| ПО (Услуги.Характеристика = ХарактеристикиНоменклатурыПредставления.Ссылка
| И ХарактеристикиНоменклатурыПредставления.КодЯзыка = &КодЯзыка)
|ГДЕ
| Услуги.Ссылка В(&МассивОбъектов)
|УПОРЯДОЧИТЬ ПО
| НомерСтроки";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.УстановитьПараметр("ОтображатьСкидки", ОтображатьСкидки);
Запрос.УстановитьПараметр("КодЯзыка", КодЯзыка);
ПакетРезультатовЗапроса = Запрос.ВыполнитьПакет();
СтруктураДанныхДляПечати = Новый Структура;
СтруктураДанныхДляПечати.Вставить("РезультатПоШапке", ПакетРезультатовЗапроса[0]);
СтруктураДанныхДляПечати.Вставить("РезультатПоЭтапамОплаты", ПакетРезультатовЗапроса[1]);
СтруктураДанныхДляПечати.Вставить("РезультатПоТабличнойЧасти", ПакетРезультатовЗапроса[2]);
Возврат СтруктураДанныхДляПечати;
КонецФункции
Функция ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
Возврат ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка);
КонецФункции
Процедура ЗаполнитьСтруктуруПолучателейПечатныхФорм(СтруктураДанныхОбъектаПечати) Экспорт
СтруктураДанныхОбъектаПечати.ОсновнойПолучатель = "Партнер";
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Партнер");
Если ПолучитьФункциональнуюОпцию("ИспользоватьПартнеровИКонтрагентов") Тогда
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("Контрагент");
КонецЕсли;
СтруктураДанныхОбъектаПечати.МассивРеквизитовПолучателей.Добавить("КонтактноеЛицо");
КонецПроцедуры
Функция ДобавлятьКомандыПечатиКомплектаДокументов() Экспорт
Возврат Не ПраваПользователяПовтИсп.ЭтоПартнер();
КонецФункции
#КонецОбласти
#Область ШаблоныСообщений
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриФормированииСообщения(Сообщение, ПредметСообщения, ДополнительныеПараметры) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
КонецПроцедуры
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
КонецПроцедуры
#КонецОбласти
#Область Прочее
Функция ПолучитьРезультатЗапросаПоОстаткамЗаказов(ДанныеОтбора, ПараметрыЗаполнения, МассивЗаказов = Неопределено)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("МассивЗаказов", МассивЗаказов);
Запрос.УстановитьПараметр("Партнер", ДанныеОтбора.Партнер);
Запрос.УстановитьПараметр("Контрагент", ДанныеОтбора.Контрагент);
Запрос.УстановитьПараметр("Договор", ДанныеОтбора.Договор);
Запрос.УстановитьПараметр("Организация", ДанныеОтбора.Организация);
Запрос.УстановитьПараметр("Сделка", ДанныеОтбора.Сделка);
Запрос.УстановитьПараметр("Соглашение", ДанныеОтбора.Соглашение);
Запрос.УстановитьПараметр("ВалютаВзаиморасчетов", ДанныеОтбора.ВалютаВзаиморасчетов);
Запрос.УстановитьПараметр("НалогообложениеНДС", ДанныеОтбора.НалогообложениеНДС);
Запрос.УстановитьПараметр("ЦенаВключаетНДС", ДанныеОтбора.ЦенаВключаетНДС);
Запрос.УстановитьПараметр("Регистратор", ДанныеОтбора.Ссылка);
Запрос.УстановитьПараметр("НаправлениеДеятельности", ДанныеОтбора.НаправлениеДеятельности);
Запрос.УстановитьПараметр("ОтобратьПоЗаказу", МассивЗаказов <> Неопределено);
Запрос.УстановитьПараметр("Подразделение", ДанныеОтбора.Подразделение);
ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено;
ПараметрыЗаполнения.Свойство("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ИспользоватьРасширенныеВозможностиЗаказаКлиента);
Если ИспользоватьРасширенныеВозможностиЗаказаКлиента = Неопределено Тогда
ИспользоватьРасширенныеВозможностиЗаказаКлиента = ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента");
КонецЕсли;
Запрос.УстановитьПараметр("ЭтоЗаказКакСчет", Не ИспользоватьРасширенныеВозможностиЗаказаКлиента);
Запрос.УстановитьПараметр("ИспользоватьРасширенныеВозможностиЗаказаКлиента",
ПолучитьФункциональнуюОпцию("ИспользоватьРасширенныеВозможностиЗаказаКлиента"));
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаЗаказы.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаЗаказы.Номенклатура КАК Номенклатура,
| ТаблицаЗаказы.Характеристика КАК Характеристика,
| ТаблицаЗаказы.КодСтроки КАК КодСтроки,
| СУММА(ТаблицаЗаказы.КОформлению) КАК Количество,
| СУММА(ТаблицаЗаказы.Сумма) КАК Сумма
|ПОМЕСТИТЬ ТаблицаОстатки
|ИЗ
| (ВЫБРАТЬ
| РаспоряженияОбороты.Распоряжение КАК ЗаказКлиента,
| РаспоряженияОбороты.Номенклатура КАК Номенклатура,
| РаспоряженияОбороты.Характеристика КАК Характеристика,
| РаспоряженияОбороты.КодСтроки КАК КодСтроки,
| (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) КАК КОформлению,
| (РаспоряженияОбороты.КОформлениюСуммаОборот -
| РаспоряженияОбороты.ОформленоСуммаОборот) КАК Сумма
| ИЗ
| #РаспоряженияНаОтгрузкуОборотыРазвернутая КАК РаспоряженияОбороты
| ГДЕ
| (РаспоряженияОбороты.КОформлениюКоличествоОборот -
| РаспоряженияОбороты.ОформленоКоличествоОборот) <> 0
| ИЛИ (РаспоряженияОбороты.КОформлениюСуммаОборот -
| РаспоряженияОбороты.ОформленоСуммаОборот) <> 0
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РаспоряженияДвижения.Распоряжение,
| РаспоряженияДвижения.Номенклатура,
| РаспоряженияДвижения.Характеристика,
| РаспоряженияДвижения.КодСтроки,
| -РаспоряженияДвижения.КОформлениюКоличество + РаспоряженияДвижения.ОформленоКоличество,
| -РаспоряженияДвижения.КОформлениюСумма + РаспоряженияДвижения.ОформленоСумма
| ИЗ
| #РаспоряженияНаОтгрузкуДвиженияРазвернутая КАК РаспоряженияДвижения
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказКлиентаТовары.Ссылка,
| ЗаказКлиентаТовары.Номенклатура,
| ЗаказКлиентаТовары.Характеристика,
| ЗаказКлиентаТовары.КодСтроки,
| ЗаказКлиентаТовары.Количество,
| ЗаказКлиентаТовары.СуммаСНДС
| ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ГДЕ
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказКлиентаТовары.Ссылка В (&МассивЗаказов)
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.Партнер = &Партнер
| И ЗаказКлиентаТовары.Ссылка.Контрагент = &Контрагент
| И ЗаказКлиентаТовары.Ссылка.Договор = &Договор
| И ЗаказКлиентаТовары.Ссылка.Организация = &Организация
| И ЗаказКлиентаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента))
| И ЗаказКлиентаТовары.Ссылка.Соглашение = &Соглашение
| И ЗаказКлиентаТовары.Ссылка.Сделка = &Сделка
| И ЗаказКлиентаТовары.Ссылка.Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ЗаказКлиентаТовары.Ссылка.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаказКлиентаТовары.Ссылка.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И ЗаказКлиентаТовары.Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)
| И НЕ ЗаказКлиентаТовары.Отменено
| И НЕ ЗаказКлиентаТовары.Ссылка.ПометкаУдаления
| И ЗаказКлиентаТовары.Ссылка.ЭтоЗаказКакСчет
| И ЗаказКлиентаТовары.Ссылка.ЭтоЗаказКакСчет = &ЭтоЗаказКакСчет
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗаказКлиентаТовары.Ссылка,
| ЗаказКлиентаТовары.Номенклатура,
| ЗаказКлиентаТовары.Характеристика,
| ЗаказКлиентаТовары.КодСтроки,
| ЗаказКлиентаТовары.Количество,
| ЗаказКлиентаТовары.СуммаСНДС
| ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ЗаказКлиентаТовары
| ГДЕ
| ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА ЗаказКлиентаТовары.Ссылка В (&МассивЗаказов)
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.Партнер = &Партнер
| И ЗаказКлиентаТовары.Ссылка.Контрагент = &Контрагент
| И ЗаказКлиентаТовары.Ссылка.Договор = &Договор
| И ЗаказКлиентаТовары.Ссылка.Организация = &Организация
| И ЗаказКлиентаТовары.Ссылка.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента))
| И ЗаказКлиентаТовары.Ссылка.Соглашение = &Соглашение
| И ЗаказКлиентаТовары.Ссылка.Сделка = &Сделка
| И ЗаказКлиентаТовары.Ссылка.Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ ЗаказКлиентаТовары.Ссылка.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И ЗаказКлиентаТовары.Ссылка.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И ЗаказКлиентаТовары.Ссылка.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И ЗаказКлиентаТовары.Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)
| И НЕ ЗаказКлиентаТовары.Отменено
| И НЕ ЗаказКлиентаТовары.Ссылка.ПометкаУдаления
| И ЗаказКлиентаТовары.Ссылка.ЭтоЗаказКакСчет
| И ЗаказКлиентаТовары.Ссылка.ЭтоЗаказКакСчет = &ЭтоЗаказКакСчет) КАК ТаблицаЗаказы
|ГДЕ
| ТаблицаЗаказы.ЗаказКлиента.Подразделение = &Подразделение
|
|СГРУППИРОВАТЬ ПО
| ТаблицаЗаказы.ЗаказКлиента,
| ТаблицаЗаказы.Номенклатура,
| ТаблицаЗаказы.Характеристика,
| ТаблицаЗаказы.КодСтроки
|
|ИМЕЮЩИЕ
| СУММА(ТаблицаЗаказы.КОформлению) > 0
|;
|
|
|ВЫБРАТЬ
| ТаблицаОстатки.ЗаказКлиента КАК ЗаказКлиента,
| ЗаказТовары.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| ТаблицаОстатки.Номенклатура КАК Номенклатура,
| ТаблицаОстатки.Характеристика КАК Характеристика,
| ТаблицаОстатки.КодСтроки КАК КодСтроки,
| ТаблицаОстатки.Количество КАК Количество,
| ТаблицаОстатки.Сумма КАК СуммаВзаиморасчетов,
| ЗаказТовары.НоменклатураПартнера КАК НоменклатураПартнера,
| ЗаказТовары.НоменклатураНабора КАК НоменклатураНабора,
| ЗаказТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЗаказТовары.ДатаОтгрузки КАК ДатаОтгрузки,
| ЗаказТовары.НомерСтроки КАК НомерСтроки,
| ЗаказТовары.Ссылка.Сделка КАК Сделка,
| ЗаказТовары.ВидЦены КАК ВидЦены,
| ЗаказТовары.Количество КАК КоличествоВЗаказе,
| ЗаказТовары.Цена КАК Цена,
| ЗаказТовары.СтавкаНДС КАК СтавкаНДС,
| ЗаказТовары.Сумма КАК Сумма,
| ЗаказТовары.СуммаНДС КАК СуммаНДС,
| ЗаказТовары.СуммаСНДС КАК СуммаСНДС,
| ЗаказТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,
| ЗаказТовары.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ЗаказТовары.ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,
| ЗаказТовары.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ЗаказТовары.СуммаБонусныхБалловКСписанию КАК СуммаБонусныхБалловКСписанию,
| ЗаказТовары.СуммаБонусныхБалловКСписаниюВВалюте КАК СуммаБонусныхБалловКСписаниюВВалюте,
| ЗаказТовары.СуммаНачисленныхБонусныхБалловВВалюте КАК СуммаНачисленныхБонусныхБалловВВалюте,
| ЗаказТовары.Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| ЗаказТовары.Подразделение КАК Подразделение,
| ЗаказТовары.КлючСвязи КАК КлючСвязи,
| ВЫБОР
| КОГДА ЗаказТовары.Обособленно
| ТОГДА ТаблицаОстатки.ЗаказКлиента.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ЗаказТовары.Содержание КАК Содержание
|ИЗ
| ТаблицаОстатки КАК ТаблицаОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказТовары
| ПО ТаблицаОстатки.Номенклатура = ЗаказТовары.Номенклатура
| И ТаблицаОстатки.Характеристика = ЗаказТовары.Характеристика
| И ТаблицаОстатки.КодСтроки = ЗаказТовары.КодСтроки
| И ТаблицаОстатки.ЗаказКлиента = ЗаказТовары.Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ТаблицаОстатки.ЗаказКлиента,
| ЗаказТовары.Ссылка.ПорядокРасчетов,
| ТаблицаОстатки.Номенклатура,
| ТаблицаОстатки.Характеристика,
| ТаблицаОстатки.КодСтроки,
| ТаблицаОстатки.Количество,
| ТаблицаОстатки.Сумма,
| ЗНАЧЕНИЕ(Справочник.НоменклатураКонтрагентов.ПустаяСсылка),
| ЗаказТовары.НоменклатураНабора КАК НоменклатураНабора,
| ЗаказТовары.ХарактеристикаНабора КАК ХарактеристикаНабора,
| ЗаказТовары.ДатаОтгрузки,
| ЗаказТовары.НомерСтроки,
| ЗаказТовары.Ссылка.Сделка,
| ЗаказТовары.ВидЦены,
| ЗаказТовары.Количество,
| ЗаказТовары.Цена,
| ЗаказТовары.СтавкаНДС,
| ЗаказТовары.Сумма,
| ЗаказТовары.СуммаНДС,
| ЗаказТовары.СуммаСНДС,
| ЗаказТовары.ПроцентРучнойСкидки,
| ЗаказТовары.СуммаРучнойСкидки,
| ЗаказТовары.ПроцентАвтоматическойСкидки,
| ЗаказТовары.СуммаАвтоматическойСкидки,
| ЗаказТовары.СуммаБонусныхБалловКСписанию,
| ЗаказТовары.СуммаБонусныхБалловКСписаниюВВалюте,
| ЗаказТовары.СуммаНачисленныхБонусныхБалловВВалюте,
| ЗаказТовары.Номенклатура.ТипНоменклатуры,
| ЗаказТовары.Подразделение,
| ЗаказТовары.КлючСвязи,
| ВЫБОР
| КОГДА ЗаказТовары.Обособленно
| ТОГДА ТаблицаОстатки.ЗаказКлиента.Назначение
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
| КОНЕЦ КАК Назначение,
| ЗаказТовары.Содержание
|ИЗ
| ТаблицаОстатки КАК ТаблицаОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ЗаказТовары
| ПО ТаблицаОстатки.Номенклатура = ЗаказТовары.Номенклатура
| И ТаблицаОстатки.Характеристика = ЗаказТовары.Характеристика
| И ТаблицаОстатки.КодСтроки = ЗаказТовары.КодСтроки
| И ТаблицаОстатки.ЗаказКлиента = ЗаказТовары.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ТаблицаОстатки.ЗаказКлиента,
| ЗаказТовары.НомерСтроки,
| ТаблицаОстатки.Номенклатура,
| ТаблицаОстатки.Характеристика,
| ЗаказТовары.ДатаОтгрузки;
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ЗаказКлиентаТовары.НомерСтроки
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
|ГДЕ
| ЗаказКлиентаТовары.Ссылка В (&МассивЗаказов)
| И ЗаказКлиентаТовары.Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)
| И ЗаказКлиентаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И НЕ ЗаказКлиентаТовары.Отменено
| И ЗаказКлиентаТовары.Ссылка.Проведен
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| ЗаказКлиентаТовары.НомерСтроки
|ИЗ
| Документ.ЗаявкаНаВозвратТоваровОтКлиента.ЗаменяющиеТовары КАК ЗаказКлиентаТовары
|ГДЕ
| ЗаказКлиентаТовары.Ссылка В (&МассивЗаказов)
| И ЗаказКлиентаТовары.Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)
| И ЗаказКлиентаТовары.ВариантОбеспечения = ЗНАЧЕНИЕ(Перечисление.ВариантыОбеспечения.Отгрузить)
| И НЕ ЗаказКлиентаТовары.Отменено
| И ЗаказКлиентаТовары.Ссылка.Проведен
|";
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
"ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА Распоряжение В (&МассивЗаказов)
| ИНАЧЕ Распоряжение.Партнер = &Партнер
| И Распоряжение.Контрагент = &Контрагент
| И Распоряжение.Договор = &Договор
| И Распоряжение.Организация = &Организация
| И Распоряжение.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента))
| И Распоряжение.Соглашение = &Соглашение
| И Распоряжение.Сделка = &Сделка
| И Распоряжение.Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА Распоряжение.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ Распоряжение.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И Распоряжение.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И Распоряжение.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И Распоряжение.ЭтоЗаказКакСчет = &ЭтоЗаказКакСчет
| И Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, КодСтроки";
ПараметрыФормированияТаблицы.Показатели = "КОформлению, Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество, Сумма";
РаспоряженияНаОтгрузкуОборотыРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуОборотыРазвернутая",
РаспоряженияНаОтгрузкуОборотыРазвернутая);
ПараметрыФормированияТаблицы = РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.НовыйПараметрыФормированияРазвернутойТаблицы();
ПараметрыФормированияТаблицы.ТекстУсловия =
" Регистратор = &Регистратор
| И ВЫБОР
| КОГДА &ОтобратьПоЗаказу
| ТОГДА Распоряжение В (&МассивЗаказов)
| ИНАЧЕ Распоряжение.Партнер = &Партнер
| И Распоряжение.Контрагент = &Контрагент
| И Распоряжение.Договор = &Договор
| И Распоряжение.Организация = &Организация
| И Распоряжение.ХозяйственнаяОперация В
| (ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратОтРозничногоПокупателя),
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента))
| И Распоряжение.Соглашение = &Соглашение
| И Распоряжение.Сделка = &Сделка
| И Распоряжение.Валюта = &ВалютаВзаиморасчетов
| И ВЫБОР
| КОГДА Распоряжение.НалогообложениеНДС В (ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортСырьевыхТоваровУслуг), ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ЭкспортНесырьевыхТоваров))
| ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыНалогообложенияНДС.ПродажаНаЭкспорт)
| ИНАЧЕ Распоряжение.НалогообложениеНДС
| КОНЕЦ = &НалогообложениеНДС
| И Распоряжение.ЦенаВключаетНДС = &ЦенаВключаетНДС
| И Распоряжение.НаправлениеДеятельности = &НаправлениеДеятельности
| КОНЕЦ
| И Активность
| И Распоряжение.ЭтоЗаказКакСчет = &ЭтоЗаказкакСчет
| И Номенклатура.ВариантОформленияПродажи = ЗНАЧЕНИЕ(Перечисление.ВариантыОформленияПродажи.АктВыполненныхРабот)";
ПараметрыФормированияТаблицы.Группировка = "Распоряжение, Номенклатура, Характеристика, КодСтроки";
ПараметрыФормированияТаблицы.Показатели = "КОформлению, Оформлено";
ПараметрыФормированияТаблицы.Ресурсы = "Количество, Сумма";
ПараметрыФормированияТаблицы.ФизическаяТаблица = Истина;
РаспоряженияНаОтгрузкуДвиженияРазвернутая =
РегистрыНакопления.РаспоряженияНаОтгрузкуИВозврат.ТекстЗапросаРазвернутаяТаблица(
ПараметрыФормированияТаблицы);
Запрос.Текст = СтрЗаменить(Запрос.Текст,
"#РаспоряженияНаОтгрузкуДвиженияРазвернутая",
РаспоряженияНаОтгрузкуДвиженияРазвернутая);
УстановитьПривилегированныйРежим(Истина);
Возврат Запрос.ВыполнитьПакет();
КонецФункции
Функция СформироватьПечатнуюФормуАктОбОказанииУслуг(МассивОбъектов, ОбъектыПечати, ПараметрыПечати = Неопределено)
УстановитьПривилегированныйРежим(Истина);
ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
ИспользоватьРучныеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьРучныеСкидкиВПродажах");
ИспользоватьАвтоматическиеСкидки = ПолучитьФункциональнуюОпцию("ИспользоватьАвтоматическиеСкидкиВПродажах");
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктВыполненныхРабот_Акт";
СтруктураРезультатов = ПолучитьДанныеДляПечати(МассивОбъектов, ПараметрыПечати);
ДанныеПечати = СтруктураРезультатов.РезультатПоШапке.Выбрать();
ВыборкаПоДокументам = СтруктураРезультатов.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ПервыйДокумент = Истина;
Пока ДанныеПечати.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
Если НайденСледующий Тогда
ВыборкаПоУслугам = ВыборкаПоДокументам.Выбрать();
ЗаголовокСкидки = ФормированиеПечатныхФорм.НужноВыводитьСкидки(ВыборкаПоУслугам, ИспользоватьРучныеСкидки Или ИспользоватьАвтоматическиеСкидки);
ЕстьСкидки = ЗаголовокСкидки.ЕстьСкидки;
ЕстьНДС = ДанныеПечати.УчитыватьНДС;
ВыборкаПоУслугам.Сбросить();
Иначе
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют услуги. Печать акта выполненных работ (услуг) не требуется.'"),
ДанныеПечати.Ссылка);
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
Текст,
ДанныеПечати.Ссылка);
Продолжить;
КонецЕсли;
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.АктВыполненныхРабот.ПФ_MXL_Акт");
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
СтруктураДанныхШапки = Новый Структура;
СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Акт'", ОбщегоНазначения.КодОсновногоЯзыка())));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если НЕ ДанныеПечати.ДополнительнаяИнформацияШапки="" Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ДополнительнаяИнформацияШапки");
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть("ТекстШапки");
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ЕстьСкидки Тогда
Если ЕстьНДС И ПоказыватьНДС Тогда
ИмяОбластиШапка = "ШапкаТаблицыСоСкидкойСНДС";
ИмяОбластиСтрока = "СтрокаСоСкидкойСНДС";
ИмяОбластиСтрокаНабор = "СтрокаСоСкидкойСНДСНабор";
ИмяОбластиСтрокаКомплектующие = "СтрокаСоСкидкойСНДСКомплектующие";
Иначе
ИмяОбластиШапка = "ШапкаТаблицыСоСкидкой";
ИмяОбластиСтрока = "СтрокаСоСкидкой";
ИмяОбластиСтрокаНабор = "СтрокаСоСкидкойНабор";
ИмяОбластиСтрокаКомплектующие = "СтрокаСоСкидкойКомплектующие";
КонецЕсли;
Иначе
Если ЕстьНДС И ПоказыватьНДС Тогда
ИмяОбластиШапка = "ШапкаТаблицыСНДС";
ИмяОбластиСтрока = "СтрокаСНДС";
ИмяОбластиСтрокаНабор = "СтрокаСНДСНабор";
ИмяОбластиСтрокаКомплектующие = "СтрокаСНДСКомплектующие";
Иначе
ИмяОбластиШапка = "ШапкаТаблицы";
ИмяОбластиСтрока = "Строка";
ИмяОбластиСтрокаНабор = "СтрокаНабор";
ИмяОбластиСтрокаКомплектующие = "СтрокаКомплектующие";
КонецЕсли;
КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(ИмяОбластиШапка);
ОбластьСтрокиСтандарт = Макет.ПолучитьОбласть(ИмяОбластиСтрока);
ИспользоватьНаборы = Ложь;
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(ВыборкаПоДокументам, "ЭтоНабор") Тогда
ИспользоватьНаборы = Истина;
ОбластьСтрокиНабор = Макет.ПолучитьОбласть(ИмяОбластиСтрокаНабор);
ОбластьСтрокиКомплектующие = Макет.ПолучитьОбласть(ИмяОбластиСтрокаКомплектующие);
КонецЕсли;
ПустыеДанные = НаборыСервер.ПустыеДанные();
Если ЕстьСкидки Тогда
СтруктураЗаголовокСкидки = Новый Структура("Скидка, СуммаБезСкидки",
ЗаголовокСкидки.Скидка,
ЗаголовокСкидки.СуммаСкидки);
ОбластьМакета.Параметры.Заполнить(СтруктураЗаголовокСкидки);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьМакета);
Сумма = 0;
СуммаНДС = 0;
НомерСтроки = 0;
Пока ВыборкаПоУслугам.Следующий() Цикл
Если НаборыСервер.ИспользоватьОбластьНабор(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
ОбластьСтроки = ОбластьСтрокиНабор;
ИначеЕсли НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
ОбластьСтроки = ОбластьСтрокиКомплектующие;
Иначе
ОбластьСтроки = ОбластьСтрокиСтандарт;
КонецЕсли;
НомерСтрокиПечать = "";
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
Иначе
НомерСтроки = НомерСтроки + 1;
НомерСтрокиПечать = НомерСтроки;
КонецЕсли;
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
ОбластьСтроки.Параметры.Заполнить(ПустыеДанные);
Иначе
ОбластьСтроки.Параметры.Заполнить(ВыборкаПоУслугам);
КонецЕсли;
ПрефиксИПостфикс = НаборыСервер.ПолучитьПрефиксИПостфикс(ВыборкаПоУслугам, ИспользоватьНаборы);
СтруктураДанныхСтроки = Новый Структура;
СтруктураДанныхСтроки.Вставить("НомерСтроки", НомерСтрокиПечать);
СтруктураДанныхСтроки.Вставить("Товар", ПрефиксИПостфикс.Префикс + ВыборкаПоУслугам.УслугаНаименованиеПолное + ПрефиксИПостфикс.Постфикс );
Если ЕстьСкидки Тогда
СтруктураДанныхСтроки.Вставить("Скидка", ?(ЗаголовокСкидки.ТолькоНаценка,- ВыборкаПоУслугам.СуммаСкидки,ВыборкаПоУслугам.СуммаСкидки));
СтруктураДанныхСтроки.Вставить("СуммаБезСкидки", ФормированиеПечатныхФорм.ФорматСумм(ВыборкаПоУслугам.Сумма + ВыборкаПоУслугам.СуммаСкидки));
КонецЕсли;
Если Не НаборыСервер.ИспользоватьОбластьКомплектующие(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
Сумма = Сумма + ВыборкаПоУслугам.Сумма;
СуммаНДС = СуммаНДС + ВыборкаПоУслугам.СуммаНДС;
КонецЕсли;
ОбластьСтроки.Параметры.Заполнить(СтруктураДанныхСтроки);
Если НаборыСервер.ВыводитьТолькоЗаголовок(ВыборкаПоУслугам, ИспользоватьНаборы) Тогда
ОбластьСтроки.Параметры.Заполнить(ПустыеДанные);
КонецЕсли;
ТабличныйДокумент.Вывести(ОбластьСтроки);
КонецЦикла;
ОбластьМакета = Макет.ПолучитьОбласть("Итого");
СтруктураДанныхИтого = Новый Структура("Всего",ФормированиеПечатныхФорм.ФорматСумм(Сумма));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхИтого);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетНДС") Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ИтогоНДС");
СтруктураДанныхИтогоНДС = Новый Структура;
СтруктураДанныхИтогоНДС.Вставить("ВсегоНДС", СуммаНДС);
Если ЕстьНДС Тогда
СтруктураДанныхИтогоНДС.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС,
НСтр("ru = 'В том числе НДС:'", ОбщегоНазначения.КодОсновногоЯзыка()),
НСтр("ru = 'Сумма НДС:'", ОбщегоНазначения.КодОсновногоЯзыка())));
Иначе
СтруктураДанныхИтогоНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
КонецЕсли;
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхИтогоНДС);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
СтруктураДанныхСуммаПрописью = Новый Структура;
ИтоговаяСтрока = НСтр("ru = 'Всего выполнено работ (оказано услуг) %КоличествоНаименований%, на сумму %СуммаДокумента%'", ОбщегоНазначения.КодОсновногоЯзыка());
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%КоличествоНаименований%", НомерСтроки);
ИтоговаяСтрока = СтрЗаменить(ИтоговаяСтрока, "%СуммаДокумента%", ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
СтруктураДанныхСуммаПрописью.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
СтруктураДанныхСуммаПрописью.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхСуммаПрописью);
ТабличныйДокумент.Вывести(ОбластьМакета);
Если НЕ ДанныеПечати.ДополнительнаяИнформация="" Тогда
ОбластьМакета = Макет.ПолучитьОбласть("ДополнительнаяИнформация");
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);
КонецЕсли;
СведенияОИсполнителе = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Организация,
ДанныеПечати.Дата,
,
ДанныеПечати.СчетОрганизации);
СведенияОЗаказчике = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(
ДанныеПечати.Контрагент,
ДанныеПечати.Дата,
,
ДанныеПечати.СчетКонтрагента);
ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
СтруктураДанныхПодписи = Новый Структура;
СтруктураДанныхПодписи.Вставить("ПредставлениеИсполнителя", СведенияОИсполнителе.ОфициальноеНаименование);
СтруктураДанныхПодписи.Вставить("ПредставлениеЗаказчика", СведенияОЗаказчике.ОфициальноеНаименование);
СтруктураДанныхПодписи.Вставить("ЮрАдресИсполнителя", СведенияОИсполнителе.ЮридическийАдрес);
СтруктураДанныхПодписи.Вставить("ЮрАдресЗаказчика", СведенияОЗаказчике.ЮридическийАдрес);
СтруктураДанныхПодписи.Вставить("РасчетныйСчетИсполнителя", СведенияОИсполнителе.НомерСчета);
СтруктураДанныхПодписи.Вставить("РасчетныйСчетЗаказчика", СведенияОЗаказчике.НомерСчета);
СтруктураДанныхПодписи.Вставить("КорСчетИсполнителя", СведенияОИсполнителе.КоррСчет);
СтруктураДанныхПодписи.Вставить("КорСчетЗаказчика", СведенияОЗаказчике.КоррСчет);
СтруктураДанныхПодписи.Вставить("БанкИсполнителя", СведенияОИсполнителе.Банк);
СтруктураДанныхПодписи.Вставить("БанкЗаказчика", СведенияОЗаказчике.Банк);
СтруктураДанныхПодписи.Вставить("БИКИсполнителя", СведенияОИсполнителе.БИК);
СтруктураДанныхПодписи.Вставить("БИКЗаказчика", СведенияОЗаказчике.БИК);
ИННКППЗаказчика = "";
Если СведенияОЗаказчике.Свойство("КПП") И ЗначениеЗаполнено(СведенияОЗаказчике.КПП) Тогда
ИННКППЗаказчика = НСтр("ru='ИНН/КПП:'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + СведенияОЗаказчике.ИНН + "/" + СведенияОЗаказчике.КПП;
Иначе
ИННКППЗаказчика = НСтр("ru='ИНН:'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + СведенияОЗаказчике.ИНН;
КонецЕсли;
СтруктураДанныхПодписи.Вставить("ИННКППЗаказчика", ИННКППЗаказчика);
ИННКППИсполнителя = "";
Если СведенияОИсполнителе.Свойство("КПП") И ЗначениеЗаполнено(СведенияОИсполнителе.КПП) Тогда
ИННКППИсполнителя = НСтр("ru='ИНН/КПП:'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + СведенияОИсполнителе.ИНН + "/" + СведенияОИсполнителе.КПП;
Иначе
ИННКППИсполнителя = НСтр("ru='ИНН:'", ОбщегоНазначения.КодОсновногоЯзыка()) + " " + СведенияОИсполнителе.ИНН;
КонецЕсли;
СтруктураДанныхПодписи.Вставить("ИННКППИсполнителя", ИННКППИсполнителя);
ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПодписи);
ТабличныйДокумент.Вывести(ОбластьМакета);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьКомплектПечатныхФорм(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати) Экспорт
Перем АдресКомплектаПечатныхФорм;
Если ТипЗнч(ПараметрыПечати) = Тип("Структура") И ПараметрыПечати.Свойство("АдресКомплектаПечатныхФорм", АдресКомплектаПечатныхФорм) Тогда
КомплектПечатныхФорм = ПолучитьИзВременногоХранилища(АдресКомплектаПечатныхФорм);
Иначе
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.КомплектПечатныхФорм(
Метаданные.Документы.АктВыполненныхРабот.ПолноеИмя(),
МассивОбъектов, Неопределено);
КонецЕсли;
Если КомплектПечатныхФорм = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"АктВыполненныхРабот");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуАктОбОказанииУслуг(КомплектПечати.Объекты, ОбъектыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"АктВыполненныхРаботБезСкидок");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
СформироватьПечатнуюФормуАктОбОказанииУслуг(КомплектПечати.Объекты, ОбъектыПечати, Новый Структура("ОтображатьСкидки", Ложь)));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплату");
ПараметрыПечати.Удалить("ОтображатьСкидки");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.АктВыполненныхРабот", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.АктВыполненныхРабот", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимиле");
ПараметрыПечати.Удалить("ОтображатьСкидки");
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.АктВыполненныхРабот", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"СчетНаОплатуСФаксимилеБезСкидок");
ПараметрыПечати.Вставить("ОтображатьСкидки", Ложь);
ПараметрыПечати.Вставить("ОтображатьФаксимиле", Истина);
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.АктВыполненныхРабот", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
КомплектыПечатиПоОбъектам = РегистрыСведений.НастройкиПечатиОбъектов.КомплектыПечатиПоОбъектам(КоллекцияПечатныхФорм,
КомплектПечатныхФорм,
МассивОбъектов,
"ProformaInvoiceEn");
Для Каждого КомплектПечати Из КомплектыПечатиПоОбъектам Цикл
СтруктураТипов = Новый Соответствие;
СтруктураТипов.Вставить("Документ.АктВыполненныхРабот", КомплектПечати.Объекты);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
КомплектПечати.Имя,
КомплектПечати.Представление,
Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуProformaInvoice(СтруктураТипов, ОбъектыПечати, ПараметрыПечати));
КонецЦикла;
АктВыполненныхРаботЛокализация.СформироватьКомплектПечатныхФорм(МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати,
КомплектПечатныхФорм);
РегистрыСведений.НастройкиПечатиОбъектов.СформироватьКомплектВнешнихПечатныхФорм(
"Документ.АктВыполненныхРабот",
МассивОбъектов,
ПараметрыПечати,
КоллекцияПечатныхФорм,
ОбъектыПечати);
КонецФункции
Функция КомплектПечатныхФорм() Экспорт
КомплектПечатныхФорм = РегистрыСведений.НастройкиПечатиОбъектов.ПодготовитьКомплектПечатныхФорм();
АктВыполненныхРаботЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
Если ПолучитьФункциональнуюОпцию("ВыбиратьВариантВыводаСкидокПриПечатиДокументовПродажи") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "АктВыполненныхРабот", НСтр("ru = 'Акт выполненных работ (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "АктВыполненныхРаботБезСкидок", НСтр("ru = 'Акт выполненных работ (не выводить скидки)'"), 0);
Иначе
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "АктВыполненныхРаботБезСкидок", НСтр("ru = 'Акт выполненных работ'"), 1);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуВыбиратьВариантВыводаСкидок") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплату", НСтр("ru = 'Счет на оплату (выводить скидки)'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуБезСкидок", НСтр("ru = 'Счет на оплату (не выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле (выводить скидки)'"), 0);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимилеБезСкидок", НСтр("ru = 'Счет на оплату с факсимиле (не выводить скидки)'"), 0);
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("НеИспользоватьСчетаНаОплатуНеВыбиратьВариантВыводаСкидок") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуБезСкидок", НСтр("ru = 'Счет на оплату'"), 1);
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "СчетНаОплатуСФаксимиле", НСтр("ru = 'Счет на оплату с факсимиле'"), 0);
КонецЕсли;
Если Константы.ИспользоватьМеждународныеПечатныеФормы.Получить() Тогда
Если НЕ ПолучитьФункциональнуюОпцию("ИспользоватьСчетаНаОплатуКлиентам") Тогда
РегистрыСведений.НастройкиПечатиОбъектов.ДобавитьПечатнуюФормуВКомплект(КомплектПечатныхФорм, "ProformaInvoiceEn", НСтр("ru = 'Proforma invoice'"), 1);
КонецЕсли;
КонецЕсли;
Возврат КомплектПечатныхФорм;
КонецФункции
Функция ТекстЗапросаВТТоварыРаспоряжениеНакладнаяОтгружено()
ТекстЗапроса = "
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| НЕОПРЕДЕЛЕНО КАК Упаковка,
| СУММА(ДокументТовары.Количество) КАК Количество,
| СУММА(ДокументТовары.Количество) КАК КоличествоУпаковок,
| СУММА(ДокументТовары.СуммаСНДС) КАК СуммаСНДС,
| НЕОПРЕДЕЛЕНО КАК Серия,
| НЕОПРЕДЕЛЕНО КАК Склад,
| ВтДокументы.ДокументСсылка КАК Ссылка
|ПОМЕСТИТЬ ВТТоварыРаспоряженияОтгружено
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ДокументТовары
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДокументы КАК ВтДокументы
| ПО (ВтДокументы.ДокументСсылка = ДокументТовары.Ссылка)
|ГДЕ
| ВтДокументы.Проведен
|СГРУППИРОВАТЬ ПО
| ДокументТовары.Номенклатура,
| ДокументТовары.Характеристика,
| ВтДокументы.ДокументСсылка
|;
|";
Возврат ТекстЗапроса;
КонецФункции
Функция СуммыПоЗаказам(СсылкаОбъект, ЗначенияРеквизитов = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Товары.ЗаказКлиента КАК Заказ,
| ВЫБОР
| КОГДА Товары.КодСтроки = 0
| И &ПоЗаказам
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| Товары.СуммаСНДС КАК СуммаПлатежа,
| Товары.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| &ЗаказШапки КАК ЗаказШапки
|ПОМЕСТИТЬ ВТТовары
|ИЗ
| &ТаблицаЗначений КАК Товары
|ГДЕ &УсловиеСсылка
|;
|
|ВЫБРАТЬ
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ВТТовары.ЗаказШапки
| ИНАЧЕ ВТТовары.Заказ
| КОНЕЦ КАК Заказ,
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ЕСТЬNULL(ВТТовары.ЗаказШапки.Дата, ДАТАВРЕМЯ(1,1,1))
| ИНАЧЕ ЕСТЬNULL(ВТТовары.Заказ.Дата, ДАТАВРЕМЯ(1,1,1))
| КОНЕЦ КАК ДатаЗаказа,
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ЕСТЬNULL(ВТТовары.ЗаказШапки.ДатаСогласования, ДАТАВРЕМЯ(1,1,1))
| ИНАЧЕ ЕСТЬNULL(ВТТовары.Заказ.ДатаСогласования, ДАТАВРЕМЯ(1,1,1))
| КОНЕЦ КАК ДатаСогласования,
| ВТТовары.СверхЗаказа КАК СверхЗаказа,
| СУММА(ВТТовары.СуммаПлатежа) КАК СуммаПлатежа,
| СУММА(ВТТовары.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов,
| 0 КАК СуммаЗалогаЗаТару,
| 0 КАК СуммаВзаиморасчетовПоТаре
|ИЗ
| ВТТовары КАК ВТТовары
|СГРУППИРОВАТЬ ПО
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ВТТовары.ЗаказШапки
| ИНАЧЕ ВТТовары.Заказ
| КОНЕЦ,
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ЕСТЬNULL(ВТТовары.ЗаказШапки.Дата, ДАТАВРЕМЯ(1,1,1))
| ИНАЧЕ ЕСТЬNULL(ВТТовары.Заказ.Дата, ДАТАВРЕМЯ(1,1,1))
| КОНЕЦ,
| ВЫБОР КОГДА ЕСТЬNULL(ВТТовары.Заказ.Номер, """") = """"
| ТОГДА ЕСТЬNULL(ВТТовары.ЗаказШапки.ДатаСогласования, ДАТАВРЕМЯ(1,1,1))
| ИНАЧЕ ЕСТЬNULL(ВТТовары.Заказ.ДатаСогласования, ДАТАВРЕМЯ(1,1,1))
| КОНЕЦ,
| ВТТовары.СверхЗаказа";
Если ЗначенияРеквизитов = Неопределено Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаЗначений", "Документ.АктВыполненныхРабот.Товары");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ЗаказШапки", "Товары.Ссылка.ЗаказКлиента");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПоЗаказам", "Товары.Ссылка.АктПоЗаказам");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "Товары.Ссылка = &Ссылка");
Запрос.УстановитьПараметр("Ссылка",СсылкаОбъект);
Иначе
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&УсловиеСсылка", "ИСТИНА");
Для Каждого КлючЗначение Из ЗначенияРеквизитов Цикл
Запрос.УстановитьПараметр(КлючЗначение.Ключ, КлючЗначение.Значение);
КонецЦикла;
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#Область ОбновлениеИнформационнойБазы
Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт
Запрос = Новый Запрос;
ТекстыЗапроса = Новый СписокЗначений;
ПолноеИмяДокумента = "Документ.АктВыполненныхРабот";
ЗначенияПараметров = ЗначенияПараметровПроведения();
ПереопределениеРасчетаПараметров = Новый Структура;
ПереопределениеРасчетаПараметров.Вставить("НомерНаПечать", """""");
ПереопределениеРасчетаПараметров.Вставить("ИнформацияПоДоговору", """""");
ВЗапросеЕстьИсточник = Истина;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ТекстЗапросаТаблицаРеестрДокументов(Запрос, ТекстыЗапроса, ИмяРегистра);
СинонимТаблицыДокумента = "";
ВЗапросеЕстьИсточник = Ложь;
Иначе
ТекстИсключения = НСтр("ru = 'В документе %ПолноеИмяДокумента% не реализована адаптация текста запроса формирования движений по регистру %ИмяРегистра%.'");
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ПолноеИмяДокумента%", ПолноеИмяДокумента);
ТекстИсключения = СтрЗаменить(ТекстИсключения, "%ИмяРегистра%", ИмяРегистра);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Если ИмяРегистра = "РеестрДокументов" Тогда
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросПроведенияПоНезависимомуРегистру(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ВЗапросеЕстьИсточник,
ПереопределениеРасчетаПараметров);
Иначе
ТекстЗапроса = ОбновлениеИнформационнойБазыУТ.АдаптироватьЗапросМеханизмаПроведения(
ТекстЗапроса,
ПолноеИмяДокумента,
СинонимТаблицыДокумента,
ПереопределениеРасчетаПараметров);
КонецЕсли;
Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
Результат.ЗначенияПараметров = ЗначенияПараметров;
Результат.ТекстЗапроса = ТекстЗапроса;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область Проведение
Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)
СписокЗапросов = Новый Массив;
ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
ТекстЗапросаДанныеДокументаТаблицаВидыЗапасов(СписокЗапросов);
ТекстЗапроса = СтрСоединить(СписокЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
Запрос.Текст = ТекстЗапроса;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Запрос.Выполнить();
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаШапка(СписокЗапросов)
ТекстЗапросаШапка =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Организация.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета,
| ДанныеДокумента.Партнер КАК Партнер,
| ДанныеДокумента.Контрагент КАК Контрагент,
| ЕСТЬNULL(ДанныеДокумента.Контрагент.СтранаРегистрации.УчастникЕАЭС, ЛОЖЬ) КАК КонтрагентУчастникЕАЭС,
| ВЫБОР
| КОГДА ЕСТЬNULL(ДанныеДокумента.Контрагент.ЮрФизЛицо,
| ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ПустаяСсылка)) = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК КонтрагентНеРезидент,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ЗаказКлиента КАК ЗаказКлиента,
| ДанныеДокумента.Валюта КАК Валюта,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ЕСТЬNULL(ДанныеДокумента.Подразделение.ВариантОбособленногоУчетаТоваров,
| ЗНАЧЕНИЕ(Перечисление.ВариантыОбособленногоУчетаТоваров.ПустаяСсылка)) КАК ВариантОбособленногоУчетаТоваров,
| ДанныеДокумента.Дата КАК ДатаРаспоряжения,
| ДанныеДокумента.ЦенаВключаетНДС КАК ЦенаВключаетНДС,
| ДанныеДокумента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДанныеДокумента.АктПоЗаказам КАК АктПоЗаказам,
| ДанныеДокумента.Соглашение КАК Соглашение,
| ДанныеДокумента.ФормаОплаты КАК ФормаОплаты,
| ДанныеДокумента.Договор КАК Договор,
| ЕСТЬNULL(ДанныеДокумента.Договор.ВестиРасчетыЧерезКонечныхПокупателей, ЛОЖЬ) КАК
| ВестиРасчетыЧерезКонечныхПокупателей,
| ДанныеДокумента.НалогообложениеНДС КАК НалогообложениеНДС,
| ДанныеДокумента.Менеджер КАК Менеджер,
| ДанныеДокумента.ГруппаФинансовогоУчета КАК ГруппаФинансовогоУчета,
| ДанныеДокумента.Сделка КАК Сделка,
| ЕСТЬNULL(ДанныеДокумента.Сделка.ОбособленныйУчетТоваровПоСделке, ЛОЖЬ) КАК ОбособленныйУчетТоваровПоСделке,
| ЕСТЬNULL(ДанныеДокумента.Договор.ДопустимаяСуммаЗадолженности, 0) КАК ДопустимаяСуммаЗадолженности,
| ДанныеДокумента.Номер КАК Номер,
| ДанныеДокумента.СуммаДокумента КАК СуммаДокумента,
| ДанныеДокумента.Комментарий КАК Комментарий,
| ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
| ДанныеДокумента.Проведен КАК Проведен,
| ДанныеДокумента.Автор КАК Автор,
| ДанныеДокумента.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДанныеДокумента.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДанныеДокумента.КартаЛояльности.Владелец.БонуснаяПрограммаЛояльности КАК БонуснаяПрограммаЛояльности,
| ДанныеДокумента.ПорядокРасчетов КАК ПорядокРасчетов
|ПОМЕСТИТЬ ДанныеДокументаШапка
|ИЗ
| Документ.АктВыполненныхРабот КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка = &Ссылка
|";
СписокЗапросов.Добавить(ТекстЗапросаШапка);
КонецПроцедуры
Процедура ТекстЗапросаДанныеДокументаТаблицаВидыЗапасов(СписокЗапросов)
ТекстЗапросаТаблицаВидыЗапасов =
"ВЫБРАТЬ
| ТаблицаВидыЗапасов.НомерСтроки КАК НомерСтроки,
| ТаблицаВидыЗапасов.Ссылка КАК Ссылка,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
| ТаблицаВидыЗапасов.ВидЗапасов КАК ВидЗапасов,
| ТаблицаВидыЗапасов.НомерГТД КАК НомерГТД,
| ТаблицаВидыЗапасов.Количество КАК Количество,
| ТаблицаВидыЗапасов.КоличествоПоРНПТ КАК КоличествоПоРНПТ,
| ТаблицаВидыЗапасов.СуммаСНДС КАК СуммаСНДС,
| ТаблицаВидыЗапасов.СтавкаНДС КАК СтавкаНДС,
| ТаблицаВидыЗапасов.СуммаНДС КАК СуммаНДС,
| ТаблицаВидыЗапасов.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ТаблицаВидыЗапасов.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ТаблицаВидыЗапасов.ЗаказКлиента КАК ЗаказКлиента,
| ТаблицаВидыЗапасов.СуммаРучнойСкидки КАК СуммаРучнойСкидки,
| ТаблицаВидыЗапасов.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,
| ТаблицаВидыЗапасов.АналитикаУчетаНаборов КАК АналитикаУчетаНаборов,
| ТаблицаВидыЗапасов.Цена КАК Цена,
| ТаблицаВидыЗапасов.ОбъектРасчетов КАК ОбъектРасчетов,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура КАК АналитикаУчетаНоменклатурыНоменклатура,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Характеристика КАК АналитикаУчетаНоменклатурыХарактеристика,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Серия КАК АналитикаУчетаНоменклатурыСерия,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ПрослеживаемыйТовар КАК
| АналитикаУчетаНоменклатурыНоменклатураПрослеживаемыйТовар,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ТипНоменклатуры КАК
| АналитикаУчетаНоменклатурыНоменклатураТипНоменклатуры,
| ТаблицаВидыЗапасов.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения КАК
| АналитикаУчетаНоменклатураНоменклатураЕдиницаИзмерения,
| ТаблицаВидыЗапасов.ВидЗапасов.ВладелецТовара КАК ВидЗапасовВладелецТовара,
| ТаблицаВидыЗапасов.ВидЗапасов.ТипЗапасов КАК ВидЗапасовТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов.Валюта КАК ВидЗапасовВалюта,
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца КАК ВидЗапасовВидЗапасовВладельца,
| ТаблицаВидыЗапасов.ВидЗапасов.РеализацияЗапасовДругойОрганизации КАК ВидЗапасовРеализацияЗапасовДругойОрганизации,
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца.ТипЗапасов КАК ВидЗапасовВидЗапасовВладельцаТипЗапасов,
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца.Организация КАК ВидЗапасовВидЗапасовВладельцаОрганизация,
| ТаблицаВидыЗапасов.ВидЗапасов.ВидЗапасовВладельца.Валюта КАК ВидЗапасовВидЗапасовВладельцаВалюта,
| ТаблицаВидыЗапасов.ВидЗапасов.Соглашение КАК ВидЗапасовСоглашение,
| ТаблицаВидыЗапасов.ОбъектРасчетов.Организация КАК ОбъектРасчетовОрганизация,
| ТаблицаВидыЗапасов.ОбъектРасчетов.Договор КАК ОбъектРасчетовДоговор,
| ТаблицаВидыЗапасов.ОбъектРасчетов.НаправлениеДеятельности КАК ОбъектРасчетовНаправлениеДеятельности,
| ТаблицаВидыЗапасов.ОбъектРасчетов.УникальныйИдентификатор КАК ОбъектРасчетовУникальныйИдентификатор,
| ТаблицаВидыЗапасов.АналитикаУчетаНаборов.НоменклатураНабора КАК АналитикаУчетаНаборовНоменклатураНабора,
| ТаблицаВидыЗапасов.АналитикаУчетаНаборов.ХарактеристикаНабора КАК АналитикаУчетаНаборовХарактеристикаНабора
|ПОМЕСТИТЬ ДанныеДокументаТаблицаВидыЗапасов
|ИЗ
| Документ.АктВыполненныхРабот.ВидыЗапасов КАК ТаблицаВидыЗапасов
|ГДЕ
| ТаблицаВидыЗапасов.Ссылка = &Ссылка
|";
СписокЗапросов.Добавить(ТекстЗапросаТаблицаВидыЗапасов);
КонецПроцедуры
Функция ТекстЗапросаВтВидыЗапасовРабот(Запрос, ТекстыЗапроса)
ИмяРегистра = "ВтВидыЗапасовРабот";
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры
|ПОМЕСТИТЬ ВтВидыЗапасовРабот
|ИЗ
| Документ.АктВыполненныхРабот.ВидыЗапасов КАК ТаблицаТоваров
|ГДЕ
| ТаблицаТоваров.Ссылка В(&Ссылка)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| АналитикаУчетаНоменклатуры
|";
ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
Возврат ТекстЗапроса;
КонецФункции
Процедура ДобавитьТекстыОтраженияВзаиморасчетов(Запрос, ТекстыЗапроса, Регистры)
#Область КурсыВалютДокумента
ИмяРегистра = "ВременнаяТаблицаКурсыВалютДокумента";
ТекстЗапросаКурсыВалютДокумента =
"ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.АктВыполненныхРабот.ЭтапыГрафикаОплаты КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
|
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.АктВыполненныхРабот.РасшифровкаПлатежа КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.АктВыполненныхРабот.РасшифровкаПлатежа КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ОбъектыРасчетов.Объект = Таблица.Ссылка
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументаШапка.Ссылка КАК Ссылка,
| ДанныеДокументаШапка.Организация КАК Организация,
| ДанныеДокументаШапка.Дата КАК ДатаКурса,
| (ВЫБОР
| КОГДА ДанныеДокументаШапка.АктПоЗаказам
| ТОГДА Таблица.ЗаказКлиента.ОбъектРасчетов
| КОГДА ДанныеДокументаШапка.ПорядокРасчетов = ЗНАЧЕНИЕ(Перечисление.ПорядокРасчетов.ПоДоговорамНакладным)
| ТОГДА Таблица.ОбъектРасчетов.Договор.ОбъектРасчетов
| ИНАЧЕ Таблица.ОбъектРасчетов
| КОНЕЦ) КАК ОбъектРасчетов,
| ДанныеДокументаШапка.Валюта КАК ВалютаДокумента,
| ДанныеДокументаШапка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.АктВыполненныхРабот КАК ДанныеДокументаШапка
| ПО Таблица.Ссылка = ДанныеДокументаШапка.Ссылка
|ГДЕ
| Таблица.Ссылка В (&Ссылка)";
ТекстЗапросаКурсыВалютДокумента = ВзаиморасчетыСервер.ПолучитьТаблицуКурсовВалютНаправленийДеятельности(ТекстЗапросаКурсыВалютДокумента);
ТекстыЗапроса.Добавить(ТекстЗапросаКурсыВалютДокумента, ИмяРегистра);
#КонецОбласти
#Область Продажа
ТекстПродажа = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.Заказ КАК ЗаказПродажи,
| Таблица.Ссылка.АктПоЗаказам КАК НакладнаяПоЗаказам,
| Таблица.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| 0 КАК СуммаВзаиморасчетовПоТаре,
| Таблица.СуммаПлатежа КАК Сумма,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.Дата КАК ДатаКурса,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СверхЗаказа КАК СверхЗаказа,
| Неопределено КАК СвязанныйДокумент
|ИЗ
| Документ.АктВыполненныхРабот.ЭтапыГрафикаОплаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)";
#КонецОбласти
#Область УвеличениеПланаОплат
ТекстПланированиеОплат = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.ФормаОплаты КАК ФормаОплаты,
|
| Таблица.ДатаПлатежа КАК ДатаПлатежа,
| Таблица.ВариантОплаты КАК ВариантОплаты,
| Таблица.СуммаВзаиморасчетов КАК КОплате,
|
| ВЫБОР КОГДА Таблица.ВариантОплаты = ЗНАЧЕНИЕ(Перечисление.ВариантыКонтроляОплатыКлиентом.ПредоплатаДоОтгрузки)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ИсключатьПриКонтроле,
| Таблица.Ссылка.АктПоЗаказам КАК НакладнаяПоЗаказам,
| Таблица.Заказ КАК ЗаказПродажи,
| Таблица.СверхЗаказа КАК СверхЗаказа,
| Неопределено КАК СвязанныйДокумент,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов
|
|ИЗ
| Документ.АктВыполненныхРабот.ЭтапыГрафикаОплаты КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)";
#КонецОбласти
#Область ЗачетАванса
ТекстЗачетАванса = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| ОбъектыРасчетов.Ссылка КАК ОбъектРасчетовПриемник,
| Таблица.ОбъектРасчетов КАК ОбъектРасчетовИсточник,
|
| Таблица.Ссылка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| Таблица.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента,
| Таблица.Сумма КАК Сумма,
|
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Дата КАК ДатаКурса,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереносАванса) КАК ХозяйственнаяОперация
|
|ИЗ
| Документ.АктВыполненныхРабот.РасшифровкаПлатежа КАК Таблица
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОбъектыРасчетов КАК ОбъектыРасчетов
| ПО ОбъектыРасчетов.Объект = Таблица.Ссылка
| И НЕ ОбъектыРасчетов.ПометкаУдаления
|ГДЕ
| Таблица.Ссылка В (&Ссылка)
|";
#КонецОбласти
#Область Товары
ТекстТовары = "
|ВЫБРАТЬ
| Таблица.Ссылка КАК Ссылка,
| Таблица.Ссылка.Организация КАК Организация,
| Таблица.Ссылка.Партнер КАК Партнер,
|
| Таблица.ОбъектРасчетов КАК ОбъектРасчетов,
| Таблица.Ссылка.Дата КАК ДатаОтгрузки,
| 0 КАК УвеличитьКОтгрузке,
| Таблица.СуммаВзаиморасчетов КАК УменьшитьОтгружается,
| 0 КАК УвеличитьОтгружается,
| Таблица.СуммаВзаиморасчетов КАК УменьшитьКОтгрузке,
| Таблица.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
|
| Таблица.ЗаказКлиента КАК ЗаказПродажи,
| 0 КАК ЗалогЗаТару,
| ВЫБОР КОГДА Таблица.КодСтроки = 0
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СверхЗаказа,
| Таблица.Ссылка.АктПоЗаказам КАК НакладнаяПоЗаказам,
|
| Таблица.Ссылка.ПорядокРасчетов КАК ПорядокРасчетов,
| Таблица.Ссылка.Дата КАК ДатаРегистратора,
| Таблица.Ссылка.Номер КАК НомерРегистратора,
| Таблица.Ссылка.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РеализацияКлиенту) КАК ХозяйственнаяОперация,
| Таблица.Ссылка.Валюта КАК ВалютаДокумента
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК Таблица
|ГДЕ
| Таблица.Ссылка В (&Ссылка)";
#КонецОбласти
ВзаиморасчетыСервер.ПроведениеПродажи(Запрос, ТекстыЗапроса, Регистры, ТекстПродажа, ТекстПланированиеОплат, ТекстЗачетАванса, ТекстТовары);
КонецПроцедуры
#КонецОбласти
Процедура ОтразитьРаспределениеЗапасовДвижения(Запрос, ТекстыЗапроса, Регистры)
ТекстЗапросаТабЧасть =
"ВЫБРАТЬ
| ТабЧасть.Ссылка КАК Ссылка,
| ТабЧасть.Ссылка.Дата КАК Период,
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Характеристика КАК Характеристика,
| ТабЧасть.Подразделение КАК Склад,
| ТабЧасть.Назначение КАК Назначение,
| ТабЧасть.Количество КАК Количество,
| НЕОПРЕДЕЛЕНО КАК ЗапланированныйРасходРаспределенногоЗапаса,
| ЛОЖЬ КАК КонтрольСвободногоОстатка
|ИЗ
| Документ.АктВыполненныхРабот.Услуги КАК ТабЧасть
|ГДЕ
| (НЕ ТабЧасть.Ссылка.АктПоЗаказам ИЛИ ТабЧасть.КодСтроки = 0
| ИЛИ ЕСТЬNULL(ТабЧасть.ЗаказКлиента.ЭтоЗаказКакСчет, ЛОЖЬ))
| И ТабЧасть.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)";
РаспределениеЗапасовДвижения.РасходЗапаса(Запрос, ТекстыЗапроса, Регистры, ТекстЗапросаТабЧасть);
КонецПроцедуры
#КонецОбласти
#КонецЕсли