Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема при обращении к программно созданным колонкам ТабличногоПоля  (Прочитано 4513 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« : 21-06-2009 22:02 » 

Здравствуйте всем!!!
Подскажите пожалуйста такую вещь.
Во внешней компоненте в процедуре ПриОткрытии автоматом создаются несколько колонок, количество которых указывается пользователем. после загрузки этой компоненты при попытке добавить запись в нужную колонку вылетает ошибка. да и при написании процедуры добавления чет ниче не получается
вот код ПриОткрытии
Код:
Процедура ПриОткрытии()
скраундов=0;
скстрок=0;
ИмяИгры="";
КлИгроков=0;
КлТуров=0;
ИменаИгроков="";
предст="";
ТЗ= СоздатьОбъект("ТаблицаЗначений");
ТЗ.Очистить();
ВвестиСтроку(ИмяИгры,"Название игры",60);
Форма.Заголовок(ИмяИгры);
ВвестиЧисло(КлИгроков,"Сколько игроков",1,0);
ВвестиЧисло(КлТуров,"Сколько раундов",2,0);
ТЗ.НоваяКолонка("Игрок","Строка");
пока скраундов<>КлТуров Цикл
скраундов=скраундов+1;
предст="Тур"+Строка(СокрЛП(скраундов));
ТЗ.НоваяКолонка(предст,"Число",10,2);
КонецЦикла;
ТЗ.НоваяКолонка("Всего");
пока скстрок<>КлИгроков Цикл
скстрок=скстрок+1;
ТЗ.НоваяСтрока();
ВвестиСтроку(ИменаИгроков,"Имя Игрока "+скстрок,15);
ТЗ.Игрок=ИменаИгроков;
ИменаИгроков="";
КонецЦикла;
ТЗ.Выгрузить(Таблица);
ТЗ.Очистить();
предст="";
КонецПроцедуры // ПриОткрытии
а это код попытки добавить запись
Код:
Процедура Сформировать()
ТекТур=0;
ХодИгрока=0;
показ=0;
ТЗ = СоздатьОбъект("ТаблицаЗначений");
Таблица.Выгрузить(ТЗ);
ВвестиЧисло(ТекТур,"Тур №",2,0);
ВвестиЧисло(ХодИгрока,"Ходит игрок №",1,0);
ТЗ.ПолучитьСтрокуПоНомеру(ХодИгрока);
ВвестиЧисло(показ,"Результат",10,2);
предст="Тур"+Строка(СокрЛП(ТекТур));
ТЗ.предст=показ;
показ=0;
ХодИгрока=0;
ТекТур=0;
ТЗ.Выгрузить(Таблица);
КонецПроцедуры
p.s. где то в интернете читал что возможно с помощью курсора мыши активировать нужную ячейку на запись, но для этого нужна или formEX или 1cpp.dll, скачал обе а вот инфы чего нужно использовать не найду.
« Последнее редактирование: 21-06-2009 22:16 от Элексир » Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 21-06-2009 22:03 » 

p.p.s. ВО не для работы Улыбаюсь а для домашнего время препровождения
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 22-06-2009 05:50 » 

Хороший стиль программирования - добавлять проверки в код.
Я так думаю вылетает здесь:
ТЗ.ПолучитьСтрокуПоНомеру(ХодИгрока);
Т.к. задается число, строки для которого нету (ХодИгрока>ТЗ.КоличетсвоСтрок())

Выгружать таблицы не нужно - можно все действия делать в Таблица
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 22-06-2009 07:16 » 

Улыбаюсь забыл написать
это ошибка при вылете.
Код:
ТЗ.предст=показ;
{C:\КОНФЫ\Игры\EXTFORMS\ИГРЫ2.ERT(47)}: Поле агрегатного объекта не обнаружено (предст)
я так понимаю что это из за того что колонки явно не указаны в коде при написании.
я пробовал без ТЗ чет не получается.
Ход Игрока никогда не будет больше чем количество строк
ХодИгрока это сам игрок
« Последнее редактирование: 22-06-2009 07:19 от Элексир » Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 22-06-2009 09:08 » 

ТЗ.УстановитьЗначение(ХодИгрока, предст, показ);
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 22-06-2009 10:29 » 

Kivals, спасибо!!! все работает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines