Имя: Пароль:
1C
1C 7.7
v7: Операции с макетом в семерке
,
0 sanja26
 
07.07.12
18:59
Как перебрать строки макета?
1 zak555
 
07.07.12
19:01
мало данных
2 sanja26
 
07.07.12
19:03
да просто таблица с тысячей строк и четырьмя столбцами.. надо получать в цикле значения в полях строк
3 sanja26
 
07.07.12
19:04
в эксель чтоли перекидывать? так наверно проще будет
4 MishaD
 
07.07.12
19:09
Область(<?>)
Синтаксис:
Область(<Адрес>)
Назначение:
Возвращает значение типа ''ОбластьТаблицы'' области выходной таблицы или таблицы в режиме ввода данных.
Параметры:
<Адрес> - необязательный параметр. Строковое выражение, задающее имя области или адрес в формате ''R1C1:R2C2''. Если метод вызван без параметров, то область задана всей таблицей.
Замечание:
Метод может использоваться при работе с таблицей в режиме ввода данных.
5 sanja26
 
07.07.12
19:17
Макет = СоздатьОбъект("Таблица");
   Макет.ИсходнаяТаблица("Макет");
   
   Счетчик = 5;
   Пока Счетчик < 751 цикл
       Сообщить(Макет.Область("R" + Строка(Счетчик) + ":C2").Текст);  
       Счетчик = Счетчик + 1;
   КонецЦикла;


Сообщить(Макет.Область("R" + Строка(Счетчик) + ":C2").Текст);  
{L:\БАЗЫ\\ЗАВЕДЕНИЕПОСТУПЛЕНИЯ.ERT(11)}: Значение не представляет агрегатный объект (Текст)
6 BigHarry
 
07.07.12
19:20
Пробелы попробуй убрать из Строка(Счетчик), вроде через TrimAll
7 zak555
 
07.07.12
19:21
(2) откуда получил таблицу ?
8 Rie
 
07.07.12
19:21
(5) R1C1 не обязательно, можно просто Область(Счетчик,2).
9 Rie
 
07.07.12
19:22
+(8) Ну и уж явно не Область("R5:C2")
10 sanja26
 
07.07.12
19:23
(7) таблица - файл мхл. в него остатки вбиты. номенклатура, остаток
11 zak555
 
07.07.12
19:23
(10) кто тебе её дал ?
12 Rie
 
07.07.12
19:24
(5) Ну и ещё момент - Макет у тебя пустой, поскольку в него ничего не выведено.
13 sanja26
 
07.07.12
19:25
(12) ага пустые строки сообщает))
14 Rie
 
07.07.12
19:27
(13)
Макет = СоздатьОбъект("Таблица");
Макет.ИсходнаяТаблица(ТутИмяТвоегоФайлаMXL);
Макет.Вывести();
// ну а затем уж перебираешь строки и любуешься на их содержимое
15 MishaD
 
07.07.12
19:28
Если у тебя мхл файл, то попробуй

Открыть(<?>);
Синтаксис:
Открыть(<ИмяФайла>)
Назначение:
Открыть таблицу из файла.
Параметры:
<ИмяФайла> - строковое выражение с именем файла.
16 sanja26
 
07.07.12
19:29
(14, 15) добавил как таблицу к обработке, так что не файл..
17 Rie
 
07.07.12
19:29
(16) Тогда тем более скажи Вывести().
18 Dimanchik
 
07.07.12
19:32
А не проще сохранить в Эксель и оттуда уже вагон нароботок по чтению ?
19 sanja26
 
07.07.12
19:32
(14) спасибо, заработало

а это что за фигня
<<?>>{"S","0","0","0","0","0",""}
Неопознанный оператор
20 sanja26
 
07.07.12
19:33
так на вывести() ругается, но это уже не важно
21 MishaD
 
07.07.12
19:35
надо было через открыть делать. правда я 100 лет назад подобное делал, уже не помню
22 Rie
 
07.07.12
19:36
(18) Открывать зонтик в правом уже левой рукой, продетой под колено, - не лучший вариант.
23 Rie
 
07.07.12
19:37
(19) А это ЗначениеВСтрокуВнутр("")
24 Rie
 
07.07.12
19:38
+(23) А вот откуда оно у тебя взялось и почему воспринимается как выражение - это уж тебе виднее.
25 sanja26
 
07.07.12
19:42
вообщем результат) может кому понадобится

//*******************************************
Процедура Сформировать()    
   
   СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");  
   
   ДокПоступления = СоздатьОбъект("Документ.ПоступлениеТМЦ");
   ДокПоступления.Новый();
   ДокПоступления.ДатаДок = ТекущаяДата();      
   
   Макет = СоздатьОбъект("Таблица");
   Макет.ИсходнаяТаблица("Макет");    
   Макет.Вывести();
   
   Счетчик = 5;
   Пока Счетчик < 751 цикл    
       Адрес = "R" + Строка(Счетчик) + ":C2";
       Сообщить(Макет.Область(Счетчик, 2).Текст);
       СпрНоменклатура.НайтиПоКоду(СокрЛП(Макет.Область(Счетчик, 1).Текст));
       
       ДокПоступления.НоваяСтрока();
       ДокПоступления.Номенклатура = СпрНоменклатура.ТекущийЭлемент();
       ДокПоступления.Количество = Число(СокрЛП(Макет.Область(Счетчик, 1).Текст));      
       ДокПоступления.Цена = 1;  
       ДокПоступления.Сумма = 1;
       
       Счетчик = Счетчик + 1;
   КонецЦикла;        
   
   ДокПоступления.Записать();
   ОткрытьФорму(ДокПоступления.ТекущийДокумент());
   
   
КонецПроцедуры
26 big
 
07.07.12
21:16
Это какое-то откровение, чесс слово!!! Причем всего лишь за 43 минуты )))
Независимо от того, куда вы едете — это в гору и против ветра!