Имя: Пароль:
1C
 
Как использовать программно добавленный внешний набор данных и связь наборов данных в СКД?
0 BurundukIzElok
 
15.03.24
17:14
Пытаюсь доработать существующий отчет СКД, нужно добавить новые данные.
В событии "ПриКомпоновкеДанных" без ошибок создаю внешний набор, добавляю поля, создаю таблицу значений и заполняю её, добавляю её во внешние источники, добавляю новую связь в СвязиНаборовДанных таким образом:

НоваяСвязь = МакетКомпоновкиДанных.СвязиНаборовДанных.Добавить();
НоваяСвязь.ВыражениеИсточник 		= "НачисленияУдержанияОбъединенные.Сотрудник";
НоваяСвязь.ВыражениеПриемник 		= "ВнешнийНаборДанных.ПолеДляСоединения";
НоваяСвязь.НаборДанныхИсточник 		= "НачисленияУдержанияОбъединенные";
НоваяСвязь.НаборДанныхПриемник	  = "ВнешнийНаборДанных";


Однако в при выводе в таблицу значений или в документ все добавленные поля пустые без каких-либо видимых ошибок.

Что я делаю не так?
1 Garykom
 
гуру
15.03.24
17:17
(0) >создаю внешний набор, добавляю поля
Типы значения у полей задаешь?
Когда из ТЗ автоматом не подтягивает
2 Garykom
 
гуру
15.03.24
17:13
ВнешнийНаборДанных.ПолеДляСоединения - тип значения?
желательно и у поля и у колонки ТЗ задать
должны совпадать с НачисленияУдержанияОбъединенные.Сотрудник
3 BurundukIzElok
 
15.03.24
17:20
Типы значений установлены, сотрудник - СправочникСсылка.Сотрудники, таблицу значений создаю так:

ТЗ = новый ТаблицаЗначений();
ТЗ.Колонки.Добавить("ПолеТест", новый ОписаниеТипов("Число"));
ТЗ.Колонки.Добавить("ПолеДляСоединения", новый ОписаниеТипов("СправочникСсылка.Сотрудники"));

В отладке заполнение корректное, для теста я просто заполняю всеми сотрудниками и произвольными числами, однако при выводе поля (ПолеТест, ПолеДляСоединения) пустые.
4 Garykom
 
гуру
15.03.24
17:26
(3) подразумевал
НовоеПоле = ВнешнийНаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
...
НовоеПоле.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Сотрудники");

есть?
5 BurundukIzElok
 
15.03.24
19:15
(4) Я добавляю внешний набор следующим образом:

НовыйВнешнийНабор = МакетКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхОбъектМакетаКомпоновкиДанных"));

А поля набора:

НовоеПоле = НовыйВнешнийНабор.Поля.Добавить();

У них тип значения ПолеНабораДанныхМакетаКомпоновкиДанных у которого нельзя указать ТипЗначения.
6 Garykom
 
гуру
15.03.24
19:27
(5) чего?
7 Garykom
 
гуру
15.03.24
19:44
(5) Макет это уже потом, сначала Схема нужна!
А макет да сам возьмет из схемы
Суть что у тебя есть Запрос(НаборДанныхЗапросСхемыКомпоновкиДанных) и ты к нему хочешь присоединить свою ТЗ(НаборДанныхОбъектСхемыКомпоновкиДанных)
8 Garykom
 
гуру
15.03.24
19:40
(7)+
9 BurundukIzElok
 
15.03.24
20:48
(8) Я понял о чём вы, моя проблема в том что я пытаюсь внести это в стандартный отчет, ограничив изменения лишь в функции "ПриКомпоновкеДанных".
Перед получением макета, схема передаётся в общий модуль "ЗарплатаКадрыОтчеты" и добавленные наборы данных очищаются, поэтому я пытался отредактировать макет, а не схему.
Возможно ли реализовать это редактированием макета или требуется чтоб изменения были в схеме?
10 Garykom
 
гуру
15.03.24
20:50
(9) Перекрой расширением общий модуль "ЗарплатаКадрыОтчеты" как тебе надо
11 BurundukIzElok
 
16.03.24
00:43
Надеялся что можно обойтись, после изменения модуля внешний набор подхватился корректно, спасибо.
12 sitex
 
naïve
16.03.24
00:44
(0) Лучше полный алгоритм скиньте что у Вас ПриКомпоновкеРезультата .а так просто гадать.