Хочу ТЗ добавить колонки почему выдает ошибку |
Я |
28.01.09 — 12:17
Тволна — ТЗ на форме;
Для ин=1 по 52 цикл
ИмяК=»К»+1;
Тволна.Колонки.Добавить(ИмяК,Новый ОписаниеТипов(«Число»));
КонецЦикла;
ПИШИТ:
{Форма.Форма(286)}: Ошибка при вызове метода контекста (Добавить): Неверное имя колонки
Тволна.Колонки.Добавить(ИмяК,Новый ОписаниеТипов(«Число»));
по причине:
Неверное имя колонки
1 — 28.01.09 — 12:17
Сообщить(ИмяКолонки) ?
2 — 28.01.09 — 12:19
Одна из причин: есть уже такая колонка
3 — 28.01.09 — 12:19
ошибка тут ИмяК=»К»+1
4 — 28.01.09 — 12:19
Может все же
ИмяК=»К»+ин;
5 — 28.01.09 — 12:20
(3) +1
(0) ты одноимённую колонку пытаешься вводить, не делая инкремента номера..
6 — 28.01.09 — 12:21
пора книгу писать «Миста — как средство групповой отладки»
7 — 28.01.09 — 12:21
(5)это я понял протупил делаю так
ИмяК=»К»+ин;
ПИШИТ:
{Форма.Форма(286)}: Ошибка при вызове метода контекста (Добавить): Неверное имя колонки
Тволна.Колонки.Добавить(ИмяК,Новый ОписаниеТипов(«Число»));
по причине:
8 — 28.01.09 — 12:25
плин, ну воткни ты Сообщить(ИмяК); перед Тволна.Колонки.Добавить(); много интересного увидишь
9 — 28.01.09 — 12:26
(6) +1
(7) добавь проверку на существующие колонки.
10 — 28.01.09 — 12:27
пишИт
11 — 28.01.09 — 12:27
(9) при грамотном добавлении колонок проверять ничего не надо..
12 — 28.01.09 — 12:28
(8)Счет идет К1,К2,К3…. но колонки на форме не добавляються.
13 — 28.01.09 — 12:29
(11) согласен.
14 — 28.01.09 — 12:31
а сейчас товарищи объяснят, что «ТЗ на форме» — это небывает
15 — 28.01.09 — 12:36
(14)В смысле небывает.
16 — 28.01.09 — 12:48
(15) в смысле, что на форме у тебя лежит табличное поле, к которому привязана таблица значений. а это суть разные объекты.
17 — 28.01.09 — 12:51
Хорошо когда на 16 дебильных постов один верный, значит не все так плохо, спасибо 4.
18 — 28.01.09 — 12:53
(17) для обучения есть два пути: сказать «вот так правильно» и сказать «вот так не правильно». в первом случае обучаемый получит рыбу, а во втором — удочку. разницу чуешь?
19 — 28.01.09 — 12:55
Все, всем спасибо, разобрался…
ТСтат=Новый ТаблицаЗначений;
Для ин=1 по 52 цикл
ИмяК=»К»+ин;
ТСтат.Колонки.Добавить(ИмяК,Новый ОписаниеТипов(«Число»));
КонецЦикла;
ЭлементыФормы.ТВолна.Значение=ТСтат;
ЭлементыФормы.ТВолна.СоздатьКолонки();
Так работает
20 — 28.01.09 — 12:57
(17) На 19.
dimoff
21 — 28.01.09 — 13:06
(18) Да, ты тоже прав.
Содержание:
1. Причина возникновения ошибки «Неверное имя колонки»
2. Выявление места возникновения ошибки о неверном имени колонки
1. Причина возникновения ошибки «Неверное имя колонки»
Ошибка «Неверное имя колонки» может возникать при работе с таблицами. Ошибка связана с несоблюдением требований в части формата служебного свойства объекта встроенного языка.
Информации не так много про эти требования. Известно, что используется имя колонки как идентификатор, и должно удовлетворять следующим моментам:
· Начинаться должно с символа подчеркивания, либо с буквы
· Не должно содержать никаких символов кроме алфавитных, символа подчеркивания и цифр.
Таким образом, если при выполнении кода возникает ошибка «Неверное имя колонки» в 1С — смело целенаправленно смотрим на имя, которое мы пытаемся присвоить нашей колонке, возможно нужно изменить имя колонки.
2. Выявление места возникновения ошибки о неверном имени колонки
Пара способов, оба по-своему хороши:
1. В тексте ошибки содержится информация о модуле, в котором произошла ошибка и номере строки. Нажимаем «Подробно» и смотрим, где что произошло:
Сообщение Неверное имя колонки
Неверное имя колонки в 1С Предприятие
Идем сверху вниз. На моем примере: строка 42 модуля управляемой формы моей внешней обработки 1С Предприятие повлекла за собой ошибку в 32 строке модуля формы, которая, в свою очередь, нашла свое отражение в 9 строке модуля формы моей внешней обработки. Т.е. неверное имя колонке я попытался присвоить в 42 строке кода модуля формы.
2. В конфигураторе в режиме отладки: «Отладка» — «Остановка по ошибке»
Остановка по ошибке
Останавливаться по ошибке Неверное имя колонки
При возникновении ошибки будет открыт модуль – источник, и активная строка в 1С, где произошла ошибка.
Модуль источник Неверного имя колонки
Далее, можно посмотреть, какое имя мы пытались присвоить колонке и внести изменения, чтобы имя колонки было указано верно.
Набросаем простенькую обработку для проверки, что же можно указывать в имени колонки, и чего нельзя.
Проверка изменения имени колонки
Пробуем:
1. «1абвгдеёжзиклмнопрстуфхцчшщъыьэюя» — Нельзя
Пример Неверное имя колонки
2. Убираем с первой позиции – Можно
Исправление Неверное имя колонки в 1С
3. Пробелы – Нельзя
Пример Неверное имя колонки в 1С
4. Точки, запятые и т.д. – Нельзя
Пример с точками и запятыми — Неверное имя колонки
5. Знак подчеркивания «_» — Можно. Можно даже на первой позиции имени колонки
Пример с точками и запятыми Неверное имя колонки
6. Пустая строка «» — как оказалось, можно
Пример отсутствия ошибки Неверное имя колонки
Специалист компании «Кодерлайн»
Сергей Пушкин
-
Добрый день!
Создаю объект «ТаблицаЗначений», добавляю колонку:ТаблицаЗначений = Новый ТаблицаЗначений; ТаблицаЗначений.Колонки.Добавить("Колонка");
Получаю ошибку:
«Ошибка при вызове метода контекста (Добавить): Неверное имя колонки
ТаблицаЗначений.Колонки.Добавить(«Колонка»);
по причине:
Неверное имя колонки»По какой-то причине не устраивает тип значения имени колонки…
Помогите пожалуйста разобраться! -
Offline
Melanto
Опытный в 1С- Регистрация:
- 28 ноя 2007
- Сообщения:
- 204
- Симпатии:
- 0
- Баллы:
- 26
Вот именно тот текст, что в посте работает без проблем.
Посмотрите, может где-то уже добавили в эту ТЗ такую колонку.
И попытка добавить вторую колонку с тем же именем дает такую ошибку. -
проверял в пустой обработке:
Процедура КнопкаВыполнитьНажатие(Кнопка) ТаблицаЗначений = Новый ТаблицаЗначений; ТаблицаЗначений.Колонки.Добавить("Колонка"); КонецПроцедуры
результат тот-же(
-
Offline
Melanto
Опытный в 1С- Регистрация:
- 28 ноя 2007
- Сообщения:
- 204
- Симпатии:
- 0
- Баллы:
- 26
Мда…
У меня в БП все пошло…Вот тут все работает…
А пустая обработка — насколько она пустая?
Изменить имя ТЗ не пробовали?Вложения:
-
zz.epf
- Размер файла:
- 4,6 КБ
- Просмотров:
- 86
-
а у меня с вашей обработкой таже проблема…как же такое понимать? :unsure:
-
Offline
Melanto
Опытный в 1С- Регистрация:
- 28 ноя 2007
- Сообщения:
- 204
- Симпатии:
- 0
- Баллы:
- 26
Попробуйте все же имя ТЗ поменять. Да и Колонка «Колонка» не очень звучит…
И еще. А в какой конфе-то не работает? А в отладке что видно? На момент добавления колонки — там такой еще нет?
-
Offline
tunec
Опытный в 1С- Регистрация:
- 2 июн 2008
- Сообщения:
- 469
- Симпатии:
- 0
- Баллы:
- 26
версия платформы и конфигурации в студию!
у мну работает без проблем. 8.0 УТ 10.2
-
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Имя колонки поменяйте — на некоторых платформах не обрабатывается. Типа зарезервированное слово
-
Платформа: 8.1
Конфигурация: УТ (10.3.3.3)Оригинальный код, по сути не отличающийся от приведенного выше:
Отступ=0; Индекс=0; ТаблицаТоваров = Новый ТаблицаЗначений; МассивИмен = Новый Массив(); Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл("D:tmpЗагрузкаXML.xml"); Пока Чтение.Прочитать() Цикл; Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда Отступ = Отступ + 1; Если Отступ = 4 Тогда МассивИмен.Добавить(Чтение.Значение); ТаблицаТоваров.Колонки.Добавить(МассивИмен[Индекс]); Отступ=3; Индекс = Индекс+1; КонецЕсли; КонецЕсли; КонецЦикла;
Показания дебагера при отладке в файле.
Вложения:
-
pic.gif
- Размер файла:
- 24,8 КБ
- Просмотров:
- 170
-
-
Offline
ASh
Опытный в 1С- Регистрация:
- 10 сен 2008
- Сообщения:
- 568
- Симпатии:
- 0
- Баллы:
- 26
Так в имени колонки нельзя пробелы использовать
-
в картинке специально вывел результат вычисления ТаблицаТоваров.Колонки.Добавить(«ИмяКол»)
там таже проблема.
На всякий случай проверил вашу гипотезу и убрал из строки пробелы — результат тот же.(((( -
Offline
BabySG
Администраторы
Команда форума
Администратор- Регистрация:
- 10 июн 2007
- Сообщения:
- 11.853
- Симпатии:
- 18
- Баллы:
- 29
Гипотезы нет — пробелов нельзя делать, а также любых символов, за исключением алфавитно-цифровых.
По скрину видно, что там куча пробелов.
Вместо добавления колонки сделай вывод на экран в ковычках — что бы увидеть, какие имена пытаются присвоиться.
Результат покажи. -
Увы, результат такойже
Вложения:
-
pic.gif
- Размер файла:
- 23,7 КБ
- Просмотров:
- 130
-
-
Offline
coder1cv8
Опытный в 1С- Регистрация:
- 30 авг 2007
- Сообщения:
- 101
- Симпатии:
- 0
- Баллы:
- 26
Не парь людям мозги! ) На момент добавления у тебя уже есть ТЗ колонка с таким именем.
-
оказывается в метод «добавить» не надо передавать параметр…непонятно каким образом туда попадает очередное имя…
-
Offline
ASh
Опытный в 1С- Регистрация:
- 10 сен 2008
- Сообщения:
- 568
- Симпатии:
- 0
- Баллы:
- 26
У метода добавить есть ряд определенных параметров. В синтакс-помощнике есть понятное описание каждого из них. И там по-русски написано, что если опустить параметр «Имя», то будет создана колонка с пустым именем, т.е. обратиться к ней можно будет только по номеру. И вообще, Вам уже несколько раз конкретно написали в чем ошибка. Просто перед ошибкой просмотрите имена уже созданных колонок. Все сразу встанет на свои места.
-
До сих пор ответа на вопрос не получил т.к., возможно, не совсем полно описал проблему. Креплю специально написанный для демонстрации ошибки код, неработоспособность которого ставит меня в тупик.
Перем Индекс; Процедура КнопкаВыполнитьНажатие(Кнопка) Индекс=0; ТаблицаТоваров = Новый ТаблицаЗначений(); Если Индекс < 3 <span style='cursor: pointer; color:red' Onclick="window.open('/wiki/index.php/тогда')">Тогда </span> ТаблицаТоваров.Колонки.Добавить(Строка(Индекс)); Индекс = Индекс+1; КонецЕсли; КонецПроцедуры
Простите за назойливость. :unsure:
-
Можно багу выставлять? данный трабл проявляется при использовании «Если Тогда»
Если организовывать цикл «Для По Цикл» -все работает… :unsure: -
Offline
ASh
Опытный в 1С- Регистрация:
- 10 сен 2008
- Сообщения:
- 568
- Симпатии:
- 0
- Баллы:
- 26
Можно выставить багу, если действительно это у Вас в цикле работает
На самом деле, к именам колонок применяются те же требования, что и к именам переменных, процедур и функций. То есть имя может начинаться только с буквы или знака подчеркивания. В Вашем коде имя получается «0» — так работать НЕ ДОЛЖНО.
-
ок), проверьте так:
Если Индекс < 3 <span style='cursor: pointer; color:red' Onclick="window.open('/wiki/index.php/тогда')">Тогда </span> ТаблицаТоваров.Колонки.Добавить("Кол"+Строка(Индекс)); Индекс = Индекс+1; КонецЕсли;
+1
Функция Пребразует строку наименования в строку идентификатора колонки ТЗ
Когда программно создаете таблицу значений на основании каких-либо данных, то приходится создавать колонки этой ТЗ и назвать колонки наименованиями этих же данных.
Если в строке наименования для колонки присутствуют недопустимые символы, то вылетит ошибка Ошибка при вызове метода контекста (Добавить) или ТЗ.Колонки.Добавить(ИмяКолонки); по причине: Неверное имя колонки, данная функция поможет избавиться от всех недопустимых символов в названии колонки:
Код 1C v 8.х
// Пребразует строку наименования в строку идентификатора колонки ТЗ
// Аргументы:
// Наименование товара, которое будет преобразовано в наименование колонки ТЗ в соответствии с правилами именования переменных.
// Символ - символ, на который будут заменятся символы, не соответствующие правилам именования переменных.
Функция глНаименованиеКолонки(Элемент, Символ="_") Экспорт
Перем Результат;
Результат = "_"+СтрЗаменить(Элемент," ",Символ);
Результат = СтрЗаменить(Результат,"/",Символ);
Результат = СтрЗаменить(Результат,"",Символ);
Результат = СтрЗаменить(Результат,".",Символ);
Результат = СтрЗаменить(Результат,",",Символ);
Результат = СтрЗаменить(Результат,"+",Символ);
Результат = СтрЗаменить(Результат,"-",Символ);
Результат = СтрЗаменить(Результат,"!",Символ);
Результат = СтрЗаменить(Результат,"@",Символ);
Результат = СтрЗаменить(Результат,"#",Символ);
Результат = СтрЗаменить(Результат,"$",Символ);
Результат = СтрЗаменить(Результат,"%",Символ);
Результат = СтрЗаменить(Результат,"^",Символ);
Результат = СтрЗаменить(Результат,"&",Символ);
Результат = СтрЗаменить(Результат,"*",Символ);
Результат = СтрЗаменить(Результат,"(",Символ);
Результат = СтрЗаменить(Результат,")",Символ);
Результат = СтрЗаменить(Результат,"№",Символ);
Результат = СтрЗаменить(Результат,";",Символ);
Результат = СтрЗаменить(Результат,":",Символ);
Результат = СтрЗаменить(Результат,"?",Символ);
Возврат Результат;
КонецФункции
Обработка выдает ошибку… {Форма.Форма.Форма}: Ошибка при вызове метода контекста (НайтиСтроки) по причине: Неверное имя колонки Подскажите, если кто сталкивался…
так колонка то и неверное имя имеет
подсказываю: Неверное имя колонки
+ и телепатов тут по понедельникам нету обычно
обработку в топку что ты собрался учитывать на вспомогательном счете?
давно с клюшек перешел? учи матчасть
блин, надо удалить строки с счетом учета «000» из определенного документа «корректировка записей регистров»…
какая конфа, какой регистр корректируешь? и обычно колонка имеет другое имя
+ что у вас все выпытывать надо
8.2 УПП, регистр — НезавершенноеПроизводствоБухгалтерскийУчет
ТаблицаРегистровНакопления — красивое слово. Сам придумал такое? Ведь знаешь же еще из детского сада, что у этого документа никаких табличных частей нет. Надо править прямо в регистрах.
есть у него табличная часть, но там записываются имена регистров которые корректируются
качни книгу 1C_Predpriyatie_8.1._Prostye_primery_razrabotki там много примеров найдешь, оч полезно новичку
как верно подметил рано тебе еще такие вещи делать
в топку книгу, хоть и не читал, но зуб даю что там нет примера как править НаборыЗаписей
невтопку) читтать нуна,что бы шарить боле менее, там не то что б книга, там сборник примеров
кстате, гони ЗУБ ) там есть пару примеров)
правильно… на фиг что-то читать… не царское это дело…
на фиг читать — это когда все знаешь )
угу… щас, штаны подтяну…
править надо не табличную часть, а движения самого регистра непосредственно. Хотя, судя по вашему коду, зовите спеца, а то дров будет наломано по самое нехочу.
лень переписывать, копипаст не канает там, смотри сам )
кстате, код как пример в книге
это ты автору сейчас дал чтоб поприкалываться? он же ща грохнет все записи
это для ознакомления , куда ехать за зубом?
выборочное удалени записей там есть?
за зубом ехай в Неризиновск
не не, зуб обещал, давай гони делай фотку, закидыва в инет и ссылку в студию)
а тут посмотрим какого он цвета)
пример выборочного удаления записей
есть, читай, пастить влом
не отмазывайся, на пример правки наборов записей примеры и и катят. Так что, гони зуб ).
хрен с вами приезжайте в Нерезиновск состыкуемся для передачи оного
+ тока один на всех (мне как раз давно пора левую верхнюю восьмерку удалить)
выдирай пасатижами, кидайй в конверт и правь в Спб =))
8-ку пасатижами? это ж как надо рот раскрыть?
походу ТС пошел выпить яду
Тэги:
Комментарии доступны только авторизированным пользователям