Как в отчет ОстатокТовараНаСкладе внести ЦенуРеализации
Когда поступает товар на склад первый раз, то при формировании отчета ОстатокТовараНаСкладе цена реализации товара записывается в таблицу. Стоит сделать еще одно поступление товара с тойже ценой реализации (или другой ценой), то в таблице цена реализации суммируется.
Как сделать, чтобы запись шла по максимальной цене?
//*******************************************
Процедура Сформировать()
// Если ПустоеЗначение(ДатаКон)=0 Тогда
// Предупреждение("Не указан период!");
// Возврат;
//КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
//|Период С НачДата По КонДата;
|Товар = Регистр.ОстаткиТоваров.Товар;
|Склад = Регистр.ОстаткиТоваров.Склад;
|Количество = Регистр.ОстаткиТоваров.Количество;
|ЦенаР = Регистр.ОстаткиТоваров.ЦенаР;
//|ЦенаП = Регистр.ОстаткиТоваров.ЦенаП;
|Функция КоличествоКонОст = КонОст(Количество);
|Функция ЦенаРПоГруппе = Сумма(ЦенаР);
// |Функция ЦенаППоГруппе = Сумма(ЦенаП);
|Группировка Товар;
|Группировка Склад;
|Условие (Товар в ВыбрТоварГруппа);
|Условие (Склад в ВыбрСклад);
|";
Если ПустоеЗначение(ДатаКон)=1 Тогда
пЗаголовок1="на "+ТекущаяДата()+" г.включительно";
КонецЕсли;
Если ПустоеЗначение(ДатаКон)=0 Тогда
пЗаголовок1="на "+ДатаКон+" г. включительно";
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Если Фл_НеВыводитьСклады = 1 Тогда
Таб.ВывестиСекцию("Шапка2");
Таб.ВывестиСекцию("Заголовок2");
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Товар.ЭтоГруппа()=1 Тогда
Таб.ВывестиСекцию("Группа2");
Иначе
Таб.ВывестиСекцию("Товар2");
КонецЕсли;
КонецЦикла;
Таб.Опции(0);
Таб.Показать("ОстаткиТоваров", "");
КонецЕсли;
//********************
Если Фл_НеВыводитьСклады = 0 Тогда
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Заголовок");
Итог=0;
Пока Запрос.Группировка(1) = 1 Цикл
Сумма=Запрос.КоличествоКонОст*Запрос.ЦенаРПоГруппе;
Если Запрос.Товар.ЭтоГруппа()=1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Итог=Итог+Сумма;
Таб.ВывестиСекцию("Товар");
КонецЕсли;
КонецЦикла;
//Таб.Опции(0);
КонецЕсли;
Таб.ВывестиСекцию("Итог");
Таб.Показать("ОстаткиТоваров", "");
КонецПроцедуры
Как сделать, чтобы запись шла по максимальной цене?
//*******************************************
Процедура Сформировать()
// Если ПустоеЗначение(ДатаКон)=0 Тогда
// Предупреждение("Не указан период!");
// Возврат;
//КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
//|Период С НачДата По КонДата;
|Товар = Регистр.ОстаткиТоваров.Товар;
|Склад = Регистр.ОстаткиТоваров.Склад;
|Количество = Регистр.ОстаткиТоваров.Количество;
|ЦенаР = Регистр.ОстаткиТоваров.ЦенаР;
//|ЦенаП = Регистр.ОстаткиТоваров.ЦенаП;
|Функция КоличествоКонОст = КонОст(Количество);
|Функция ЦенаРПоГруппе = Сумма(ЦенаР);
// |Функция ЦенаППоГруппе = Сумма(ЦенаП);
|Группировка Товар;
|Группировка Склад;
|Условие (Товар в ВыбрТоварГруппа);
|Условие (Склад в ВыбрСклад);
|";
Если ПустоеЗначение(ДатаКон)=1 Тогда
пЗаголовок1="на "+ТекущаяДата()+" г.включительно";
КонецЕсли;
Если ПустоеЗначение(ДатаКон)=0 Тогда
пЗаголовок1="на "+ДатаКон+" г. включительно";
КонецЕсли;
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
Таб = СоздатьОбъект("Таблица");
Если Фл_НеВыводитьСклады = 1 Тогда
Таб.ВывестиСекцию("Шапка2");
Таб.ВывестиСекцию("Заголовок2");
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Товар.ЭтоГруппа()=1 Тогда
Таб.ВывестиСекцию("Группа2");
Иначе
Таб.ВывестиСекцию("Товар2");
КонецЕсли;
КонецЦикла;
Таб.Опции(0);
Таб.Показать("ОстаткиТоваров", "");
КонецЕсли;
//********************
Если Фл_НеВыводитьСклады = 0 Тогда
Таб.ВывестиСекцию("Шапка");
Таб.ВывестиСекцию("Заголовок");
Итог=0;
Пока Запрос.Группировка(1) = 1 Цикл
Сумма=Запрос.КоличествоКонОст*Запрос.ЦенаРПоГруппе;
Если Запрос.Товар.ЭтоГруппа()=1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Итог=Итог+Сумма;
Таб.ВывестиСекцию("Товар");
КонецЕсли;
КонецЦикла;
//Таб.Опции(0);
КонецЕсли;
Таб.ВывестиСекцию("Итог");
Таб.Показать("ОстаткиТоваров", "");
КонецПроцедуры
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Уже запутался с регистрами. ЦенаР должна записываться при поступлении товара.
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиТоваров.Товар = Товар;
Регистр.ОстаткиТоваров.Склад = Склад;
Регистр.ОстаткиТоваров.Сумма=Сумма;
Регистр.ОстаткиТоваров.ЦенаР=ЦенаР;
Регистр.ОстаткиТоваров.Количество = КоличествоОтпущено;
Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
Записывается ЦенаР в регистр ОстаткиТоваров.. А в других регистрах убрать ЦенаР?
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиТоваров.Товар = Товар;
Регистр.ОстаткиТоваров.Склад = Склад;
Регистр.ОстаткиТоваров.Сумма=Сумма;
Регистр.ОстаткиТоваров.ЦенаР=ЦенаР;
Регистр.ОстаткиТоваров.Количество = КоличествоОтпущено;
Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();
Записывается ЦенаР в регистр ОстаткиТоваров.. А в других регистрах убрать ЦенаР?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот