Пересчитать количество,после удаления области в отчете
Нужно пересчитать поле Потребности и запасы.
Сейчас вот так:
-Мат1 10
-Пленка 5
-белая 1
-черная 0
-красная 0
Помогите пожалуйста..
Сейчас вот так:
-Мат1 10
-Пленка 5
-белая 1
-черная 0
-красная 0
Помогите пожалуйста..
Процедура ВывестиГруппировкуПечать(ВхМакет, ВхЗапрВыб, ВхТипГр, ВхНомГр, ВхТаблГр, ВхУровень, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику = Неопределено)
_ДнейВМесяце = 30;
_ИмяСекции = ?(ВхТипГр = "Строки", "Гр" + ВхУровень, "ГрИтоги");
_ИмяГр = ВхТаблГр[ВхНомГр].ИмяИзмерения;
_ВыводитьИтогиПоГруппировке = ВхТаблГр[ВхНомГр].ВыводитьИтоги;
_ТипИзмерения = ВхТаблГр[ВхНомГр].ТипИзмерения;
_КолЗаказать = 1;
Пока ВхЗапрВыб.Следующий() Цикл
// "_ИмяСекции|Начало"
Если ВхТипГр = "Итоги" Тогда
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
ВхТаблДок.Вывести(Область, ВхУровень);
Иначе
_ЗначениеГр = ВхЗапрВыб[_ИмяГр];// значение группировки по имени
Если ВхНомГр = (ВхТаблГр.Количество() - 1) И _ИмяГр = "ВариантИсполнения" Тогда// последняя группировка ("ВариантИсполнения")
Если глПустоеЗначение(_ЗначениеГр) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
Если ТипЗнч(_ЗначениеГр) = Тип("СправочникСсылка.Номенклатура") Тогда
Если _ЗначениеГр.ЭтоГруппа Тогда
Область.Параметры.ЗначениеГрСтр = ВРЕГ(глНоменклатураСтр(_ЗначениеГр));
Иначе
Область.Параметры.ЗначениеГрСтр = глНоменклатураСтр(_ЗначениеГр, Ложь) + ", " + _ЗначениеГр[ИспользуемыеЕдиницыИзмерения];
// для номенклатуры (элементов -> итоги будем выводить при условии, что тип измерения выбран как "Иерархия")
Если _ТипИзмерения = ТипИзмеренияПостроителяОтчета.Иерархия Тогда
_ВыводитьИтогиПоГруппировке = Истина;
КонецЕсли;
КонецЕсли;
Иначе
Область.Параметры.ЗначениеГрСтр = _ЗначениеГр;
КонецЕсли;
Область.Параметры.Расшифровка = _ЗначениеГр;
ВхТаблДок.Вывести(Область, ВхУровень);
КонецЕсли;
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|ВертикальныйРазделитель1");
ВхТаблДок.Присоединить(Область);
// расшифровки работают только для группировок "Номенклатура" и "ВариантИсполнения"
Если _ИмяГр = "Номенклатура" Тогда
_Номенклатура = _ЗначениеГр;
_ВариантИсполнения = Справочники.ВариантыИсполнения.ПустаяСсылка();
_ОснПоставщик = ?(ГруппироватьПоОснПоставщику, ВхЗапрВыб.ОснПоставщик, Неопределено);
ИначеЕсли _ИмяГр = "ВариантИсполнения" Тогда
_Номенклатура = _ЗначениеГр.Владелец;
_ВариантИсполнения = _ЗначениеГр;
_ОснПоставщик = ?(ГруппироватьПоОснПоставщику, ВхЗапрВыб.ОснПоставщик, Неопределено);
КонецЕсли;
_ЕдИзм = ?(_Номенклатура = Неопределено, Неопределено, _Номенклатура[ИспользуемыеЕдиницыИзмерения]);
Если _ИмяГр = "Номенклатура"
И НЕ _Номенклатура.ЭтоГруппа
И НЕ _Номенклатура.РазрешитьНесколькоВариантовИсполнения Тогда
_ВариантИсполненияНоменклатуры = _Номенклатура.ОсновнойВариантИсполнения;
КонецЕсли;
Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
ИЛИ _ИмяГр = "ВариантИсполнения" Тогда
//Область.Параметры.СрокПоставки = ВхЗапрВыб.СрокПоставкиДней;
_ТочкаЗаказа = ВхЗапрВыб.КолРасходЗаДень * ВхЗапрВыб.СрокПоставкиДней + ВхЗапрВыб.КолМинОстаток;
//Область.Параметры.ТочкаЗаказа = _ТочкаЗаказа;
_МинЗаказ = ВхЗапрВыб.КолРасходЗаДень * ВхЗапрВыб.СрокПоставкиДней + (_ТочкаЗаказа - ВхЗапрВыб.КолОстаток);
Если _МинЗаказ < 0 Тогда
_МинЗаказ = 0;
КонецЕсли;
//Область.Параметры.МинЗаказ = _МинЗаказ;
КонецЕсли;
_КолВидовВыводимыхПотребностей = 0 + АнализВнешнейПотребности + АнализПотребностиПроизводства + АнализВнутреннейПотребности;
Если АнализВнешнейПотребности Тогда
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + ?(_КолВидовВыводимыхПотребностей > 1, "|Потребности", "|Потребность"));
Область.Параметры.КолПотребность = ?(_ВыводитьИтогиПоГруппировке, ВхЗапрВыб.КолПотребностьВнешнаяя, 0);
Если _ИмяГр = "Номенклатура" ИЛИ _ИмяГр = "ВариантИсполнения" Тогда
Область.Параметры.КолПотребностьРасшифровка = Новый Структура("ТипРасшифровки, Номенклатура, ВариантИсполнения", "ВнешняяПотребность", _Номенклатура, _ВариантИсполнения);
КонецЕсли;
ВхТаблДок.Присоединить(Область);
КонецЕсли;
Если АнализПотребностиПроизводства Тогда
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + ?(_КолВидовВыводимыхПотребностей > 1, "|Потребности", "|Потребность"));
Область.Параметры.КолПотребность = ?(_ВыводитьИтогиПоГруппировке, ВхЗапрВыб.КолПотребностьПроизводства, 0);
Если _ИмяГр = "Номенклатура" ИЛИ _ИмяГр = "ВариантИсполнения" Тогда
Область.Параметры.КолПотребностьРасшифровка = Новый Структура("ТипРасшифровки, Номенклатура, ВариантИсполнения", "ПотребностьПроизводства", _Номенклатура, _ВариантИсполнения);
КонецЕсли;
ВхТаблДок.Присоединить(Область);
КонецЕсли;
Если АнализВнутреннейПотребности Тогда
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + ?(_КолВидовВыводимыхПотребностей > 1, "|Потребности", "|Потребность"));
Область.Параметры.КолПотребность = ?(_ВыводитьИтогиПоГруппировке, ВхЗапрВыб.КолПотребностьВнутренняя, 0);
Если _ИмяГр = "Номенклатура" ИЛИ _ИмяГр = "ВариантИсполнения" Тогда
Область.Параметры.КолПотребностьРасшифровка = Новый Структура("ТипРасшифровки, Номенклатура, ВариантИсполнения", "ПотребностьВнутренняя", _Номенклатура, _ВариантИсполнения);
КонецЕсли;
ВхТаблДок.Присоединить(Область);
КонецЕсли;
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|ВертикальныйРазделитель1");
ВхТаблДок.Присоединить(Область);
// "_ИмяСекции|Запасы"
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Запасы");
Область.Параметры.КолОстаток = ?(_ВыводитьИтогиПоГруппировке, ВхЗапрВыб.КолОстаток, 0);
ВхТаблДок.Присоединить(Область);
Если НЕ ТолькоУтвержденныеЗаказыОбеспечение Тогда
// "_ИмяСекции|ИтогоЗаказ"
_КолЗаказать = 0;
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|ИтогоЗаказ");
Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
ИЛИ _ИмяГр = "ВариантИсполнения" Тогда
_КолДефицит = -ВхЗапрВыб.КолПрофицит;
Если // Заготовки раскроя в производство не заказываем, т.к. не поддерживается ввод заказов на резку
(Есть.Раскрой()
И _Номенклатура.ОснСпособВоспроизводства = Перечисления.СпособыВоспроизводства.Производство
И _Номенклатура.НоменклатурнаяГруппа.ЯвляетсяВыходомРаскроя
)
//автозапускаемые позиции запускаются обработкой запуск заказа в производство
ИЛИ (_ИмяГр = "Номенклатура"//номенклатура с единственным вариантом (автозапускаемым в производство)
И _Номенклатура.ОснСпособВоспроизводства = Перечисления.СпособыВоспроизводства.Производство
И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
И _ВариантИсполненияНоменклатуры.АвтоЗапускВПроизводство
)
ИЛИ (_ИмяГр = "ВариантИсполнения"//автозапускаемый в производство вариант исполнения
И _Номенклатура.ОснСпособВоспроизводства = Перечисления.СпособыВоспроизводства.Производство
И _ВариантИсполнения.АвтоЗапускВПроизводство
) Тогда
_КолЗаказать = 0;
Иначе
Если _МинЗаказ > 0 ИЛИ _КолДефицит > 0 Тогда
_КолЗаказать = Макс(_МинЗаказ, _КолДефицит,ВхЗапрВыб.НормаПополнения);
КонецЕсли;
Если _КолЗаказать > 0 И ВхЗапрВыб.МинПартияЗакупки > 0 Тогда
_КолЗаказать = Окр((_КолЗаказать/ВхЗапрВыб.МинПартияЗакупки)+0.5)*ВхЗапрВыб.МинПартияЗакупки;
КонецЕсли;
КонецЕсли;
// точность количества материалов в производстве равна 6 знакам, а заказать можно только с точностью в 3 знака
Если Окр(_КолЗаказать, 3) < _КолЗаказать Тогда
_КолЗаказать = Окр(_КолЗаказать, 3) + 0.001;
КонецЕсли;
Область.Параметры.НормаПополнения = ВхЗапрВыб.НормаПополнения;
Область.Параметры.КолЗаказать = _КолЗаказать;
КонецЕсли;
ВхТаблДок.Присоединить(Область);
КонецЕсли;
УдаляемаяОбласть = ВхТаблДок.Область(ВхТаблДок.ВысотаТаблицы-Область.ВысотаТаблицы+1,,ВхТаблДок.ВысотаТаблицы,);
СтараяВысота = ВхТаблДок.ВысотаТаблицы;
// вывод след. группировки
Если ВхЗапрВыб.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
_ЗапрВыб = ВхЗапрВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, ВхТаблГр[ВхНомГр].ИмяИзмерения);
ВывестиГруппировкуПечать(ВхМакет, _ЗапрВыб, "Строки", ВхТаблГр, ВхТаблГр, ВхУровень + 1, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику);
Если ВхТаблДок.ВысотаТаблицы = СтараяВысота Тогда
ВхТаблДок.УдалитьОбласть(УдаляемаяОбласть , ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
Иначе
Если _ИмяГр = "Номенклатура" И НЕ _Номенклатура.РазрешитьНесколькоВариантовИсполнения Тогда
Если _КолЗаказать=0 тогда
ВхТаблДок.УдалитьОбласть(УдаляемаяОбласть , ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
Продолжить;
КонецЕсли;
Если ВхНомГр + 1 < ВхТаблГр.Количество() Тогда
_ЗапрВыб = ВхЗапрВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, ВхТаблГр[ВхНомГр + 1].ИмяИзмерения);// имя след. группировки
ВывестиГруппировкуПечать(ВхМакет, _ЗапрВыб, "Строки", ВхНомГр + 1, ВхТаблГр, ВхУровень + 1, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику);
Если ВхТаблДок.ВысотаТаблицы = СтараяВысота Тогда
ВхТаблДок.УдалитьОбласть(УдаляемаяОбласть , ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
ИначеЕсли _КолЗаказать=0 тогда
ВхТаблДок.УдалитьОбласть(УдаляемаяОбласть , ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- 1С:Управление Холдингом 8, часть 2: Организация процесса закупок в холдинге (настройка системы и управление мастер-данными)
- Конфигурация Flowcon
- Ввод остатков НЗП в 1С:ERP Управление предприятием
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
у вас вообще какая-то каша получается
Материалов = 10
хотя Пленок = 5
в которые входит только Белая = 1
и по примеру столбиком сразу не сообразишь что из чего состоит
Надо все переделывать.
для оптимального отслеживания/анализа результата, используйте консоль запросов, там очень удобно строить запросы и тут же проверять результат
Материалов = 10
хотя Пленок = 5
в которые входит только Белая = 1
и по примеру столбиком сразу не сообразишь что из чего состоит
Надо все переделывать.
для оптимального отслеживания/анализа результата, используйте консоль запросов, там очень удобно строить запросы и тут же проверять результат
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот