Добрый день.
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]