Имя: Пароль:
1C
1С v8
Программное добавление элементов
0 art93
 
25.06.15
07:43
Программно добавляю элементы на форму. Не получается добавить КнопкуВыбора к полю.
1 Cyberhawk
 
25.06.15
07:47
Что за кнопка выбора? Покажи на картинке
2 art93
 
25.06.15
07:53
Вот ссылка на картинку https://cloud.mail.ru/public/EPv5/1WeAEpCEd
Нужно добавить программно к полю обе кнопки
3 art93
 
25.06.15
07:55
Само поле вот так добавлено

&НаСервере
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт        
         Элемент = Форма.Элементы.Добавить("ПутьКФайлу",Тип("ПолеФормы"),);
         Элемент.ПутьКДанным ="Объект.ПутьКФайлу";  
         Элемент.Вид = ВидПоляФормы.ПолеВвода;
                              
         Элемент.Видимость = Истина;
         Элемент.ТолькоПросмотр = Истина;
         Элемент.РастягиватьПоГоризонтали = Истина;
         Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право;    
КонецПроцедуры
4 art93
 
25.06.15
08:05
Кто то знает? Какие мысли?
5 patria0muerte
 
25.06.15
08:05
Элемент.КнопкаВыбора = Истина
6 icipher
 
25.06.15
08:07
Элемент.КнопкаОткрытия = Истина;
7 art93
 
25.06.15
08:07
Нет. Я пробовал. Ошибка: Поле объекта не обнаружено (КнопкаВыбора)
8 art93
 
25.06.15
08:12
И с кнопкой открытия так же.
9 patria0muerte
 
25.06.15
08:15
А когда выполнял:
Элемент.КнопкаВыбора = Истина
?

До "Элемент.Вид = ВидПоляФормы.ПолеВвода" или после?
10 art93
 
25.06.15
08:19
УРА! спасибо! добавлял до, поэтому и выдавало
11 art93
 
25.06.15
08:23
А ещё подскажет кто то, как добавить событие на эту кнопку. Я не программно всё реализовал, всё работает и вот теперь перевожу.
12 patria0muerte
 
25.06.15
08:27
УстановитьДействие("ИмяПроцедуры")
13 ЧеловекДуши
 
25.06.15
08:30
(0) Можно, я разрешаю.
На УФ это реализовывается через Сервер.
В Толстом, можно как хочешь, когда хочешь и где хочешь :)
14 icipher
 
25.06.15
08:33
Элемент.УстановитьДействие("НачалоВыбора", "ИмяПроцедуры");
15 art93
 
25.06.15
08:33
Спасибо, а можно уточнить, а как поймёт к какой кнопке? Как выглядит точный код
16 art93
 
25.06.15
08:34
Спасибо!
17 ЧеловекДуши
 
25.06.15
08:37
(11) Процедура должна быть уже в Модуле Формы.


    КомПанель = Форма.КоманднаяПанель;
    Команды      = Форма.Команды;
    
    пЭлементСосед = Форма.Элементы.Найти("ФормаСоздатьНаОсновании");
    Если пЭлементСосед = Неопределено Тогда
        пЭлементСосед = Форма.Элементы.Найти("ФормаПроведение");
    КонецЕсли;
    
    пЭлемент = Форма.Элементы.Найти("ФормаГруппаВыгрузкиAPI_ТК");
    Если пЭлемент = Неопределено Тогда
        пЭлемент = Форма.Элементы.Вставить("ФормаГруппаВыгрузкиAPI_ТК",Тип("ГруппаФормы"),КомПанель,пЭлементСосед);
        пЭлемент.Вид = ВидГруппыФормы.ГруппаКнопок;
        пЭлемент.Видимость = Ложь;  //тут надо скрыть, т.к. при открытии новой формы незачем показывать
        
        //Группа подменю
        пЭлементОснПодменю = Форма.Элементы.Вставить("ОснПодменюAPI_ТК",Тип("ГруппаФормы"),пЭлемент);
        пЭлементОснПодменю.Вид = ВидГруппыФормы.Подменю;
        пЭлементОснПодменю.Заголовок   = "Выгрузка ТК";
        пЭлементОснПодменю.Видимость   = Истина;
        пЭлементОснПодменю.Доступность = Истина;
        
        //Команда выгрузки...
        НашаКоманда = Команды.Найти("ОбработкаAPI_ТК_ВыгрузкаДок");
        Если НашаКоманда = Неопределено Тогда
            НашаКоманда = Команды.Добавить("ОбработкаAPI_ТК_ВыгрузкаДок");
            НашаКоманда.Заголовок = "Выгрузить в Личный кабинет ТК";
            НашаКоманда.Подсказка = "Выгрузить в Личный кабинет ТК";
            НашаКоманда.Действие  = "ОбработкаAPI_ТК"; //Процедура (Команда) в модуле формы
        КонецЕсли;
18 ЧеловекДуши
 
25.06.15
08:37
(15) Жесть, ну ты и спросил. Как напишешь, так и полетит :)
19 art93
 
25.06.15
11:25
Программное добавление табличной части на форму
- таблица ПО (продаваемого, сопровождаемого, список курсов для учебного центра) – колонки в таблице: номенклатура, серия, количество, сумма

Как добавляю элементы писал выше,а с табличной частью не могу разобраться, кто подскажет?
20 patria0muerte
 
26.06.15
04:02
(19) Так же, если не ошибаюсь..
Элемент = Форма.Элементы.Добавить("имяТаблицы",Тип("ТаблицаФормы"),); // Добавил таблицу
Колонка = Форма.Элементы.Добавить("ИмяКолонки",Тип("ПОлеФормы"),); //Добавляешь элемент
Колонка.Родитель = Элемент; //Указываешь, что это колонка таблицы
21 Лодырь
 
26.06.15
04:49
(19) Хороший пример программного создания и работы с таблицами есть в типовых конфах в документе установка цен.
22 Рэйв
 
26.06.15
05:29
(0)А зачем тебе именно программно?  Конфигуратор жмет что ли?
23 Лодырь
 
26.06.15
05:43
(22) А зачем в типовых используется программное добавление элементов? Наверное разработчикам "жмет конфигуратор"?
24 Рэйв
 
26.06.15
05:53
(23)Скорее всего затем, что в зависимости от условий нужно динамически создавать разные элементы.
Но судя по тому что ТС хочет так создовать таб часть, что то меня гложут смутные сомнения что у него ест какие то "условия". Скорее всего он как и ты насмотрелся крутых типовых:-)
25 Рэйв
 
26.06.15
05:54
+ и теперь лепит динамическое создание к месту и не к месту
26 Галахад
 
гуру
26.06.15
06:05
Вот неплохая штука
http://www.develplatform.com/p/blog-page_14.html
Удобно.

Захватил объект. Добавил чего надо. Получил программный код.
Отменил захват.
Захватил по новой. Добавил код. Зафиксировал.
27 Лодырь
 
26.06.15
07:21
(25) К примеру, программно создавать элементы можно так же в случае необходимости добавить новые реквизиты на формы элементов. Проще обновлять потом. Чем не вариант?
Так что наезжать на человека не зная его резонов - зачем?
28 Рэйв
 
26.06.15
07:47
(27)Так я боюсь он и сам не озвучит вескую причину:-)  Молчит пока.
29 art93
 
29.06.15
07:39
Спасибо за информацию, продолжу разбираться.
Такую реализацию делаем для удобного обновления в будущем.
30 art93
 
29.06.15
10:00
Не понимаю.Добавляю программно табличную часть, но ничего на форме не появляется. Вот код, прописываю его там же, где и остальные элементы(в ОбщемМодуле):

        // Создание элемента формы "ТаблицаПО" с типом "Таблица формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПО", Тип("Таблицаформы"), СтраницаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

// Создание элемента формы "ТаблицаПОНомерСтроки" с типом "Поле формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПОНомерСтроки", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

// Создание элемента формы "ТаблицаПОНоменклатура" с типом "Поле формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПОНоменклатура", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

// Создание элемента формы "ТаблицаПОСерия" с типом "Поле формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПОСерия", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

// Создание элемента формы "ТаблицаПОКоличество" с типом "Поле формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПОКоличество", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

// Создание элемента формы "ТаблицаПОСумма" с типом "Поле формы"
Элемент = Форма.Элементы.Добавить("ТаблицаПОСумма", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
Элемент.Видимость = Истина;
Элемент.Высота = 0;
Элемент.Доступность = Истина;
Элемент.Заголовок = "";
Элемент.Подсказка = "";
Элемент.Ширина = 0;

Может кто то знает возможную причину? А то мучаюсь и никакого толку не выходит.
31 Тихий омут
 
29.06.15
10:07
(30) думаю, что стОит указать путь к данным у добавляемых элементов; для элементов, не связанных с данными (кнопка, например) такое требование вроде предъявляется к наличию команды
32 art93
 
29.06.15
10:20
Да, точно, затупил.
33 art93
 
29.06.15
10:26
Добавил руками то же самое и по этому делаю, пытаюсь установить соответствие данных с реквизитами, как для остальных полей делал,
Но выдаёт ошибку
{ОбщийМодуль.ДоговораОбщегоНазначенияСервер.Модуль(128)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
        Элемент.ПутьКДанным ="Объект.ТаблицаПО.НомерСтроки";
по причине:
Недопустимое значение


        // Создание элемента формы "ТаблицаПО" с типом "Таблица формы"
        Элемент = Форма.Элементы.Добавить("ТаблицаПО", Тип("Таблицаформы"), СтраницаПО);
        Элемент.ПутьКДанным ="Объект.ТаблицаПО";  
        Элемент.Видимость = Истина;
        Элемент.Высота = 0;
        Элемент.Доступность = Истина;
        Элемент.Заголовок = "";
        Элемент.Подсказка = "";
        Элемент.Ширина = 0;

        // Создание элемента формы "ТаблицаПОНомерСтроки" с типом "Поле формы"
        Элемент = Форма.Элементы.Добавить("ТаблицаПОНомерСтроки", Тип("Полеформы"), Форма.Элементы.ТаблицаПО);
        Элемент.ПутьКДанным ="Объект.ТаблицаПО.НомерСтроки";
        Элемент.Видимость = Истина;
        Элемент.Высота = 0;
        Элемент.Доступность = Истина;
        Элемент.Заголовок = "";
        Элемент.Подсказка = "";
        Элемент.Ширина = 0;
  
Для строки "Элемент.ПутьКДанным ="Объект.ТаблицаПО";" выдаётся та же ошибка
34 art93
 
29.06.15
11:22
Не понятно в чём было дело, сходил на обед, и всё заработало, когда вернулся. Табличная часть добавлена.