Имя: Пароль:
1C
1C 7.7
v7: Как в 7.7 скопировать строку ТЗ в строку документа?
, ,
0 batmansoft
 
18.12.14
10:50
Добрый день. Вот в восьмерине все с этим просто, а как такое реализовать в семерке?
Делаю что то наподобие вот этого:
    ТЗ.ВыбратьСтроки();        
    стр=1;
    КК=ТЗ.КоличествоКолонок();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        НоваяСтрока();
        СчетчикЦикла = 0;
        Для й = 1 По КК Цикл  
            ЗначениеКолонки=ТЗ.ПолучитьЗначение(стр,1);
            УстановитьАтрибут(й,ЗначениеКолонки);    
        КонецЦикла;  
        стр=стр+1;
    КонецЦикла;
Говторит:
"УстановитьАтрибут(й,ЗначениеКолонки);    
{Документ.Реализация.Форма.Модуль(1551)}: Неверное имя атрибута"
Есть ли какой то другой способ?
1 Ёпрст
 
18.12.14
10:51
(0) в клюшках, в отличии от снеговика, есть метод Заполнить()
2 2S
 
18.12.14
10:51
А просто загрузить строку по номеру, не?
3 Ёпрст
 
18.12.14
10:52
ну и ВыгрузитьТабличнуюЧасть и ЗагрузитьТабличнуюЧасть для документа
4 batmansoft
 
18.12.14
11:04
(3) Это не прокатит, надо копировать только строки где заполнено количество. А за (1) спасибо, попробую.
5 batmansoft
 
18.12.14
11:12
Сделал так:
    КК=ТЗ.КоличествоКолонок();  
    ТЗНов=СоздатьОбъект("ТаблицаЗначений");
    ТЗНов.Загрузить(ТЗ);
    ТЗНов.УдалитьСтроки();
    КС=ТЗ.КоличествоСтрок();
    для стр=1 по КС Цикл
        НоваяСтрока();
        //СчетчикЦикла = 0;
        //Для й = 1 По КК Цикл  
        //    ЗначениеКолонки=ТЗ.ПолучитьЗначение(стр,1);
        //    УстановитьАтрибут(й,ЗначениеКолонки);    
        //КонецЦикла;      
        ТЗНов.Заполнить(ТЗ,стр,стр);
        стр=стр+1;
    КонецЦикла;    
    ТЗНов.ВыбратьСтроку();
говорит:
"ТЗНов.Заполнить(ТЗ,стр,стр);
{Документ.Реализация.Форма.Модуль(1555)}: Номер за пределами значения!"
6 2S
 
18.12.14
11:16
Индекс строки с какого начинается в 8ке?
7 2S
 
18.12.14
11:19
Упс, про 77 речь
8 batmansoft
 
18.12.14
11:19
(6) В восьмерке с 0, но тут семерка
9 batmansoft
 
18.12.14
11:20
Сделал вот так:
    ТЗНов=СоздатьОбъект("ТаблицаЗначений");
    ТЗНов.Загрузить(ТЗ);
    ТЗНов.УдалитьСтроки();
    КС=ТЗ.КоличествоСтрок();
    для стр=1 по КС Цикл
        ТЗНов.НоваяСтрока();
        //СчетчикЦикла = 0;
        //Для й = 1 По КК Цикл  
        //    ЗначениеКолонки=ТЗ.ПолучитьЗначение(стр,1);
        //    УстановитьАтрибут(й,ЗначениеКолонки);    
        //КонецЦикла;      
        ТЗНов.Заполнить(ТЗ,стр,стр);
        //стр=стр+1;
    КонецЦикла;    
    ТЗНов.ВыбратьСтроку();
Но теперь почему то заполнят таблицу ТЗНов только первыми строками
10 Ёпрст
 
18.12.14
11:22
(9) всё в топку
11 Ёпрст
 
18.12.14
11:23
весь твой код заменяется одной строкой:

ТЗ.Выгрузить(ТЗНов);
12 dk
 
18.12.14
11:24
ТЗНов.УдалитьСтроки()
ТЗНов.КоличествоСтрок(ТЗ.КоличествоСтрок)
ТЗНов.Заполнить(ТЗ)
13 batmansoft
 
18.12.14
11:25
(12) Дык в том то и дело, что надо скопировать не все строки, а только по заданному условию. Когда у меня получиться скопировать строки в цикле, я просто тупо сделаю если и условие.
14 dk
 
18.12.14
11:29
скопируй как (11) а потом удали лишние
15 Ёпрст
 
18.12.14
11:31
(13)
ё..

ТЗ.НоваяКолонка("Вася");
ТЗ.ВыбратьСтроки();
сч=0;
Пока ТЗ.ПолучитьСтроку()=1 Цикл
  Если <условие> Тогда
     ТЗ.Вася=1;
     сч=сч+1;
  КонецЕсли;
КонецЦикла;
ТЗ.Сортировать("Вася-");
ТЗ.Выгрузить(ТЗ,сч+1);
16 batmansoft
 
18.12.14
11:34
(15) спасибо
17 Злопчинский
 
18.12.14
18:06
восьмерочники - они ж как дети.. их каждый обидеть может...
;-)
18 Vladal
 
18.12.14
18:07
(1) В 8-ке тоже есть метод с таким же действием.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший