Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как программно поставить галочку "использовать всегда"?

Как программно поставить галочку "использовать всегда"?
Я
   yesmax7
 
18.09.20 - 07:22
Конфигурация ЗУП 3.1 (3.1.14.55), хотя это не важно

Документ "Табель"

Основная форма документа

В процедуре "При создании на сервере" программно добавляю новый реквизит - колонку к табличной части. Мне реквизит нужен только на форме, а не в объекте.
    
        ДобавляемыеРеквизиты = Новый Массив;
        НовыйРеквизитВремяИтогСтарое = Новый РеквизитФормы("ВремяИтогСтарое", Новый ОписаниеТипов("Строка"), "Объект.ДанныеОВремени", "ВремяИтогСтарое");
    
    ДобавляемыеРеквизиты.Добавить(НовыйРеквизитВремяИтогСтарое);
    
    ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

Реквизит добавляется, видно даже по отладке

Затем добавляю его на форму в элементы

        НовыйЭлементВремяИтогСтарое = Элементы.Добавить("ВремяИтогСтарое", Тип("ПолеФормы"), Элементы.ДанныеОВремени);
    НовыйЭлементВремяИтогСтарое.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлементВремяИтогСтарое.ПутьКДанным = "Объект.ДанныеОВремени.ВремяИтогСтарое";    
    НовыйЭлементВремяИтогСтарое.ТолькоПросмотр = Истина;

На этой строчке

        НовыйЭлементВремяИтогСтарое.ПутьКДанным = "Объект.ДанныеОВремени.ВремяИтогСтарое";

выходит ошибка:

        "Ошибка при установке значения атрибута контекста (ПутьКДанным)" по причине: Недопустимое значение

Нашел в интеренте причину: напротив таблицы "ДанныеОВремени" снята галочка "Использовать всегда". Если галочку нажать, ошибки не будет. Предполагаю, что вновь программно созданный реквизит-колонка "ВремяИтогСтарое" при добавлении заимствует значение этого флажка у своего родителя, т.е. флажок сброшен. Без этой галочки к колонке обратиться нельзя, следовательно нельзя и добавить на форму.

Нужно программно установить эту галочку для этой колонки

Нашел в интернете метод УстановитьОбязательноеИспользование(<Поле>, <Использование>), но не понятно где и как его использовать.

Во всех примерах он используется для динамического списка, а у меня табличная часть.

Пробывал писать так:

    Объект.ДанныеОВремени.УстановитьОбязательноеИспользование(..., ...)
    Элементы.ДанныеОВремени.УстановитьОбязательноеИспользование(..., ...)

Везде пишет "Метод объекта не обнаружен"

Подскажите как программно поставить эту галочку для моей колонки.
   sTOd
 
1 - 18.09.20 - 07:29
Глянь свойства элемента формы.
PS: Какое небо голубое...
   lucbak
 
2 - 18.09.20 - 08:06
(0) ЭтаФорма["ИмяТаблицы"].УстановитьОбязательноеИспользование(ИмяКолонки, Истина);
   sTOd
 
3 - 18.09.20 - 08:21
А оплату за консультацию пришлите мне.
   yesmax7
 
4 - 30.09.20 - 06:29
(2) Нет, не работает.

ДанныеОВремени это табличная чать документа (Объект.ДанныеОВремени), которая также расположена на форме, а реквизит "СЗВ_ВремяИтогСтарое" я добавляю только на форму в эту табличную часть

Все перепробовал, везде вываливается в исключение, в комментарии ошибка, которая выходит
    Попытка
        Элементы.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("2: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
        
    Попытка
        Объект.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("3: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
        
    Попытка
        ЭтаФорма.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("4: " + ОписаниеОшибки())//Поле объекта не обнаружено (ДанныеОВремени)

    КонецПопытки;
        
    Попытка
        ЭтаФорма.Элементы.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("5: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
        
    Попытка
        ЭтаФорма.Объект.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("6: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
        
    Попытка
        ЭтаФорма["ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("7: " + ОписаниеОшибки())//Поле объекта не обнаружено (ДанныеОВремени)

    КонецПопытки;
        
    Попытка
        ЭтаФорма["Элементы.ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("8: " + ОписаниеОшибки())//Поле объекта не обнаружено (Элементы.ДанныеОВремени)

    КонецПопытки;
        
    Попытка
        ЭтаФорма["Объект.ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("9: " + ОписаниеОшибки())//Поле объекта не обнаружено (Объект.ДанныеОВремени)

    КонецПопытки;
        
    Попытка
        ЭтаФорма["Элементы"].ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("10: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
        
    Попытка
        ЭтаФорма["Объект"].ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("11: " + ОписаниеОшибки())//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)

    КонецПопытки;
   hhhh
 
5 - 30.09.20 - 07:29
(4) должен быть Динамический список. Надо ваи его создать.
   yesmax7
 
6 - 30.09.20 - 11:17
(5) Документ типовой, там табличная чать

И к тому же, я же руками могу поставить эту галку, значит и программно должна ставиться

Когда я руками ставлю, все отрабатывает отлично
   Andreyyy
 
7 - 30.09.20 - 11:25
(6) Не все программно можно выполнить, например флажок "Автозаполнение" у командной панели не доступен программно.
Тут может быть аналогично.

Попробуйте перенести в расширение и там поставить флажок вручную.
   Андроны едут
 
8 - 30.09.20 - 11:33
(6) Вам же в (5) написали УстановитьОбязательноеИспользование - это метод динамического списка.
   yesmax7
 
9 - 01.10.20 - 06:33
(8) Я тоже все примеры находил на динамический список. Значит нужен какой-то другой метод. Я не могу переделать табличную часть в динамический список, я работаю с данными в документе, мне их нужно изменять, это абсурд.
   yesmax7
 
10 - 01.10.20 - 06:35
(7) Походу сделаю так

По хорошему мне надо галку ни табличной части ставить, а моему добавленному полю, а его тогда тоже в расширение руками добавлять, а не программно

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.