Имя: Пароль:
1C
 
Выходит ошибка при добавлении колонки программно
,
0 dkalin
 
03.04.25
09:49
Доброе утро! Выходит ошибка при добавлении колонки программно,ранее всё работало.
            
&НаСервере
Процедура пнПриИзмененииНаСервере()
    Тп.Очистить();
    Если  Не Объект.пн.Пустая() Тогда
    МассивТипа = Новый Массив;
    МассивТипа.Добавить(Тип("ТаблицаЗначений"));

    ОписаниеТипа = Новый ОписаниеТипов(МассивТипа);
    МассивРеквизитовФормы = Новый Массив;
    МассивРеквизитовФормы.Добавить(Новый РеквизитФормы("ТЗ", ОписаниеТипа, "", "Тп"));
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Номер",Новый ОписаниеТипов("Число"),"№",3);
    ТЗ.Колонки.Добавить("Код",Новый ОписаниеТипов("Строка"),"Код",9);
    ТЗ.Колонки.Добавить("Номенклатура",Новый ОписаниеТипов("СправочникСсылка.Номенклатура"),"Номенклатура",28);
    ТЗ.Колонки.Добавить("Цена",Новый ОписаниеТипов("Число"),"Цена",7);
    ТЗ.Колонки.Добавить("Количество",Новый ОписаниеТипов("Число"),"Кол-во",4);
    ТЗ.Колонки.Добавить("Остаток",Новый ОписаниеТипов("Число"),"Остаток",4);
    ТЗ.Колонки.Добавить("Осталось",Новый ОписаниеТипов("Число"),"Осталось",4);

    Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |   склады.Ссылка КАК склад,
        |   склады.Наименование КАК наименование
        |ИЗ
        |   Справочник.СтруктурныеЕдиницы КАК склады
        |ГДЕ
        |  ТипСтруктурнойЕдиницы = &ВидСкл
        |УПОРЯДОЧИТЬ ПО склады.Наименование";
    Запрос.УстановитьПараметр("ВидСкл",Перечисления.ТипыСтруктурныхЕдиниц.Розница);
    РезультатЗапроса = Запрос.Выполнить();
    рез = РезультатЗапроса.Выбрать();
        
    тзс = Новый ТаблицаЗначений;
    тзс.Колонки.Добавить("Склад",Новый ОписаниеТипов("СправочникСсылка.СтруктурныеЕдиницы"));
    тзс.Колонки.Добавить("Наименование",Новый ОписаниеТипов("Строка"));
    Пока рез.Следующий() Цикл
        нам = СтрЗаменить(рез.наименование," ","");
        нам = СтрЗаменить(нам,Символ(34),"");
        нам = СтрЗаменить(нам,"№","");
        нам = СтрЗаменить(нам,",","");
        заг = СтрЗаменить(рез.наименование,"Магазин","Маг.");
        заг = СтрЗаменить(заг,"База","Б.");
        заг = СтрЗаменить(заг,Символ(34),"");
        ТЗ.Колонки.Добавить(нам,Новый ОписаниеТипов("Число"),заг,10);
        скл = тзс.Добавить();
        скл.Склад = рез.склад;
        скл.Наименование = нам;
    КонецЦикла;
Вот на эту строчку:
  ТЗ.Колонки.Добавить(нам,Новый ОписаниеТипов("Число"),заг,10); Хотя в имени нету каких символов,которые не удовлетворяют требованиям?
1 butterbean
 
03.04.25
09:51
(0) какая ошибка то?
2 okmail
 
03.04.25
09:55
(0) наименования одинаковые?
3 Мультук
 
гуру
03.04.25
09:55
(0)

0)  Выходит ошибка
Я понимаю, что вы девочка, но скопипастить текст ошибки
даже для девочки вполне посильно.

1) Оформляйте код пожалйста

2) Допишите строку

Сообщить(нам)
ТЗ.Колонки.Добавить(нам,Новый ОписаниеТипов("Число"),заг,10);


И вы (и мы) увидите строку в "Нам"

3) Возможно вы удивитесь, но вполне возможно, что в Справочник.СтруктурныеЕдиницы
есть подразделения с одинаковым наименованием
4 PR
 
03.04.25
09:55
(0) Какое нахрен наименование?
Бери гуид, в котором удаляй "-", а перед ним пиши что-нибудь типа "Склад"
5 Fedor-1971
 
03.04.25
09:58
(0) Повтояющиеся наименования колонок?
"Подраз деление" и "П одразделение" - дадут одно имя колонки

Добавь нумератор
ТЗ.Колонки.Добавить(нам + Формат(НомерСтроки, "..."),Новый ОписаниеТипов("Число"),заг,10);
6 Мультук
 
гуру
03.04.25
10:02
(4)

Я думаю, она пока не осилит концепцию "в имени одно", а в заголовке другое.

Хотя нет - судя по "коду" осилит
7 dkalin
 
03.04.25
10:29
Я извиняюсь,вот код ошибки
Ошибка при вызове метода контекста (Добавить)
{ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(54)}:ТЗ.Колонки.Добавить(нам,Новый ОписаниеТипов("Число"),заг,10);
{ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(157)}:пнПриИзмененииНаСервере();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Неверное имя колонки
[ОшибкаИспользованияВстроенногоЯзыка]
8 Garykom
 
гуру
03.04.25
11:03
(7) Имя колонки:
1. Должно быть уникальным
2. Соответствовать правилам для переменных (начинается с символа, нет пробелов и т.д.)

В данном случае обернуть в попытку и в исключении выводить это кривое имя чтобы видеть
Типа
ТекстОшибки = СтрШаблон("Не смогли создать колонку ""%1""", ИмяКолонки);
ОбщегоНазначения.СообщениеПользователю(ТекстОшибки);
9 dkalin
 
03.04.25
11:05
Самое интересное,что я поменяла вообще,просто
//  ТЗ.Колонки.Добавить(нам+н,Новый ОписаниеТипов("Число"),заг,10);
        ТЗ.Колонки.Добавить("Осталось",Новый ОписаниеТипов("Число"),"Осталось",4);
Вообще не должно ругаться.
ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Неверное имя колонки
[ОшибкаИспользованияВстроенногоЯзыка]
10 dkalin
 
03.04.25
11:13
ВнешняяОбработка.СозданиеПеремещенийУНФ.Форма.Форма.Форма(55)}:ТЗ.Колонки.Добавить("Осталось",Новый ОписаниеТипов("Число"),"Осталось",4);
11 Мультук
 
гуру
03.04.25
11:13
(9)

Имя колонки должно быть уникальным

Если вы в цикле (а у вас цикл) делаете

ТЗ.Колонки.Добавить("Осталось",Новый ОписаниеТипов("Число"),"Осталось",4);

То первый раз колонка добавится.
А в следущий раз - будет ошибка.
12 dkalin
 
03.04.25
11:22
Я поняла,спасибо огромное! Сейчас буду смотреть