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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Все перепробовал, везде вываливается в исключение, в комментарии ошибка, которая выходит

    Попытка
        Элементы.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("2: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
        
    Попытка
        Объект.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("3: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
        
    Попытка
        ЭтаФорма.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("4: " + ОписаниеОшибки());//Поле объекта не обнаружено (ДанныеОВремени)
    КонецПопытки;
        
    Попытка
        ЭтаФорма.Элементы.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("5: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
        
    Попытка
        ЭтаФорма.Объект.ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("6: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
        
    Попытка
        ЭтаФорма["ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("7: " + ОписаниеОшибки());//Поле объекта не обнаружено (ДанныеОВремени)
    КонецПопытки;
        
    Попытка
        ЭтаФорма["Элементы.ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("8: " + ОписаниеОшибки());//Поле объекта не обнаружено (Элементы.ДанныеОВремени)
    КонецПопытки;
        
    Попытка
        ЭтаФорма["Объект.ДанныеОВремени"].УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("9: " + ОписаниеОшибки());//Поле объекта не обнаружено (Объект.ДанныеОВремени)
    КонецПопытки;
        
    Попытка
        ЭтаФорма["Элементы"].ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("10: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
        
    Попытка
        ЭтаФорма["Объект"].ДанныеОВремени.УстановитьОбязательноеИспользование("СЗВ_ВремяИтогСтарое", Истина);
    Исключение
        Сообщить("11: " + ОписаниеОшибки());//Метод объекта не обнаружен (УстановитьОбязательноеИспользование)
    КонецПопытки;
5 hhhh
 
30.09.20
07:29
(4) должен быть Динамический список. Надо ваи его создать.
6 yesmax7
 
30.09.20
11:17
(5) Документ типовой, там табличная чать

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

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

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

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