Как это бывает.
Вы решили начать продавать новый бренд (или оживить старый) или выделили отдельное направление развития.
- Назначили ответственных.
- Определили сумму для развития.
- Закупили партию товара и начали продавать.
- Идет время: покупаем, продаем и т.д.
- Вот уже на складе скопилось приличное количество.
- Бренд-менеджер приносит новые счета на оплату.
- Пытаемся понять, как же быть дальше.
Теперь о том, что предлагается сделать и что в итоге получим.
Начнем с того, что в итоге будем иметь.
А получаем мы в итоге простой и понятный отчет, который по бренд-менеджерам показывает состояние полок (папок номенклатуры). Мы видим в режиме реального времени сколько денег (именно денег) мы положили на конкретную полку и конкретного менеджера и сколько нам на нее вернулось.
1. Вот так это выглядит по менеджерам
2. А вот так мы видим по полкам
Итак, за выбранный период времени мы видим сколько денег у менеджера на каждой полке номенклатуры за которую он отвечает. Если он начнет уходить в минус (а можно вообще не допускать этого), то мы буквально сразу понимаем на какой полке проблема и можем тормознуть оплату счетов до выяснения ситуации.
3. Из каждого документа мы получаем отчет, который показывает по номенклатуре всю аналитику. Мы видим какая сумма пошла в зачет и почему. На сумму влияет процент оплаты заказа клиента, цена поставщика и курс валюты (берем на дату заказа клиента). В регистре мы видим группу в которую входит номенклатура и Полку в которую входит группа.
4. А вот так выглядит структура папок. Это обработка, которая позволяет назначать ответственных.
В обработке для оформления строк использован код из этой статьи. Синий цвет - несколько ответственных, Красный - никто не назначен, Коричневый - внутри есть пака за которую никто не отвечает.
Что предлагается сделать. Все не так уж и сложно.
Сначала на словах;
- Под новое направление создаем папку номенклатуры желательно на верхнем уровне.
- В созданной папке строим дерево подчиненных папок со своими ответственными.
- По каждой номенклатуре устанавливается цена номенклатуры (используются цены25 без характеристик) с видом Цена завода (поставщика).
- При проведении документов на полки номенклатуры падают деньги.
- Далее начинается анализ ДС на полках (папках) номенклатуры: платит клиент - плюс на полку, но не вся сумма. а цена завода * количество, платим поставщику - минус на полку.
- Хотим профинансировать направление (скорректировать ситуацию) вводим дополнительный документ Финансирование - плюс (минус) на полку.
Все технические подробности в картинках с пояснениями
Нам понадобятся всего 3 новых объекта
1. Регистр накопления с видом Остатки (у нас он называется ФинансыНД) - в него и записываются все суммы при проведении документов.
Структура представлена ниже. С типами думаю понятно, Доходность - число(10,2)
Регистраторы
2. Регистр сведений ДоходностьПапокПоОтветсвенным. Периодичность: В пределах месяца, Независимый.
Структура регистра. Здесь
3. Документ ФинансированиеНД с движениями в РН ФинансыНД
Структура документа ниже.
Движения по РН Финансы НД
Процедура ОбработкаПроведения(Отказ, Режим)
//
// регистр ФинансыНД Приход
Движения.ФинансыНД.Записывать = Истина;
Для Каждого ТекСтрокаФондированиеПапок Из ФондированиеПапок Цикл
Движение = Движения.ФинансыНД.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаФондированиеПапок.Номенклатура;
Движение.Сумма = ТекСтрокаФондированиеПапок.Сумма;
КонецЦикла;
//
КонецПроцедуры
В форме документа надо разрешить в ТЧ выбирать группы номенклатуры. Чтобы не выбирали неправильные папки добавить выбор из списка и формировать список по реквизитам Верхняя папка и Ответственный из регистра ДоходностьПапокПоОтветственным. К документу надо добавить возможность прикрепить файл. Ссылка как это сделать.
Нам надо немного доработать проведение документов, которые участвуют в движении по полкам. В расширения добавляем код.
1. Приходный кассовый ордер
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если (Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента) Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
2. Расходный кассовый ордер
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если (Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту) Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
3. Списание безналичных денежных средств
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если Ссылка.ПроведеноБанком и (Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ОплатаПоставщику или Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту) Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
4. Поступление безналичных денежных средств
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если Ссылка.ПроведеноБанком и (Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента или Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика) Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
5. Взаимозачет задолженности
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если Не Отказ Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
6. Операция по платежной карте
&После("ОбработкаПроведения")
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
//+ комментарий 01.11.2023 11:20:54 ID заявки : 339769
НаборЗаписей = РегистрыНакопления.ФинансыНД.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Ссылка);
НаборЗаписей.записать();
//
Если (Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента или Ссылка.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту) Тогда
//
// МойСерверныйМодуль меняем на имя вашего модуля
МойСерверныйМодуль.ПолучитьДвиженияСписанияПоступления(Ссылка,НаборЗаписей);
//
НаборЗаписей.Записать();
//
КонецЕсли;
//- комментарий 01.11.2023 11:21:35
КонецПроцедуры
В модуль МойСерверныйМодуль добавляем проведение документов по регистру ФинансированиеНД
////////////////////////////// движение Списания ДС и Поступления ДС по ФинансыНД ///////////////////////////////
Процедура ПолучитьДвиженияСписанияПоступления(ДокСписание,НаборЗаписей) Экспорт
//
// две строки получают значения двух папок номенклатуры,которые нам нужны
// чтобы избежать движений по другим папкам
// меняйте на свой код
ПапкаИнстументДО = РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстанты("Группа_ИнструменДО");
ПапкаМЕБЕЛЬ = РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстанты("Группа_Мебель");
//
Если НЕ ТипЗнч(ПапкаИнстументДО) = Тип("СправочникСсылка.Номенклатура") или Не ТипЗнч(ПапкаМЕБЕЛЬ) = Тип("СправочникСсылка.Номенклатура") Тогда
Возврат;
КонецЕсли;
//
ТипДока = 1;
Если ТипЗнч(ДокСписание) = Тип("ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств") Тогда
ТипДока = 2;
ИначеЕсли ТипЗнч(ДокСписание) = Тип("ДокументСсылка.СписаниеБезналичныхДенежныхСредств") Тогда
ТипДока = 1;
ИначеЕсли ТипЗнч(ДокСписание) = Тип("ДокументСсылка.ОперацияПоПлатежнойКарте") Тогда
ТипДока = 3;
ИначеЕсли ТипЗнч(ДокСписание) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
ТипДока = 4;
ИначеЕсли ТипЗнч(ДокСписание) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда
ТипДока = 5;
ИначеЕсли ТипЗнч(ДокСписание) = Тип("ДокументСсылка.ВзаимозачетЗадолженности") Тогда
ТипДока = 6;
КонецЕсли;
//
Если ТипДока = 3 Тогда
ТЗ = ПолучитьСуммыПоНоменклатурноЭквайринг(ДокСписание);
ИначеЕсли ТипДока = 4 или ТипДока = 5 Тогда
ТЗ = ПолучитьСуммыПоНоменклатурноКасса(ДокСписание);
ИначеЕсли ТипДока = 6 Тогда
ТЗ = ПолучитьСуммыПоНоменклатурноВзаимозачет(ДокСписание);
Иначе
ТЗ = ПолучитьСуммыПоНоменклатурно(ДокСписание);
КонецЕсли;
//
Индекс = ТЗ.Количество() - 1;
ПОКА Индекс >= 0 Цикл
Если Не ЗначениеЗаполнено(ТЗ[Индекс].Номенклатура) или (Не ТЗ[Индекс].Номенклатура.ПринадлежитЭлементу(ПапкаИнстументДО) и Не ТЗ[Индекс].Номенклатура.ПринадлежитЭлементу(ПапкаМЕБЕЛЬ)) Тогда
ТЗ.Удалить(Индекс);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
//
//ТЗЦенЗавода = ПолучитьЦеныЗавода(ТЗ);
//
//
Для Каждого Строка ИЗ ТЗ Цикл
//
НовЗап = НаборЗаписей.Добавить();
//
Если ЗначениеЗаполнено(Строка.ОсновнаяПолка) Тогда
НовЗап.Номенклатура = Строка.ОсновнаяПолка;
Иначе
НовЗап.Номенклатура = Строка.Номенклатура;
КонецЕсли;
//
НовЗап.Регистратор = ДокСписание;
//
Если ТипДока = 2 Тогда
Если ДокСписание.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика Тогда
НовЗап.ВидДвижения = ВидДвиженияНакопления.Расход;
Иначе
НовЗап.ВидДвижения = ВидДвиженияНакопления.Приход;
КонецЕсли;
НовЗап.Период = ДокСписание.ДатаПроведенияБанком;
ИначеЕсли ТипДока = 1 Тогда
НовЗап.ВидДвижения = ВидДвиженияНакопления.Расход;
НовЗап.Период = ДокСписание.ДатаПроведенияБанком;
ИначеЕсли ТипДока = 3 или ТипДока = 4 или ТипДока = 5 или ТипДока = 6 Тогда
НовЗап.Период = Строка.ДатаПроведенияБанком;
Если Строка.ПриходПоНоменклатуреРуб > 0 Тогда
НовЗап.ВидДвижения = ВидДвиженияНакопления.Приход;
Иначе
НовЗап.ВидДвижения = ВидДвиженияНакопления.Расход;
КонецЕсли;
КонецЕсли;
//
НовЗап.Доходность = Строка.Доходность;
НовЗап.ПапкаНоменклатуры = Строка.Родитель;
Если ТипДока = 2 Тогда // поступление ДС
Если ДокСписание.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратДенежныхСредствОтПоставщика Тогда
НовЗап.Сумма = -Строка.ПриходПоНоменклатуреРуб;
Иначе
ДобавитьСуммуПриходВРегистр(НовЗап,Строка);
КонецЕсли;
НовЗап.СуммаОплаты = Строка.ПриходПоНоменклатуреРуб;
ИначеЕсли ТипДока = 1 Тогда // списание ДС
Если ДокСписание.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВозвратОплатыКлиенту Тогда
ДобавитьСуммуРасходВРегистр(НовЗап,Строка);
Иначе
НовЗап.Сумма = Строка.РасходПоНоменклатуреРуб;
КонецЕсли;
//
ИначеЕсли ТипДока = 3 и Строка.ПриходПоНоменклатуреРуб > 0 Тогда // эквайринг
ДобавитьСуммуПриходВРегистр(НовЗап,Строка);
НовЗап.СуммаОплаты = Строка.ПриходПоНоменклатуреРуб;
ИначеЕсли ТипДока = 3 и Строка.РасходПоНоменклатуреРуб > 0 Тогда
ДобавитьСуммуРасходВРегистр(НовЗап,Строка);
ИначеЕсли ТипДока = 4 Тогда // ПКО
ДобавитьСуммуПриходВРегистр(НовЗап,Строка);
НовЗап.СуммаОплаты = Строка.ПриходПоНоменклатуреРуб;
ИначеЕсли ТипДока = 5 Тогда //РКО
ДобавитьСуммуРасходВРегистр(НовЗап,Строка);
ИначеЕсли ТипДока = 6 Тогда //Взаимозачет
Если Строка.ПриходПоНоменклатуреРуб > 0 Тогда
НовЗап.СуммаОплаты = Строка.ПриходПоНоменклатуреРуб;
ДобавитьСуммуПриходВРегистр(НовЗап,Строка);
Иначе
//НовЗап.СуммаОплаты = Строка.РасходПоНоменклатуреРуб;
ДобавитьСуммуРасходВРегистр(НовЗап,Строка);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура ДобавитьСуммуРасходВРегистр(НовЗап,Строка)
//
Если ЗначениеЗаполнено(Строка.ЦенаЗаводаНаПроцентОплаты) Тогда
Если Строка.ЦенаЗаводаНаПроцентОплаты < 0.9 * Строка.РасходПоНоменклатуреРуб Тогда
НовЗап.Сумма = Строка.ЦенаЗаводаНаПроцентОплаты;
Иначе
НовЗап.Сумма = Строка.РасходПоНоменклатуреРуб * НовЗап.Доходность / 100;
КонецЕсли;
иначе
НовЗап.Сумма = Строка.РасходПоНоменклатуреРуб * НовЗап.Доходность / 100;
КонецЕсли;
//
КонецПроцедуры
Процедура ДобавитьСуммуПриходВРегистр(НовЗап,Строка)
//
Если ЗначениеЗаполнено(Строка.ЦенаЗаводаНаПроцентОплаты) Тогда
Если Строка.ЦенаЗаводаНаПроцентОплаты < 0.9 * Строка.ПриходПоНоменклатуреРуб Тогда
НовЗап.Сумма = Строка.ЦенаЗаводаНаПроцентОплаты;
Иначе
НовЗап.Сумма = Строка.ПриходПоНоменклатуреРуб * НовЗап.Доходность / 100;
КонецЕсли;
иначе
НовЗап.Сумма = Строка.ПриходПоНоменклатуреРуб * НовЗап.Доходность / 100;
КонецЕсли;
//
КонецПроцедуры
Функция ПолучитьСуммыПоНоменклатурно(пДокумент) Экспорт
//
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсыВсе
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&датаДокумента, ) КАК КурсыВалютСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДенежныеСредстваБезналичныеОбороты.Регистратор КАК Документ,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаПриход) КАК СуммаПриход,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаРасход) КАК СуммаРасход
|ПОМЕСТИТЬ ОборотыЗаПериод
|ИЗ
| РегистрНакопления.ДенежныеСредстваБезналичные.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ДенежныеСредстваБезналичныеОбороты
|ГДЕ
| (ДенежныеСредстваБезналичныеОбороты.Регистратор ССЫЛКА Документ.СписаниеБезналичныхДенежныхСредств
| ИЛИ ДенежныеСредстваБезналичныеОбороты.Регистратор ССЫЛКА Документ.ПоступлениеБезналичныхДенежныхСредств)
| И ДенежныеСредстваБезналичныеОбороты.Регистратор = &пДокумент
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваБезналичныеОбороты.Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов,
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма) КАК Сумма,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта КАК Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект КАК Заказ,
| ОборотыЗаПериод.Документ КАК Документ,
| ОборотыЗаПериод.СуммаПриход КАК СуммаПриход,
| ОборотыЗаПериод.СуммаРасход КАК СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента КАК СуммаПлатежки,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация КАК Операция,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента КАК СуммаЗаказа,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов КАК КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов КАК КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ) КАК ДатаЗаказа
|ПОМЕСТИТЬ СРасшифровкой
|ИЗ
| ОборотыЗаПериод КАК ОборотыЗаПериод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПоступлениеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа
| ПО ОборотыЗаПериод.Документ = ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ДатаПроведенияБанком,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СУММА(СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.СуммаВзаиморасчетов),
| СУММА(СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма),
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ДатаПроведенияБанком,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ)
|ИЗ
| ОборотыЗаПериод КАК ОборотыЗаПериод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа
| ПО ОборотыЗаПериод.Документ = СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка
|
|СГРУППИРОВАТЬ ПО
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ДатаПроведенияБанком,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(СписаниеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СРасшифровкой.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| СРасшифровкой.Сумма КАК Сумма,
| СРасшифровкой.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| СРасшифровкой.Валюта КАК Валюта,
| СРасшифровкой.Заказ КАК Заказ,
| СРасшифровкой.Документ КАК Документ,
| СРасшифровкой.СуммаПриход КАК СуммаПриход,
| СРасшифровкой.СуммаРасход КАК СуммаРасход,
| СРасшифровкой.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СРасшифровкой.Операция КАК Операция,
| СРасшифровкой.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| СРасшифровкой.СуммаПлатежки КАК СуммаПлатежки,
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| СРасшифровкой.СуммаЗаказа КАК СуммаЗаказа,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаПриход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК ПриходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаРасход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК РасходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.СуммаВзаиморасчетов / СРасшифровкой.СуммаЗаказа
| ИНАЧЕ 0
| КОНЕЦ КАК ПроцентОплаты,
| ЗаказКлиентаТовары.Количество КАК Количество,
| СРасшифровкой.ДатаЗаказа КАК ДатаЗаказа
|ПОМЕСТИТЬ ВсеПосчитали
|ИЗ
| СРасшифровкой КАК СРасшифровкой
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО СРасшифровкой.Заказ = ЗаказКлиентаТовары.Ссылка
| И (ЗаказКлиентаТовары.Отменено = ЛОЖЬ)
|ГДЕ
| ЗаказКлиентаТовары.Отменено = ЛОЖЬ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СРасшифровкой.СуммаВзаиморасчетов,
| СРасшифровкой.Сумма,
| СРасшифровкой.ВалютаВзаиморасчетов,
| СРасшифровкой.Валюта,
| СРасшифровкой.Заказ,
| СРасшифровкой.Документ,
| СРасшифровкой.СуммаПриход,
| СРасшифровкой.СуммаРасход,
| СРасшифровкой.НаправлениеДеятельности,
| СРасшифровкой.Операция,
| СРасшифровкой.ДатаПроведенияБанком,
| СРасшифровкой.СуммаПлатежки,
| ЗаказПоставщикуТовары.Номенклатура,
| СРасшифровкой.СуммаЗаказа,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаПриход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказПоставщикуТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаРасход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказПоставщикуТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.СуммаВзаиморасчетов / СРасшифровкой.СуммаЗаказа
| ИНАЧЕ 0
| КОНЕЦ,
| ЗаказПоставщикуТовары.Количество,
| NULL
|ИЗ
| СРасшифровкой КАК СРасшифровкой
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
| ПО СРасшифровкой.Заказ = ЗаказПоставщикуТовары.Ссылка
| И (ЗаказПоставщикуТовары.Отменено = ЛОЖЬ)
|ГДЕ
| ЗаказПоставщикуТовары.Отменено = ЛОЖЬ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СРасшифровкой.СуммаВзаиморасчетов,
| СРасшифровкой.Сумма,
| СРасшифровкой.ВалютаВзаиморасчетов,
| СРасшифровкой.Валюта,
| СРасшифровкой.Заказ,
| СРасшифровкой.Документ,
| СРасшифровкой.СуммаПриход,
| СРасшифровкой.СуммаРасход,
| СРасшифровкой.НаправлениеДеятельности,
| СРасшифровкой.Операция,
| СРасшифровкой.ДатаПроведенияБанком,
| СРасшифровкой.СуммаПлатежки,
| ПриобретениеТоваровУслугТовары.Номенклатура,
| СРасшифровкой.СуммаЗаказа,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаПриход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ПриобретениеТоваровУслугТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаРасход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ПриобретениеТоваровУслугТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.СуммаВзаиморасчетов / СРасшифровкой.СуммаЗаказа
| ИНАЧЕ 0
| КОНЕЦ,
| ПриобретениеТоваровУслугТовары.Количество,
| NULL
|ИЗ
| СРасшифровкой КАК СРасшифровкой
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
| ПО СРасшифровкой.Заказ = ПриобретениеТоваровУслугТовары.Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ЦеныНоменклатуры25.Период) КАК ДатаЦены
|ПОМЕСТИТЬ ДатаЦеныЗаказа
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
|ГДЕ
| НАЧАЛОПЕРИОДА(ЦеныНоменклатуры25.Период, ДЕНЬ) <= ВсеПосчитали.ДатаЗаказа
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ВЫБОР
| КОГДА КурсыВсе.Кратность ЕСТЬ NULL
| ИЛИ КурсыВсе.Кратность = 0
| ТОГДА ЦеныНоменклатуры25.Цена
| ИНАЧЕ ЦеныНоменклатуры25.Цена * КурсыВсе.Курс / КурсыВсе.Кратность
| КОНЕЦ) КАК Цена,
| ЦеныНоменклатуры25.Цена КАК ЦенаРегистр,
| ЦеныНоменклатуры25.Валюта КАК ВалютаЦены,
| ЦеныНоменклатуры25.Период КАК ПериодЦены,
| КурсыВсе.Курс КАК КурсЦены,
| КурсыВсе.Кратность КАК КратностьЦены
|ПОМЕСТИТЬ ЦенаЗавода
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ЦеныНоменклатуры25.Валюта = КурсыВсе.Валюта
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаЦеныЗаказа КАК ДатаЦеныЗаказа
| ПО (ДатаЦеныЗаказа.ДатаЦены = ЦеныНоменклатуры25.Период)
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
| И ЦеныНоменклатуры25.Номенклатура = ДатаЦеныЗаказа.Номенклатура
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура,
| ЦеныНоменклатуры25.Цена,
| ЦеныНоменклатуры25.Период,
| ЦеныНоменклатуры25.Валюта,
| КурсыВсе.Курс,
| КурсыВсе.Кратность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ВсеПосчитали.Сумма КАК Сумма,
| ВсеПосчитали.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ВсеПосчитали.Валюта КАК Валюта,
| ВсеПосчитали.Заказ КАК Заказ,
| ВсеПосчитали.Документ КАК Документ,
| ВсеПосчитали.СуммаПриход КАК СуммаПриход,
| ВсеПосчитали.СуммаРасход КАК СуммаРасход,
| ВсеПосчитали.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВсеПосчитали.Операция КАК Операция,
| ВсеПосчитали.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ВсеПосчитали.СуммаПлатежки КАК СуммаПлатежки,
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| ВсеПосчитали.СуммаЗаказа КАК СуммаЗаказа,
| ВсеПосчитали.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ВсеПосчитали.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ЕСТЬNULL(ВсеПосчитали.ПриходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК ПриходПоНоменклатуреРуб,
| ЕСТЬNULL(ВсеПосчитали.РасходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК РасходПоНоменклатуреРуб,
| ВсеПосчитали.Номенклатура.Родитель КАК Родитель,
| ВсеПосчитали.ПроцентОплаты КАК ПроцентОплаты,
| ВсеПосчитали.Количество КАК Количество
|ПОМЕСТИТЬ ДоосновнойПолки
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ВсеПосчитали.Валюта = КурсыВсе.Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДоосновнойПолки.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДоосновнойПолки.Сумма КАК Сумма,
| ДоосновнойПолки.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДоосновнойПолки.Валюта КАК Валюта,
| ДоосновнойПолки.Заказ КАК Заказ,
| ДоосновнойПолки.Документ КАК Документ,
| ДоосновнойПолки.СуммаПриход КАК СуммаПриход,
| ДоосновнойПолки.СуммаРасход КАК СуммаРасход,
| ДоосновнойПолки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДоосновнойПолки.Операция КАК Операция,
| ДоосновнойПолки.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ДоосновнойПолки.СуммаПлатежки КАК СуммаПлатежки,
| ДоосновнойПолки.Номенклатура КАК Номенклатура,
| ДоосновнойПолки.СуммаЗаказа КАК СуммаЗаказа,
| ДоосновнойПолки.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ДоосновнойПолки.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ДоосновнойПолки.ПриходПоНоменклатуреРуб КАК ПриходПоНоменклатуреРуб,
| ДоосновнойПолки.РасходПоНоменклатуреРуб КАК РасходПоНоменклатуреРуб,
| ДоосновнойПолки.Родитель КАК Родитель,
| ДоходностьПапокПоОтветственнымСрезПоследних.ОсновнаяПолка КАК ОсновнаяПолка,
| ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) КАК Доходность,
| ДоходностьПапокПоОтветственнымСрезПоследних.Ответственный КАК Ответственный,
| ЦенаЗавода.Цена * ДоосновнойПолки.ПроцентОплаты * ДоосновнойПолки.Количество КАК ЦенаЗаводаНаПроцентОплаты,
| ДоосновнойПолки.ПроцентОплаты КАК ПроцентОплаты,
| ЦенаЗавода.ЦенаРегистр КАК ЦенаРегистр,
| ДоосновнойПолки.Количество КАК Количество,
| ЦенаЗавода.ВалютаЦены КАК ВалютаЦены,
| ЦенаЗавода.ПериодЦены КАК ПериодЦены,
| ЦенаЗавода.КурсЦены КАК КурсЦены,
| ЦенаЗавода.КратностьЦены КАК КратностьЦены
|ИЗ
| ДоосновнойПолки КАК ДоосновнойПолки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоходностьПапокПоОтветственным.СрезПоследних КАК ДоходностьПапокПоОтветственнымСрезПоследних
| ПО ДоосновнойПолки.Родитель = ДоходностьПапокПоОтветственнымСрезПоследних.ПапкаНоменклатуры
| И (ДоходностьПапокПоОтветственнымСрезПоследних.НеАктивна = ЛОЖЬ)
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаЗавода КАК ЦенаЗавода
| ПО ДоосновнойПолки.Номенклатура = ЦенаЗавода.Номенклатура";
Запрос.УстановитьПараметр("пДокумент",пДокумент);
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(пДокумент.ДатаПроведенияБанком));
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(пДокумент.ДатаПроведенияБанком) + 1);
Запрос.УстановитьПараметр("ПустаяХарЦО",Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаясерияЦО",Справочники.СерииНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ЦенаЗавода",РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстантыКАМИ("ВидЦен_ЦенаЗавода"));
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ;
КонецФункции
Функция ПолучитьСуммыПоНоменклатурноВзаимозачет(пДокумент) Экспорт
//
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсыВсе
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних((&датаДокумента), ) КАК КурсыВалютСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВзаимозачетЗадолженностиДебиторскаяЗадолженность.СуммаРегл КАК СуммаПриход,
| ВзаимозачетЗадолженностиДебиторскаяЗадолженность.ОбъектРасчетов.Объект КАК Заказ,
| 0 КАК СуммаРасход,
| ВзаимозачетЗадолженностиДебиторскаяЗадолженность.Ссылка КАК Документ,
| ВзаимозачетЗадолженностиДебиторскаяЗадолженность.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
|ПОМЕСТИТЬ ДанныеДокумента
|ИЗ
| Документ.ВзаимозачетЗадолженности.ДебиторскаяЗадолженность КАК ВзаимозачетЗадолженностиДебиторскаяЗадолженность
|ГДЕ
| ВзаимозачетЗадолженностиДебиторскаяЗадолженность.Ссылка = &пДокумент
| И ТИПЗНАЧЕНИЯ(ВзаимозачетЗадолженностиДебиторскаяЗадолженность.ОбъектРасчетов.Объект) = ТИП(Документ.ЗаказКлиента)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 0,
| ВзаимозачетЗадолженностиКредиторскаяЗадолженность.ОбъектРасчетов.Объект,
| ВзаимозачетЗадолженностиКредиторскаяЗадолженность.СуммаРегл,
| ВзаимозачетЗадолженностиКредиторскаяЗадолженность.Ссылка,
| ВзаимозачетЗадолженностиКредиторскаяЗадолженность.СуммаВзаиморасчетов
|ИЗ
| Документ.ВзаимозачетЗадолженности.КредиторскаяЗадолженность КАК ВзаимозачетЗадолженностиКредиторскаяЗадолженность
|ГДЕ
| ВзаимозачетЗадолженностиКредиторскаяЗадолженность.Ссылка = &пДокумент
| И ТИПЗНАЧЕНИЯ(ВзаимозачетЗадолженностиКредиторскаяЗадолженность.ОбъектРасчетов.Объект) = ТИП(Документ.ЗаказКлиента)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.СуммаДокумента = 0
| ТОГДА 0
| ИНАЧЕ ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Ссылка.СуммаДокумента * ДанныеДокумента.СуммаРасход
| КОНЕЦ КАК РасходПоНоменклатуреРуб,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.СуммаДокумента = 0
| ТОГДА 0
| ИНАЧЕ ЗаказКлиентаТовары.Сумма / ЗаказКлиентаТовары.Ссылка.СуммаДокумента * ДанныеДокумента.СуммаПриход
| КОНЕЦ КАК ПриходПоНоменклатуреРуб,
| ДанныеДокумента.Заказ КАК Заказ,
| ДанныеДокумента.Заказ.Дата КАК ДатаЗаказа,
| ВЫБОР
| КОГДА ЗаказКлиентаТовары.Ссылка.СуммаДокумента = 0
| ТОГДА 0
| ИНАЧЕ ДанныеДокумента.СуммаВзаиморасчетов / ЗаказКлиентаТовары.Ссылка.СуммаДокумента
| КОНЕЦ КАК ПроцентОплаты,
| ЗаказКлиентаТовары.Количество КАК Количество,
| ЗаказКлиентаТовары.Номенклатура.Родитель КАК Родитель,
| ДанныеДокумента.Документ КАК Документ
|ПОМЕСТИТЬ ВсеПосчитали
|ИЗ
| ДанныеДокумента КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО ДанныеДокумента.Заказ = ЗаказКлиентаТовары.Ссылка
|ГДЕ
| НЕ ЗаказКлиентаТовары.Номенклатура ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ЦеныНоменклатуры25.Период) КАК ДатаЦены
|ПОМЕСТИТЬ ДатаЦеныЗаказа
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
|ГДЕ
| НАЧАЛОПЕРИОДА(ЦеныНоменклатуры25.Период, ДЕНЬ) <= ВсеПосчитали.ДатаЗаказа
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ВЫБОР
| КОГДА КурсыВсе.Кратность ЕСТЬ NULL
| ИЛИ КурсыВсе.Кратность = 0
| ТОГДА ЦеныНоменклатуры25.Цена
| ИНАЧЕ ЦеныНоменклатуры25.Цена * КурсыВсе.Курс / КурсыВсе.Кратность
| КОНЕЦ) КАК Цена,
| ЦеныНоменклатуры25.Цена КАК ЦенаРегистр,
| ЦеныНоменклатуры25.Валюта КАК ВалютаЦены,
| ЦеныНоменклатуры25.Период КАК ПериодЦены,
| КурсыВсе.Курс КАК КурсЦены,
| КурсыВсе.Кратность КАК КратностьЦены
|ПОМЕСТИТЬ ЦенаЗавода
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ЦеныНоменклатуры25.Валюта = КурсыВсе.Валюта
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаЦеныЗаказа КАК ДатаЦеныЗаказа
| ПО (ДатаЦеныЗаказа.ДатаЦены = ЦеныНоменклатуры25.Период)
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
| И ЦеныНоменклатуры25.Номенклатура = ДатаЦеныЗаказа.Номенклатура
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура,
| ЦеныНоменклатуры25.Цена,
| ЦеныНоменклатуры25.Валюта,
| ЦеныНоменклатуры25.Период,
| КурсыВсе.Курс,
| КурсыВсе.Кратность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| ВсеПосчитали.РасходПоНоменклатуреРуб КАК РасходПоНоменклатуреРуб,
| ВсеПосчитали.ПриходПоНоменклатуреРуб КАК ПриходПоНоменклатуреРуб,
| ВсеПосчитали.Заказ КАК Заказ,
| ВсеПосчитали.ДатаЗаказа КАК ДатаЗаказа,
| ВсеПосчитали.ПроцентОплаты КАК ПроцентОплаты,
| ЦенаЗавода.Цена КАК Цена,
| ЦенаЗавода.ЦенаРегистр КАК ЦенаРегистр,
| ЦенаЗавода.ВалютаЦены КАК ВалютаЦены,
| ЦенаЗавода.ПериодЦены КАК ПериодЦены,
| ЦенаЗавода.КурсЦены КАК КурсЦены,
| ЦенаЗавода.КратностьЦены КАК КратностьЦены,
| ВЫБОР
| КОГДА ВсеПосчитали.ПриходПоНоменклатуреРуб > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество < 0.9 * ВсеПосчитали.ПриходПоНоменклатуреРуб
| ТОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество
| ИНАЧЕ ВсеПосчитали.ПриходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| ИНАЧЕ ВсеПосчитали.ПриходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| ИНАЧЕ ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество < 0.9 * ВсеПосчитали.РасходПоНоменклатуреРуб
| ТОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество
| ИНАЧЕ ВсеПосчитали.РасходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| ИНАЧЕ ВсеПосчитали.РасходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| КОНЕЦ КАК СуммаЗачет,
| ДоходностьПапокПоОтветственнымСрезПоследних.ПапкаНоменклатуры КАК ПапкаНоменклатуры,
| ДоходностьПапокПоОтветственнымСрезПоследних.ОсновнаяПолка КАК ОсновнаяПолка,
| ВсеПосчитали.Количество КАК Количество,
| ДоходностьПапокПоОтветственнымСрезПоследних.Ответственный КАК Ответственный,
| ВсеПосчитали.Документ КАК Документ,
| ВЫБОР
| КОГДА ВсеПосчитали.ПриходПоНоменклатуреРуб > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество < 0.9 * ВсеПосчитали.ПриходПоНоменклатуреРуб
| ТОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество
| ИНАЧЕ ВсеПосчитали.ПриходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| ИНАЧЕ ВсеПосчитали.ПриходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| КОНЕЦ КАК ЗачетПриход,
| ВЫБОР
| КОГДА ВсеПосчитали.РасходПоНоменклатуреРуб > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество > 0
| ТОГДА ВЫБОР
| КОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество < 0.9 * ВсеПосчитали.РасходПоНоменклатуреРуб
| ТОГДА ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество
| ИНАЧЕ ВсеПосчитали.РасходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| ИНАЧЕ ВсеПосчитали.РасходПоНоменклатуреРуб * ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) / 100
| КОНЕЦ
| КОНЕЦ КАК ЗачетРасход,
| ВсеПосчитали.Родитель КАК Родитель,
| ДоходностьПапокПоОтветственнымСрезПоследних.Доходность КАК Доходность,
| ЦенаЗавода.Цена * ВсеПосчитали.ПроцентОплаты * ВсеПосчитали.Количество КАК ЦенаЗаводаНаПроцентОплаты,
| ВсеПосчитали.Документ.Дата КАК ДатаПроведенияБанком
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаЗавода КАК ЦенаЗавода
| ПО ВсеПосчитали.Номенклатура = ЦенаЗавода.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоходностьПапокПоОтветственным.СрезПоследних КАК ДоходностьПапокПоОтветственнымСрезПоследних
| ПО ВсеПосчитали.Родитель = ДоходностьПапокПоОтветственнымСрезПоследних.ПапкаНоменклатуры
| И (ДоходностьПапокПоОтветственнымСрезПоследних.НеАктивна = ЛОЖЬ)";
Запрос.УстановитьПараметр("пДокумент",пДокумент);
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
//Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(пДокумент.ДатаПроведенияБанком));
//Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(пДокумент.ДатаПроведенияБанком) + 1);
Запрос.УстановитьПараметр("ПустаяХарЦО",Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаясерияЦО",Справочники.СерииНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ЦенаЗавода",РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстантыКАМИ("ВидЦен_ЦенаЗавода"));
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ;
КонецФункции
Функция ПолучитьСуммыПоНоменклатурноЭквайринг(пДокумент) Экспорт
//
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсыВсе
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&датаДокумента, ) КАК КурсыВалютСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДенежныеСредстваБезналичныеОбороты.Регистратор КАК Документ,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаПриход) КАК СуммаПриход,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаРасход) КАК СуммаРасход
|ПОМЕСТИТЬ ОборотыЗаПериод
|ИЗ
| РегистрНакопления.РасчетыПоЭквайрингу.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ДенежныеСредстваБезналичныеОбороты
|ГДЕ
| ДенежныеСредстваБезналичныеОбороты.Регистратор ССЫЛКА Документ.ОперацияПоПлатежнойКарте
| И ДенежныеСредстваБезналичныеОбороты.Регистратор = &пДокумент
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваБезналичныеОбороты.Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма) КАК СуммаВзаиморасчетов,
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма) КАК Сумма,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта КАК Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа КАК Заказ,
| ОборотыЗаПериод.Документ КАК Документ,
| ОборотыЗаПериод.СуммаПриход КАК СуммаПриход,
| ОборотыЗаПериод.СуммаРасход КАК СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента КАК СуммаПлатежки,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация КАК Операция,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата КАК ДатаПроведенияБанком,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.СуммаДокумента КАК СуммаЗаказа,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов КАК КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов КАК КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.Дата, ДЕНЬ) КАК ДатаЗаказа
|ПОМЕСТИТЬ СРасшифровкой
|ИЗ
| ОборотыЗаПериод КАК ОборотыЗаПериод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОперацияПоПлатежнойКарте.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа
| ПО ОборотыЗаПериод.Документ = ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.Дата, ДЕНЬ),
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СРасшифровкой.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| СРасшифровкой.Сумма КАК Сумма,
| СРасшифровкой.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| СРасшифровкой.Валюта КАК Валюта,
| СРасшифровкой.Заказ КАК Заказ,
| СРасшифровкой.Документ КАК Документ,
| СРасшифровкой.СуммаПриход КАК СуммаПриход,
| СРасшифровкой.СуммаРасход КАК СуммаРасход,
| СРасшифровкой.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СРасшифровкой.Операция КАК Операция,
| СРасшифровкой.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| СРасшифровкой.СуммаПлатежки КАК СуммаПлатежки,
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| СРасшифровкой.СуммаЗаказа КАК СуммаЗаказа,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаПриход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК ПриходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаРасход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК РасходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.СуммаВзаиморасчетов / СРасшифровкой.СуммаЗаказа
| ИНАЧЕ 0
| КОНЕЦ КАК ПроцентОплаты,
| ЗаказКлиентаТовары.Количество КАК Количество,
| СРасшифровкой.ДатаЗаказа КАК ДатаЗаказа
|ПОМЕСТИТЬ ВсеПосчитали
|ИЗ
| СРасшифровкой КАК СРасшифровкой
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО СРасшифровкой.Заказ = ЗаказКлиентаТовары.Ссылка
| И (ЗаказКлиентаТовары.Отменено = ЛОЖЬ)
|ГДЕ
| ЗаказКлиентаТовары.Отменено = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ЦеныНоменклатуры25.Период) КАК ДатаЦены
|ПОМЕСТИТЬ ДатаЦеныЗаказа
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
|ГДЕ
| НАЧАЛОПЕРИОДА(ЦеныНоменклатуры25.Период, ДЕНЬ) <= ВсеПосчитали.ДатаЗаказа
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ВЫБОР
| КОГДА КурсыВсе.Кратность ЕСТЬ NULL
| ИЛИ КурсыВсе.Кратность = 0
| ТОГДА ЦеныНоменклатуры25.Цена
| ИНАЧЕ ЦеныНоменклатуры25.Цена * КурсыВсе.Курс / КурсыВсе.Кратность
| КОНЕЦ) КАК Цена,
| ЦеныНоменклатуры25.Цена КАК ЦенаРегистр,
| ЦеныНоменклатуры25.Валюта КАК ВалютаЦены,
| ЦеныНоменклатуры25.Период КАК ПериодЦены,
| КурсыВсе.Курс КАК КурсЦены,
| КурсыВсе.Кратность КАК КратностьЦены
|ПОМЕСТИТЬ ЦенаЗавода
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ЦеныНоменклатуры25.Валюта = КурсыВсе.Валюта
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаЦеныЗаказа КАК ДатаЦеныЗаказа
| ПО (ДатаЦеныЗаказа.ДатаЦены = ЦеныНоменклатуры25.Период)
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
| И ЦеныНоменклатуры25.Номенклатура = ДатаЦеныЗаказа.Номенклатура
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура,
| ЦеныНоменклатуры25.Цена,
| ЦеныНоменклатуры25.Период,
| ЦеныНоменклатуры25.Валюта,
| КурсыВсе.Курс,
| КурсыВсе.Кратность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ВсеПосчитали.Сумма КАК Сумма,
| ВсеПосчитали.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ВсеПосчитали.Валюта КАК Валюта,
| ВсеПосчитали.Заказ КАК Заказ,
| ВсеПосчитали.Документ КАК Документ,
| ВсеПосчитали.СуммаПриход КАК СуммаПриход,
| ВсеПосчитали.СуммаРасход КАК СуммаРасход,
| ВсеПосчитали.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВсеПосчитали.Операция КАК Операция,
| ВсеПосчитали.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ВсеПосчитали.СуммаПлатежки КАК СуммаПлатежки,
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| ВсеПосчитали.СуммаЗаказа КАК СуммаЗаказа,
| ВсеПосчитали.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ВсеПосчитали.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ЕСТЬNULL(ВсеПосчитали.ПриходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК ПриходПоНоменклатуреРуб,
| ЕСТЬNULL(ВсеПосчитали.РасходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК РасходПоНоменклатуреРуб,
| ВсеПосчитали.Номенклатура.Родитель КАК Родитель,
| ВсеПосчитали.ПроцентОплаты КАК ПроцентОплаты,
| ВсеПосчитали.Количество КАК Количество
|ПОМЕСТИТЬ ДоосновнойПолки
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ВсеПосчитали.Валюта = КурсыВсе.Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДоосновнойПолки.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДоосновнойПолки.Сумма КАК Сумма,
| ДоосновнойПолки.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДоосновнойПолки.Валюта КАК Валюта,
| ДоосновнойПолки.Заказ КАК Заказ,
| ДоосновнойПолки.Документ КАК Документ,
| ДоосновнойПолки.СуммаПриход КАК СуммаПриход,
| ДоосновнойПолки.СуммаРасход КАК СуммаРасход,
| ДоосновнойПолки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДоосновнойПолки.Операция КАК Операция,
| ДоосновнойПолки.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ДоосновнойПолки.СуммаПлатежки КАК СуммаПлатежки,
| ДоосновнойПолки.Номенклатура КАК Номенклатура,
| ДоосновнойПолки.СуммаЗаказа КАК СуммаЗаказа,
| ДоосновнойПолки.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ДоосновнойПолки.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ДоосновнойПолки.ПриходПоНоменклатуреРуб КАК ПриходПоНоменклатуреРуб,
| ДоосновнойПолки.РасходПоНоменклатуреРуб КАК РасходПоНоменклатуреРуб,
| ДоосновнойПолки.Родитель КАК Родитель,
| ДоходностьПапокПоОтветственнымСрезПоследних.ОсновнаяПолка КАК ОсновнаяПолка,
| ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) КАК Доходность,
| ДоходностьПапокПоОтветственнымСрезПоследних.Ответственный КАК Ответственный,
| ЦенаЗавода.Цена * ДоосновнойПолки.ПроцентОплаты * ДоосновнойПолки.Количество КАК ЦенаЗаводаНаПроцентОплаты,
| ДоосновнойПолки.ПроцентОплаты КАК ПроцентОплаты,
| ЦенаЗавода.ЦенаРегистр КАК ЦенаРегистр,
| ДоосновнойПолки.Количество КАК Количество,
| ЦенаЗавода.ВалютаЦены КАК ВалютаЦены,
| ЦенаЗавода.ПериодЦены КАК ПериодЦены,
| ЦенаЗавода.КурсЦены КАК КурсЦены,
| ЦенаЗавода.КратностьЦены КАК КратностьЦены
|ИЗ
| ДоосновнойПолки КАК ДоосновнойПолки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоходностьПапокПоОтветственным.СрезПоследних КАК ДоходностьПапокПоОтветственнымСрезПоследних
| ПО ДоосновнойПолки.Родитель = ДоходностьПапокПоОтветственнымСрезПоследних.ПапкаНоменклатуры
| И (ДоходностьПапокПоОтветственнымСрезПоследних.НеАктивна = ЛОЖЬ)
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаЗавода КАК ЦенаЗавода
| ПО ДоосновнойПолки.Номенклатура = ЦенаЗавода.Номенклатура";
Запрос.УстановитьПараметр("пДокумент",пДокумент);
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(пДокумент.Дата));
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(пДокумент.Дата) + 1);
Запрос.УстановитьПараметр("ПустаяХарЦО",Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаясерияЦО",Справочники.СерииНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ЦенаЗавода",РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстантыКАМИ("ВидЦен_ЦенаЗавода"));
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ;
КонецФункции
Функция ПолучитьСуммыПоНоменклатурноКасса(пДокумент) Экспорт
//
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КурсыВалютСрезПоследних.Валюта КАК Валюта,
| КурсыВалютСрезПоследних.Курс КАК Курс,
| КурсыВалютСрезПоследних.Кратность КАК Кратность
|ПОМЕСТИТЬ КурсыВсе
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&датаДокумента, ) КАК КурсыВалютСрезПоследних
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДенежныеСредстваБезналичныеОбороты.Регистратор КАК Документ,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаПриход) КАК СуммаПриход,
| СУММА(ДенежныеСредстваБезналичныеОбороты.СуммаРасход) КАК СуммаРасход
|ПОМЕСТИТЬ ОборотыЗаПериод
|ИЗ
| РегистрНакопления.ДенежныеСредстваНаличные.Обороты(&ДатаНачала, &ДатаОкончания, Регистратор, ) КАК ДенежныеСредстваБезналичныеОбороты
|ГДЕ
| (ДенежныеСредстваБезналичныеОбороты.Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер
| ИЛИ ДенежныеСредстваБезналичныеОбороты.Регистратор ССЫЛКА Документ.РасходныйКассовыйОрдер)
| И ДенежныеСредстваБезналичныеОбороты.Регистратор = &пДокумент
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваБезналичныеОбороты.Регистратор
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма) КАК СуммаВзаиморасчетов,
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма) КАК Сумма,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта КАК ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта КАК Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа КАК Заказ,
| ОборотыЗаПериод.Документ КАК Документ,
| ОборотыЗаПериод.СуммаПриход КАК СуммаПриход,
| ОборотыЗаПериод.СуммаРасход КАК СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента КАК СуммаПлатежки,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация КАК Операция,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата КАК ДатаПроведенияБанком,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.СуммаДокумента КАК СуммаЗаказа,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов КАК КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов КАК КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.Дата, ДЕНЬ) КАК ДатаЗаказа
|ПОМЕСТИТЬ СРасшифровкой
|ИЗ
| ОборотыЗаПериод КАК ОборотыЗаПериод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа
| ПО ОборотыЗаПериод.Документ = ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.Дата, ДЕНЬ),
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма),
| СУММА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма),
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ)
|ИЗ
| ОборотыЗаПериод КАК ОборотыЗаПериод
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа
| ПО ОборотыЗаПериод.Документ = ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка
|
|СГРУППИРОВАТЬ ПО
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта,
| ОборотыЗаПериод.Документ,
| ОборотыЗаПериод.СуммаПриход,
| ОборотыЗаПериод.СуммаРасход,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.СуммаДокумента,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.НаправлениеДеятельности,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.ХозяйственнаяОперация,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Дата,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.СуммаДокумента,
| НАЧАЛОПЕРИОДА(ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект.Дата, ДЕНЬ),
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОбъектРасчетов.Объект,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЧислительВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.КурсЗнаменательВзаиморасчетов,
| ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка.Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| СРасшифровкой.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| СРасшифровкой.Сумма КАК Сумма,
| СРасшифровкой.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| СРасшифровкой.Валюта КАК Валюта,
| СРасшифровкой.Заказ КАК Заказ,
| СРасшифровкой.Документ КАК Документ,
| СРасшифровкой.СуммаПриход КАК СуммаПриход,
| СРасшифровкой.СуммаРасход КАК СуммаРасход,
| СРасшифровкой.НаправлениеДеятельности КАК НаправлениеДеятельности,
| СРасшифровкой.Операция КАК Операция,
| СРасшифровкой.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| СРасшифровкой.СуммаПлатежки КАК СуммаПлатежки,
| ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
| СРасшифровкой.СуммаЗаказа КАК СуммаЗаказа,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаПриход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК ПриходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаРасход > 0
| ТОГДА ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.Сумма * (ЗаказКлиентаТовары.Сумма / СРасшифровкой.СуммаЗаказа)
| ИНАЧЕ 0
| КОНЕЦ
| ИНАЧЕ 0
| КОНЕЦ КАК РасходПоНоменклатуре,
| ВЫБОР
| КОГДА СРасшифровкой.СуммаЗаказа > 0
| ТОГДА СРасшифровкой.СуммаВзаиморасчетов / СРасшифровкой.СуммаЗаказа
| ИНАЧЕ 0
| КОНЕЦ КАК ПроцентОплаты,
| ЗаказКлиентаТовары.Количество КАК Количество,
| СРасшифровкой.ДатаЗаказа КАК ДатаЗаказа
|ПОМЕСТИТЬ ВсеПосчитали
|ИЗ
| СРасшифровкой КАК СРасшифровкой
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
| ПО СРасшифровкой.Заказ = ЗаказКлиентаТовары.Ссылка
| И (ЗаказКлиентаТовары.Отменено = ЛОЖЬ)
|ГДЕ
| ЗаказКлиентаТовары.Отменено = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ЦеныНоменклатуры25.Период) КАК ДатаЦены
|ПОМЕСТИТЬ ДатаЦеныЗаказа
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
|ГДЕ
| НАЧАЛОПЕРИОДА(ЦеныНоменклатуры25.Период, ДЕНЬ) <= ВсеПосчитали.ДатаЗаказа
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| МАКСИМУМ(ВЫБОР
| КОГДА КурсыВсе.Кратность ЕСТЬ NULL
| ИЛИ КурсыВсе.Кратность = 0
| ТОГДА ЦеныНоменклатуры25.Цена
| ИНАЧЕ ЦеныНоменклатуры25.Цена * КурсыВсе.Курс / КурсыВсе.Кратность
| КОНЕЦ) КАК Цена,
| ЦеныНоменклатуры25.Цена КАК ЦенаРегистр,
| ЦеныНоменклатуры25.Валюта КАК ВалютаЦены,
| ЦеныНоменклатуры25.Период КАК ПериодЦены,
| КурсыВсе.Курс КАК КурсЦены,
| КурсыВсе.Кратность КАК КратностьЦены
|ПОМЕСТИТЬ ЦенаЗавода
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ЦеныНоменклатуры25.Валюта = КурсыВсе.Валюта
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДатаЦеныЗаказа КАК ДатаЦеныЗаказа
| ПО (ДатаЦеныЗаказа.ДатаЦены = ЦеныНоменклатуры25.Период)
| И (ЦеныНоменклатуры25.ХарактеристикаЦО = &ПустаяХарЦо)
| И (ЦеныНоменклатуры25.СерияЦО = &ПустаясерияЦО)
| И (ЦеныНоменклатуры25.ВидЦены = &ЦенаЗавода)
| И ЦеныНоменклатуры25.Номенклатура = ДатаЦеныЗаказа.Номенклатура
| ПО ВсеПосчитали.Номенклатура = ЦеныНоменклатуры25.Номенклатура
|
|СГРУППИРОВАТЬ ПО
| ВсеПосчитали.Номенклатура,
| ЦеныНоменклатуры25.Цена,
| ЦеныНоменклатуры25.Период,
| ЦеныНоменклатуры25.Валюта,
| КурсыВсе.Курс,
| КурсыВсе.Кратность
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВсеПосчитали.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ВсеПосчитали.Сумма КАК Сумма,
| ВсеПосчитали.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ВсеПосчитали.Валюта КАК Валюта,
| ВсеПосчитали.Заказ КАК Заказ,
| ВсеПосчитали.Документ КАК Документ,
| ВсеПосчитали.СуммаПриход КАК СуммаПриход,
| ВсеПосчитали.СуммаРасход КАК СуммаРасход,
| ВсеПосчитали.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ВсеПосчитали.Операция КАК Операция,
| ВсеПосчитали.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ВсеПосчитали.СуммаПлатежки КАК СуммаПлатежки,
| ВсеПосчитали.Номенклатура КАК Номенклатура,
| ВсеПосчитали.СуммаЗаказа КАК СуммаЗаказа,
| ВсеПосчитали.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ВсеПосчитали.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ЕСТЬNULL(ВсеПосчитали.ПриходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК ПриходПоНоменклатуреРуб,
| ЕСТЬNULL(ВсеПосчитали.РасходПоНоменклатуре, 0) * КурсыВсе.Курс / КурсыВсе.Кратность КАК РасходПоНоменклатуреРуб,
| ВсеПосчитали.Номенклатура.Родитель КАК Родитель,
| ВсеПосчитали.ПроцентОплаты КАК ПроцентОплаты,
| ВсеПосчитали.Количество КАК Количество
|ПОМЕСТИТЬ ДоосновнойПолки
|ИЗ
| ВсеПосчитали КАК ВсеПосчитали
| ЛЕВОЕ СОЕДИНЕНИЕ КурсыВсе КАК КурсыВсе
| ПО ВсеПосчитали.Валюта = КурсыВсе.Валюта
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДоосновнойПолки.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов,
| ДоосновнойПолки.Сумма КАК Сумма,
| ДоосновнойПолки.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ДоосновнойПолки.Валюта КАК Валюта,
| ДоосновнойПолки.Заказ КАК Заказ,
| ДоосновнойПолки.Документ КАК Документ,
| ДоосновнойПолки.СуммаПриход КАК СуммаПриход,
| ДоосновнойПолки.СуммаРасход КАК СуммаРасход,
| ДоосновнойПолки.НаправлениеДеятельности КАК НаправлениеДеятельности,
| ДоосновнойПолки.Операция КАК Операция,
| ДоосновнойПолки.ДатаПроведенияБанком КАК ДатаПроведенияБанком,
| ДоосновнойПолки.СуммаПлатежки КАК СуммаПлатежки,
| ДоосновнойПолки.Номенклатура КАК Номенклатура,
| ДоосновнойПолки.СуммаЗаказа КАК СуммаЗаказа,
| ДоосновнойПолки.ПриходПоНоменклатуре КАК ПриходПоНоменклатуре,
| ДоосновнойПолки.РасходПоНоменклатуре КАК РасходПоНоменклатуре,
| ДоосновнойПолки.ПриходПоНоменклатуреРуб КАК ПриходПоНоменклатуреРуб,
| ДоосновнойПолки.РасходПоНоменклатуреРуб КАК РасходПоНоменклатуреРуб,
| ДоосновнойПолки.Родитель КАК Родитель,
| ДоходностьПапокПоОтветственнымСрезПоследних.ОсновнаяПолка КАК ОсновнаяПолка,
| ЕСТЬNULL(ДоходностьПапокПоОтветственнымСрезПоследних.Доходность, 50) КАК Доходность,
| ДоходностьПапокПоОтветственнымСрезПоследних.Ответственный КАК Ответственный,
| ЦенаЗавода.Цена * ДоосновнойПолки.ПроцентОплаты * ДоосновнойПолки.Количество КАК ЦенаЗаводаНаПроцентОплаты,
| ДоосновнойПолки.ПроцентОплаты КАК ПроцентОплаты,
| ЦенаЗавода.ЦенаРегистр КАК ЦенаРегистр,
| ДоосновнойПолки.Количество КАК Количество,
| ЦенаЗавода.ВалютаЦены КАК ВалютаЦены,
| ЦенаЗавода.ПериодЦены КАК ПериодЦены,
| ЦенаЗавода.КурсЦены КАК КурсЦены,
| ЦенаЗавода.КратностьЦены КАК КратностьЦены
|ИЗ
| ДоосновнойПолки КАК ДоосновнойПолки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДоходностьПапокПоОтветственным.СрезПоследних КАК ДоходностьПапокПоОтветственнымСрезПоследних
| ПО ДоосновнойПолки.Родитель = ДоходностьПапокПоОтветственнымСрезПоследних.ПапкаНоменклатуры
| И (ДоходностьПапокПоОтветственнымСрезПоследних.НеАктивна = ЛОЖЬ)
| ЛЕВОЕ СОЕДИНЕНИЕ ЦенаЗавода КАК ЦенаЗавода
| ПО ДоосновнойПолки.Номенклатура = ЦенаЗавода.Номенклатура";
Запрос.УстановитьПараметр("пДокумент",пДокумент);
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(пДокумент.Дата));
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(пДокумент.Дата) + 1);
Запрос.УстановитьПараметр("ПустаяХарЦО",Справочники.ХарактеристикиНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ПустаясерияЦО",Справочники.СерииНоменклатурыДляЦенообразования.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаДокумента",пДокумент.Дата);
Запрос.УстановитьПараметр("ЦенаЗавода",РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстантыКАМИ("ВидЦен_ЦенаЗавода"));
ТЗ = Запрос.Выполнить().Выгрузить();
Возврат ТЗ;
КонецФункции
Что находится в файлах.
Все, что вам нужно, чтобы функционал заработал я вам выше описал и снабдил кодом. Ниже я выкладываю файлы, которые позволят вам совсем уж не напрягаться и взять все готовое.
Все отчеты и обработки можно сразу поместить в дополнительные отчеты.
1. Отчет по полкам номенклатуры.
2. Обработка по просмотру и назначению ответственных - структура ответственных за полки.
3. Четыре контекстных отчета, которые открываются из соответствующих документов. Отчеты похожи по структуре, но есть различия.
В отчетах в модуле в процедуре ПриКомпоновкеРезультата есть строка, которая получает Вид цены - Цена завода. Вам надо заменить эту строку на то как это делаете вы.
ЭД5.Значение = РаботаСКонстантамиПовтИсп.ПолучитьЗначениеКонстанты("ВидЦен_ЦенаЗавода");
4. Регламентное задание, которое следит за изменение папок и перемещением номенклатуры в них. У этой внешней обработки есть и форма, в которой присутствует функционал заполнения движений по полкам за выбранный период. Кроме того в обработке присутствует функционал и из этой моей статьи.
В модуле обработки и модуле формы нужно заменить МойСерверныйМодуль на имя вашего модуля.
Как можно поэтапно внедрить функционал
1. Добавляем новые объекты и проведение
2. Ответственных за верхние полки можно сначала загрузить из табличного документа
3. Скачиваем обработку Структура ответственных за полки открываем и жмем внизу кнопку Назначить ответственных
4. Тестируем вручную проведение денежных документов и убеждаемся, что суммы попадают в регистр.
5. Загружаем Регламентное задание - заполняем документы за период жмем Заполнить документы - Заполнить движения документов (Заполнить эквайринг, заполнить взаимозачеты - Заполнить движения)
6. Проверяем визуально заполнение регистра
7. Скачиваем отчет - формируем, расшифровываем
8. Скачиваем контекстные отчеты
9. Настраиваем расписание регламентного задания
Все, пьем чашечку чая и идем презентовать руководству.
(И за все это - 2500р и 2 часа работы программиста)
Используется на платформе 8.3.23.2040 ЕРП 2.5.12.238
Добавляем в избранное, потом по-любому пригодится.
Еще нужное для бренд-менеджера
1. Анализ номенклатуры для заказа на склад - фундаментальный отчет для анализа
2. Потребность заказа номенклатуры - упрощенный вариант верхнего с добавлением некоторых моментов при подсчете среднего. используют чаще для мелочевки.
3. Оплата по номенклатуре - зародыш этого поста. Не требует ничего дополнительного, но там только безнал.
4. Товары на складах по срокам хранения - смотреть, что там завалялось на складе
Еще статья из разряда фундаментальных, методических
1. Закупки (товары в пути) - для тех, кто любит красоту и точность
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.12.238