НоменклатурнаяГруппа.Родитель.Родитель
Всем доброе время суток!
Есть самописный отчёт. Сейчас выводятся только Номенклатурная группа и делается группировка по ней.
Но необходимо к этому коду добавить вывод группировки сперва по НоменклатурнаяГруппа.Родитель.Родитель, а после НоменклатурнаяГруппа.Родитель и толькллишь потом НоменклатурнаяГруппа и под ней номенклатура. Собственно как это реализовать в этом куске кода? :
Вроде задача простая, но уже перепробовал все варианты. Помогите!
Есть самописный отчёт. Сейчас выводятся только Номенклатурная группа и делается группировка по ней.
Но необходимо к этому коду добавить вывод группировки сперва по НоменклатурнаяГруппа.Родитель.Родитель, а после НоменклатурнаяГруппа.Родитель и толькллишь потом НоменклатурнаяГруппа и под ней номенклатура. Собственно как это реализовать в этом куске кода? :
ТаблицаСтроки = ТаблицаСводная.Скопировать();
ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа, Номенклатура");
ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, Номенклатура");
ТекущаяГруппа = Неопределено;
Для Каждого Строка из ТаблицаСтроки Цикл
//группировка по группам номенклатуры
Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
Если ТекущаяГруппа <> Неопределено Тогда
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
Область= Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
ТабДокумент.Вывести(Область);
Для Каждого Колонка из ТаблицаКолонок Цикл
Область = Макет.ПолучитьОбласть("Группа|Склад");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
ПараметрыОтбора.Вставить("Склад",Колонка["Склад"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
КоличествоСвободныйОстаток = 0;
КоличествоВРезерве = 0;
КоличествоНоваяМарка = 0;
КоличествоСтараяМарка = 0;
КоличествоПартионно = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
КоличествоСвободныйОстаток = КоличествоСвободныйОстаток + НайденнаяСтрока["СвободныйОстаток"];
КоличествоВРезерве = КоличествоВРезерве + НайденнаяСтрока["КоличествоВРезерве"];
КоличествоНоваяМарка = КоличествоНоваяМарка + НайденнаяСтрока["КоличествоПоштучно2"];
КоличествоСтараяМарка = КоличествоСтараяМарка + НайденнаяСтрока["КоличествоПоштучно"];
КоличествоПартионно = КоличествоПартионно + НайденнаяСтрока["КоличествоПартионно"];
КонецЦикла;
Область.Параметры.ГруппаСвободныйОстаток = КоличествоСвободныйОстаток;
Область.Параметры.ГруппаРезервы = КоличествоВРезерве;
Область.Параметры.ГруппаНоваяМарка = КоличествоНоваяМарка;
Область.Параметры.ГруппаСтараяМарка = КоличествоСтараяМарка;
Область.Параметры.ГруппаПартионно = КоличествоПартионно;
КонецЕсли;
Иначе
Область.Параметры.ГруппаСвободныйОстаток = 0;
Область.Параметры.ГруппаРезервы = 0;
Область.Параметры.ГруппаНоваяМарка = 0;
Область.Параметры.ГруппаСтараяМарка = 0;
Область.Параметры.ГруппаПартионно = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
КонецЦикла;
// группа итог
Область = Макет.ПолучитьОбласть("Группа|Итог");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
КоличествоОстаток = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];
КонецЦикла;
Область.Параметры.ГруппаИтогоОбщийОстаток = КоличествоОстаток;
Иначе
Область.Параметры.ГруппаИтогоОбщийОстаток = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
КонецЕсли;
ПоказатьВроде задача простая, но уже перепробовал все варианты. Помогите!
Прикрепленные файлы:
Найденные решения
(37) Если у вас в конфигурации есть справочник Номенклатура - просто попробуйте выполнить отчет.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).
Выбирайте.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).
Выбирайте.
Прикрепленные файлы:
Infostart_Topic246007.epf
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(3) в исходной таблице эти поля (НоменклатурнаяГруппа.Родитель.Родитель,НоменклатурнаяГруппа.Родитель ) есть ?
если нет, то надо добавить
- заменить с учетом доп полей
если нет, то надо добавить
ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа, Номенклатура");
ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, Номенклатура");
(4) Так тоже пытался. Имеете ввиду так ?:
Я не понимаю как в циикле корректно это обходить потом... А именно открывать и закрывать группировку строк. Выходит полная ересь..
ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель, Номенклатура");
ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа, НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель,Номенклатура");
Я не понимаю как в циикле корректно это обходить потом... А именно открывать и закрывать группировку строк. Выходит полная ересь..
(6)Не совсем понимаю Вас. То есть надо сделать три сводные таблицы и каждую отсортировать?
А после поверх моего существующего цикла сделать обход по первой и второй ?
Вот сократил группировку. Можно на конкретно этом куске ?
А после поверх моего существующего цикла сделать обход по первой и второй ?
Для Каждого Строка из ТаблицаСтроки Цикл
//группировка по группам номенклатуры
Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
Если ТекущаяГруппа <> Неопределено Тогда
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
Область= Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
ТабДокумент.Вывести(Область);
ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
КонецЕсли;
КонецЦикла;
ПоказатьВот сократил группировку. Можно на конкретно этом куске ?
(9)
Прям так ? И на основании моего кода в начале необходимо добавить Подгруппа = Неопределено и Подгруппа2 = Неопределенно и делать соответствующе такие же махинации ? И в какой момент делать начатьгруппировку строк..
Для каждого Строка Из ТаблицаСводная Цикл
Для каждого Строка Из ТаблицаСводная Цикл
Для каждого Строка из ТаблицаСводная Цикл
конеццикла;
конеццикла;
конеццикла;
Прям так ? И на основании моего кода в начале необходимо добавить Подгруппа = Неопределено и Подгруппа2 = Неопределенно и делать соответствующе такие же махинации ? И в какой момент делать начатьгруппировку строк..
(10) как-то так
РодительРодитель = Неопределено;
Для Каждого СтрокаТЗ из ТЗ
Если РодительРодитель <> СтрокаТЗ.РодительРодитель Тогда
Если РодительРодитель = Неопределено Тогда
// Первый раз в РодительРодитель
// Начать группировку РодительРодитель
Иначе
// Закончить группировку РодительРодитель
КонецЕсли
РодительРодитель = СтрокаТЗ.РодительРодитель;
КонецЕсли;
Пока РодительРодитель = СтрокаТЗ.РодительРодитель Цикл
Родитель = Неопределено;
Если Родитель <> СтрокаТЗ.Родитель Тогда
Если Родитель = Неопределено Тогда
// Первый раз в Родитель
// Начать группировку Родитель
Иначе
// Закончить группировку Родитель
КонецЕсли
Родитель = СтрокаТЗ.Родитель;
КонецЕсли;
Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл
// Вывод детальных записей
КонецЦикла
КонецЦикла
КонецЦикла
// Закончить группировку Родитель
// Закончить группировку РодительРодитель
// Общие итоги
Показать
(11) Добавил в детальные записи свой кусок кода.
Бессконечный цикл какой то получился. В условие "Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл" попадает без останвки.
Полагаю так как у первых двуух строк в моей ТЗ отсуствует напрочь номенклатурная группа. Как быть ?
Бессконечный цикл какой то получился. В условие "Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл" попадает без останвки.
Полагаю так как у первых двуух строк в моей ТЗ отсуствует напрочь номенклатурная группа. Как быть ?
(19) Циклы поменял.
РодительРодитель = Неопределено;
ИндексСтроки = 0;
ПоследняяСтрока = ТЗ.Количество()-1;
СтрокаТЗ = ТЗ [ИндексСтроки];
Пока Истина Цикл
Если РодительРодитель <> СтрокаТЗ.РодительРодитель Тогда
Если РодительРодитель = Неопределено Тогда
// Первый раз в РодительРодитель
// Начать группировку РодительРодитель
Иначе
// Закончить группировку РодительРодитель
КонецЕсли
РодительРодитель = СтрокаТЗ.РодительРодитель;
КонецЕсли;
Пока РодительРодитель = СтрокаТЗ.РодительРодитель Цикл
Родитель = Неопределено;
Если Родитель <> СтрокаТЗ.Родитель Тогда
Если Родитель = Неопределено Тогда
// Первый раз в Родитель
// Начать группировку Родитель
Иначе
// Закончить группировку Родитель
КонецЕсли
Родитель = СтрокаТЗ.Родитель;
КонецЕсли;
Пока (РодительРодитель = СтрокаТЗ.РодительРодитель) И (Родитель = СтрокаТЗ.Родитель) Цикл
// Вывод детальных записей
ИндексСтроки = ИндексСтроки + 1;
Если ИндексСтроки > ИндексПоследнейСтроки Тогда
Прервать;
Иначе
СтрокаТЗ = ТЗ [ИндексСтроки];
КонецЕсли;
КонецЦикла
Если ИндексСтроки > ИндексПоследнейСтроки Тогда
Прервать;
КонецЕсли;
КонецЦикла
Если ИндексСтроки > ИндексПоследнейСтроки Тогда
Прервать;
КонецЕсли;
КонецЦикла
Показать
(26) Я сдаюсь. Помогите. Пытаюсь хотя бы по первому родителю сгруппировать. Идёт всё по порядку как надо. Но группировка только детальная делается.. Где мой косяк ?:
ТаблицаСтроки = ТаблицаСводная.Скопировать();
ТаблицаСтроки.Свернуть("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель, Номенклатура");
ТаблицаСтроки.Сортировать("НоменклатурнаяГруппа,НоменклатурнаяГруппаРодитель,НоменклатурнаяГруппаРодительРодитель,Номенклатура");
ТекущаяГруппа = Неопределено;
Родитель = Неопределено;
ИндексСтрока = 0;
ИндексПоследнейСтроки = ТаблицаСтроки.Количество()-1;
Строка = ТаблицаСтроки[ИндексПоследнейСтроки];
Пока Истина Цикл
Если Родитель <> Строка["НоменклатурнаяГруппаРодительРодитель"] Тогда
Если Родитель <> Неопределено Тогда
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
Родитель = Строка["НоменклатурнаяГруппаРодительРодитель"];
Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(Родитель);
ТабДокумент.Вывести(Область);
ТабДокумент.НачатьГруппуСтрок(СокрЛП(Родитель));
КонецЕсли;
Пока Родитель = Строка.НоменклатурнаяГруппаРодительРодитель Цикл
//группировка по группам номенклатуры
Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
Если ТекущаяГруппа <> Неопределено Тогда
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
ТабДокумент.Вывести(Область);
ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
КонецЕсли;
//наименование товара
Область = Макет.ПолучитьОбласть("Строка|Номенклатура");
Область.Параметры.Номенклатура = Строка["Номенклатура"];
Область.Параметры.Артикул = Строка["Номенклатура"].Артикул;
ТабДокумент.Вывести(Область);
ИндексСтрока = ИндексСтрока +1;
Если ИндексСтрока > ИндексПоследнейСтроки Тогда
Прервать;
Иначе
Строка = ТаблицаСтроки[ИндексСтрока];
КонецЕсли;
КонецЦикла;
Если ИндексСтрока > ИндексПоследнейСтроки Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Показать
(35) Код актуальный в (28). Только в конце два раза закрыта группировка после цикла.
Что вылазит на печатной форме прикрепил картинкой. На строке 12, 13, 15 где пробелы как раз мой Родитель. Но группировки по нему нету..
Если убрать после цикла закрывание группировок, то в строке 9 просто уберётся группировка. Собственно она мне и не нужна,а нужна только где пробелы ( Родитель)
В таблице строки данные тоже верны и идут по порядку.
Дело в коде..
Что вылазит на печатной форме прикрепил картинкой. На строке 12, 13, 15 где пробелы как раз мой Родитель. Но группировки по нему нету..
Если убрать после цикла закрывание группировок, то в строке 9 просто уберётся группировка. Собственно она мне и не нужна,а нужна только где пробелы ( Родитель)
В таблице строки данные тоже верны и идут по порядку.
Дело в коде..
Прикрепленные файлы:
(37) Если у вас в конфигурации есть справочник Номенклатура - просто попробуйте выполнить отчет.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).
Выбирайте.
На форме 2 кнопки: _ваш_ вариант кода (с извращениями)
и ПРАВИЛЬНЫЙ, который _сразу_ предлагался в (7).
Выбирайте.
Прикрепленные файлы:
Infostart_Topic246007.epf
(38Посмотрел. У вас предоставляется выбор РодительРодитель лишь одного!
В моей же ТЗ РодительРодитель меняется.
В итоге в коде "ВашВариант" когда строка попадает с другим РодительРодитель происходит бессконечный цикл. Как исправить??!
Тоесть в начало цикла где условие на РодительРодитель не попадает, подскажите.
Первый вариант не стал делать, так как отчёт не мой и не особо хочется менять всё полностью. А так да, я бы сделал через выборку ПоГруппорвкам.
В моей же ТЗ РодительРодитель меняется.
В итоге в коде "ВашВариант" когда строка попадает с другим РодительРодитель происходит бессконечный цикл. Как исправить??!
Тоесть в начало цикла где условие на РодительРодитель не попадает, подскажите.
Первый вариант не стал делать, так как отчёт не мой и не особо хочется менять всё полностью. А так да, я бы сделал через выборку ПоГруппорвкам.
я бы деал _совсем_ не так.
1. в ТЗ ТаблицаСводная добавить колонки Родитель и РодительРодитель и заполнить их.
2. Зарос к полученной ТЗ.
3. На основании выборки - заполнять макет.
КМК, В вашем коде не хватает ещё одного вложенного цикла по РодительРодитель
1. в ТЗ ТаблицаСводная добавить колонки Родитель и РодительРодитель и заполнить их.
2. Зарос к полученной ТЗ.
3. На основании выборки - заполнять макет.
КМК, В вашем коде не хватает ещё одного вложенного цикла по РодительРодитель
(16) Однозначно дело в коде:
ТекущаяГруппа = Неопределено;
РодительРодитель = Неопределено;
Для Каждого Строка из ТаблицаСтроки Цикл
//группировку по родителю
Если РодительРодитель <> Строка.НоменклатурнаяГруппаРодительРодитель Тогда
Если РодительРодитель = Неопределено Тогда
ТабДокумент.НачатьГруппуСтрок(СокрЛП(РодительРодитель));
Иначе
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель;
Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(РодительРодитель);
ТабДокумент.Вывести(Область);
КонецЕсли;
Пока РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель Цикл
Родитель = Неопределено;
Если Родитель <> Строка.НоменклатурнаяГруппаРодитель Тогда
Если Родитель = Неопределено Тогда
ТабДокумент.НачатьГруппуСтрок(СокрЛП(Родитель));
Иначе
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
Родитель = Строка.НоменклатурнаяГруппаРодитель;
Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(Родитель);
ТабДокумент.Вывести(Область);
КонецЕсли;
Пока (РодительРодитель = Строка.НоменклатурнаяГруппаРодительРодитель) И (Родитель = Строка.НоменклатурнаяГруппаРодитель) Цикл
//группировка по группам номенклатуры
Если ТекущаяГруппа <> Строка["НоменклатурнаяГруппа"] Тогда
Если ТекущаяГруппа <> Неопределено Тогда
ТабДокумент.ЗакончитьГруппуСтрок();
КонецЕсли;
ТекущаяГруппа = Строка["НоменклатурнаяГруппа"];
Область = Макет.ПолучитьОбласть("Группа|Номенклатура");
Область.Параметры.Группа = СокрЛП(ТекущаяГруппа);
ТабДокумент.Вывести(Область);
Для Каждого Колонка из ТаблицаКолонок Цикл
Область = Макет.ПолучитьОбласть("Группа|Склад");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
ПараметрыОтбора.Вставить("Склад", Колонка["Склад"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Если Колонка["Склад"] = "Склад СВХ" Тогда
КоличествоЛабаратория = 0;
КоличествоДоработка = 0;
КоличествоГотовДекларирование = 0;
КоличествоНаДекларировании = 0;
КоличествоБезстатуса = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
Если НайденнаяСтрока.Статус = "Проверка лаборатории проведена" Тогда
КоличествоЛабаратория = КоличествоЛабаратория + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
ИначеЕсли НайденнаяСтрока.Статус = "Требуется доработка" Тогда
КоличествоДоработка = КоличествоДоработка + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
ИначеЕсли НайденнаяСтрока.Статус = "Готов к декларированию" Тогда
КоличествоГотовДекларирование = КоличествоГотовДекларирование + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
ИначеЕсли НайденнаяСтрока.Статус = "Товар на декларировании" Тогда
КоличествоНаДекларировании = КоличествоНаДекларировании + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
ИначеЕсли НайденнаяСтрока.Статус = "Без статуса" Тогда
КоличествоБезстатуса = КоличествоБезстатуса + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
КонецЕсли;
КонецЦикла;
Область.Параметры.ГруппаСвободныйОстаток = КоличествоЛабаратория;
Область.Параметры.ГруппаРезервы = КоличествоДоработка;
Область.Параметры.ГруппаНоваяМарка = КоличествоГотовДекларирование;
Область.Параметры.ГруппаСтараяМарка = КоличествоНаДекларировании;
Область.Параметры.ГруппаПартионно = КоличествоБезстатуса;
Иначе
КоличествоСвободныйОстаток = 0;
КоличествоВРезерве = 0;
КоличествоНоваяМарка = 0;
КоличествоСтараяМарка = 0;
КоличествоПартионно = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
КоличествоСвободныйОстаток = КоличествоСвободныйОстаток + НайденнаяСтрока["СвободныйОстаток"];
КоличествоВРезерве = КоличествоВРезерве + НайденнаяСтрока["КоличествоВРезерве"];
КоличествоНоваяМарка = КоличествоНоваяМарка + НайденнаяСтрока["КоличествоПоштучно2"];
КоличествоСтараяМарка = КоличествоСтараяМарка + НайденнаяСтрока["КоличествоПоштучно"];
КоличествоПартионно = КоличествоПартионно + НайденнаяСтрока["КоличествоПартионно"];
КонецЦикла;
Область.Параметры.ГруппаСвободныйОстаток = КоличествоСвободныйОстаток;
Область.Параметры.ГруппаРезервы = КоличествоВРезерве;
Область.Параметры.ГруппаНоваяМарка = КоличествоНоваяМарка;
Область.Параметры.ГруппаСтараяМарка = КоличествоСтараяМарка;
Область.Параметры.ГруппаПартионно = КоличествоПартионно;
КонецЕсли;
Иначе
Область.Параметры.ГруппаСвободныйОстаток = 0;
Область.Параметры.ГруппаРезервы = 0;
Область.Параметры.ГруппаНоваяМарка = 0;
Область.Параметры.ГруппаСтараяМарка = 0;
Область.Параметры.ГруппаПартионно = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
КонецЦикла;
// группа итог
Область = Макет.ПолучитьОбласть("Группа|Итог");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Строка["НоменклатурнаяГруппа"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
КоличествоОстаток = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
Если НайденнаяСтрока.Склад = "Склад СВХ" Тогда
КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
иначе
КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];
КонецЕсли;
КонецЦикла;
Область.Параметры.ГруппаИтогоОбщийОстаток = КоличествоОстаток;
Иначе
Область.Параметры.ГруппаИтогоОбщийОстаток = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
ТабДокумент.НачатьГруппуСтрок(СокрЛП(ТекущаяГруппа));
КонецЕсли;
//наименование товара
Область = Макет.ПолучитьОбласть("Строка|Номенклатура");
Область.Параметры.Номенклатура = Строка["Номенклатура"];
Область.Параметры.Артикул = Строка["Номенклатура"].Артикул;
ТабДокумент.Вывести(Область);
////данные по складам
Для Каждого Колонка из ТаблицаКолонок Цикл
Область = Макет.ПолучитьОбласть("Строка|Склад");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Склад", Колонка["Склад"]);
ПараметрыОтбора.Вставить("Номенклатура", Строка["Номенклатура"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
Если Колонка["Склад"] = "Склад СВХ" Тогда
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
Если НайденнаяСтрока.Статус = "Проверка лаборатории проведена" Тогда
Область.Параметры.СвободныйОстаток = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
ИначеЕсли НайденнаяСтрока.Статус = "Требуется доработка" Тогда
Область.Параметры.Резервы = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
ИначеЕсли НайденнаяСтрока.Статус = "Готов к декларированию" Тогда
Область.Параметры.НоваяМарка = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
ИначеЕсли НайденнаяСтрока.Статус = "Товар на декларировании" Тогда
Область.Параметры.СтараяМарка = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
ИначеЕсли НайденнаяСтрока.Статус = "Без статуса" Тогда
Область.Параметры.Партионно = НайденнаяСтрока.КоличествоОстатокПоСтатусу;
КонецЕсли;
КонецЦикла;
иначе
Область.Параметры.СвободныйОстаток = НайденныеСтроки[0]["СвободныйОстаток"];
Область.Параметры.Резервы = НайденныеСтроки[0]["КоличествоВРезерве"];
Область.Параметры.НоваяМарка = НайденныеСтроки[0]["КоличествоПоштучно2"];
Область.Параметры.СтараяМарка = НайденныеСтроки[0]["КоличествоПоштучно"];
Область.Параметры.Партионно = НайденныеСтроки[0]["КоличествоПартионно"];
КонецЕсли;
Иначе
Область.Параметры.СвободныйОстаток = 0;
Область.Параметры.Резервы = 0;
Область.Параметры.НоваяМарка = 0;
Область.Параметры.СтараяМарка = 0;
Область.Параметры.Партионно = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
КонецЦикла;
//////итог строк
Область = Макет.ПолучитьОбласть("Строка|Итог");
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", Строка["Номенклатура"]);
НайденныеСтроки = ТаблицаСводная.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
КоличествоОстаток = 0;
Для Каждого НайденнаяСтрока из НайденныеСтроки Цикл
Если НайденнаяСтрока.Склад = "Склад СВХ" Тогда
КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстатокПоСтатусу"];
Иначе
КоличествоОстаток = КоличествоОстаток + НайденнаяСтрока["КоличествоОстаток"];
КонецЕсли;
КонецЦикла;
Область.Параметры.ИтогоОбщийОстаток = КоличествоОстаток;
Иначе
Область.Параметры.ИтогоОбщийОстаток = 0;
КонецЕсли;
ТабДокумент.Присоединить(Область);
Продолжить;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Показать
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)