Добрый день.
В типовой конфигурации "Бухгалтерия предприятия, редакция 3.0" в документе "Передача товаров" при выборе вида операции в табличной части товары, то показываются счета учета, то нет. Интересует с точки зрения программиста как это реализовано?
---
а вот нашел:
Условное оформление формы смотрите
---
```1c
    Элементы.ТвояТаблица.ПодчиненныеЭлементы.ИмяКолонкиТвоейТаблицы.Видимость = Ложь;
```
---
А показывает/не показывает колонки у одного пользователя или у разных?
Если у разных, то видимо в настройках пользователя так настроено
---
Milokko, А показывает/не показывает колонки у одного пользователя или у разных?
в документе "Передача товаров" при выборе вида операции в табличной части товары, то показываются счета учета, то нет
---
beldieff,
Возможно, что разные пользователи это делают
---
beldieff,
А если у одного, то тогда я согласен с Вами "Колонка.Видимость = Ложь" решит вопрос)
---
Колонка.Видимость = Ложь
---
С настройками пользователей это не связано. Это срабатывает именно при выборе операции. Тоже искал что-то типа Колонка.Видимость , но ничего не нашел.
---
kgp,

```1c
    &НаКлиенте
    Процедура ВидОперацииПриИзменении(Элемент)

    ОпределитьСписокДоступныхВидовДоговоровПоОперации(Объект.ВидОперации, СписокВидовДоговоров, Объект.ДоговорКонтрагента);

    // Установить видимость реквизитов по виду операции.
    УправлениеФормой(ЭтаФорма);

    Если Объект.Товары.Количество() + Объект.ВозвратнаяТара.Количество() = 0 Тогда
    Возврат;
    КонецЕсли;

    Если НЕ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ИзПереработки") Тогда

    Если ПоказыватьВДокументахСчетаУчета Тогда
    ТекстВопроса = НСтр("ru = 'Установить счета учета в соответствии со значениями по умолчанию?'");
    Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , ,
    НСтр("ru='Изменения счетов учета при смене вида операции'"));
    Иначе
    Ответ = КодВозвратаДиалога.Да;
    КонецЕсли;

    Если Ответ = КодВозвратаДиалога.Да Тогда
    ЗаполнитьСчетаУчетаВТабЧасти("Товары", Истина);
    ЗаполнитьСчетаУчетаВТабЧасти("ВозвратнаяТара", Истина);
    КонецЕсли;

    КонецЕсли;

    КонецПроцедуры
```
---
deniseek77, уже ближе:)
Но где конкретно в процедуре ВидОперацииПриИзменении указано, что нужно отображать или не отображать счета учета?
---
kgp,
         ЗаполнитьСчетаУчетаВТабЧасти("Товары", Истина);
         ЗаполнитьСчетаУчетаВТабЧасти("ВозвратнаяТара", Истина);
---
Milokko, Проверил, с этим никак не связано. Алгоритм до этих строк не доходит.
---
kgp, Смотрите КоманднаяПанельФормыДействиеУстановитьОперацию() и УстановитьВидимость()
---
```1c
    Процедура УстановитьВидимость()

    Колонки = ЭлементыФормы.Товары.Колонки;
    КолонкиТары = ЭлементыФормы.ВозвратнаяТара.Колонки;

    УСН = НалоговыйУчетУСН.ПрименениеУСН(Организация, Дата);
    Предприниматель = ОбщегоНазначения.Предприниматель(Организация, Дата);

    Если ВидОперации = Перечисления.ВидыОперацийПередачаТоваров.ИзПереработки Тогда

    Колонки.СчетУчета.Видимость = Ложь;
    Колонки.СчетПередачи.Видимость = Ложь;
```
---
правда это в 2.0, но в 3ке думаю так же
---
Akuji, Да в 2.0 было так просто, но в 3.0 голову сломал и не понимаю как это работает.
---
Процедура УправлениеФормой(Форма)

 Элементы = Форма.Элементы;
 Объект = Форма.Объект;

 Элементы.ГруппаСчетаУчетаРасчетов.Видимость = Форма.ПоказыватьВДокументахСчетаУчета И Форма.ИспользоватьВозвратнуюТару;
---
MalginD, Это касается счетов учета расчетов, а меня интересуют счета учета в табличной части товары.
---
В отладчике нажать "отладка -- остановить" и поменять операцию.
---
Отследить какая процедура или функция отвечает за видимость довольно не сложно: поставь "Точка останова" в процедуре "передокрытием" выведи в табло "ЗначениеНужнойТебеКолонки".Видимость как только после выполнения процедуры или функции значение станет Ложь - там и располагается та самая процедура и функция.
---
isn, Не понял причем тут процедура "ПередОткрытием" и такой процедуры нет в модуле формы документа "Передача товаров". Видимость колонки меняется при выборе вида операции. Отладчиком тоже пытался отловить момент изменения видимости. Выводил в табло выражение ЭтаФорма.Элементы.ТоварыСчетУчета.Видимость и оно всегда возвращало значение ИСТИНА, но при этом колонка скрывалась.

p.s. Увеличил вознаграждение за ответ.
---
Считаю, что вопрос решен. Ответ №19. Закрывайте вопрос
---
там еще может зависеть от прав пользователя... если прав нет то и не увидишь
---
Akuji, В моем случае от прав не зависит т.к. изменение вида операции делается под одним пользователем.
---
хотя

```1c
    Процедура УправлениеФормой(Форма)

    Элементы = Форма.Элементы;
    Объект = Форма.Объект;

    Элементы.ГруппаСчетаУчетаРасчетов.Видимость = Форма.ПоказыватьВДокументахСчетаУчета И Форма.ИспользоватьВозвратнуюТару;

    Элементы.ЗаполнитьПоПродукцииИСпецификации.Доступность = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ВПереработку")
    ИЛИ Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ИзПереработки");
    Элементы.ЗаполнитьПродукциюПоОстаткам.Доступность = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ИзПереработки");

    Элементы.ЗаполнитьПоОтчетуКомитенту.Доступность = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ПередачаТоваровКомитенту");
    Элементы.ДобавитьИзОтчетаКомитенту.Доступность = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ПередачаТоваровКомитенту");
    Элементы.ЗаполнитьПоОстаткамСчета002.Доступность = Объект.ВидОперации = ПредопределенноеЗначение("Перечисление.ВидыОперацийПередачаТоваров.ПередачаТоваровКомитенту");

    КонецПроцедуры
```
---
Элементы.ГруппаСчетаУчетаРасчетов.Видимость - вот тут по идее
поспешил. это не про те.

В свойствах реквизита Параметры выбора
---
Akuji, Параметры выбора влияют на выбор, но не на видимость.
---
kgp, Ну так поищи в тексте Если Объект.ВидОперации = БлаБла
---
Bоспользуйтесь поиском ;)
"СчетУчета.Видимость" может что и найдет.
---
Sevens, Пробовал ничего не найдено.
---
на отбор там да стоит параметр...

в описании процедуры сказано:

```1c
    &НаКлиентеНаСервереБезКонтекста
    // Процедура устанавливает видимость для тех колонок в табличной части
    // "Товары", видимость которых определяется реквизитами документа.
    //
    // Параметры:
    // Нет.
    //
    Процедура УправлениеФормой(Форма)
```

хотя даж если всю ее закоментить видимость меняется...
"Товары", видимость которых определяется реквизитами документатут вот не понятно
---
а вот нашел:
Условное оформление формы смотрите
---
Akuji, ОГРОМНОЕ СПАСИБО!!!
---
Тоже нужно настроить видимость колонки табличной части. Вы разобрались как это сделать программно?
---
Отвечу сама себе - может кому-то пригодится

Чтобы изменить видимость элемента табличной части в управляемых формах, программно добавленного, нужно написать следующий код:
ЭтаФорма.Элементы["ИмяТабличнойЧастиИмяПоля"].Видимость = Истина;
---
Да, трудно было такое представить, но работает.
Сначала написал имя колонки всё же через точку.
ЭтаФорма.Элементы["ТЗ.Ссылка"].Видимость = Истина; Получил ошибку.
Убрал точку.
ЭтаФорма.Элементы["ТЗСсылка"].Видимость = Истина. Всё работает.

Спасибо.
---
vovant, спасибо, помогло
почему не оставили как в 8.2?
почему нет приемственности, странные разработчики 1с
---
Сейчас в 1С принято делать не в лоб (ЭтаФорма.Элементы.ИмяЭлемента.Видимость = ЛОЖЬ;), а через условное оформление. Смысл в том, что не нужно отслеживать состояние реквизита, от которого зависит нужно или нет отображать элемент, а можно задать условие при котором элемент отображается.
Привожу пример из УТ11:

```1c
    Процедура УстановитьУсловноеОформлениеСкладаВТЧ(Форма,
    ИмяПоляВводаСклада = "ТоварыСклад") Экспорт

    УсловноеОформление = Форма.УсловноеОформление;
    ЭлементыФормы = Форма.Элементы;

    ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();

    ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
    ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементыФормы[ИмяПоляВводаСклада].Имя);

    ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладГруппа");
    ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ОтборЭлемента.ПравоеЗначение = Ложь;

    ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);

    КонецПроцедуры
```

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