Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/206: Рейтинг темы: голосов - 206, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154

Выбор формы списка и передача параметра

22.04.2010, 21:49. Показов 38097. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите в чем может быть неточность:
в документе Зачисление есть реквизиты Факультет(тип Справочник.Факультеты) и Специальность(тип Справочник.Специальности,в справочнике есть реквизит Факультет). Надо, чтобы при выборе факультета, открывалась форма списка справочника Специальности со списком только тех специальностей, которые соответствуют данному выбранному факультету.
Я создала форму списка ДляВыбора в справочнике Специальности, где в модуле формы списка ДляВыбора прописала процедуру ПриОткрытии(Фак), где Фак - передающийся параметр из документа. В документе я присвоила реквизиту Специальность процедуру ВыборФормы(), где указала на открытие формы списка ДляВыбора и параметр Факультет(код ниже).
!!!Проблема состоит в том, что у меня даже не открывается никакая форма при нажатии на реквизит документа Специальности. Подскажите в чем проблема. В свойствах реквизита документа во вкладке Дополнительно я установила Форма: ДляВыбора (хотя и при выборе Авто тож не работает)

Code
1
2
3
4
5
Процедура ВыборФормы()
Если Факультет.Выбран()=1 Тогда
ОткрытьФорму("Справочник.Специальности.ДляВыбора",Факультет);
КонецЕсли;
КонецПроцедуры
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.04.2010, 21:49
Ответы с готовыми решениями:

Передача параметра с формы
Файл param.php. Вопрос: Почему выдает ошибку "Notice: Undefined variable: username in C:\xampp\htdocs\Lesson1\param.php on line...

Передача параметра из закрываемой формы
Помогите решить проблемку, никак не соображу. Есть форма, на ней есть кнопка по которой с помощью DoCmd.Open открывается другая форма для...

Передача в качестве параметра списка унаследованных объектов
Добрый день. Есть у меня вот такой метод: private AbstractPlace random_place(List<AbstractPlace> a_places,...

24
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 00:01
Сорри, все назад, спутал с ОткрытьПодбор

Вроде, все написано правильно, а что в отладчике ? Попадаем ли на процедуру ВыборФормы ?

Может, Факультет.Выбран()=1 не отрабатывает ? Или это вообще проверять не надо ?
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 00:21
вроде по проверке эта процедура правильная. Возможно проблема не в этом коде, а в коде, который написан в форме списка ДляВыбора:

Code
1
2
3
4
5
6
7
8
Процедура ПриОткрытии(Фак)
СписокЭлементов=СоздатьОбъект("СписокЗначений");
СпрСпец=СоздатьОбъект("СправочникюСпециальности");
.....
Если СпрСпец.Факультет = Фак тогда
СписокЭлементов.ДобавитьЗначение(СпрСпец.ТекущийЭлемент());
.......
КонецПроцедуры
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 00:48
Попробуй ПриОткрытии() //без параметра, вроде так и должно быть
а в ней поставь
Фак = Форма.Параметр // если он передается ссылкой на справочник

и еще раз повторю то, что не отправилось своевременно

Может, Факультет.Выбран()=1 не отрабатывает ? Или это вообще проверять не надо ?
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 01:16
Переменная Фак пустая, значение выбранного реквизита документа не передается. А в ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Факультет);, где факультет - это реквизит документа, который имеет тип Справочник.Факультеты и по нему надо отбирать специальности. Может надо как-то по-другому прописать Факультет?
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 01:20
Попробуй передать параметры списком значений из одного значения "Факультет"
и в ПриОткрытии используй
Форма.Параметр.Получить
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 01:44
Вы бы не могли привести небольшой пример, а то что-то ничего не получается.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 01:52
Процедура ВыборФормы()
Если Факультет.Выбран()=1 Тогда
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Факультет,"Фа культет");
ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Параметры);
КонецЕсли;

в форме списка
Процедура ПриОткрытии()
Фак = Форма.Параметр.Получить("Факультет");
.....
Если СпрСпец.Факультет = Фак тогда
СписокЭлементов.ДобавитьЗначение(СпрСпец .ТекущийЭлемент());
.......
КонецПроцедуры
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 02:07
В процедуре ПриОткрытии пишет :
Фак=Форма.Параметр.Получить("Факультет") ;
Значение не представляет агрегатный объект (Получить)
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 02:13
Параметр и Параметры
не перепутала ?
В отладчике посмотри как выглядят переменные Параметры перед вызовом и Параметр при входе в форму списка.
Вроде, механизм стандартный

Вообще-то корректно сделать проверку
Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" тогда
Фак=Форма.Параметр.Получить("Факультет") ;
и т.д.
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 02:35
Я даже не могу просмотреть в отладчике процедуру ВыборФормы(): ставлю точки прерывания, а оно все равно сразу открывает форму списка и не переходит в отладчик на те точки, которые я поставила в документе.
Поставила проверку
Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" тогда
как вы и посоветовали, но как я поняла из отладчика это условие не выполняется, т.е. не равно "СписокЗначений". Я уже и не знаю что с этим делать, вроде бы все правильно. Еще раз приведу отрывки кода:
В документе в реквизите Специальность:

Code
1
2
3
4
5
6
Процедура ВыборФормы()
Если Факультет.Выбран()=1 Тогда
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Факультет,"Факультет");
ОткрытьФорму("Справочник.Специальности.ДляВыбора",Параметры);
КонецЕсли;
И в форме списка Для выбора в справочнике Специальности:

