Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Здравствуйте. При создании своего отчета на СКД при подчинении нескольких группировок одной
возникает проблема - во второй группировке результат сдвигается и выводится справа от первой группировки, а не в своих колонках отчета:
Обе группировки промакетированы. С чем может быть связано такое поведение СКД?
возникает проблема - во второй группировке результат сдвигается и выводится справа от первой группировки, а не в своих колонках отчета:
Обе группировки промакетированы. С чем может быть связано такое поведение СКД?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) vovan_victory, на данный момент кусок кода, отвечающий за создание группировок, выглядит так:
Результат не изменяется, сумма стоит на своем месте, все остальное сдвинуто. Можете уточнить, как это разгруппировать ячейки предыдущей группировки и назначить новые? Ведь мы делаем группировки в компоновщике настроек, еще до поступления в компоновщик макета.
//добавим группировки в компоновщик настроек
Настройки.Структура.Очистить();
ГруппировкаСкладТанкер = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаСкладТанкер.Имя = "СкладТанкер";
ГруппировкаСкладТанкер.Использование = Истина;
ПолеГруппировкиСклад = ГруппировкаСкладТанкер.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировкиСклад.Использование = Истина;
ПолеГруппировкиСклад.Поле = Новый ПолеКомпоновкиДанных("СкладТанкер");
ВыбранноеПоле = ГруппировкаСкладТанкер.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СкладТанкер");
ВыбранноеПоле.Использование = Истина;
ГруппировкаНачальныеОстатки = ГруппировкаСкладТанкер.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаНачальныеОстатки.Имя = "НачальныеОстатки";
ГруппировкаНачальныеОстатки.Использование = Истина;
ПолеГруппировкиНоменклатура = ГруппировкаНачальныеОстатки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировкиНоменклатура.Использование = Истина;
ПолеГруппировкиНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоТоннНеттоНачальныйОстаток");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоТоннБруттоНачальныйОстаток");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоБаррелейНеттоНачальныйОстаток");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоБаррелейБруттоНачальныйОстаток");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоНачальныйОстаток");
ВыбранноеПоле = ГруппировкаНачальныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СуммаНачОст");
ГруппировкаКонечныеОстатки = ГруппировкаСкладТанкер.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ГруппировкаКонечныеОстатки.Имя = "КонечныеОстатки";
ГруппировкаКонечныеОстатки.Использование = Истина;
ПолеГруппировкиНоменклатура = ГруппировкаКонечныеОстатки.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировкиНоменклатура.Использование = Истина;
ПолеГруппировкиНоменклатура.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоТоннНеттоКонечныйОстаток");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоТоннБруттоКонечныйОстаток");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоБаррелейНеттоКонечныйОстаток");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоБаррелейБруттоКонечныйОстаток");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоКонечныйОстаток");
ВыбранноеПоле = ГруппировкаКонечныеОстатки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СуммаНачОст");
ПоказатьРезультат не изменяется, сумма стоит на своем месте, все остальное сдвинуто. Можете уточнить, как это разгруппировать ячейки предыдущей группировки и назначить новые? Ведь мы делаем группировки в компоновщике настроек, еще до поступления в компоновщик макета.
Мне кажется, что дело вовсе не в группировках. С макетом что-то не то. Вон даже на картинке видно, что сдвинуты строки группировки по конечному остатку. Вот их макет и нужно смотреть. Может там объединения неудачные или просто банально смещено. Или везде макет есть, а для этой группировки для строк его нету.
(6) Euroset1, Макеты для обеих группировок выглядят одинаково, различаются только параметры:
Вообще в отчете 3 группировки, посередине должна быть группировка "Обороты". Отключил ее вывод для простоты восприятия, но когда она включена, обороты выводятся со сдвигом на ширину начальных остатков, а конечные остатки сдвигаются еще правее на ширину оборотов.
Вообще в отчете 3 группировки, посередине должна быть группировка "Обороты". Отключил ее вывод для простоты восприятия, но когда она включена, обороты выводятся со сдвигом на ширину начальных остатков, а конечные остатки сдвигаются еще правее на ширину оборотов.
(7) 1C_MApteka, может я параноик, но 19 строка на скрине отличается от 3 строки и от всех вообще. Там не видно справа границ у ячейки. Попробуй скопировать 3ю строку целиком, вставить на 19ю и переписать вручную начальный на конечный. Ну или убрать объекдинение ячеек и поставить его как у других строк.
(9) 1C_MApteka, что-то я туплю, надо было сразу тебе на это указать.
Короче... у тебя там ресурсы разные. Они даже в теории не должны встать на одну линию. Как СКД должно понять, что сумма начальная и сумма конечная - одно и то же.
смотри, у тебя для ресурсов заголовки расставлены в макете? ага. а сами ресурсы? фигу. я точно параноик, но это макет полюбому. иного не дано.
и вообще странно, что у тебя заголовки ресурсов на первом скрине непустые. потому что судя по макету ты в заголовки запихнул ячейки, предназначенные для строк ресурсов
Короче... у тебя там ресурсы разные. Они даже в теории не должны встать на одну линию. Как СКД должно понять, что сумма начальная и сумма конечная - одно и то же.
смотри, у тебя для ресурсов заголовки расставлены в макете? ага. а сами ресурсы? фигу. я точно параноик, но это макет полюбому. иного не дано.
и вообще странно, что у тебя заголовки ресурсов на первом скрине непустые. потому что судя по макету ты в заголовки запихнул ячейки, предназначенные для строк ресурсов
(11) 1C_MApteka, я не совсем в теме, как они правильно называются, но вижу явный разрез логики в твоем макете. Тебе либо макет допилить (и перепроверить желательно, может я еще что упустил), либо названия ресурсов привести к единому названию. Я же тебе говорю, СКД видит, что у тебя ресурсы разные по названию и потому не может их поставить на одну линию. Макет решает твои проблемы, если ты укажешь корректные позиции не только для заголовков, но и для самих строк.
Кстати есть еще вариант попробовать. Заголовки ресурсов убираешь вообще из макетов. а номенклатуру продляешь до тех позиций, на которых кончались они. т.е. номенклатурам отдай эти ячейки. и наверное это сработает.
и еще проверь чтобы эти номенклатуры были правильно разведены по именам каждая к своей группировке. в макете у каждой из них должно быть имя и оно же в группировках. если ты заполняешь компоновщик программно, то значит при создании группировок номенклатуры ты должен эти имена тоже там задать (если не программно, то имена можно задать группировкам только в конфигураторе. потому что на клиенте в редактировании варианта они безликие, хоть за кадром и могут иметь имена)
Кстати есть еще вариант попробовать. Заголовки ресурсов убираешь вообще из макетов. а номенклатуру продляешь до тех позиций, на которых кончались они. т.е. номенклатурам отдай эти ячейки. и наверное это сработает.
и еще проверь чтобы эти номенклатуры были правильно разведены по именам каждая к своей группировке. в макете у каждой из них должно быть имя и оно же в группировках. если ты заполняешь компоновщик программно, то значит при создании группировок номенклатуры ты должен эти имена тоже там задать (если не программно, то имена можно задать группировкам только в конфигураторе. потому что на клиенте в редактировании варианта они безликие, хоть за кадром и могут иметь имена)
Да, точно, пробуй как я тебе написал. убирай заголовки ресурсов нафиг из макетов, а эти ячейки отдавай сполна номенклатурным группировками - просто продляй их вправо. И разведи грамотно по именам, чтобы СКД знало, какой макет по номенклатуре какой из группировок выдать.
Должно сработать. А если уж не сработает (если все правильно сделаешь, то и так сработает), тогда способ номер два - в запросе объединить начальный и конечный остаток\сумму
и прочее в один набор колонок с едиными именами. Но при этом тебе нужно будет реквизит-флаг добавить, чтобы отличать строки со значением по начальной и по конечной между собой. И в группировках по номенклатуре ставишь фильтры на этот флаг, естественно на каждую свой. И тогда с текущим макетом у тебя все сработает, но.... этот способ фуфлыжный и он только на крайняк.
Должно сработать. А если уж не сработает (если все правильно сделаешь, то и так сработает), тогда способ номер два - в запросе объединить начальный и конечный остаток\сумму
и прочее в один набор колонок с едиными именами. Но при этом тебе нужно будет реквизит-флаг добавить, чтобы отличать строки со значением по начальной и по конечной между собой. И в группировках по номенклатуре ставишь фильтры на этот флаг, естественно на каждую свой. И тогда с текущим макетом у тебя все сработает, но.... этот способ фуфлыжный и он только на крайняк.
На картинке я изобразил ситуацию так, как я ее понял
Если это так,то это получается из-за того, что рано удалили не нужную колонку.Алгоритм должен быть такой:
1. Разгруппировать группировку месяц(это я по картинке ориентируюсь). Группировка месяц находится на второй строке.
2. Удаляем колонку 2. Диапазон колонки R2C2:R3C2. Получили эту область, область удалить
3. Заново группируем группировку месяц.
Суммы у Вас съехали(ИМХО) по тому, что Вы удалили со сдвигом колонку R3C2.В итоге, в строке 3 колонка 2 удалена и произошел сдвиг по строке, а строка 2 осталась без изменений.
Я на простой картинке попытался показать что у Вас могло приключиться(ИМХО)
Если это так,то это получается из-за того, что рано удалили не нужную колонку.Алгоритм должен быть такой:
1. Разгруппировать группировку месяц(это я по картинке ориентируюсь). Группировка месяц находится на второй строке.
2. Удаляем колонку 2. Диапазон колонки R2C2:R3C2. Получили эту область, область удалить
3. Заново группируем группировку месяц.
Суммы у Вас съехали(ИМХО) по тому, что Вы удалили со сдвигом колонку R3C2.В итоге, в строке 3 колонка 2 удалена и произошел сдвиг по строке, а строка 2 осталась без изменений.
Я на простой картинке попытался показать что у Вас могло приключиться(ИМХО)
Прикрепленные файлы:
(14) vovan_victory, сдвиг колонок в результате происходит из-за того, что две подряд идущие группировки имеют разные имена ресурсов, а макет под их строки, соответствующий им, не найдет. И точка. Тут хоть сто раз перегруппировывай - результат не изменится. Как только конечные остатки и прочее подтянутся под макет - они встанут куда надо.
Предлагаю не путать данные и макет+вывод. Корректность данных - это уже задача иная.
Предлагаю не путать данные и макет+вывод. Корректность данных - это уже задача иная.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот