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С и бухучета
Санкт-Петербург
По совместительству

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

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

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

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