Вход | Регистрация
 

создание и заполнение таблицы значений на форме обработки

создание и заполнение таблицы значений на форме обработки
Я
   NIGHTHUNTER
 
01.10.20 - 09:25
Решил спросить. А то долго уже сижу. Буду по шагам.
Есть обработка. Мне нужно создать таблицу значений на ее форме, и динамически создавать ее колонки и заполнять значениями.
Все есть но вот с само таблицей на форме что то не идет.

Первый вопрос, я разместить для этого на форме должен Табличное Поле?
   NIGHTHUNTER
 
1 - 01.10.20 - 09:59
у внешней обработки нет таблицы значений

таблица значений лежит на форме обработки, без колонок

создаются программно и заполняются

ВОПРОС. Я заполнил таблицу, создались колонки и заполнились строки. Потом нажимаю ещё раз. Нужно ее очистить, но идет ошибка.
Как правильно очищать?

    //

    // ОЧИСТКА ВСЕГО

    ТаблицаЗагрузки.Очистить();
    ТаблицаЗагрузки.Колонки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Колонки.Очистить();
    //
   Ёпрст
 
2 - 01.10.20 - 10:01
(0) ё...
   Ёпрст
 
3 - 01.10.20 - 10:01
ТаблицаЗагрузки.Очистить();

всё
   Ёпрст
 
4 - 01.10.20 - 10:02
ЭлементыФормы.ТаблицаЗагрузки.ОбновитьСтроки() если очень надо еще потом
   NIGHTHUNTER
 
5 - 01.10.20 - 10:14
(4)

Я делаю вот так
    //

    // ОЧИСТКА ВСЕГО

    ТаблицаЗагрузки.Очистить();
    ТаблицаЗагрузки.Колонки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Колонки.Очистить();
    //



Но вот при повторном выполнении, когда все должно быть тоже самое, вылетает ошибка

{ВнешняяОбработка.ЗагрузкаИзБП_0_2.Форма.Форма.Форма(102)}: Ошибка при вызове метода контекста (Добавить)
        КолонкаТаблицыНаФорме           = ЭлементыФормы.ТаблицаЗагрузки.Колонки.Добавить(ИмяКолонки, ИмяКолонки);
по причине:
Недопустимое значение параметра (параметр номер '1')


Но если вот это выполняется ОЧИСТКА ВСЕГО, то загрузка идет как и при первом нажатии, от чего такая ошибка ????
   NIGHTHUNTER
 
6 - 01.10.20 - 10:17
Что вот это за ошибка, как ее исключить? Срабатывает при повторном выполнении!

{ВнешняяОбработка.ЗагрузкаИзБП_0_2.Форма.Форма.Форма(104)}: Ошибка при вызове метода контекста (Добавить)
        КолонкаТаблицыНаФорме           = ЭлементыФормы.ТаблицаЗагрузки.Колонки.Добавить(ИмяКолонки, ИмяКолонки);
по причине:
Недопустимое значение параметра (параметр номер '1')


Первый раз таблица формируется на форме. При повторном выполнении, то есть при пересоздании этой таблицы, идет ошибка, эта.
   NIGHTHUNTER
 
7 - 01.10.20 - 10:18
Полный код. При повторном нажатии идет ошибка ...


//

Процедура ЗагрузитьДанныеНажатие(Элемент)
    //

    Если Не ЗначениеЗаполнено(ЭтотОбъект.ФайлЗагрузки) Тогда
        Предупреждение("Необходимо выбрать файл для загрузки!",2,"ЗАГРУЗКА НЕ ВОЗМОЖНА!");
        Возврат;
    КонецЕсли;
    //

    // ОПИСЧАНИЕ ТИПОВ

    //

    КЧК    = Новый КвалификаторыЧисла(15,3);
    КЧЦ    = Новый КвалификаторыЧисла(15,2);    
    КС     = Новый КвалификаторыСтроки(200);
    КД     = Новый КвалификаторыДаты(ЧастиДаты.Дата);
    // 

    Массив = Новый Массив;
    Массив.Добавить(Тип("Строка"));
    ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
    //

    // ОЧИСТКА ВСЕГО

    ТаблицаЗагрузки.Очистить();
    ТаблицаЗагрузки.Колонки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Колонки.Очистить();
    //

    ЭлементыФормы.ТаблицаЗагрузки.ОбновитьСтроки();
    //

    ТаблицаЗагрузки2 = Новый ТаблицаЗначений;
    // ЭтотОбъект.ФайлЗагрузки;

    // ЭлементыФормы.ФайлЗагрузки.Значение;

    ЗагружаемыйФайл = Новый ТекстовыйДокумент;
    ЗагружаемыйФайл.Прочитать(ЭтотОбъект.ФайлЗагрузки);
    Шапка         = ЗагружаемыйФайл.ПолучитьСтроку(1);
    МассивКолонок = РазложитьСтрокуВМассивПодстрок(Шапка,Разделитель);
    Для Каждого ИмяКолонки Из МассивКолонок Цикл
        Если ИмяКолонки = "" Тогда
            Прервать;
        КонецЕсли;
        ИмяБезПробелов = СтрЗаменить(ИмяКолонки," ","");// убираем из имени колонок пробелы

        ТаблицаЗагрузки2.Колонки.Добавить(ИмяБезПробелов,,ИмяКолонки);         
        //

        ИмяКолонки                      = ИмяБезПробелов;
        КолонкаТаблицы                  = ТаблицаЗагрузки.Колонки.Добавить(ИмяКолонки, ОписаниеТиповС, ИмяКолонки, 30);
        КолонкаТаблицыНаФорме           = ЭлементыФормы.ТаблицаЗагрузки.Колонки.Добавить(ИмяКолонки, ИмяКолонки);
        КолонкаТаблицыНаФорме.Данные    = ИмяКолонки;
        КолонкаТаблицыНаФорме.Положение = ПоложениеКолонки.НоваяКолонка;
    КонецЦикла;
    //

    // 1. Номер    

    // 2. Дата    

    // 3. ВидОперации    

    // 4. Организация    

    // 5. Склад    

    // 6. Контрагент    

    // 7. ДоговорКонтрагента    

    // 8. СпособЗачетаАвансов    

    // 9. ТипЦен    

    // 10. КурсВзаиморасчетов    

    // 11. КратностьВзаиморасчетов    

    // 12. СуммаВключаетНДС    

    // 13. СчетНаОплатуПокупателю    

    // 14. Грузоотправитель    

    // 15. Грузополучатель    

    // 16. АдресДоставки    

    // 17. БанковскийСчетОрганизации    

    // 18. СуммаДокумента    

    // 19. Ответственный    

    // 20. Комментарий    

    // 21. Руководитель    

    // 22. Номенклатура    

    // 23. Количество    

    // 24. Цена    

    // 25. Сумма    

    // 26. СтавкаНДС    

    // 27. СуммаНДС    

    // 28. СчетУчета    

    // 29. СчетДоходов    

    // 30. Субконто    

    // 31. СчетУчетаНДСПоРеализации    

    // 32. СчетРасходов    

    // 33. КонтрагентИНН    

    // 34. НоменклатураАртикул    

    //

    Для НомерСтроки = 2 по ЗагружаемыйФайл.КоличествоСтрок() Цикл
        Строка        = ЗагружаемыйФайл.ПолучитьСтроку(НомерСтроки);
        Если Не ЗначениеЗаполнено(Строка) Тогда
            Продолжить;
        КонецЕсли;
        МассивКолонок = РазложитьСтрокуВМассивПодстрок(Строка,Разделитель);
        //        

        НоваяСтрока    = ТаблицаЗагрузки.Добавить();
        //

        НоваяСтрока2   = ТаблицаЗагрузки2.Добавить();
        //

        //Если МассивКолонок.Количество() <> ЭлементыФормы.ТаблицаЗагрузки.Колонки.Количество() - 1 Тогда

        //    Продолжить; 

        //КонецЕсли;

        Для НомерКолонки = 1 по МассивКолонок.Количество() Цикл 
            ТекущееЗначение         = МассивКолонок[НомерКолонки - 1];
            //

            ИмяКолонки              = ТаблицаЗагрузки.Колонки[НомерКолонки - 1].Имя;             
            НоваяСтрока[ИмяКолонки] = ТекущееЗначение;            
            //

            ИмяКолонки              = ТаблицаЗагрузки2.Колонки[НомерКолонки - 1].Имя;             
            НоваяСтрока2[ИмяКолонки] = ТекущееЗначение;            
            //

        КонецЦикла;           
    КонецЦикла;   
    
КонецПроцедуры
//
   NIGHTHUNTER
 
8 - 01.10.20 - 10:19
и я вижу что визуально

после вот этого колонки так же есть на форме, очищаются только строки

    // ОЧИСТКА ВСЕГО


    ТаблицаЗагрузки.Очистить();
    ТаблицаЗагрузки.Колонки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Значение.Колонки.Очистить();
    //
   NIGHTHUNTER
 
9 - 01.10.20 - 10:24
никто не подскажет? проблему описал в (7)(6)
   Ёпрст
 
10 - 01.10.20 - 11:08
(9) см.(3)
   NIGHTHUNTER
 
11 - 01.10.20 - 11:09
(10) это сделано
там программно создаются же колонки и строки
   NIGHTHUNTER
 
12 - 01.10.20 - 11:10
(10) вот же
    // ОЧИСТКА ВСЕГО


    ТаблицаЗагрузки.Очистить();
    ТаблицаЗагрузки.Колонки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Очистить();
    ЭлементыФормы.ТаблицаЗагрузки.Колонки.Очистить();
    //
   Ёпрст
 
13 - 01.10.20 - 11:10
ёё.. ну выкинь добавление колонок у табличного поля, достаточно, ЭлементыФормы.ТвоёТабПоле.СоздатьКолонки() и всё
   Ёпрст
 
14 - 01.10.20 - 11:10
+13
//   ЭлементыФормы.ТаблицаЗагрузки.Очистить();

  //  ЭлементыФормы.ТаблицаЗагрузки.Колонки.Очистить();
   Ёпрст
 
15 - 01.10.20 - 11:11
// КолонкаТаблицыНаФорме           = ЭлементыФормы.ТаблицаЗагрузки.Колонки.Добавить(ИмяКолонки, ИмяКолонки);

      // КолонкаТаблицыНаФорме.Данные    = ИмяКолонки;

      // КолонкаТаблицыНаФорме.Положение = ПоложениеКолонки.НоваяКолонка;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.