Приветствую Вас ГостьСуббота, 04.05.2024, 12:20

Каталог статей


Настройка отображения видов субконто для выбранного счета

Счет из плана счетов может иметь несколько субконто. Если надо вывести на форму поля для их ввода, то надо решить вопрос о скрытии лишних полей субконто (на случай если счет не имеет субконто), определит соответствующий тип субконто и задать заголовок для поля, в котором отобразить тип вводимого субконто.

Например, у документа есть реквизиты:

  • Счет - тип ПланСчетовСсылка.ОсновнойПланСчетов. В плане счетов определено, что субконто может быть только 2.
  • Субконто1 - тип Характеристика.ВидыСубконто
  • Субконто2 - тип Характеристика.ВидыСубконто

В свойствах реквизитов Субконто1 и Субконто2 настраиваем связь по типу. Это свойство позволяет определить тип вводимого значения если реквизит имеет составной тип. У нас Характеристика.ВидыСубконто имеет составной тип.

Так как у счета 2 субконто, то в свойстве "Связь по типу" для субконто1 настраиваем "Элемент связи по типу" = 1, а для субконто2 значение 2. Это свяжет соответствующие реквизиты с аналитикой счета по нужному субконто.

Разместим реквизиты документа на форме. Наша задача, при выборе счета, настроить отображение полей для ввода субконто.

На событии "При изменении" поля Счет повесим процедуру:

&НаКлиенте
Процедура СчетПриИзменении(Элемент)
    
    ВыбиратьТипСубконто();
    
    УстановитьВидимостьСубконто();
    
КонецПроцедуры

 

&НаСервере
Процедура ВыбиратьТипСубконто()
    
    ЧислоСубконто = Объект.Счет.ВидыСубконто.Количество();
    
    Для Сч = 1 По ЧислоСубконто Цикл
        ТипСубконто = Объект.Счет.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;
        Элементы["Субконто" + Сч].ВыбиратьТип = (ТипСубконто.Типы().Количество() > 1);
        
        Если ТипСубконто.ПривестиЗначение(Объект["Субконто" + Сч]) 
                                    <> Объект["Субконто" + Сч] Тогда
            Объект["Субконто" + Сч] = 
            ТипСубконто.ПривестиЗначение(Объект["Субконто" + Сч]);
        КонецЕсли;
    КонецЦикла; 
    
КонецПроцедуры

 

&НаСервере
Процедура УстановитьВидимостьСубконто()
    
    Для НомерСубконто = 1 по 2 Цикл

        Если (НомерСубконто <= Объект.Счет.ВидыСубконто.Количество()) и (НЕ Объект.Счет.Пустая()) Тогда
            Элементы["Субконто"+НомерСубконто].Заголовок = Строка(Объект.Счет.ВидыСубконто[НомерСубконто-1].ВидСубконто);
            Элементы["Субконто"+НомерСубконто].Видимость = Истина;
        Иначе
            Элементы["Субконто"+НомерСубконто].Видимость = Ложь;
        КонецЕсли;

    КонецЦикла;

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

Как это работает:

 ВыбиратьТипСубконто()

Сначала для выбранного счета определяем количество типов субконто.

Далее в цикле обходим все субконто счета:

1. Определяем тип субконто:

ТипСубконто = Объект.Счет.ВидыСубконто[Сч - 1].ВидСубконто.ТипЗначения;

2. Если тип субконто составной, то у соответствующего элемента покажем кнопку выбора типа: 

    Элементы["Субконто" + Сч].ВыбиратьТип = (ТипСубконто.Типы().Количество() > 1);

3.Приводим значение субконто к типу субконто если значение типа субконто не соответствует типу:

        Если ТипСубконто.ПривестиЗначение(Объект["Субконто" + Сч]) <> Объект["Субконто" + Сч] Тогда
            Объект["Субконто" + Сч] = ТипСубконто.ПривестиЗначение(Объект["Субконто" + Сч]);
        КонецЕсли;

УстановитьВидимостьСубконто()

Обходим в цикле элементы, отображающие значения субконто.

Если счет заполнен и у него есть субконто (Если (НомерСубконто <= Объект.Счет.ВидыСубконто.Количество()) и (НЕ Объект.Счет.Пустая()) Тогда), то устанавливаем видимость и заголовок.

 

 

Категория: Формы | Добавил: leshic (16.09.2022)
Просмотров: 484 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0