Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2024, 08:26

Элементы управления

Автор rogaz, 21 окт 2014, 20:21

0 Пользователей и 1 гость просматривают эту тему.

rogaz

Здравствуйте, подскажите пожалуйста как мне реализовать следующий функционал:
Имеется внешняя обработка, запускается в режиме простого приложения.
Мне нужно отметить на форме элементы(через флажок, или может быть есть способ лучше), которые после нажатия кнопки(неважно какой) должны быть занесены в СписокЗначений. Как я понял для этого нужна обработка ПриИзменении флажка, но как получить элемент свойство Заголовок и занести его в список(Список должен быть глобальным?).

cska-fanat-kz

На форме обработки создаем ТЧ. 2 реквизита: 1 - типа булево, 1 - типа строка. Реквизит типа булево отображаем в виде флажка.
Далее размещаем на форме кнопку "не важно какую" (:bleh:).
Обходим по нажатии строки ТЧ и если реквизит типа булево = ИСТИНА, то
         СписокЗначений.Добавить(СтрокаТЧ.РеквизитТипаСтрока);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rogaz

Цитата: cska-fanat-kz от 22 окт 2014, 07:43
На форме обработки создаем ТЧ. 2 реквизита: 1 - типа булево, 1 - типа строка. Реквизит типа булево отображаем в виде флажка.
Далее размещаем на форме кнопку "не важно какую" (:bleh:).
Обходим по нажатии строки ТЧ и если реквизит типа булево = ИСТИНА, то
         СписокЗначений.Добавить(СтрокаТЧ.РеквизитТипаСтрока);

1.ТЧ - это табличная часть? то есть элемент табличное поле, у которого реквизиты Колонка1, Колонка2 и т.д.?
2.А как отобразить его в виде флажка, подскажите, пожалуйста.
3.Можно ли в 1с обращаться к объекту, вызывающему  обработку (как self в делфи, например).
Заранее спасибо за помощь!


cska-fanat-kz

1. да
2. вот как то так
3. есть ЭтаФорма... есть владелец формы, вызвавший форму обработки...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rogaz

Цитата: cska-fanat-kz от 23 окт 2014, 05:17
1. да
2. вот как то так
3. есть ЭтаФорма... есть владелец формы, вызвавший форму обработки...

Большое спасибо! а не подскажете, как получить доступ к массиву элементов справочника(например у меня справочник экзамены, с реквизитом название и оценка) И мне нужно получить коллекцию всех названий или коллекцию всех оценок. Из синтакс-помощника не очень понятно

cska-fanat-kz

ВыборкаСпр = Справочники.Экзамены.Выбрать();
Пока ВыборкаСпр.Следующий() Цикл
Сообщить(ВыборкаСпр.Наименование);
КонецЦикла;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rogaz

Цитата: cska-fanat-kz от 23 окт 2014, 14:31
ВыборкаСпр = Справочники.Экзамены.Выбрать();
Пока ВыборкаСпр.Следующий() Цикл
Сообщить(ВыборкаСпр.Наименование);
КонецЦикла;

Большие Спасибо!а есть ли возможность выделить из этих реквизитов разные уровни иерархии для построения дерева?

И как можно получить просто список реквизитов (без конкретных значений) стандартных и пользовательских?

cska-fanat-kz

1. .ВыбратьИерархически()

2. Работа с метаданными
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

rogaz

Цитата: cska-fanat-kz от 23 окт 2014, 17:19
1. .ВыбратьИерархически()

2. Работа с метаданными

Не могли бы вы пояснить? Мне нужно получить коллекцию сперва стандартных реквизитов справочника, т.е. чтобы в ней просто были названия(Родитель, Владелец, НАименование, Этогруппа и т.д.) а затем и коллекцию остальных, но ещё и так, чтобы я мог определить какие из них иерархические.

cska-fanat-kz

вот фрагмент одной обработки...

Процедура КнопкаВыполнитьНажатие(Кнопка)

ОписаниеТиповСтрока = Новый ОписаниеТипов("Строка");

Для каждого ТекЭлСписка Из СписокСправочников Цикл

Если НЕ ТекЭлСписка.Пометка Тогда

Продолжить;

КонецЕсли;

ТекСпр = Метаданные.Справочники[ТекЭлСписка.Значение];

Сообщить("Обработка справочника: "+ТекСпр.Синоним);

СписокРеквизитов = Новый СписокЗначений;

Если (ТекСпр.ТипКода = Метаданные.СвойстваОбъектов.ТипКодаСправочника.Строка)
   И (ТекСпр.ДлинаКода <> 0)Тогда

СписокРеквизитов.Добавить("Код",2);

КонецЕсли;

Если ТекСпр.ДлинаНаименования <> 0 Тогда

СписокРеквизитов.Добавить("Наименование",2);

КонецЕсли;

Для каждого ТекРеквизит Из ТекСпр.Реквизиты Цикл

Если Найти(Строка(ТекРеквизит.Тип), "Строка") <> 0 Тогда

Если ТекРеквизит.Использование = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляЭлемента Тогда

ИспользованиеРек = 1;

ИначеЕсли ТекРеквизит.Использование = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппыИЭлемента Тогда

ИспользованиеРек = 2;

ИначеЕсли ТекРеквизит.Использование = Метаданные.СвойстваОбъектов.ИспользованиеРеквизита.ДляГруппы Тогда

ИспользованиеРек = 3;

КонецЕсли;

СписокРеквизитов.Добавить(ТекРеквизит.Имя,ИспользованиеРек);

КонецЕсли;

КонецЦикла;

Если СписокРеквизитов.Количество() <> 0 Тогда

Выборка = Справочники[ТекСпр.Имя].Выбрать();
Пока Выборка.Следующий() Цикл

Состояние("Обработка элемента справочника: "+Выборка.Ссылка);

СправочникОбъект = Выборка.ПолучитьОбъект();
Для каждого НайденныйРеквизит Из СписокРеквизитов Цикл

Если СправочникОбъект.ЭтоГруппа И Число(НайденныйРеквизит.Представление)<2 Тогда

Продолжить;

КонецЕсли;

СправочникОбъект[НайденныйРеквизит.Значение] = СокрЛП(СправочникОбъект[НайденныйРеквизит.Значение]);

КонецЦикла;

Попытка
СправочникОбъект.Записать();
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

КонецЦикла;

КонецЕсли;

КонецЦикла;

Предупреждение("Обработка справочников завершена");

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

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск