Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 12:50

Не могу понять как правильно написать цикл Помогите!

Автор Прокофий, 10 апр 2011, 22:51

0 Пользователей и 1 гость просматривают эту тему.

Прокофий

Здравствуйте!!!
Что то не могу сообразить как правильно написать код...
Делаю прогу на 8.2 в управляемом режиме. Есть справочник Ряды, ну и  при заполнении элементов справочника  Код элемента это номер ряда, в котором есть реквизиты Кол-во мест и т.п.
И вот нужно написать цикл, чтобы на форму добавлялся элемент "Группа" для каждого такого элемента справочника.
Заранее благодарю!

Klyacksa

Что-то не вижу ни одной попытки его написать...
Если что-то не получается - публикуйте свои варианты, разберем, а придумывать за вас как-то не хочется...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Прокофий

Привет Клякса!
Вот какой код есть. Если в Спр.Ряды будет записан только один элемент, то он выводит эти кнопки, а если два или больше то пишет ошибку

{Обработка.Зал.Форма.Форма.Форма(84)}: Ошибка при вызове метода контекста (Добавить)
                   Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
Недопустимое значение параметров

Я не пойму, он как то зацикливается что ли, вроде выборка идет


   Если  МаксКолМествРяду<>0 тогда   
            Если (КолРядов<>0)   
               И (МаксКолМествРяду<>0) Тогда
               НомерРяда=0;
               К=0;
               Выборка = Справочники.Ряды.Выбрать();
               Пока Выборка.Следующий() Цикл                   
                  ТекРяд=Выборка.Ссылка;
                  КолМестВРяду = ТекРяд.КоличествоМест1+ТекРяд.КоличествоМест2+ТекРяд.КоличествоМест3+ТекРяд.КоличествоМест4;
                   //Если кол мест не указано то это проход
                   Если КолМестВРяду=0 Тогда
                     Продолжить;
                  Иначе
                     К=К+1;
                  КонецЕсли;
                  НомерРяда=НомерРяда+1;
                  К=НомерРяда;
                  
                  //Определим кол проходов в текущем ряду
                  КолПроходовВЗале=0;
                  Если (ТекРяд.КоличествоМест2)<>0 Тогда
                     КолПроходовВЗале=КолПроходовВЗале+1;
                  Конецесли;
                  Если (ТекРяд.КоличествоМест3)<>0 Тогда
                     КолПроходовВЗале=КолПроходовВЗале+1;
                  Конецесли;
                  Если (ТекРяд.КоличествоМест4)<>0 Тогда
                     КолПроходовВЗале=КолПроходовВЗале+1;
                  Конецесли;
                  КолМествРяду=КолМествРяду+КолПроходовВЗале;
                  НомерМеста=0;
                     
                  Для НомТекПрохода=0 По КолПроходовВЗале Цикл
               Для Н=1 По ТекРяд["КоличествоМест"+Строка(НомТекПрохода+1)] Цикл       
                  
                  НомерМеста=НомерМеста+1;
                  МестоЗаголовок = НомерМеста;
                  ШиринаКнопки=4;
                   ВысотаКнопки=2;
                  ИмяМеста="Место";
                   Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
                     Место.ИмяКоманды = "Команда1";
                     Место.КнопкаПоУмолчанию = Истина;
                  ПозЛево=10+(ШиринаКнопки+5)*ТекКолонка;
                   ПозВерх=10+(ВысотаКнопки+5)*ТекСтрока;
      
                   Если (ТекКолонка=0) Тогда
                     ПозЛево=10;
                   КонецЕсли;
               
               Место.Ширина = ШиринаКнопки;
                   Место.Высота = ВысотаКнопки;
               
                  Место.Заголовок = МестоЗаголовок;
                  ЦветМеста=Новый Цвет(0,255,0); //По умолчанию зелёный
                  Место.ЦветФона = ЦветМеста;
                     КонецЦикла;   
               КонецЦикла;
            КонецЦикла;
            КонецЕсли;
         КонецЕсли;


