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

1С:Предприятие ::

Метки:

Работа с таблицами значений

Я
   Sfinx
 
13.04.04 - 19:20
Можно ли программно создавать таблицы значений?

Задача такова- есть некая ТЗ, строки которой в соответствии со значением одной из колонок нужно распределить по разным ТЗ.
Сколько разных значений попадется - столько и ТЗ создать.
т.е. я заранее не знаю сколько у меня этих ТЗ будет.

Вопрос - как это реализовать?
тзПервая= СоздатьОбъект("ТаблицаЗначений")
А мне нужно в цикле или ещё как то создать тзВторая, тзТретья и т.д.
СоздатьОбъект возвращает ссылку на созданный объект, который мы присваиваем переменной.
Задача сводится к тому, чтобы создавать переменные?
Ещё устроил бы вариант Заполнить список значений, чтобы значениями были эти ТЗ. Хотя, что-то у меня никак не оформится мысль ;(
 
  Рекламное место пустует
   SnarkHunter
 
1 - 13.04.04 - 19:33
Делай ТЗ в ТЗ...
   Sfinx
 
2 - 13.04.04 - 21:13
Не совсем понял - чем мне это поможет?
Каков алгоритм?
   SnarkHunter
 
3 - 13.04.04 - 21:36
Это тебе поможет тем, что ТЗ (или СЗ)- это динамический массив, элементами которого могут быть нужные тебе ТЗ, количество которых заранее неизвестно...
   Sfinx
 
4 - 13.04.04 - 23:16
Спасибо. На самом деле помогло.
Сначала хотел все таки ТЗ в СЗ, но так искать не удобно.
Сделал ТЗ в ТЗ.
   //Очищаем

    тзВсеТаблицы.УдалитьСтроки();
    тзВывод.УдалитьСтроки();
    сзПризнакиРаспределения.УдалитьВсе();
   //Загружаем новый список.

    тзТекущийСписокДеталей=СоздатьОбъект(\"ТаблицаЗначений\");
     гаЗагрузитьСписокДеталей(ВыбЗаказ,тзТекущийСписокДеталей,Файл);
    //Загрузили файл

    //Начинаем разбор деталей по признакам потребностей.

    //На каждый признак создаем по таблице значений.

           тзТекущийСписокДеталей.ВыбратьСтроки();
           Пока тзТекущийСписокДеталей.ПолучитьСтроку() =1 Цикл
         ПризнРаспр=тзТекущийСписокДеталей.МПЗ.ПризнакРаспределения.Наименование;
         Если ПустоеЗначение(ПризнРаспр)=1 Тогда
            ПризнРаспр=\"null\"
         КонецЕсли;
             Стр=0;
            // Если деталь с таким признаком ещё не попадалась - добавляем в список признаков

            Если тзВсеТаблицы.НайтиЗначение(ПризнРаспр,Стр,\"Представление\") = 0 Тогда
                тзВсеТаблицы.НоваяСтрока();
                тзВсеТаблицы.Представление     = ПризнРаспр;
                тзВсеТаблицы.ТЗ                =СоздатьОбъект(\"ТаблицаЗначений\");
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"НомерДет\",    \"Число\" , 5, , \"№\", 4);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"Ширина\",        \"Число\" , 5, , \"Ширина\", 10);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"Длина\",        \"Число\" , 5, , \"Длина\", 10);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"Толщина\",    \"Число\" , 5, , \"Толщина\", 10);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"Количество\",    \"Число\"    , 5, ,\"Кол-во\", 10);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"МПЗ\",        \"Справочник.Материалы\", , , \"Материал\" , 30);
                    тзВсеТаблицы.ТЗ.НоваяКолонка(\"ПризнакДок\", , , , \"Документ\" , 18);                 

                тзВсеТаблицы.ТЗ.НоваяСтрока();
                    тзВсеТаблицы.ТЗ.НомерДет    = тзТекущийСписокДеталей.НомерДет;
                    тзВсеТаблицы.ТЗ.Ширина        = тзТекущийСписокДеталей.Ширина;
                    тзВсеТаблицы.ТЗ.Длина        = тзТекущийСписокДеталей.Длина;
                    тзВсеТаблицы.ТЗ.Толщина     = тзТекущийСписокДеталей.Толщина;
                    тзВсеТаблицы.ТЗ.Количество    = тзТекущийСписокДеталей.Количество;
                    тзВсеТаблицы.ТЗ.МПЗ            = тзТекущийСписокДеталей.МПЗ;
                    тзВсеТаблицы.ТЗ.ПризнакДок    = тзТекущийСписокДеталей.ПризнакДок;
            
            Иначе
                тзВсеТаблицы.ПолучитьСтрокуПоНомеру(Стр);
                тзВсеТаблицы.ТЗ.НоваяСтрока();
                    тзВсеТаблицы.ТЗ.НомерДет    = тзТекущийСписокДеталей.НомерДет;
                    тзВсеТаблицы.ТЗ.Ширина        = тзТекущийСписокДеталей.Ширина;
                    тзВсеТаблицы.ТЗ.Длина        = тзТекущийСписокДеталей.Длина;
                    тзВсеТаблицы.ТЗ.Толщина     = тзТекущийСписокДеталей.Толщина;
                    тзВсеТаблицы.ТЗ.Количество    = тзТекущийСписокДеталей.Количество;
                    тзВсеТаблицы.ТЗ.МПЗ            = тзТекущийСписокДеталей.МПЗ;
                    тзВсеТаблицы.ТЗ.ПризнакДок    = тзТекущийСписокДеталей.ПризнакДок;
            КонецЕсли;
        КонецЦикла;
     тзВсеТаблицы.Выгрузить(сзПризнакиРаспределения,,,\"Представление\");
    Если тзВсеТаблицы.КоличествоСтрок()>0 Тогда
        тзВывод.Загрузить(тзВсеТаблицы.ПолучитьЗначение(1,\"ТЗ\"));
    КонецЕсли;
        
КонецПроцедуры//Загрузить
   Sfinx
 
5 - 13.04.04 - 23:19
Даже в один проход получилось
и проанализировать весь список на предмет количества разных признаков
и создать для каждого признака свою ТЗ
и строки в эти ТЗ соответствующие занести.
О как. Весь день бился головой об стенку, а сейчас за час написал.
Ученье -свет ;)


Список тем форума
Рекламное место пустует   Рекламное место пустует
Независимо от того, куда вы едете — это в гору и против ветра!
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует