8.х Заполнение таблицы значений

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем analitik777, 6 ноя 2013.

  1. TopicStarter Overlay
    analitik777
    Offline

    analitik777

    Регистрация:
    30 окт 2013
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! В ПолеВвода вводят число, нажимают Enter, число добавляется в таблицу значений и оно отображается в новой строке ТабличногоПоля.
    Код:
    &НаКлиенте
    перем л экспорт;
    
    &НаСервере
    Процедура ПолеВвода1ПриИзменении(Элемент)
    Если Л = 1 Тогда
    ТЗ = Новый ТаблицаЗначений;
    Тз.Колонки.Добавить("Число",,,5);
    л=0;
    конецЕсли;
    ЗначениеВПоле = число(ЭлементыФормы.ПолеВвода1.Значение);
    СтрокаТаблицы = тз.Добавить();
    СтрокаТаблицы.Число = ЗначениеВПоле;
    ЭлементыФормы.ПолеВвода1.Значение = "";
    ЭлементыФормы.ТабличноеПоле1.Значение = Тз;
    ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
    ТекущийЭлемент = ЭлементыФормы.ПолеВвода1;
    КонецПроцедуры
    
    Процедура ПриОткрытии()
    л = 1;
    КонецПроцедуры
    
    Переменную Л ввожу, чтобы два раза таблицу значений не создавать, а то новая без введённых значений будет. Когда ввожу первое число, то всё нормально, а когда второе, то выдаётся ошибка: значение не является значением объектного типа, перестаёт видеть таблицу значений. Писал Тз в качестве глобальной переменной, там выдаётся ошибка, что нельзя такую глобальную переменную создавать. Что можно с ТаблицейЗначений сделать?
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    есть такая штука, как область видимости переменной.

    при первом вызове у вас создается переменная ТЗ и ей присваивается ссылка на таблицу значений, при втором вызове у вас уже Л<>1 и в тело условия исполнение не заходит, переменная ТЗ не создается и в строке СтрокаТаблицы=тз.Добавить() переменной тз нет.

    маленький совет - если есть желание разобраться с синтаксисом и алгоритмами на 1с, не надо делать управляемые формы - пользуйтесь обычными - они и больше похожи на скорее всего знакомые вам по дельфи и меньше заморочек с клиент-серверным взаимодействием и отсутствием некоторых типов (в том числе и таблицы значений) на клиенте.

    если знакомы с javascript - работа с переменными в 1с практически такая же
  3. TopicStarter Overlay
    analitik777
    Offline

    analitik777

    Регистрация:
    30 окт 2013
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Буду читать про область видимости) А так, все формы обычные)
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    с областью видимости - переменная видна в том блоке (процедуре, функции, модуле), где она ИНИЦИАЛИЗИРОВАНА, если не объявлена. исключение - экспортное объявление.

    поэтому у вас при повторном вызове процедуры ее не было - не было инициализации

Поделиться этой страницей