Имя: Пароль:
1C
1С v8
Обход коллекций и безусловная передача управления
,
0 kolp821
 
27.03.12
16:10
Помогите разобраться, я только учусь  1C и приходится копаться в чужом коде.
Есть цикл обхода коллекций и безусловная передача управления:

Для Каждого Стр из Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання Цикл
   Если Стр.СумаОплати > 1 тогда
       СП_Д = Стр.СумаОплати ;
       Перейти ~м_Обх ;
   КонецЕсли;    
КонецЦикла;    
       
~м_Обх :
ТабЧаст.Параметры.СП_Д = СП_Д ;
       

В СП_Д выводится первое значение из ТабличнаяЧастьОплатиЗаНавчання, как сделать что бы можно было выбрать и второе и следующие значение?
Извините если не правильно поставил вопрос.
1 YF
 
27.03.12
16:12
(0) Зачем здесь перейти, если есть Прервать?
2 kolp821
 
27.03.12
16:13
(1)Это не мое решение, но что даст Прервать?
3 YF
 
27.03.12
16:14
(2) Передачу управления в "сразу после цикла"
4 kolp821
 
27.03.12
16:16
(3) а поподробнее? просто незнаю всех тонкостей, как можно реализовать.
5 YF
 
27.03.12
16:16
(4) ДенисЧ тут СП продает, можно к нему, если свой украли
6 kolp821
 
27.03.12
16:18
(5) это к чему?
7 kolp821
 
27.03.12
16:22
Может кто то помочь?
8 ДенисЧ
 
27.03.12
16:23
Для Каждого Стр из Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання Цикл
   Если Стр.СумаОплати > 1 тогда
       СП_Д = Стр.СумаОплати ;
//        Перейти ~м_Обх ;
   КонецЕсли;    
КонецЦикла;    
       

Так все выведет, гарантирую...
9 Rebelx
 
27.03.12
16:23
(1) Даешь Перейти!!! это наш метод!!!

(0) тебе надо делать нужные действия внутри цикла, после того как нашел нужную строку. это если по-хорошему.
10 Ненавижу 1С
 
гуру
27.03.12
16:26
огласите полную постановку задачи и почему сравнивают сумму с 1?
11 kolp821
 
27.03.12
16:28
(8) я знаю, но мне нужно и 1 и 2 и 3 запись, все не нужно.

(9) пример если можно пожалуста, а то трудно очень сориентироваться.

(10) это мне предстает еще разобрать, а так мне кажется это проверка на пустоту заполнения.
12 Ненавижу 1С
 
гуру
27.03.12
16:31
(11) кажется, поверь
13 kolp821
 
27.03.12
16:34
(9) а как мне задать в цикле что мне нужна не первая, а пятая строка?
14 Человечкин
 
27.03.12
16:39
МояТЧ[1].Сумма
15 Человечкин
 
27.03.12
16:40
Вернее воттак: МояТЧ[НужныйНомерСтроки].Сумма
16 Человечкин
 
27.03.12
16:41
Кстати, таки якийыйсь бендеровец код писал ))))
17 Человечкин
 
27.03.12
16:41
"СумаОплати" ))
18 kolp821
 
27.03.12
16:42
(15) а можно на примере моего примера?
19 kolp821
 
27.03.12
16:42
(16) не то слово, был кипиш с этим работником.))
20 Человечкин
 
27.03.12
16:45
допустим у тебя есть списокзначений с номерами строк в ТаблЧасти:
Для Каждого Стр Из МойСписокЗначений Цикл
   Если СсылкаНаДокумент.ТабЧастьТовары[Стр.Значение].СумаОплати>1 Тогда
       Сообщить("Она дисительно больше ноля");
   КонецЕсли;
КонецЦикла;
21 Человечкин
 
27.03.12
16:47
в список значений пихаешь нужные номера строк, и потом в цикле перебераешь нужные тебе строки по номеру строки и будет тебе щастье.
22 Человечкин
 
27.03.12
16:47
(20) вернее больше единицы
23 kolp821
 
27.03.12
16:49
(22)ок, сейчас попробую
24 kolp821
 
27.03.12
16:59
(20)
Для Каждого Стр Из Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання Цикл

             Если Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання[НОМЕРСТРОКИ].СумаОплати>1 Тогда
                  СП_Д = Стр.СумаОплати ;
             КонецЕсли;
        КонецЦикла;
           
        ТабЧаст.Параметры.СП_Д = СП_Д ;

Какой бы не писал номер строки в НОМЕРСТРОКИ, выводит последние значение. Что не так делаю?
25 kolp821
 
27.03.12
17:25
ребята, помогите.
26 Ненавижу 1С
 
гуру
27.03.12
17:26
нас разводят
27 kolp821
 
27.03.12
17:34
(26) что ты имеешь в виду?
28 kolp821
 
27.03.12
17:57
я не кого не развожу, просто хочу получить помощь от более опытных.
29 Reset
 
27.03.12
18:00
>> Какой бы не писал номер строки в НОМЕРСТРОКИ, выводит последние значение. Что не так делаю?

НОМЕРСТРОКИ надо вот так писать:
ТабличнаяЧастьОплатиЗаНавчання[1-3]

Тебе же нужно с 1й по 3ю?
30 Человечкин
 
27.03.12
18:00
//Тут тебе надо знать список номеров строк которые будешь проверять и внутри цикла это:  
Если Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання[НОМЕРСТРОКИ].СумаОплати>1 Тогда
СП_Д = Стр.СумаОплати ;
КонецЕсли;

           
ТабЧаст.Параметры.СП_Д = СП_Д ;
31 Человечкин
 
27.03.12
18:04
СписокНомеровСтрок = Новый СписокЗначений;
СписокНомеровСтрок.Добавить(1);
СписокНомеровСтрок.Добавить(2);
СписокНомеровСтрок.Добавить(4);

СписокСумБольшеЕдиницы = Новый СписокЗначений;

Для Каждого Стр Из СписокНомеровСтрокЦикл

   Если СсылкаНаДокумент.ТабЧастьТовары[Стр.Значение].СумаОплати>1 Тогда
       СписокСумБольшеЕдиницы.Добавить(СсылкаНаДокумент.ТабЧастьТовары[Стр.Значение].СумаОплати);
   КонецЕсли;
КонецЦикла;

//Выводим все знеачения
Для Каждого Стр Из СписокСумБольшеЕдиницы
   ТабЧаст.Параметры.СП_Д = ТабЧаст.Параметры.СП_Д+СокрЛП(Стр.Значение);
КонецЦикла;
32 kolp821
 
27.03.12
18:05
Спасибо, разобрался. работает
33 Человечкин
 
27.03.12
18:07
Конечно работает ;)
34 kolp821
 
27.03.12
18:08
Сделал так:
       
       Для Каждого Стр из Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання[1] Цикл
           СП_Д = Стр ;
       КонецЦикла;    
       ТабЧаст.Параметры.СП_Д = СП_Д ;

Подскажите, как можно сделать, что бы номер строки можно выло выбирать с формы? можно ли сделать выпадающим списком?
35 Человечкин
 
27.03.12
18:14
(34) печально...
36 Человечкин
 
27.03.12
18:19
//в модуле при открытии  определяешь все строки:
Для Каждого Стр Из Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання Цикл
   ЭлементыФормы.МойРеквизит.СписокВыбора.Добавить(Стр.НомерСтроки, "Стр.НомерСтроки");
КонецЦикла;

// потом где тебе нужно:
 Если Ссылка_Дог.РеквизитОплатаЗаНавчання.ТабличнаяЧастьОплатиЗаНавчання[МойРеквизит].СумаОплати>1  Тогда
             ТабЧаст.Параметры.СП_Д = МойРеквизит;
КонецЕсли;
37 Человечкин
 
27.03.12
18:20
ЭлементыФормы.МойРеквизит.СписокВыбора.Добавить(Стр.НомерСтроки, Стр.НомерСтроки); //<<< здесь кавычки забыл убрать