Имя: Пароль:
1C
1C 7.7
v7: цикл
0 Новичёк123123
 
21.07.11
17:42
ДоброгоВремениСуток) второй час бьюсь над решение проблемы никак не получается. вообщем есть вот такая форма справочника
[URL=http://saveimg.ru/show-image.php?id=fee522204240cb51f792857a5b06affa] [IMG]http://saveimg.ru/thumbnails/21-07-11/c5f5c66e174e70e171e3034a0238d499.JPG[/IMG][/URL]

нужно загрузить её в таблицу значений в таком же порядке как она расположена на картинке. В тупую перебором это сделать легко:

           СпрАкции.НайтиПоКоду(КодЭлемента);
           СпрАкции.ТекущийЭлемент();  
           СтрокаИ="и ";
           ТабЗначАкционныеТовары.НоваяСтрока();
           ТабЗначАкционныеТовары.Товар=СпрАкции.АкционныйТовар1;
           ТабЗначАкционныеТовары.Количество=СпрАкции.Количество1;
           Если ПустоеЗначение(СпрАкции.АкционныйТовар2)=0 Тогда
               ТабЗначАкционныеТовары._=СтрокаИ;
               ТабЗначАкционныеТовары.Товар2=СпрАкции.АкционныйТовар2;
               ТабЗначАкционныеТовары.Количество2=СпрАкции.Количество2;
           КонецЕсли;            
           Если ПустоеЗначение(СпрАкции.АкционныйТовар3)=0 Тогда
               ТабЗначАкционныеТовары.НоваяСтрока();
               ТабЗначАкционныеТовары.Товар=СпрАкции.АкционныйТовар3;
               ТабЗначАкционныеТовары.Количество=СпрАкции.Количество3;
               Если ПустоеЗначение(СпрАкции.АкционныйТовар4)=0 Тогда
                   ТабЗначАкционныеТовары._=СтрокаИ;
                   ТабЗначАкционныеТовары.Товар2=СпрАкции.АкционныйТовар4;
                   ТабЗначАкционныеТовары.Количество2=СпрАкции.Количество4;
               КонецЕсли;
           КонецЕсли;
           Если ПустоеЗначение(СпрАкции.АкционныйТовар5)=0 Тогда
               ТабЗначАкционныеТовары.НоваяСтрока();                  
               ТабЗначАкционныеТовары.Товар=СпрАкции.АкционныйТовар5;
               ТабЗначАкционныеТовары.Количество=СпрАкции.Количество5;
               Если ПустоеЗначение(СпрАкции.АкционныйТовар6)=0 Тогда
                   ТабЗначАкционныеТовары._=СтрокаИ;
                   ТабЗначАкционныеТовары.Товар2=СпрАкции.АкционныйТовар6;
                   ТабЗначАкционныеТовары.Количество2=СпрАкции.Количество6;
               КонецЕсли;            
           КонецЕсли;
           Если ПустоеЗначение(СпрАкции.АкционныйТовар7)=0 Тогда
               ТабЗначАкционныеТовары.НоваяСтрока();
               ТабЗначАкционныеТовары.Товар=СпрАкции.АкционныйТовар7;
               ТабЗначАкционныеТовары.Количество=СпрАкции.Количество7;
               Если ПустоеЗначение(СпрАкции.АкционныйТовар8)=0 Тогда
                   ТабЗначАкционныеТовары._=СтрокаИ;
                   ТабЗначАкционныеТовары.Товар2=СпрАкции.АкционныйТовар8;
                   ТабЗначАкционныеТовары.Количество2=СпрАкции.Количество8;
               КонецЕсли;
           КонецЕсли;    
           Если ПустоеЗначение(СпрАкции.АкционныйТовар9)=0 Тогда
               ТабЗначАкционныеТовары.НоваяСтрока();    
               ТабЗначАкционныеТовары.Товар=СпрАкции.АкционныйТовар9;
               ТабЗначАкционныеТовары.Количество=СпрАкции.Количество9;
               Если ПустоеЗначение(СпрАкции.АкционныйТовар10)=0 Тогда    
                   ТабЗначАкционныеТовары._=СтрокаИ;
                   ТабЗначАкционныеТовары.Товар2=СпрАкции.АкционныйТовар10;  
                   ТабЗначАкционныеТовары.Количество2=СпрАкции.Количество10;
               КонецЕсли;
           КонецЕсли;  

Сделал без проблем но подумал что лучше сделать в цикле. Пробовал так:

ПроверкаНаЧетность=0;
           СчетКол=1;                    
           Для Счет=1 по 9 цикл
               ПроверкаНаЧетность=Счет/2;
               Если (ПроверкаНаЧетность<>1) или (ПроверкаНаЧетность<>2) или (ПроверкаНаЧетность<>3) или (ПроверкаНаЧетность<>4) Тогда
                   СчетКол=Счет+1;
                   ЗначениеПараметраТовар = ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(АкционныйТовар" + Счет + ")]"));
                   ЗначениеПараметраКоличество = ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Количество" + Счет + ")]"));                
                   Если ПустоеЗначение(СпрАкции.ЗначениеПараметраТовар)=0 Тогда
                       ТабЗначАкционныеТовары.НоваяСтрока();
                       ТабЗначАкционныеТовары.Товар=СпрАкции.ЗначениеПараметраТовар;
                       ТабЗначАкционныеТовары.Количество=СпрАкции.ЗначениеПараметраКоличество;
                   КонецЕсли;
                   ЗначениеПараметраТовар2 = ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(АкционныйТовар" + СчетКол + ")]"));
                   ЗначениеПараметраКоличество2 = ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Количество" + СчетКол + ")]"));                
                   Если ПустоеЗначение(СпрАкции.ЗначениеПараметраТовар2)=0 Тогда
                       ТабЗначАкционныеТовары._=СтрокаИ;
                       ТабЗначАкционныеТовары.Товар2=СпрАкции.ЗначениеПараметраТовар2;
                       ТабЗначАкционныеТовары.Количество2=СпрАкции.ЗначениеПараметраКоличество2;
                   КонецЕсли;
               КонецЕсли;  
           КонецЦикла;
           


И так:

ПроверкаНаЧетность=0;
           СчетКол=1;                    
           Для Счет=1 по 9 цикл
               ПроверкаНаЧетность=Счет/2;
               Если (ПроверкаНаЧетность<>1) или (ПроверкаНаЧетность<>2) или (ПроверкаНаЧетность<>3) или (ПроверкаНаЧетность<>4) Тогда
                   СчетКол=Счет+1;
                   ЗначениеПараметраТовар="АкционныйТовар"+Счет;  
                   ЗначениеПараметраКоличество="Количество"+Счет;
                   Если ПустоеЗначение(СпрАкции.ПолучитьАтрибут(ЗначениеПараметраТовар))=0 Тогда
                       ТабЗначАкционныеТовары.НоваяСтрока();
                       ТабЗначАкционныеТовары.Товар=СпрАкции.ЗначениеПараметраТовар;
                       ТабЗначАкционныеТовары.Количество=СпрАкции.ЗначениеПараметраКоличество;
                   КонецЕсли;
                   ЗначениеПараметраТовар2 = "АкционныйТовар"+СчетКол;    
                   ЗначениеПараметраКоличество="Количество"+СчетКол;
                   Если ПустоеЗначение(СпрАкции.ПолучитьАтрибут(ЗначениеПараметраТовар2))=0 Тогда
                       ТабЗначАкционныеТовары._=СтрокаИ;
                       ТабЗначАкционныеТовары.Товар2=СпрАкции.ЗначениеПараметраТовар2;
                       ТабЗначАкционныеТовары.Количество2=СпрАкции.ЗначениеПараметраКоличество2;
                   КонецЕсли;
               КонецЕсли;  
           КонецЦикла;
                       
оба вариант ноль на массе. Подскажите в правильном ли я вообще направлении двигаюсь, и если в не правильном то подскажите через что пытаться) заранее спасибо)
1 Новичёк123123
 
21.07.11
17:49
2 Попытка1С
 
21.07.11
17:49
Ссылки не работают.
3 Новичёк123123
 
21.07.11
17:49
4 Новичёк123123
 
21.07.11
17:49
Вот последняя заработала)
5 Jstunner
 
21.07.11
17:51
что такое СпрАкции.ЗначениеПараметраТовар?
6 palpetrovich
 
21.07.11
17:54
(3) узнаю, узнаю очередную нетленку :)
7 Новичёк123123
 
21.07.11
17:57
Там все элементы имееют похожие названия: "АкционныйТовар№"

Вотя и попытался подставить вместо "АкционныйТовар№" Значение параметраТовар в котором хранится "АкционныйТовар№"с  но вместо № цифра из цикла

Что такое нетленка?
8 palpetrovich
 
21.07.11
17:59
нетленка - это то чем ты сейчас занимаешься :)
ИзобретательствоВелосипеда
9 Новичёк123123
 
21.07.11
17:59
АААА) а есть выход проще?)
10 Jstunner
 
21.07.11
18:02
Новичёк123123, ответь на (5)
11 Mikeware
 
21.07.11
18:07
(10) лучше попросить описать поставленную задачу, нежели корректировать херокод.
12 Новичёк123123
 
21.07.11
18:07
так ответил же в (7): СпрАкции.ЗначениеПараметраТовар это: мы создаём цикл для счет=1 по 9, и пока он работает мы ЗначениеПараметраТовар="АкционныйТовар"+счет, таким образом мы получаем название всех элементов на форме справочника(АкционныйТовар1,АкционныйТовар2..АкционныйТовар10)
13 Сияющий Асинхраль
 
21.07.11
18:08
(9) Слушай (5) и (9) - дело говорит
14 Новичёк123123
 
21.07.11
18:09
Задача загнать в таблицу значений значения всех элементов на форме именно в том порядке в котором они расположены, если элемент пуст то ничего и не заносить.
15 Сияющий Асинхраль
 
21.07.11
18:09
Ну ты же сам написал правильно:
СпрАкции.ПолучитьАтрибут(ЗначениеПараметраТовар)
А потом почему то переходишь:
СпрАкции.ЗначениеПараметраТовар
16 Новичёк123123
 
21.07.11
18:10
щас гляну)
17 Новичёк123123
 
21.07.11
18:20
Попутно столько ошибок нашёл, но заработало, криво правда, но хоть работает. Спасибо Асинхраль)
18 Сияющий Асинхраль
 
21.07.11
18:22
Благодари (5) - это он тебе показал, а ты не увидел :-)
19 Новичёк123123
 
21.07.11
18:25
И ему спасибо)
Ошибка? Это не ошибка, это системная функция.