Имя: Пароль:
1C
 
ТЗ в СКД
0 trialex3
 
10.11.24
16:58
Добрый день. Столкнулся с проблемой. Нужно открыть отчет скд где данные берутся из тз. Создаю свою форму, ловлю параметр и кидаю его в объект отчета. В ПриКомпоновкеДанных подставляю его и формирую результат - все корректно работает. Но пользователю необходимо дать возможность менять структуру отчета. Так как у меня своя форма, то и форму настроек приходится использовать вспомогательную. Там структуры нету. Можно все менять через "изменить вариант", но все изменения в варианте не отображаются в результате. выходят только детальные записи, как в конфигураторе забито.

Код приКомпоновкеДанных прилагаю
1 trialex3
 
10.11.24
17:01
По сути мне надо решить одну из двух проблем - либо разобраться почему не применяются настройки либо передать адрес временного хранилища в приКомпоновкеДанных без использования своей формы. Я непонимаю что я делаю не так. прошу помощи)
2 trialex3
 
10.11.24
17:08
Даже еще страннее. Ща восстановил кфник без всех последних попыток. Сформировал результат. В настройках идет группировка по номенклатуре а потом дет. записи. Хотя в конфигураторе просто дет. записи. Сбросил на стандартные - вариант стал дефолтным но по прежнему формирует с группировкой.
3 trialex3
 
10.11.24
17:09
такое ощущение что вариант и дефолтные настройки живут отдельными жизнями...
4 trialex3
 
10.11.24
17:55
судя по молчанию я либо полную чушь несу либо редкая проблема(
5 Chameleon1980
 
10.11.24
17:57
а зачем свою форму, если ТЗ подается в модуле отчета?
6 Chameleon1980
 
10.11.24
17:58
(1) откуда передать?
7 trialex3
 
10.11.24
18:00
(5) открывается форма с параметром. параметр помещается в реквизит отчета. в методе при компоновке из реквизита берется адрес во временном хранилище и выкачивается тз
8 Chameleon1980
 
10.11.24
18:02
а в ПриКомпоновке нужные данные не получить?
9 trialex3
 
10.11.24
18:02
(8) неа. эти данные, которые нигде не сохраняются.
10 Chameleon1980
 
10.11.24
18:04
(7) откуда модуль отчета увидит реквизит формы вообще? аааа. реквизит отчета? а смотрели что в адресе. проверяли ЭтоАдресВременногоХранилища? что отладка показывает?
11 trialex3
 
10.11.24
18:04
я даже пробовал нехороший вариант - сохранять адрес в константе. но стандартная форма выполняет отчет в другой сессии а значит там ВХ мой недоступен. Да и вариант с константой это прям плохо
12 trialex3
 
10.11.24
18:04
(10) реквизит отчета а не формы. Объекта отчета
13 Chameleon1980
 
10.11.24
18:04
данные по Адресу (как это говорят) не протухли?
14 Chameleon1980
 
10.11.24
18:05
(11) ну данные то вечно там не хранятся. На то и Временное
Возможно, почитайте про время хранения и что на это влияет.
15 trialex3
 
10.11.24
18:06
(13) не, отладкой все норм чекается. Как будто дело то не в ТЗ а в настройках. как только я например изменяю вариант и нажимаю сохранить и сформироватьм - форма закрывается, но ничего не происходит. Возвращаюсь в вариант а там мной добавленная группировка отмечается красным крестиком.
16 Chameleon1980
 
10.11.24
18:06
(11) чтобы было доступно в другом сеансе это уже помещать данные в БД в любом виде в одном сеансе и читать оттуда в другом
17 trialex3
 
10.11.24
18:07
(14) там ограничение на другую сессию срабатывает. в ней недоступно мое временное хранилище.
18 Chameleon1980
 
10.11.24
18:08
Возможно, что-то напутали?
19 trialex3
 
10.11.24
18:08
(16) да хотелось бы понять почему скд так странно себя ведет. Во всех гайдах что я читал никаких проблем не встречается. У меня прям жесть какая то
20 Chameleon1980
 
10.11.24
18:08
21 trialex3
 
10.11.24
18:09
(18) ну если про программное - то я использую метод получить настройки. Он дает объединение настроек и пользовательскиз настроек. Почему появляются красные крестики в пользовательском режиме я хз((
22 Chameleon1980
 
10.11.24
18:09
вот это не забыли
23 trialex3
 
10.11.24
18:10
(20) да курю эту тему уже. Там правда не дается разъяснения кто блин удаляет мои группировки в пользовательском режиме)
24 trialex3
 
10.11.24
18:11
(22) скорректированные это те которые я от него же получил методом ПолучитьНастройки()?
25 trialex3
 
10.11.24
18:15
(22) ни в одном примере этой строчки не было - добавил. ничего не изменилось. Как пытаюсь сформировать отчет в измененном варианте мои группировки отмечаются красным крестиком
26 trialex3
 
10.11.24
18:16
вот
27 Jackman
 
10.11.24
18:23
(0) Вроде бы нормально настройки в таком же отчете на СКД из ТЗ работают. Правится через кнопку Настройка в форме. Нужно не забыть сделать:

1. В свойствах отчета для свойства "Форма настроек" указать "ВспомогательнаяФормаНастроекОтчета".
2. В СКД - закладка "Настройки" - кнопка сверху, над структурой группировок, "Состав пользовательских настроек отчета" - в составе пользовательских настроек отчета поставить все галочки ("Выбранные поля", "Отбор",  "Порядок", "Условное оформление", "Группировки") и выбрать режим редактирования = Обычный.
28 trialex3
 
10.11.24
18:25
(27) да за малым исключением - группировки это не структура как в стандартной форме. Нужна именно структура что бы например кинуть сначала поле номенклатура а потом уже детальные записи.
29 trialex3
 
10.11.24
18:26
а структуру можно править или в изменить вариант или в стандартной форме, которую я походу использовать не смогу.
30 trialex3
 
10.11.24
18:31
да и таблицу не создашь в вспомогательной форме. И пользовательские поля не добавишь. Она урезана сильно.
31 craxx
 
10.11.24
19:03
(30) кстати, СКД умеет использовать Менеджер временных таблиц, может через него попробовать?
32 trialex3
 
10.11.24
19:06
(31) судя по всему не в тз дело. Решил тз передавать через константу (хранилище значения), а значит смог использовать стандартную форму отчета. И о чудо - все работает корректно
33 craxx
 
10.11.24
19:17
(32) Все верно, дело во временном хранилище. Покажи код как передаешь ТЗ
34 trialex3
 
10.11.24
19:18
(33) как получаю скинул в первом посте
как передаю
    ТаблицаДанных = РеквизитФормыВЗначение("РентабельностьПродукции");
    АдресДанных = ПоместитьВоВременноеХранилище(ТаблицаДанных, УникальныйИдентификатор);
    Возврат АдресДанных;

ПараметрыФормы = Новый Структура;
        ПараметрыФормы.Вставить("АдресДанных", АдресДанных);
        ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
        ОткрытьФорму("Отчет.АР_АнализИтоговойРентабельностиПродукции.Форма.ФормаОтчета", ПараметрыФормы,,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
35 craxx
 
10.11.24
19:19
(34)
ТаблицаДанных = РеквизитФормыВЗначение("РентабельностьПродукции").Выгрузить();
    АдресДанных = ПоместитьВоВременноеХранилище(ТаблицаДанных, УникальныйИдентификатор);
    Возврат АдресДанных;

Так попробуй. Потом объясню в чем разница
36 trialex3
 
10.11.24
19:21
(35) Приняо, делаю бекап цф и делаю по примеру
37 craxx
 
10.11.24
19:21
(34) Все дело в волшебных пузырьках в РеквизитФормыВЗначение("РентабельностьПродукции")
38 trialex3
 
10.11.24
19:28
(37) Метод объекта не обнаружен (Выгрузить)
39 craxx
 
10.11.24
19:29
(38) Тогда Скопировать()
И убери УникальныйИдентификатор
просто ПоместитьВовременноеХранилище(ТаблицаДанных)
40 trialex3
 
10.11.24
19:30
(38) отладка
РеквизитФормыВЗначение("РентабельностьПродукции") - ТаблицаЗначений
41 trialex3
 
10.11.24
19:30
(39) ок
42 trialex3
 
10.11.24
19:37
(39)
Скопировать - то же самое. Красный крестик вешается на мои группировки
Уникальный идентификатор - убрал. При повторной формировании отчета ВХ уже пустое. То есть могу сформировать только один раз)
43 craxx
 
10.11.24
19:37
(42) а помещаешь в ВХ из формы настроек?
44 trialex3
 
10.11.24
19:40
(43) в форме отчета в параметрах ловлю и кладу адрес в реквизит объекта отчета. он доступен в методе при компоновке.

помещаю вообще из другой обработки
45 trialex3
 
10.11.24
19:41
(44) я собственно идентификатор потому и добавил что бы точно жило пока формы обработки родителя живет.
46 craxx
 
10.11.24
19:45
(45) Тогда я бы попробовал 2 варианта.
1. ТЧ в самом отчете, туда загружать ТЗ в форме и в модуле объекта оттуда выгружать
2. Все-таки вариант с МВТ в СКД.
47 trialex3
 
10.11.24
19:47
(46) Принял буду пробовать. Вариант с мвт не пробовал, но пробовал указать таблицу как параметр и подгружать соответственно в параметры. Начал ловить ошибки XDTO
48 trialex3
 
10.11.24
19:47
(46) Спасибо вам!)
49 Jackman
 
10.11.24
20:28
(0) Через изменить вариант в отчете на СКД, который строится по ТЗ и имеет руками созданную форму, добавил реквизит номенклатуры в СКД - вывелся в результат.
50 trialex3
 
10.11.24
21:52
(49) возможно баг конкретной версии конфигурации или платформы. Любые опробованные мною варианты с нестандартной формой дают у меня такое поведение.
51 DrZombi
 
гуру
11.11.24
10:13
(50) Там бага нет. Временное хранилище живет либо пока живет сессия, либо пока вы обращаетесь к серверу (т.е. при выходе на Клиента все очищается), либо пока форма жива.

Я заметил ваши ручонки пишут форму руками, в БСП форма универсально. Тут встает вопросик, у вас что за конфигурация?   А вы используете БСП?

...
Попробовали ли вы сохранить значение из временного хранилища повторно, но уже для вашего отчета?

А так все работает у вас штатно, от 1С :)
52 trialex3
 
11.11.24
12:12
(51) да нет проблем с хранилищем. ТЗ там живет столько сколько надо. И каждый раз получается корректно. Проверено отладкой. Проблемы именно с формой варианта. Каждый раз когда я применяю изменения в варианте и закрываю форму - в ней уже все становится наперекосяк. Если я ее открываю по новой тутже - уже все плохо.
Я пишу руками форму потому что я не могу использовать стандартную форму -  мне надо отловить параметр адреса ВХ и засунуть его в реквизит объекта отчета что бы при компоновке его подцепить. Поэтому приходится создавать форму, а форму настроек использовать вспомогательную. Конфигурация ЕРП 2.5.17.143
53 Шурик71
 
11.11.24
19:20
>  мне надо отловить параметр адреса ВХ и засунуть его в реквизит объекта отчета что бы при компоновке его подцепить.

Засунуть его в скрытый параметр СКД  не поможет?
54 trialex3
 
12.11.24
15:31
(53) врядли. как я его засуну в скд если я еще сам скд не получил. открываю я форму отчет из сторонней обработки.
55 Garykom
 
гуру
12.11.24
16:10
в СКД все можно программно
и отборы и источник подсовывать
56 trialex3
 
13.11.24
12:44
(55) Это понятное дело. Но я не про это. У вас есть адрес временного хранилища, который вы хотите передать из обработки в отчет. Это разные объекты. Как вы это сделаете? Через параметры открытия формы.
Программист всегда исправляет последнюю ошибку.