Имя: Пароль:
1C
1С v8
Как в дерево значений добавить колонку?
,
0 OG_Tui
 
17.09.18
23:56
Всем вечера! Столкнулся с проблемой, вроде бы всё очевидно и просто, да не пашет. Есть дерево значений, которое содержит в себе остатки товара. Хочу добавить в это дерево свою колонку, с типом - число, с двумя знаками после запятой.
Что делаю:
ОстаткиТоваров.Колонки.Вставить(5,"Ро",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(12,2)),,);

Выдаёт ошибку: Ошибка при вызове метода "вставить", Неверное имя колонки.

Переименовывал колонку по-разному, всё одно и то же. Отладчиком прохожусь, в отладчике вижу на этой строке, что колонка создаётся. Сравниваю по всем параметрам с уже существующими колонками- всё в норме. Но потом вылетает эта ошибка.

Подскажите, что я пропускаю??
1 Fram
 
18.09.18
01:39
Когда отладчик НА этой строке колонки быть не может. Она должна появится когда шагнешь на следующую. То есть такая колонка уже есть, о чем тебе и говорит текст ошибки
2 Fram
 
18.09.18
02:10
Хотя обычно на "Неверное имя колонки" ругается когда пробел или еще какой то недопустимый символ есть в имени. Так что видать ругается он не на ту строку, которую ты в (0) написал?
3 Chameleon1980
 
18.09.18
03:48
(2) странно да, что так и написано "...Ошибка при вызове метода "вставить", Неверное имя колонки..."
?
4 Chameleon1980
 
18.09.18
03:49
хотя да- может и при вставке дпугой колонки
5 OG_Tui
 
18.09.18
11:28
(1) Это меня очень даже удивляет. Потому как в блоке, откуда я прихожу в данное место, в дереве чётко, скажем, 4 колонки, со своими именами. Такого имени как у меня там нету, да и переименовывал я уже как только не изгалялся, зная фишку про пробелы.
Поэтому и теряюсь уже в догадках- что ж ему не нравится?
Не на эту строку- вряд ли, потому как именно на этой строке всё и вылетает.

(4) понял бы такой вариант, но вставляю только одну колонку. Нигде близко нет операций по добавлению или вставке колонок.
6 Лодырь
 
18.09.18
11:30
(5) Ну так и отлови где выдается ошибка. В чем проблема то?
7 OG_Tui
 
18.09.18
11:44
(5) и проблем бы не было, будь так просто)
Я не врубаюсь в чём ошибка, иду отладчиком, ничего бредового не нахожу, дохожу до этой строчки и всё вылетает с данной ошибкой.
8 Cool_Profi
 
18.09.18
11:46
Попробуй не Вставить() а Добавить() - что скажет?
перед этим посмотри в отладчике ОстаткиТоваров.Колонки - что там есть в этот момент
9 Михаил Козлов
 
18.09.18
11:48
"Но потом вылетает эта ошибка." - когда потом?
Может вставляете в цикле?
10 Cyberhawk
 
18.09.18
11:51
Покажи ошибку на картинке
11 Ненавижу 1С
 
гуру
18.09.18
11:58
(5) интересно...
"4 колонки" а вставляешь ты перед 5-й?
12 OG_Tui
 
18.09.18
12:05
(9) нет, не в цикле. Вылетает ошибка именно на этой строке
Вставляю в ходе исполнения "если".

(10) https://c.radikal.ru/c19/1809/f9/e58c21b4f962.jpg

(8) С Добавить та же фигня.

что удивляет...так это момент в отладчике, перед тем как я добавляю свою колонку он показывает вот такое:
https://b.radikal.ru/b38/1809/6e/a35a313ee47f.jpg
Хотя колонки "Ро" моей, там быть не может до этого момента. Нигде она не добавляется.

Для проверки закомментировал свои строки с добавлением колонки.
В том же моменте отладчиком:
https://c.radikal.ru/c29/1809/83/9a4c8c12b414.jpg
13 RomanYS
 
