Консультация № 88157
22.05.2007, 23:36
0.00 руб.
0 5 5
Здравствуйте уважаемые эксперты! Мне необходимо: если текущий элемент справочника принадлежит группе с наименованием, например А, или кодом а, то добавляется закладка на форме. Если можно с комментариями, а то у меня похоже проблема с пониманием позиционирования. Заранее спасибо!

Приложение:
Спр=СоздатьОбъект("Справочник.ОсновныеСредства"); Если Спр.ТекущийЭлемент().ПринадлежитГруппе(...)=1 Тогда Форма.Закладки.ДобавитьЗначение("Прочие сведения"); КонецЕсли;

Обсуждение

Неизвестный
23.05.2007, 02:28
общий
это ответ
Здравствуйте, Darina!

Проверьте что имя слоя и параметр передаваемый в методе ДобавитьЗначение идентичны. У вас параметр с пробелом. а идентификатор слоя пробелы не допускает.
Неизвестный
23.05.2007, 07:20
общий
это ответ
Здравствуйте, Darina!
Тогда делайте так
Спр=СоздатьОбъект("Справочник.ОсновныеСредства");
Спр2=СоздатьОбъект("Справочник.ОсновныеСредства");
Спр2.НайтиПоНаименованию("А");// или Спр2.НайтиПоКоду("а");
...
Если Спр.ТекущийЭлемент().ПринадлежитГруппе(Спр2.ТекущийЭлемент())=1 Тогда
Форма.Закладки.ДобавитьЗначение("Прочие сведения");
КонецЕсли;

Хотя если честно не понятно для чего это вам нужно.
Если вы хотите просто сделать закладки по группам справочника к примеру 1-го уровня, то достаточно пройтись циклом
Спр=СоздатьОбъект("Справочник.ОсновныеСредства");
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если (Спр.ТекущийЭлемент().ЭтоГруппа() = 1) и (Спр.ТекущийЭлемент().Уровень() = 1) Тогда
Форма.Закладки.ДобавитьЗначение(Спр.Наименование);
КонецЕсли;
КонецЦикла;
Неизвестный
23.05.2007, 10:03
общий
это ответ
Здравствуйте, Darina!

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

Также примите во внимание то, что принадлежность элемента справочника группе можно проверить только в том случае, если этот элемент записан.

Удачи

Приложение:
Спр = СоздатьОбъект("Справочник.ОсновныеСредства");Группа = Спр.НайтиПоКоду("а");//Находим в Справочнике.ОсновныеСредства элемент с кодом "а"Форма.ИспользоватьЗакладки(1);//Разрешаем использование закладокФорма.Закладки.ДобавитьЗначение("Основной","Основной");//Добавляем основную закладкуЕсли Выбран() = 1 Тогда//Проверяем записан ли элементЕсли ПринадлежитГруппе(Группа) = 1 Тогда//Проверяем принадлежность ТЕКУЩЕГО элемента (а не как у Вас Спр.ТекущийЭлемент(), поскольку у Вас Спр.ТекущийЭлемент() в данный момент ни на чем не спозиционирован, и вообще, нам важен именно наш открытый элемент справочника)Если форма.Закладки.НайтиЗначение("ПрочиеСведения") = 0 Тогда//Проверяем, не добавлена уже закладка.Если нет, то добавляемФорма.Закладки.ДобавитьЗначение("ПрочиеСведения","Прочие сведения");КонецЕсли;КонецЕсли;КонецЕсли;
Неизвестный
23.05.2007, 10:28
общий
это ответ
Здравствуйте, Darina!
предполагается что элемент в котором находимся существует (записан)

Приложение:
// Вариант первый, если справочник имеет более 2 уровнейСпр=СоздатьОбъект("Справочник.ОсновныеСредства"); спр.НайтиПокоду(код); Если Спр.ТекущийЭлемент().ПринадлежитГруппе(...)=1 Тогда Форма.Закладки.ДобавитьЗначение("Прочие сведения"); КонецЕсли;//******************************************//Если справочник имеет 2 уровняесли Родитель = "Группа А" ТогдаФорма.Закладки.ДобавитьЗначение("Прочие сведения"); КонецЕсли;
Неизвестный
23.05.2007, 10:29
общий
это ответ
Здравствуйте, Darina!
Если Вы добавляете закладку оперативно, то меняется нумерация закладок и Вы не можете ПриВыбореЗакладки(Номер,Значение) ориентироваться на номер. Можете ориентироваться только на Значение.
Форма.Закладки.ДобавитьЗначение("ПрочиеСведенияЗначение","Прочие сведения текст для вывода");
Мне кажется, что Форма.Закладки это СписокЗначений, и работать с ним можно как со списком - удалять, добавлять и просматривать значения.
Ну и естественно, необходимо ПриВыбореЗакладки выводить нужный слой.
Форма ответа