8.х Помогите разобраться с формирвоанием табличногополя

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем andrenko, 26 май 2010.

  1. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    1. СФормировал табличное поле
    2. програмно добавил колонки и указал имена этих колонок.
    3. создал новую строку.
    4. а как теперь вогнать туда данные, если колонки созданы программно?
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    По имени колонки, например вот так:
    Код:
    Стр = ТЗ.Добавить();
    Стр["ИмяКолонки1"] = "Некое значение1";
    
    
  3. GRFru
    Offline

    GRFru Опытный в 1С

    Регистрация:
    22 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Баллы:
    26
    Код:
    Стр= ЭлементыФормы.ТабличноеПоле.ДобавитьСтроку();
    Стр["ИмяКолонки1"] = "Некое значение1";
    
    думаю так
  4. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    а как перебрать колонки?
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    По индексу. В Стр[ ], между [] указываете индекс колонки. Нумерация с 0.

    Либо циклом "Для каждого колонка Из ЭлементыФормы.ТабличноеПоле.Колонки Цикл"
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Не чет я хрень вам написал.
    Код:
    Стр= ЭлементыФормы.ТабличноеПоле.ДобавитьСтроку();
    Стр["ИмяКолонки1"] = "Некое значение1";
    
    так работать не должно. У вас работает что-ли?
    Надо так:
    Код:
    Стр= ТабличноеПоле.Добавить();
    Стр["ИмяКолонки1"] = "Некое значение1";
    
  7. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Сделал так:

    Новаястрока = ТабличноеПоле1.Добавить();

    для Каждого колонка из ЭлементыФормы.ТабличноеПоле1.Колонки цикл
    Новаястрока[колонка.Имя] = "ййй"
    КонецЦикла;

    Выдает ощибку "Поле объекта не обнаружено (0)"

    Что я делаю не так?
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.781
    Симпатии:
    509
    Баллы:
    204
    Уберите цикл. Дело в том что вы в цикле перебираете пока еще не созданные данные.
    Вот как пример:
    НоваяСтрока = ТаблицаЦен.Добавить();
    НоваяСтрока.Товар = ТекТовар;
    НоваяСтрока.Цена = ПолученнаяЦена;
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так не будет работать.. точнее может и будет, но не всегда без ошибок. Я ж написал что хрень сказал.
    Озвучьте полностью задачу, что вы хотите сделать, и для чего вам перебирать колонки.
  10. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    я вначале программно добавил колонки в таблицу.
  11. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну а дальше? Для чего вы их хотите в цикле перебрать?
  12. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    чтобы задать значения
  13. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так, а значения откуда берутся? почему вы хотите колонки именно в цикле перебирать, а не написать как вам уже приводили пример выше (ну даже: Новаястрока["Колонка1"] = "Значение1"; Новаястрока["Колонка2"] = "Значение2"; и т.д.)?
  14. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    потомучто количество колонок на начало формирования отчета не известно.
  15. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Какой отчет? Как вы его формируете. Не понимаю. То у вас ЭлементыФормы.ТабличноеПоле, теперь какой-то отчет.
    От начала до конца опишите, по типу есть такой-то и такой документ (если не типовая, то в нем к примеру такие поля). И (например) при нажатии на кнопку, мне надо сделать то-то и то-то.
  16. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Еще раз описываю задачу.
    формируется отчет состоящий из наименования и дней (день1, день2 ... деньN). Количество дней задается пользователем. Данные заносятся в табличноеПоле.
    Строка содержит в себе наименование (колонка1) и данные по дням (колонка2 ... колонкаN).
    Табличное поле, первоночально, содержит в себе одну колонку (Наименование), остальные колонки создаются программно исходя из анализируемого периода.
    Для каждого дня, исходя из Наименования, формируется запрос, результат выполнения которого заносится в соответсвующую ячейку строки.
  17. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Люди, ну помогите кто - нить! Как всетаки заносить даннные при переборе колонок?
  18. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Как вы создаете колонки? Покажите код.
  19. TopicStarter Overlay
    andrenko
    Offline

    andrenko Опытный в 1С

    Регистрация:
    20 ноя 2008
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26
    Код:
    количествоДней = НачалоДня(ПолеВводаТекущая) - НачалоДня(ПолеВводаДатаНачало);
    количествоДней = количествоДней/60/60/24 +1;
    счетчик = 0;
    мНачалоДня = НачалоДня(ПолеВводаТекущая);
    пока счетчик <= количествоДней цикл
    текстШапки = "" + формат(мНачалоДня, "ДФ=dd.MM.yy");
    Новаяколонка = ЭлементыФормы.ТабличноеПоле1.Колонки.Добавить();
    Новаяколонка.Имя = мНачалоДня;
    Новаяколонка.ТекстШапки = текстШапки;
    Новаяколонка.Ширина = 10;
    мНачалоДня = мНачалоДня + 24*60*60;
    счетчик = счетчик + 1;
    КонецЦикла;
    
    

    Используйте тэг CODE
  20. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Так нельзя делать.
    У вас колонки с одним именем получаются.
Похожие темы
  1. LDM
    Ответов:
    2
    Просмотров:
    630
Загрузка...

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