день добрый. помогите разобраться плизз. Конфа Розница 2.1
В документ "Установка цен номенклатуры" в ТЧ "Товары" добавил реквизит "Валюта" с соответствующим типом, программно добавил колонку "Валюта"
```1c
    ДеревоЗначений.Колонки.Добавить(
    "Валюта" + ИмяКолонки,
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    "Валюта");
```
 добавил "ПолеФормы"
```1c
    СвойстваПоля = СтруктураСвойствПоля();
    СвойстваПоля.Имя = "Валюта"+ИмяКолонки;
    СвойстваПоля.Заголовок = НСтр("ru = 'Валюта'");
    СвойстваПоля.ШиринаПоля = 12;
    СвойстваПоля.ТолькоПросмотрПоля = Ложь;
    СвойстваПоля.Родитель = НоваяГруппа;
    НовоеПоле = ДобавитьПолеФормы(СвойстваПоля);
```

В "ДеревоЗначений", которое возвращаяется функцией тоже добавил колонку
```1c
    ДеревоЗначений.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
```
.......
Запускаю , устанавливаю цену, выбираю валюту, провести закрыть, потом снова открываю этот док а значение "Валюта" пустое.... Скажите я правильно понимаю, что значение "Валюта" должно записаться в реквизит "Валюта" ТЧ "Товары", который я сам добавил....или я не правильно мыслю?
---
ong1990,
```1c
    "Валюта" + ИмяКолонки
```
 вот из за этого. Это не Валюта, а ВалютаИмяКолонки. Там имя с идентификатором вместе
---
Посмотрите механизм сохранения/восстановления цены.
---
dj_serega, А можете чуть подробнее, что это и где его взять?? и что оно делает. если не сложно
---
dj_serega, Сори... это я не Вам хотел написать))). а сохраняет цены я так понимаю вот тут??
```1c
    ДеревоЦенЗначение = РеквизитФормыВЗначение("ДеревоЦен");
    ДеревоЦенЗначение.Колонки.Очистить();

    Для Каждого Колонка Из ДеревоЗначений.Колонки Цикл
    ДеревоЦенЗначение.Колонки.Добавить(Колонка.Имя);
    КонецЦикла;

    ЗначениеВРеквизитФормы(ДеревоЦенЗначение, "ДеревоЦен");
```
---
Люди..выручайте плизз
---
ong1990, там не так все просто. ДеревоЦен не имеет прямого отношения к табличной части Товары. Это дерево, которое заполняется... Сначала в ПостроитьДеревоЦен() строится своя структура нужных колонок. Затем в ЗагрузитьТабличнуюЧастьТовары() делается запрос по нужным данным. И в ЗагрузитьБазовыеЦены() соответственно запрос на получение цен. И это только при открытие.
---
spacecraft, Если не сложно можете чуть подробнее описать..
---
ong1990, куда уж подробнее?
Открываете документ и ищите эти процедуры. В первую добавить свою колонку. Во вторую править запрос на получение этих данных.
---
spacecraft, В первую добавил колонку..во второй, в Запрос подправил.
---
spacecraft, Может быть действительно дело в запросе.....щаа "покурю" его еще разок
---
ong1990, для записи в табличную часть есть отдельная процедура:

```1c
    // Копирует цены по всем видам из таблицы формы ДеревоЦен в строку табличной части Товары объекта
    //
    // Параметры:
    // Товары - табличная часть, в которую необходимо поместить строку с ценами
    // СохранятьБазовые - Булево -указывает на необходимость помещения в табличную часть базовых видов цен
    //
    &НаСервере
    Процедура ПоместитьСтрокуЦенВТабличнуюЧасть(Товары, СтрокаЦен, СохранятьБазовые = Истина)
```
---
spacecraft,
```1c
    &НаСервере
    Процедура ПоместитьСтрокуЦенВТабличнуюЧасть(Товары, СтрокаЦен, СохранятьБазовые = Истина)
```
 В этой процедуре нужно Добавить строку? я прав?