Прокофий

      Для НомТекПрохода=0 По КолПроходовВЗале Цикл
               Для Н=1 По ТекРяд["КоличествоМест"+Строка(НомТекПрохода+1)] Цикл       
                  
                  НомерМеста=НомерМеста+1;
                  МестоЗаголовок = НомерМеста;
                  ШиринаКнопки=4;
                   ВысотаКнопки=2;
                  ИмяМеста="Место";
                   Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
                     Место.ИмяКоманды = "Команда1";
                     Место.КнопкаПоУмолчанию = Истина;
                  ПозЛево=10+(ШиринаКнопки+5)*ТекКолонка;
                   ПозВерх=10+(ВысотаКнопки+5)*ТекСтрока;
      
                   Если (ТекКолонка=0) Тогда
                     ПозЛево=10;
                   КонецЕсли;
               
               Место.Ширина = ШиринаКнопки;
                   Место.Высота = ВысотаКнопки;
               
                  Место.Заголовок = МестоЗаголовок;
                  ЦветМеста=Новый Цвет(0,255,0); //По умолчанию зелёный
                  Место.ЦветФона = ЦветМеста;
                     КонецЦикла;   
               КонецЦикла;
            КонецЦикла;
            КонецЕсли;
         КонецЕсли;

Прокофий

               Для НомТекПрохода=0 По КолПроходовВЗале Цикл
               Для Н=1 По ТекРяд["КоличествоМест"+Строка(НомТекПрохода+1)] Цикл       
                  
                  НомерМеста=НомерМеста+1;
                  МестоЗаголовок = НомерМеста;
                  ШиринаКнопки=4;
                   ВысотаКнопки=2;
                  ИмяМеста="Место";
                   Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
                     Место.ИмяКоманды = "Команда1";
                     Место.КнопкаПоУмолчанию = Истина;
                  ПозЛево=10+(ШиринаКнопки+5)*ТекКолонка;
                   ПозВерх=10+(ВысотаКнопки+5)*ТекСтрока;
      
                   Если (ТекКолонка=0) Тогда
                     ПозЛево=10;
                   КонецЕсли;
               
               Место.Ширина = ШиринаКнопки;
                   Место.Высота = ВысотаКнопки;
               
                  Место.Заголовок = МестоЗаголовок;
                  ЦветМеста=Новый Цвет(0,255,0); //По умолчанию зелёный
                  Место.ЦветФона = ЦветМеста;
                     КонецЦикла;   
               КонецЦикла;
            КонецЦикла;
            КонецЕсли;
         КонецЕсли;

Прокофий

Цитата: Прокофий от 13 апр 2011, 09:17
               Для НомТекПрохода=0 По КолПроходовВЗале Цикл
               Для Н=1 По ТекРяд["КоличествоМест"+Строка(НомТекПрохода+1)] Цикл       
                  
                  НомерМеста=НомерМеста+1;
                  МестоЗаголовок = НомерМеста;
                  ШиринаКнопки=4;
                   ВысотаКнопки=2;
                  ИмяМеста="Место";
                   Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
                     Место.ИмяКоманды = "Команда1";
                     Место.КнопкаПоУмолчанию = Истина;
                  ПозЛево=10+(ШиринаКнопки+5)*ТекКолонка;
                   ПозВерх=10+(ВысотаКнопки+5)*ТекСтрока;
      
                   Если (ТекКолонка=0) Тогда
                     ПозЛево=10;
                   КонецЕсли;
               
               Место.Ширина = ШиринаКнопки;
                   Место.Высота = ВысотаКнопки;
               
                  Место.Заголовок = МестоЗаголовок;
                  ЦветМеста=Новый Цвет(0,255,0); //По умолчанию зелёный
                  Место.ЦветФона = ЦветМеста;
                     КонецЦикла;   
               КонецЦикла;
            КонецЦикла;
            КонецЕсли;
         КонецЕсли;


cska-fanat-kz

Не мучайтесь )
Форум не понимает квадратные скобки (вроде бы если не внутри тега "code").
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Прокофий

АА...Спасибо)
Вот Продолжение=)

Для НомТекПрохода=0 По КолПроходовВЗале Цикл
Для Н=1 По ТекРяд (Строка(НомТекПрохода+1)) Цикл
НомерМеста=НомерМеста+1;         МестоЗаголовок = НомерМеста;
ИмяМеста=НомерМеста;
Место=Элементы.Добавить(ИмяМеста,Тип("КнопкаФормы"), Элементы.Группа1);
КонецЦикла; КонецЦикла

Прокофий

Работает!
Не работало потому что имя кнопки не уникально было)))

Klyacksa

Привет, Прокофий)
ЦитироватьНе работало потому что имя кнопки не уникально было)))
Да, именно поэтому, не успела ответить. Зато, как говорится, если задачу решил сам - попробуй теперь забудь, как ;)
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск