1. n_spb 01.04.19 21:12 Сейчас в теме

Изменить значение колонки дерева значений

Есть дерево значений в строке нужно изменить значение колонки. Пробовал так:
Данные.Строки[0].ПараметрыДанныхДолжностьРаботникаКадровойСлужбы = "Тест";

Значение не присваивается, остается Null, ошибок тоже не возникает. Подскажите, как это сделать?
Пробовал добавить новую строку и в ней для теста присвоить значение колонки:
/ Данные это ДеревоЗначений.
НС = Данные.Строки.Добавить(); 
НС.ПараметрыДанныхДолжностьРаботникаКадровойСлужбы =  "Тест";
Новая строка создается, значение колонки ПараметрыДанныхДолжностьРаботникаКадровойСлужбы остается Null.
Ответы
Избранное Подписка Сортировка: Древо
2. Sander80 68 01.04.19 22:13 Сейчас в теме
Надо посмотреть, какие типы там допустимы в этой колонке.
Возможно, "строки" нет в числе возможных, нужна какая-нибудь ссылка.
Без контекста не подсказать, откуда дерево берется?
3. n_spb 01.04.19 22:32 Сейчас в теме
(2) Как добавить строку в число возможных?
Дерево так появляется:
Данные = Новый ДеревоЗначений;
// часть процедуры  
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(Данные);
// Обозначим начало вывода
ПроцессорВывода.Вывести(ПроцессорКомпоновки, Истина);
Показать

В отладчике так выглядит:
Прикрепленные файлы:
4. Sander80 68 01.04.19 22:45 Сейчас в теме
(3) Судя по отладчику, тип значения этой колонки может быть только NULL. Соответственно, ничего другого в нее не записать.
Макет, надо понимать, взялся из схемы компоновки данных.
Надо посмотреть, что за запрос в этой схеме и почему он выдает NULL.

С другой стороны... если вы строите и меняете дерево руками, зачем вообще все эти компоновщики?
5. n_spb 01.04.19 23:02 Сейчас в теме
(4) Никак без схемы компоновки данных NULL на строку не подменить? В дерево после его получения хочу нужные данные добавить, не меняя макета.
6. Sander80 68 02.04.19 00:11 Сейчас в теме
(5) насколько помню, такие вещи довольно жесткие. Если тип определился запросом, то его уже не изменить. Проблема при этом именно в типе, просто заменить одну строку на другую не вопрос
7. SedovSU@mail.ru 292 02.04.19 06:35 Сейчас в теме
Если по результатам запроса у вас получилось дерево и у какой то колонки вам нужно изменить тип - то вы запросто можете сделать. Но тут почему так получилось - ведь запрос/компоновщик сам определил тим, то есть он пустой - null, в ней ни чего нету. Можно два подхода сделать

1. Переопределить тип ДеревоЗначений.Колонки["ИмяКолонки"].ТипЗначения = Новый ОписанияТипов(.....)

2. Просто удалите колонку раз она пуская и новую добавьте с вашим типом
dhurricane; +1 Ответить
8. n_spb 02.04.19 10:03 Сейчас в теме
(7) Сделал так:
КвалификаторыСтроки = Новый КвалификаторыСтроки(20);
ОписаниеСтроки = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки);
Данные.Колонки.ПараметрыДанныхРаботникКадровойСлужбы.ТипЗначения = ОписаниеСтроки;
Получаю ошибку: Поле объекта недоступно для записи (ТипЗначения).
9. SedovSU@mail.ru 292 02.04.19 11:43 Сейчас в теме
(8) Извиняюсь, я вас не много деинформировал, свойство ТипЗначения у колонки дерева значений только для чтения. То есть вы не можете интерактивно его изменить. Остается только вариант добавить свою новую колонку и назначить ей нужный тип

КвалификаторыСтроки = Новый КвалификаторыСтроки(20);
ОписаниеСтроки = Новый ОписаниеТипов("Строка", ,КвалификаторыСтроки);
Данные.Колонки.Добавить("ПараметрыДанныхРаботникКадровойСлужбы", ОписаниеСтроки)


А первичную колонку перед этим нужно удалить
10. n_spb 02.04.19 14:57 Сейчас в теме
(9) Так получилось изменить.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата до 120 000 руб.
Полный день

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день