Code
1
2
3
4
5
6
7
Процедура ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" тогда
Фак=Форма.Параметр.Получить("Факультет");
......
Если СпрСпец.Факультет = Фак тогда
СписокЭлементов.ДобавитьЗначение(СпрСпец.ТекущийЭлемент());
.......
И РАЗВЕ ТО, ЧТО Факультет ЭТО РЕКВИЗИТ ДОКУМЕНТА С ТИПОМ СПРАВОЧНИК НИ НА ЧТО НЕ ВЛИЯЕТ? НЕ НАДО СОЗДАВАТЬ ССЫЛКУ НА СПРАВОЧНИК И ДЕЛАТЬ НИКАКУЮ ВЫБОРКУ ИЗ СПРАВОЧНИКА ФАКУЛЬТЕТЫ ?????
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 02:54
А из какого-нибудь другого места не может вызываться открытие формы
ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Параметры); ?


Процедура ВыборФормы()
Если Факультет.Выбран()=1 Тогда
Параметры = СоздатьОбъект("СписокЗначений");
Параметры.ДобавитьЗначение(Факультет,"Фа культет");
// вот здесь остановись в отладчике и посмотри, чему равна переменная "Параметры", потом по F8 шагай
ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Параметры);
КонецЕсли;
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 03:09
Цитата Сообщение от vbs
А из какого-нибудь другого места не может вызываться открытие формы
ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Параметры); ?
А нам же из другого и не надо. Надо же, чтобы открывалась форма списка при нажатии на реквизит документа Специальности и все.


Цитата Сообщение от vbs
// вот здесь остановись в отладчике и посмотри, чему равна переменная "Параметры", потом по F8 шагай
вот именно что оно не останавливается. Поставила даже две точки останова на строках
Параметры.ДобавитьЗначение(Факультет,"Фа культет");
ОткрытьФорму("Справочник.Специальности.Д ляВыбора",Параметры);
и ничего не остановилось, а просто открыло пустую форму списка(

Как я понимаю, то список значений не создается. Что-то не то с переменной Факультет. В эту переменную не попадает значение (например название(наименование) факультета из справочника Факультеты), поэтому и список пустой
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 03:21
Цитата Сообщение от lira89
А нам же из другого и не надо. Надо же, чтобы открывалась форма списка при нажатии на реквизит документа Специальности и все
Замечательно ! А в процедуру ВыборФормы ты попадаешь ? Видимо, нет ^_^

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

Или, может, уже пора лечь спать, и ну ее, эту 1С ?
Утро-то вечера мудренее.
Главное ведь, чтобы была любовь и не было войны, а форма списка и до утра подождет
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 03:24
Спасибо за советы и за помощь, действительно, пора бы уже спать. Спокойной ночи.
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 10:42
Цитата Сообщение от vbs
Замечательно ! А в процедуру ВыборФормы ты попадаешь ? Видимо, нет
совершенно точно, я туда не могу попасть, только не могу понять почему? Может все таки можно в эту процедуру как- нибудь попасть?
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.04.2010, 13:45
Чуть свет уж на ногах ? И я у Ваших ног... (с)

Я ведь всерьез предлагал


Цитата Сообщение от vbs
заведи в табличной части реквизит типа "текст"(Псевдоспециальность), на закладку "дополнительно" повесь "ВыборФормы", а после ее отработки заполняй реквизит "Специальность",
каковой сделай недоступным для редактирования, а заполняться он будет при вызове формы списка (Ну, типа, выбор из возможных значений)

Добавлено: А если это реквизит шапки - еще проще - рядом с ним на форме вешаешь кнопку с вызовом ВыборФормы, а сам реквизит делаешь недоступным

А в форме списка использовать Спр.ВыбратьЭлементыПоРеквизиту (ну, если отбор установлен) - экономичнее и точнее будет
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
23.04.2010, 21:02
Цитата Сообщение от vbs
А если это реквизит шапки - еще проще - рядом с ним на форме вешаешь кнопку с вызовом ВыборФормы, а сам реквизит делаешь недоступным
кнопку сделала и повесила на нее процедуру, вроде бы все получилось (ну отбор по факультету работает), только новая загвоздка в том, что открыватся форму списка и при выборе элемента открыватся форма выбранного элемента, а нужно, чтобы наименованиене выбранного элемента добавлялось в реквизит документа.
0
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
24.04.2010, 00:26
Передай через параметр
0
0 / 0 / 0
Регистрация: 07.03.2010
Сообщений: 154
24.04.2010, 00:55
Какой параметр и ккуда? Я что-то совсем уже запуталась
Не могли бы вы привести пару строчек примера, а то я не могу понять как взять параметр из появившейся формы списка (какую-то процедуру надо использовать?) и как его привязать к реквизиту документа

PS: я конечно понимаю, что уже поднадоела, но просто что-то не получается решить эту проблему.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.04.2010, 00:55
Помогаю со студенческими работами здесь

Выбор параметра из выпадающего списка ComboBox
Здравствуйте! Я нуб в программирование но очень нужна помощь.Есть UserForm1 на ней ComboBox1 , TextBox1 , TextBox2.комбобокс загружается ...

Access передача параметра из формы в запрос
Доброго времени суток, весь день не могу найти ошибку. 1. с запуском формы выполняется код, 2. первым делом в поле на форме...

Передача параметра при закрытии формы
Необходимо при закрытии одной формы передать параметр в другую, уже открытую форму. Можно ли обойтись без глобальных переменных?

Передача параметра из HTML формы представления
Добрый день уважаемые программисты! Я новичок в ASP.NET, делаю админпанель не получается передавать параметр из представления. ...

Передача параметра выборки запросу из формы
В форме "отчеты" есть кнопка 54 Private Sub Кнопка54_Click() Dim a As Variant, b As String a = Врач b = "(Анестезия.Врач) Is...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru