8.х Табличное поле.

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

  1. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    ____________________________________________________________
    ____________|Контрагент1|Контрагент2__________________________|
    Номенклатура|Количество |Количество |
    ____________|Сумма |Сумма __________________________|


    Как сделать в обработке такую табличку? Колонки и строки добавляет пользователь.
  2. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Создаете табличную часть в табличных частях обратотки, указываете необходимый набор полей и создаете новую форму обработки, таблица автоматом появится.
    Если уже есть форма обработки и ее нельзя удалять, то на форме создаетет элемент управления Табличное поле, и указываете в свойстве Данные созданную табличную часть.
  3. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Не обратил внимание, что колонки пользователь сам создает.
    Тогда создается Табличное поле для которого колонки программно можно создавать так:
    Код:
    ТабличноеПоле1.Колонки.Добавить(<Имя>, <Тип>, <Заголовок>, <Ширина>);
    Элементыформы.ТабличноеПоле1.СоздатьКолонки();
    
    При добавлении новых колонок старые данные не затираются.
  4. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    см. рисунок.
    Нужно при нажатии добавить колонку добавлялся только контрагент. При нажатии добавить строку добавлялась строка

    Количество
    Номенклатура Сумма

    Вложения:

  5. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    Если я вас правильно понял то вам надо вот такое:
    Посмотреть вложение 5583

    Вот код, чтобы это работало:
    Код:
    Перем сч;
    Перем ОписаниеКоличество;
    Перем ОписаниеСумма;
    Перем ОписаниеКонтрагент;
    
    Процедура ПриОткрытии()
    сч=1;
    КЧ = Новый КвалификаторыЧисла(12,2);
    Массив = Новый Массив;
    Массив.Добавить(Тип("Число"));
    ОписаниеСумма = Новый ОписаниеТипов(Массив, , ,КЧ);
    КЧ = Новый КвалификаторыЧисла(10,0);
    Массив = Новый Массив;
    Массив.Добавить(Тип("Число"));
    ОписаниеКоличество = Новый ОписаниеТипов(Массив, , ,КЧ);
    Массив = Новый Массив;
    Массив.Добавить(Тип("СправочникСсылка.Контрагенты"));
    ОписаниеКонтрагент = Новый ОписаниеТипов(Массив);
    Массив = Новый Массив;
    Массив.Добавить(Тип("СправочникСсылка.Номенклатура"));
    ОписаниеНоменклатура = Новый ОписаниеТипов(Массив);
    
    ТабличноеПоле1.Колонки.Добавить("Номенклатура",ОписаниеНоменклатура,"Номенклатура",10);
    ТабличноеПоле1.Колонки.Добавить("Контрагент"+строка(сч),ОписаниеКонтрагент,"Контрагент",10);
    ТабличноеПоле1.Колонки.Добавить("Колличество"+строка(сч),ОписаниеКоличество,"Колличество",10);
    ТабличноеПоле1.Колонки.Добавить("Сумма"+строка(сч),ОписаниеСумма,"Сумма",10);
    Элементыформы.ТабличноеПоле1.СоздатьКолонки();
    Элементыформы.ТабличноеПоле1.Колонки.Колличество1.положение = положениеколонки.НаСледующейСтроке;
    Элементыформы.ТабличноеПоле1.Колонки.Сумма1.положение = положениеколонки.НаСледующейСтроке;
    КонецПроцедуры
    
    Процедура НоваяКолонкаНажатие(Элемент)
    сч=сч+1;
    ТабличноеПоле1.Колонки.Добавить("Контрагент"+строка(сч),ОписаниеКонтрагент,"Контрагент",10);
    ТабличноеПоле1.Колонки.Добавить("Колличество"+строка(сч),ОписаниеКоличество,"Колличество",10);
    ТабличноеПоле1.Колонки.Добавить("Сумма"+строка(сч),ОписаниеСумма,"Сумма",10);
    Элементыформы.ТабличноеПоле1.СоздатьКолонки();
    Для аа=1 по сч цикл
    Выполнить("Элементыформы.ТабличноеПоле1.Колонки.Колличество"+строка(аа)+".положение = положениеколонки.НаСледующейСтроке;");
    Выполнить("Элементыформы.ТабличноеПоле1.Колонки.Сумма"+строка(аа)+".положение = положениеколонки.НаСледующейСтроке;");
    КонецЦикла;
    КонецПроцедуры
    
    Процедура НоваяСтрокаНажатие(Элемент)
    ннстро = Табличноеполе1.Добавить();
    КонецПроцедуры
    
    
    Надеюсь я правильно понял :)

    Вложения:

    • test12.JPG
      test12.JPG
      Размер файла:
      27,7 КБ
      Просмотров:
      47
  6. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Огромное спасибо. Еще вопросик можно ли сделать так чтобы во второй и последующих строках не было поля контрагент.
  7. UnNone
    Offline

    UnNone Опытный в 1С

    Регистрация:
    21 мар 2007
    Сообщения:
    148
    Симпатии:
    0
    Баллы:
    26
    думаю, что так не получится, потому как "контрагент" является колонкой таблицы и если есть в первой строке, то и в последущих тоже будет.
    Как вариант решения, который пришел первый в голову: при создании колонки запрашивать контрагента и его имя вписывать в шапку, но тогда где-то придется хранить соответствие номеров колонок ссылкам на справочник контрагентов.

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