Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )



История благодарностей участнику Victor Skif ::: Спасибо сказали: 1 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
06.01.18, 15:50 Интерфейс: Вариант вкладок на форме
Добрый день.
1С 7.70.27

Видел у Альфа предложение по реализации вкладок на форме (размером меньше формы), тут - http://www.dorex.pro/?articles&a1&p1
А мне как раз такое надо. Начал делать - вижу, оно, в общем-то, прекрасно все работает, но с мелкими и досадными интерфейсными погрешностями. То кнопка вылезет там где не должна, то фокус с нее не слазит, портит внешний вид.. А мне бы надо так, чтоб комар носа не подточил. Ну, начал доделывать, изменил схему в сторону усложнения, но в целом, по-моему, получился вполне законченный вариант. Который я вам и представляю, пользуйтесь, кому надо.

Вот что получилось:


Вот как делалось (отличия от Альфа):


3. Кнопки, изображающие вкладки - без заголовка (будем управлять их доступностью, заголовки не должны менять вид), взамен них - сверху на кнопках лежат тексты, которые собственно и изображают названия вкладок.
1. Порядок расположения реквизитов - такой. (это важно).
2. То что должно быть на вкладках - разносим на слои.
4. На форму кидаем невидимый текст, в формуле которого пишем УстДост()

В кнопках - формулы ПриВыбореЗакладки(1) и ПриВыбореЗакладки(2).
Я делал всего две закладки, поэтому атрибуты не нумерованы, а названы (оплаты, доставки). Если вкладок много - то можно все нумеровать, как у Альфа, и управлять циклами, как у него. Смысл не меняется.

Ну и код. Порядок всех действий - важен.

Перем ТекущаяЗакладка;

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

// =========================
Функция УстДост()
    // делаем все невидимым
    Форма.кнОснова.Видимость(0);
    Форма.Ширма1.Видимость(0);
    Форма.Ширма2.Видимость(0);
    Форма.тОплаты.Видимость(0);
    Форма.тДоставки.Видимость(0);
    // делаем нужное невидимым
    Форма.кнОснова.Видимость(1);    
    Форма.тОплаты.Видимость(1);
    Форма.тДоставки.Видимость(1);    
    Форма.ПолучитьАтрибут("Ширма"+ТекущаяЗакладка).Видимость(1);
    // делаем кнопки недоступными
    Форма.кнОплаты.Доступность(0);
    Форма.кнДоставки.Доступность(0);
    // делаем нужные кнопки доступными
    Форма.кнОплаты.Доступность(?(ТекущаяЗакладка = 1, 0, 1));
    Форма.кнДоставки.Доступность(?(ТекущаяЗакладка = 2, 0, 1));
КонецФункции  


ТекущаяЗакладка = 1;
ПриВыбореЗакладки(1);


Демо: [attachment=1079:Демонстр...Закладок.zip]
Vofka,

RSS Текстовая версия Сейчас: 28.03.24, 23:30
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!