---
ong1990,
```1c
    НоваяСтрока = Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаЦен.Номенклатура;
    НоваяСтрока.Характеристика = СтрокаЦен.Характеристика;
    НоваяСтрока.ВидЦены = ВидЦены.Ссылка;
    НоваяСтрока.Валюта = СтрокаЦен.Валюта;
```
---
spacecraft, Да..вот именно так я и делал..Ошибку выдал..Поле Валюта не найдено.. Куда я его еще блин не добавил..
---
ong1990, в табличную часть документа?
---
spacecraft, В том то и дело, что В ТЧ "Товары" давно добавлен реквизит "Валюта"
---
spacecraft, в "ДеревоЦен" добавил колонку реквезита "Валюта" и теперь уже ошибки не возникает, но по прежнему после записи "Валюта" пустая блинн((((((
---
ong1990, или в

```1c
    &НаСервере
    Процедура ПостроитьДеревоЦен()

    ДобавляемыеКолонкиТаблицыЦен = Новый Массив();
    УдаляемыеКолонкиТаблицыЦен = Новый Массив();
    УдаляемыеЭлементы = Новый Массив();
    УсловныеОформления = Новый Массив();

    ДеревоЗначений = СоздатьПустоеДеревоНоменклатуры();

    Для Каждого ВидЦены Из ВыбранныеЦены Цикл

    Если ВидЦены.Выбрана ИЛИ ВидЦены.Влияет Тогда

    ИмяКолонки = ВидЦены.ИмяКолонки;

    ДеревоЗначений.Колонки.Добавить(
    ИмяКолонки,
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)),
    ВидЦены.Наименование);
```
---
spacecraft, И там тоже давно добавил
```1c
    Процедура ПостроитьДеревоЦен()

    ДобавляемыеКолонкиТаблицыЦен = Новый Массив;
    УдаляемыеКолонкиТаблицыЦен = Новый Массив;
    УдаляемыеЭлементы = Новый Массив;
    УсловныеОформления = Новый Массив;

    ДеревоЗначений = СоздатьПустоеДеревоНоменклатуры();

    Для Каждого ВидЦены Из ВыбранныеЦены Цикл

    Если ВидЦены.Выбрана ИЛИ ВидЦены.Влияет Тогда

    ИмяКолонки = ВидЦены.ИмяКолонки;

    ДеревоЗначений.Колонки.Добавить(
    ИмяКолонки,
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)),
    ВидЦены.Наименование);
    ДеревоЗначений.Колонки.Добавить(
    "СтараяЦена" + ИмяКолонки,
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)),
    ВидЦены.Наименование);
    ДеревоЗначений.Колонки.Добавить(
    "ПроцентИзменения" + ИмяКолонки,
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(05, 2, ДопустимыйЗнак.Любой)),
    ВидЦены.Наименование);
    ДеревоЗначений.Колонки.Добавить(
    "ПроцентНаценки" + ИмяКолонки,
    Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)),
    ВидЦены.Наименование);
    ДеревоЗначений.Колонки.Добавить(
    "ИзмененаВручную" + ИмяКолонки,
    Новый ОписаниеТипов("Булево"),
    ВидЦены.Наименование);

    ///////////////////////////////А

    ДеревоЗначений.Колонки.Добавить(
    "Валюта" + ИмяКолонки,
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    "Валюта");
```
---
ong1990,
```1c
    "Валюта" + ИмяКолонки
```
 вот из за этого. Это не Валюта, а ВалютаИмяКолонки. Там имя с идентификатором вместе
---
spacecraft, ДААААААА!!!!!!!!!!!!!!! Спасибо огромное......Оказывается я когда в "ДеревоЦен" добавил колонку реквезита "Валюта" и нажал Провести, то в регистре сведений Валюта записалась!!!! А это самое главное... Теперь нужно добиться еще чтобы показывала "Валюту" и после записи......С меня Магарычь дружище!!!!!!
---
ong1990, как-то так

```1c
    НоваяСтрока = Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаЦен.Номенклатура;
    НоваяСтрока.Характеристика = СтрокаЦен.Характеристика;
    НоваяСтрока.ВидЦены = ВидЦены.Ссылка;
    НоваяСтрока.Валюта = СтрокаЦен.Свойство("Валюта" + ИмяКолонки);
```
---
spacecraft, Если сделать Так:
```1c
    ДеревоЗначений.Колонки.Добавить(
    "Валюта",
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    ВидЦены.Наименование);
```
 вместо этого :
```1c
    ДеревоЗначений.Колонки.Добавить(
    "Валюта"+ИмяКолонки,
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    ВидЦены.Наименование);
```

тогда выдает ошибку НЕВЕРНОЕ ИМЯ КОЛОНКИ
---
ong1990, оставить второе и использовать (22). Как раз для этого.
---
spacecraft, Так и делаю а ошибка осталась((
---
ong1990, опс. В (22) немного не так. Надо так:

```1c
    НоваяСтрока = Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаЦен.Номенклатура;
    НоваяСтрока.Характеристика = СтрокаЦен.Характеристика;
    НоваяСтрока.ВидЦены = ВидЦены.Ссылка;
    ИмяКолонкиВалюта = "Валюта" + ИмяКолонки;
    Если СтрокаЦен.Свойство(ИмяКолонкиВалюта) Тогда
    НоваяСтрока.Валюта= СтрокаЦен[ИмяКолонкиВалюта];
    КонецЕсли;
```
---
spacecraft, Нет не помогает.. Значит где-то я еще скосячил
---
ong1990, текст ошибки?
---
spacecraft, {Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента.Форма(4842)}: Ошибка при вызове метода контекста (Добавить)
    ДеревоЗначений.Колонки.Добавить(
по причине:
Неверное имя колонки
---
ong1990, вот на это ругается?
```1c
    ДеревоЗначений.Колонки.Добавить(
    "Валюта"+ИмяКолонки,
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    ВидЦены.Наименование);
```
---
spacecraft, да
---
ong1990, проверить, а точно один раз этот кусок кода? Нет ли дублей, или "Валюта" без ИмяКолонки? Само по себе на это ругаться не может.
---
spacecraft, Нашёл один дублик "Валюта" удалил и оставил вот это
```1c
    еревоЗначений.Колонки.Добавить(
    "Валюта"+ИмяКолонки,
    Новый ОписаниеТипов("СправочникСсылка.Валюты"),
    ВидЦены.Наименование);
```
 и это
```1c
    НоваяСтрока = Товары.Добавить();
    НоваяСтрока.Номенклатура = СтрокаЦен.Номенклатура;
    НоваяСтрока.Характеристика = СтрокаЦен.Характеристика;
    НоваяСтрока.ВидЦены = ВидЦены.Ссылка;
    ИмяКолонкиВалюта = "Валюта" + ИмяКолонки;
    Если СтрокаЦен.Свойство(ИмяКолонкиВалюта) Тогда
    НоваяСтрока.Валюта= СтрокаЦен[ИмяКолонкиВалюта];
    КонецЕсли;
```
 Записывает в регистр правильно. Спасибо большое тебе!!!!
---
Щас поищу