ПриНачалеВыбораЗначения и реквизит Неопределенный

  1. 8 г. назад

    Есть реквизит с типом Неопределенный. Хочу при выборе этого реквизита открывать справочник. В семерке я что то не нашел выбора типа как в восьмерке. Так же не срабатывает ПриНачалеВыбораЗначения. Как открыть определенный справочник?

  2. А зачем нужен Неопределенный?

  3. 20.10.2015 09:41:09 отредактировано Hans

    Хз, так прописано в конфигурации. Он содержит три типа справочника. Как мне интрекрактивный выбор организовать по аналогии восьмерки. В какой нибудь конфе пример есть? Нашел пока пример как после выбора счета, меняется тип реквизита, мне не хотелось бы иметь дело с дополнительным реквизитом, а манипулировать только с одним.

  4. если в нем хранятся только справочники, так и сделай его справочником неопределенного вида

  5. по факту я не знаю что там хранится. работаю на левой базе где мало данных.

  6. хорошо. тогда тебе надо будет назначать тип самому. Реквизит в табличной части?

    Ответы: (6)
  7. (5) да, реквизит в табличной части.

    Ответы: (7)
  8. (6) Кнопку выбора включил уже?

  9. Флаг в колонке "Имеет кнопку выбора" установлен. Но кнопки этой все равно нет.

  10. забываю семерку. Возможно, она не появится, пока не установишь тип. Ну, да ладно.
    Тебе надо отловить изменение этого реквизита в ПриНачалеРедактированияСтроки, кажется

    Ответы: (12)
  11. видыдлявыбора

  12. ПриНачалеРедактированияСтроки назначай тип

  13. Вобщем в итоге получился такой код:

    Процедура ПриНачалеРедактированияСтроки()
    	     
    	Если (Форма.ТекущаяКолонка() = "Цена"    ) 
    	или  (Форма.ТекущаяКолонка() = "Сумма"   )
    	или  (Форма.ТекущаяКолонка() = "СуммаНП" )
    	или  (Форма.ТекущаяКолонка() = "СуммаНДС") 
    	или  (Форма.ТекущаяКолонка() = "СкидкаКонтрагента") 
    	Тогда
    		Если (Форма.ПолучитьАтрибут(Форма.ТекущаяКолонка()).Доступность()   = 0)
    		И    (глПолучитьПолномочие("РазрешитьРедактированиеЦенВдокументахВторойУровень") = 0)
    		Тогда
    			Предупреждение("Редактирование цен запрещено в соответствии
    			|с установленными полномочиями пользователя!", 60);
    		КонецЕсли;	
    	КонецЕсли; 
    	
    	//лдо
    	Если (Форма.ТекущаяКолонка() = "СкидкаКонтрагента") и (Форма.ПолучитьАтрибут("Цена").Доступность() = 1)  ТОгда
    		
    		ВыбЗнач=СоздатьОбъект("Справочник");
    		ВыбЗнач.ВидыДляВыбора("ТипыЦен,Скидки");
    
    		Если ВыбЗнач.Выбрать("Выберите скидку","ФормаСписка") = 1 Тогда
    			
    			ВыбСкидка = ВыбЗнач.ТекущийЭлемент();
    			Если ВыбСкидка.Вид() = "ТипыЦен" Тогда
    				
    				Форма.СкидкаКонтрагента.НазначитьТип("Справочник.ТипыЦен")
    				
    			ИначеЕсли ВыбСкидка.Вид() = "Скидки" Тогда
    				
    				Форма.СкидкаКонтрагента.НазначитьТип("Справочник.Скидки")
    				
    			КонецЕсли;
    			
    			СкидкаКонтрагента = ВыбСкидка;
    			
    		КонецЕсли;
    		
    	КонецЕсли;
    	
    КонецПроцедуры //ПриНачалеРедактированияСтроки()

    (9) Спс.

или зарегистрируйтесь чтобы ответить!