Имя: Пароль:
1C
1С v8
Переместить элемент формы
0 first_may
 
10.12.16
22:04
Добрый вечер.

Конфигурация Управление производственным предприятием, редакция 1.3.
Формы обычные.

В документе "Реализация товаров и услуг" добавлен реквизит ДатаОтгрузки, которые находится на закладке Печать формы документа.

Сделал настройку пользователей "Видимость даты отгрузки в РТиУ" и одному из них поставил значение Истина.

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

Написал так:

...
Отбор = Новый Структура;
Отбор.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоКоду("00105"));
    
Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор).Значение;
Если Результат = Истина Тогда
    ЭлементыФормы.Дата.Видимость = Ложь;
    ЭлементыФормы.НадписьДатаОтгрузки.Видимость = Ложь;
        
    ЭлементыФормы.ДатаОтгрузки.Лево = ЭлементыФормы.Дата.Лево;
    ЭлементыФормы.ДатаОтгрузки.Верх = ЭлементыФормы.Дата.Верх;
    ЭлементыФормы.ДатаОтгрузки.Ширина = ЭлементыФормы.Дата.Ширина;
    ЭлементыФормы.ДатаОтгрузки.Высота = ЭлементыФормы.Дата.Высота;
КонецЕсли;

КонецПроцедуры // ПриОткрытии()


А вот как переместить дату отгрузки на место даты не получается. Прошу помощи.
1 Dен
 
10.12.16
22:21
Дата = ДатаОтгрузки;
2 first_may
 
10.12.16
22:23
(1) элемент формы при этом так и останется на прежней панели..
3 Dен
 
10.12.16
22:27
Причем здесь элементы формы?
Если значения реквизитов должны быть равны, так и надо обеспечить их равенство.
Зачем парить себя и пользователя видимостью элементов?
4 first_may
 
10.12.16
22:28
(3) поставлена задача с подменой видимости реквизитов формы..
5 breezee
 
10.12.16
23:19
(0) НайтиПоКоду("00105") Вот это ты зря. Кто-нибудь залезет и поменяет, а потом будут кричать что ты виноват
6 vicof
 
10.12.16
23:58
(4) Есди заказчик идиот, то это надолго
7 first_may
 
11.12.16
08:42
А можно подсказать по теме, а именно как программно управлять элементами формы? Как поменять владельца элемента, ведь сейчас дата находится на панели формы, а надо перенести на форму.
8 Garykom
 
гуру
11.12.16
09:00
(0) Молодца СП куп...изучил.

Терь изучи алгоритмы базовые.
Вот есть 2 переменные А и Б числовые, тебе нуна их значения поменять местами. Без 3-й переменной Ц выйдет только с извратами. Не просто

Ц = А;
А = Б;
Б = Ц;
9 Garykom
 
гуру
11.12.16
09:01
10 first_may
 
11.12.16
09:06
(8) спасибо, это как вариант думаю можно использовать, а именно, так как у документа сейчас есть реквизит Дата и новый ДатаОтгрузки, то добавляю на форму элемент ДатаОтгрузки1 и скрываю его под Датой.

Затем, для тех пользователей, которым надо подменить делаю так:
1 скрываю Дата
2 отображаю ДатаОтгрузки1
3 при открытии ДатаОтгрузки1 = ДатаОтгрузки
4 при записи ДатаОтгрузки = ДатаОтгрузки1
11 first_may
 
11.12.16
09:34
(8) вот:

...
    Отбор = Новый Структура;
    Отбор.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
    Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоКоду("00105"));
    
    Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор).Значение;
    Если Результат = Истина Тогда
        ЭлементыФормы.Дата.Видимость = Ложь;
        
        ЭлементыФормы.ДатаОтгрузки.Видимость = Ложь;
        ЭлементыФормы.НадписьДатаОтгрузки.Видимость = Ложь;
        
        ЭлементыФормы.ДатаОтгрузки1.Видимость = Истина;
        
        ЭлементыФормы.ДатаОтгрузки1.Значение = ЭлементыФормы.ДатаОтгрузки.Значение;
    Иначе
        ЭлементыФормы.Дата.Видимость = Истина;
        
        ЭлементыФормы.ДатаОтгрузки.Видимость = Истина;
        ЭлементыФормы.НадписьДатаОтгрузки.Видимость = Истина;
        
        ЭлементыФормы.ДатаОтгрузки1.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры // ПередОткрытием()





    Отбор = Новый Структура;
    Отбор.Вставить("Пользователь", ПараметрыСеанса.ТекущийПользователь);
    Отбор.Вставить("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.НайтиПоКоду("00105"));
    
    Результат = РегистрыСведений.НастройкиПользователей.Получить(Отбор).Значение;
    Если Результат = Истина Тогда
        ЭлементыФормы.ДатаОтгрузки.Значение = ЭлементыФормы.ДатаОтгрузки1.Значение;
    КонецЕсли;
КонецПроцедуры // ПередЗаписью()


Спасибо. Результат достигнут. Тема закрыта.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший