новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

Процедура ПриОткрытии(), вопрос времени исполнения.

    • #1
    • 02.07.2012 17:29
    • Отредактировано: 02.07.2012 17:35:48
    0
    Здравствуйте коллеги, я с недельки изучаю 1С 7.7(необходимость по работе). И столкнулся с вопросом. Приведу код:

    Перем П;
    
    Процедура ЗаполнитьТаблицу()
    	    
    	Перем Выбр_Конст;
    	СЗ.ПолучитьЗначение(СЗ.ТекущаяСтрока(), Выбр_Конст);
    	Выбр_Конст = СЗ.Получить(Выбр_Конст);        
    	П.ИспользоватьОбъект(Выбр_Конст);
    	Т.УдалитьСтроки();
    	П.ВыбратьЗначения();
    	
    	Пока П.ПолучитьЗначение() = 1 Цикл
    		Т.НоваяСтрока();
    		Т.Дт = П.ДатаЗнач;
    		Т.Зн = П.Значение;
    		Т.Сортировать("Дт");
    	КонецЦикла;              
    	Т.ТекущаяСтрока(1);
    	
                           
    КонецПроцедуры         
    
    Процедура ПриОткрытии()
    	
    	i = 1;
    	Пока Метаданные.Константа(i).Выбран() = 1 Цикл
    		К = Метаданные.Константа(i).Идентификатор;
    		К_синоним = Метаданные.Константа(i).Синоним;
    		Если Метаданные.Константа(i).Периодический = 1 Тогда
    			СЗ.ДобавитьЗначение(К,К_синоним);
    		КонецЕсли;
    		i = i + 1;
    	КонецЦикла;   
    	СЗ.ТекущаяСтрока(1);
    	ЗаполнитьТаблицу();
    	
    КонецПроцедуры
    
    П = СоздатьОбъект("Периодический");
    Т.НоваяКолонка("Дт",,,,"Дата",15);
    Т.НоваяКолонка("Зн",,,,"Значение");
    

    ---

    Есть процедура "приОткрытии()" и есть операторы после всех процедур, что запускается в первую очередь? Я думаю что операторы после всех процедур и функций, а только потом процедура "приОткрытии()", разъясните прав я или не прав. Спасибо!
    • #2
    • 02.07.2012 17:35
    +1
    первоначально

    П = СоздатьОбъект("Периодический");
    Т.НоваяКолонка("Дт",,,,"Дата",15);
    Т.НоваяКолонка("Зн",,,,"Значение");
    • #3
    • 02.07.2012 17:46
    0
    Благодарю!
    Еще интересную особенность заметил, не указав в периодической константе синоним, происходит начальное заполнение первого значения списка в таблицу, но если выбрать в ручную другое значение списка и нажать на кнопку связанную с процедурой "заполнитьТаблицу", ничего не происходит. Если указать синонимы периодический констант, то все нормально работает. С чем это связанно может быть?
    • #4
    • 02.07.2012 17:51
    +1
    А зачем вы таблицу значений сортируете в цикле?
    • #5
    • 02.07.2012 17:58
    0
    Кстати у вас идет заполнение только первой константы, потому что ЗаполнитьТаблицу() не в цикле
    • #6
    • 02.07.2012 18:04
    0
    Мне и не надо процедуру "ЗаполнитьТаблицу" в цикл выкладывать. Константа выбирается вручную. СЗ - это список значений в конструкторе стоит одноименная панель.
    А про сортировку в цикле, это опечатка.
    Так кто ни будь ответит на вопрос, о том почему синонимы влияют на работу алгоритма?
    • #7
    • 03.07.2012 09:12
    0
    Сегодня утром очередной раз посмотрев на код, я кажется понял в чем суть вопроса с синонимами.

    Синтаксис:
    
    ДобавитьЗначение(<Значение>, <Строка>)
    
    Англоязычный синоним:
    
    AddValue
    
    Параметры:
    
    <Значение>
     Выражение со значением, которое добавляется в список.
     
    <Строка>
     Необязательный параметр. Строковое выражение, содержащее задаваемое символьное представление добавляемого значения. По умолчанию принимает стандартное в системе 1С:Предприятие символьное представление объекта.
    


    Как видно что параметр "<Строка>", идет как необязательный параметр. В том то и соль, что видимо со списком значений периодического типа этот тип обязателен, иначе 1C начинает тупить, и не понимает что от него хотят не реагируя на действия и операторы в модуле. Всем спасибо, тема закрыта! :)
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться