Имя: Пароль:
1C
1С v8
Программная настройка СКД
0 Tornadius
 
19.05.23
05:11
Доброго дня, форумчане!

Прошу помощь зала - уперся в, с первого раза, простую задачу:
Добавить в существующий отчет еще одно поле. Отчет называется "Материальная ведомость"
Конфа "БП для Казахстана", но сути СКД не меняет.
Отдельным запросом выдернул данные и связал со старым через связь наборов в СКД,
Но все уперлось в то, что вся структура настроек в процедуре "ПередКомпановкойМакета..." очищается и заново создается программно.
Добавил код:

Таблица = КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ТаблицаКомпоновкиДанных"));
...
НоваяКолонкаОтчета = Таблица.Колонки.Добавить();
НоваяКолонкаОтчета.Использование = ПараметрыОтчета.ФМаксДата;
ПолеВыбора = НоваяКолонкаОтчета.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
ПолеВыбора.Поле = Новый ПолеКомпоновкиДанных("МаксДата");
ПолеВыбора.Использование = ПараметрыОтчета.ФМаксДата;


где:
"МаксДата" - поле -она же дата последней операции с номенклатурой в строках отчета
"ФМаксДата" - флаг выводить поле или нет.

Но колонок добавляется очень много - на каждое значение в строках,
как бы развернута получается по горизонтали а не по вертикали по строкам)

Что я делаю не так? И как правильно программно добавить колонку в отчет?
1 toypaul
 
19.05.23
07:46
нарисуй сначала что есть сейчас и что тебе нужно. а то ты в показаниях путаешься
2 Tornadius
 
19.05.23
08:36
(1) Нужно добавить в отчет который формируется программно, дополнительную колонку с датой последней операции по номенклатуре.
сам отчет выглядит стандартно: строки - "Номенклатура", Колонки - "Нач. Остаток", "Приход", "Расход", "Кон. остаток" с подколонками "Кол-во" и "Сумма"

Мне удалось добавить колонку "Дата последней операции", сделав поле "МаксДата" ресурсом, но в нее выводится только максимальное значение по всем строкам, что не правильно.
Должна выводиться для каждой номенклатуры (строки) своя максдата. и в запросе я это все получаю, а вывести в СКД не могу.
3 areaho0ray
 
19.05.23
09:06
Тебе не новая колонка нужна, а поле с этой датой добавить.
4 Tornadius
 
19.05.23
09:15
(3) Как это сделать программно?
5 toypaul
 
19.05.23
09:30
Надо добавить колонку с пустой группировкой. В нее в выбранные поля добавить свое поле
6 areaho0ray
 
19.05.23
09:32
Подчиненную сроку смотри в структуре Таблица.Строки без группировок - там должны быть все поля в Таблица.Строки[].Выбор
7 toypaul
 
19.05.23
09:34
По идее в (0) так и сделано. Не понятно почему не работает
8 Tornadius
 
19.05.23
09:39
(7) Такое ощущение, что результат запроса глючит, но в СКД его никак не посмотреть.
так как там идет объеденение из 3 наборов данных, и к нему через связь наборов добавлен четвертый набор, который как раз и содержит МаксДату
9 Tornadius
 
19.05.23
09:42
вот бы выдернуть данные из СКД сразу после завершения запроса но до создания таблицы и посмотреть что туда попадает
10 illiona
 
naïve
19.05.23
09:43
Попробуй выгрузить скд запрос в файл и загрузить в КонсольСистемыКомпоновкиДанных.erf и потестировать.
11 Tornadius
 
19.05.23
09:44
(5) Делал так, все равно пока ресурсом не сделаешь  колонку не получишь. Будет группировка по значению данного поля - т.е. столько колонок сколько различных значений
12 Tornadius
 
19.05.23
09:45
(10) Это которая на сайте 1С? она этого не делает.
13 Tornadius
 
19.05.23
09:48
(10) Мало того, она работает только в толстом клиенте
14 Tornadius
 
19.05.23
09:52
Может кто знает, как перехватить программно выполнение, на пример в процедурах перед или после компановки?
15 Мультук
 
19.05.23
09:57
(14)

Сделайте внешний отчёт. (его проще менять)
Добавьте руками СКД.
Добавьте руками ресурс и поле.
Получите результат. Убедитесь, что он правильный.

Затем удалите этот ресурс и поле.
Добавляйте их программно, пока не получите такой же результат.

Пьем чай, берем с полки пирожок. (с)

Переносим программный код в основной отчёт.
16 Tornadius
 
19.05.23
10:02
(15) Этим и  занимаюсь. Выгрузил из конфы отчет "Материальная ведомость",
чтобы его не ломать добавил свой набор данных в котором ищу максдату последней операции
и связал его с тем что было. теперь хочу вывести свое поле, но блин (см. (0)) там программная очистка и
заново сборка структуры отчета. Я поле получил, но оно заполняется не верно. В консоли запросов все работает - в СКД нет,
вои и хочу узнать, что не так делаю
17 Мультук
 
19.05.23
10:08
(16)

>> чтобы его не ломать добавил свой набор данных в котором ищу максдату последней операции
Текст запроса в наборе, который ищет максДата
Текст ресурса "МаксДата"

>>и связал его с тем что было.
Скриншот связи

>>В консоли запросов все работает
Там априори нет связи между наборами

>> Я поле получил, но оно заполняется не верно
Что такое "неверно" ?
Упростите пример до 2-3 позиций и объясните сначала себе какую дату должно показывать, а какую показывает.
18 Tornadius
 
19.05.23
10:20
(17) Текст запроса который ищет МаксДату:
        ВЫБРАТЬ
    МАКСИМУМ(ТиповойОстаткиИОбороты.Период) КАК МаксДата,
    ВЫРАЗИТЬ(ТиповойОстаткиИОбороты.Субконто1 КАК Справочник.Номенклатура) КАК Номенклатура,
    ВЫБОР
        КОГДА &ЕстьСклады
            ТОГДА ВЫРАЗИТЬ(ТиповойОстаткиИОбороты.Субконто2 КАК Справочник.Склады)
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ КАК Склад,
    ТиповойОстаткиИОбороты.Счет КАК Счет,
    ТиповойОстаткиИОбороты.Организация КАК Организация,
    ТиповойОстаткиИОбороты.СтруктурноеПодразделение КАК Подразделение
{ВЫБРАТЬ
    МаксДата,
    Номенклатура.*,
    Склад.*,
    Счет.*,
    Организация.*,
    Подразделение.*}
ИЗ
    РегистрБухгалтерии.Типовой.ОстаткиИОбороты(, {(&КонецПериода)}, ДЕНЬ, , Счет В (&СписокСчетов) {(Счет)}, &ВидыСубконто, Организация В ИЕРАРХИИ (&СписокОрганизаций)) КАК ТиповойОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ТиповойОстаткиИОбороты.Счет,
    ВЫРАЗИТЬ(ТиповойОстаткиИОбороты.Субконто1 КАК Справочник.Номенклатура),
    ВЫБОР
        КОГДА &ЕстьСклады
            ТОГДА ВЫРАЗИТЬ(ТиповойОстаткиИОбороты.Субконто2 КАК Справочник.Склады)
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ,
    ТиповойОстаткиИОбороты.Организация,
    ТиповойОстаткиИОбороты.СтруктурноеПодразделение

Скриншоты выкладывать на Мисту не умею, опишу так:
Вкладка СКД "Связи наборов данны" в ней 5 строк:
Источник          Приемник       Выражение источник        Выражение приемник
НаборДанных2     ВТ_МаксДата    Счет                       Счет
НаборДанных2     ВТ_МаксДата    Номенклатура               Номенклатура
НаборДанных2     ВТ_МаксДата    Склад                      Склад
НаборДанных2     ВТ_МаксДата    Организация                Организация
НаборДанных2     ВТ_МаксДата    Подразделение              Подразделение

где НаборДанных2  - старый набор   ВТ_МаксДата  - новый набор с запросом выше

-- Ресурс

Поле                 Выражение               Расчитывать по...
МаксДата             МаксДата                Номенклатура

--- Получаю по различной номенклатуре одно значение (вся колонка - одно значение)  в консоле запросов значения разные