18.09.18
12:09
(12) Это лишь доказывает, что твой код вызывается более одного раза. Неужели это в отладчике не ловится?
14 Cyberhawk
 
18.09.18
12:11
Ну, второй раз код всяко выполняется. Показывай откуда выполняешь его
15 OG_Tui
 
18.09.18
12:14
(13) вот я и не могу понять откуда и как это.

(13,14)
Если ЭлементыФормы.Список.ТекущиеДанные <> Неопределено
           И НЕ ЭлементыФормы.Список.ТекущиеДанные.ЭтоГруппа Тогда
          
            мСписокПрефиксовЦен = УправлениеЗапасами.ПолучитьСписокПрефиксовВыводимыхСумм(СписокЦенОстатков);
            УправлениеЗапасами.ПолучитьДеревоОстатковНоменклатуры(ОстаткиТоваров, ЭлементыФормы.Список.ТекущиеДанные.Ссылка, Истина, СписокЦенОстатков, , мСоответствиекурсовВалют, , ТекущаяДата());
            //Разворачиваем дерево
            //ОстаткиТоваров.Колонки.Вставить(6,"Ро",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(12,2)),,);
            //ОстаткиТоваров.Колонки.Добавить("Ро",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(12,2)),,);
            Для Каждого СтрокаДереваОстатков Из ОстаткиТоваров.Строки Цикл
                //---Ольга
                Ном = Справочники.Номенклатура.НайтиПоКоду(ЭлементыФормы.Список.ТекущиеДанные.Код);
                Запрос = Новый Запрос("ВЫБРАТЬ
                                      |    Резерв_ОльгаОстатки.КоличествоОстаток,
                                      |    Резерв_ОльгаОстатки.ХарактеристикаНоменклатуры
                                      |ИЗ
                                      |    РегистрНакопления.Резерв_Ольга.Остатки КАК Резерв_ОльгаОстатки
                                      |ГДЕ
                                      |    Резерв_ОльгаОстатки.Номенклатура = &Номенклатура");
                Запрос.УстановитьПараметр("Номенклатура",Ном);
                Рез = Запрос.Выполнить().Выбрать();
                Пока Рез.Следующий() цикл
                    РезервТовара = Рез.КоличествоОстаток;
                    ХарТовара = Рез.ХарактеристикаНоменклатуры;
                конеццикла;
                
ну и далее...
16 catena
 
18.09.18
12:20
ТекущиеДанные? Это в какой процедуре происходит?
17 Cyberhawk
 
18.09.18
12:21
Стек вызовов покажи, зачем ты сюда простыню кода вставил
18 Cool_Profi
 
18.09.18
12:23
Если ОстаткиТоваров.Колонки.Найти("Ро") = неопределено Тогда
ОстаткиТоваров.Колонки.Добавить("Ро",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(12,2)),,);
КОнецЕсли
19 OG_Tui
 
18.09.18
12:23
(17) Это в процедуре "ПоказатьОстатки", которая вызывается при активизации строки списка номенклатуры
20 Cyberhawk
 
18.09.18
12:23
"при активизации строки списка номенклатуры" // Перепиши на При получении данных
21 Сияющий в темноте
 
18.09.18
12:24
Квалификаторы числа,если мне память не изменяет,сразу после типа идут в описании,а у вас запятых целый ворох
22 Мимохожий Однако
 
18.09.18
12:24
Какой тип значения у ОстаткиТоваров? Где создаётся?
23 OG_Tui
 
18.09.18
12:27
(21) тогда было бы логично что ошибка была бы другой...или нет?

(22)Это ДеревоЗначений, оно создаётся по частям в куче общих модулей, на сколько я видел. приходит в эту процедуру уже в готовом виде

(20) попытаюсь извернуться...
24 Fram
 
18.09.18
18:57
Вот такую строку по всей конфе поищи
Колонки.Добавить("Ро"
25 Cyberhawk
 
18.09.18
19:27
(24) Тогда уж просто "Ро" с флажком "Искать слово целиком". А то мало ли как эта колонка может добавляться-вставляться, в т.ч. и не через метод от переменной "Колонки"
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн