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

Хранилище

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

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



> форма выбора с отбором по реквизиту табличной части          
Цибир Подменю пользователя
сообщение 06.08.13, 9:25
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Здравствуйте.

Есть Справочник Факультет. В табличной части есть реквизит Кафедры(Справочник Кафедра).
Есть Справочник Адрес. В табличной части есть реквизит Факультет(Справочник Факультет) и реквизит Кафедра(Справочник Кафедра).
Нужен алгоритм, согласно которому в табличной части справочника Адрес будет вестись отбор по факультету. То есть, выбрав факультет, при выборе кафедры будут присутствовать только кафедры данного факультета.

Посоветуйте, пожалуйста, пример алгоритма для решения данной задачи.
Спасибо.

logist Подменю пользователя
сообщение 06.08.13, 10:17
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Логичней использовать Справочник "Кафедры" который подчинен справочнику "Факультеты", в таком случае для поля выбора можно использовать свойство Связи параметров выбора указав Владельца


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Цибир,

Цибир Подменю пользователя
сообщение 06.08.13, 11:14
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Конечно логичней и проще. Но решение нужно данной задачи.

logist Подменю пользователя
сообщение 06.08.13, 12:30
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Ну тогда "ПриИзменении" факультета собираете список значений из ТЧ кафедры и запихиваете его в поле ввода соотв. колонки.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Цибир Подменю пользователя
сообщение 06.08.13, 14:19
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Спасибо. Нам бы развернутый ответ. Мы тут нашли решение, но оно немного кривовато. Хотелось бы посмотреть другие решения и выявить наиболее удачные.

logist Подменю пользователя
сообщение 06.08.13, 15:04
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Давайте сюда ваше кривоватое, будем разбираться.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Цибир Подменю пользователя
сообщение 07.08.13, 7:13
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Итак, у нас СпрКафедры, СпрФакультет с реквизитом табличной части Кафедра(СпрКафедра) и СпрАдрес с реквизитами табличной части Факультет(СпрФакультет) и Кафедра(СпрКафедра). Нам необходимо сделать отбор кафедр по факультету в табличной части справочника Адрес.
В форме элемента СпрАдрес для реквизита табличной части "Кафедра" назначаем событие(еще ставим кнопки выбора и списка "Да"):

&НаКлиенте
Процедура ТЧКафедраНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
    СЗ=ПолучитьКафНаСервере(Элементы.ТЧ.ТекущиеДанные.Факультет);
    ВыбЭлемент=СЗ.ВыбратьЭлемент("Выбрать Кафедру");
    ВыбСсылка=ПолучитьСсылкуНаСервере(Строка(ВыбЭлемент));
    Элементы.ТЧ.ТекущиеДанные.Кафедра=ВыбСсылка;
    
КонецПроцедуры


Ну еще две функции:
&НаСервереБезКонтекста
Функция ПолучитьКафНаСервере(Ссылка)
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
    |    СписокКаф.Кафедра
    |ИЗ
    |Справочник.Факультет.ТЧ КАК СписокКаф
    |ГДЕ
    |СписокКаф.Ссылка=&Ссылка";
    
    Запрос.УстановитьПараметр("Ссылка",Ссылка);
    ТЗ=Запрос.Выполнить().Выгрузить();
    СЗ=Новый СписокЗначений();
    СЗ.ЗагрузитьЗначения(ТЗ.ВыгрузитьКолонку(0));
    Возврат СЗ;
КонецФункции


&НаСервереБезКонтекста
Функция ПолучитьСсылкуНаСервере(О)
    ВыбСсылка=Справочники.Кафедра.НайтиПоНаименованию(СокрЛП(О)).Ссылка;
    Возврат ВыбСсылка;
КонецФункции


В итоге, после выбора факультета мы выбираем кафедры. В списке будут отобранные по факультету, а в выборе - все имеющие.
По сути, наша задача выполнена, и отбор идет. Но какой-то не оч красивый способ. Нужен красивый)

logist Подменю пользователя
сообщение 07.08.13, 7:36
Сообщение #8

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

&НаСервереБезКонтекста
Функция ПолучитьДанныеКафедр(Факультет)
    
    Список = Новый СписокЗначений;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |СписокКаф.Кафедра
    |ИЗ
    |Справочник.Факультет.ТЧ КАК СписокКаф
    |ГДЕ
    |СписокКаф.Ссылка=&Ссылка";    
    
    Запрос.УстановитьПараметр("Ссылка", Факультет);
    
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Список.Добавить(Выборка.Кафедра);
    КонецЦикла;
        
    Возврат Список;
    
КонецФункции


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: Цибир,

Цибир Подменю пользователя
сообщение 07.08.13, 8:32
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 11
Спасибо сказали: 0 раз
Рейтинг: 0

Где-нибудь есть пример решения данной задачи через форму выбора?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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