Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Здравствуйте! У меня в документе есть реквизит "студент" (СправочникСсылка.Студенты), и другие реквизиты, так вот как сделать так, чтобы при выборе студента, остальные реквизиты заполнялись автоматически. Создал запрос, но он не работает.. Может в чем-то ошибка есть?
&НаКлиенте Процедура СтудентПриИзменении(Элемент) ЗаполнениеСтрок(); КонецПроцедуры Процедура ЗаполнениеСтрок() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Студенты.Наименование как ФИО, | Студенты.Группа как Группа, | Студенты.Группа.Специальность как Специальность, | Студенты.ЛичныеДанные.( | ДатаРождения | ) как ГодРождения, | Студенты.Группа.Курс как Курс, | Студенты.УчебныеДанные.( | ДатаПоступления | ) как ГодПоступления |ИЗ | Справочник.Студенты КАК Студенты |ГДЕ | Студенты.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Объект.Студент); Результат = Запрос.Выполнить();
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Да, конечно понимаю, но не сказать, чтобы совсем профессионально, дело в том, что я учусь программировать в 1с.. вот добавил часть кода для заполнения, но тоже, не работает..
Процедура ЗаполнениеСтрок() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Студенты.Наименование как ФИО, | Студенты.Группа как Группа, | Студенты.Группа.Специальность как Специальность, | Студенты.ЛичныеДанные.( | ДатаРождения | ) как ГодРождения, | Студенты.Группа.Курс как Курс, | Студенты.УчебныеДанные.( | ДатаПоступления | ) как ГодПоступления |ИЗ | Справочник.Студенты КАК Студенты |ГДЕ | Студенты.Ссылка = &Ссылка";
Результат = Запрос.Выполнить(); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ФИО = Выборка.ФИО; Группа = Выборка.Группа; Специальность = Выборка.Специальность; КонецЦикла; Результат.Выгрузить();
Да, конечно понимаю, но не сказать, чтобы совсем профессионально, дело в том, что я учусь программировать в 1с.. вот добавил часть кода для заполнения, но тоже, не работает..
Результат = Запрос.Выполнить(); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ФИО = Выборка.ФИО; Группа = Выборка.Группа; Специальность = Выборка.Специальность; КонецЦикла; Результат.Выгрузить();
КонецПроцедуры
Вот это:
Результат = Запрос.Выполнить(); Выборка = Запрос.Выполнить().Выбрать();
Должно быть записано по-другому:
Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); // или Выборка = Запрос.Выполнить().Выбрать(); // Поскольку Результат сам по себе Вам дальше не нужен
Иначе Вы заставляете компилятор делать лишнюю работу.
Вот это:
Результат.Выгрузить();
Не нужно вообще, т.к. полученную Таблицу Значений Вы даже не присваиваете никакой переменной.
Ну и самая главная ошибка: Вы результат запроса присваиваете обычным переменным, а не свойствам реквизита формы Объект (обычно основной реквизит формы называется именно так, хотя это и не обязательно)
Пока Выборка.Следующий() Цикл Объект.ФИО = Выборка.ФИО; Объект.Группа = Выборка.Группа; Объект.Специальность = Выборка.Специальность; КонецЦикла;
Но лучше вот так:
Выборка.Следующий(); // Только первую запись ЗаполнитьЗначенияСвойств(Объект, Выборка, "ФИО,Группа,Специальность");
В принципе параметр "ФИО,Группа,Специальность" можно просто не указывать - это сделано чтобы создать точную аналогию Вашему коду
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(alexk @ 07.10.12, 15:27)
как сделать так, чтобы при выборе студента, остальные реквизиты заполнялись автоматически.
А что с этими реквизитами будет потом? Если они нужны чисто визуально, то зачем вообще что-то писать, можно же просто отобразить их указывая в свойствах поля - путь к данным.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(logist @ 07.10.12, 17:25)
А что с этими реквизитами будет потом? Если они нужны чисто визуально, то зачем вообще что-то писать, можно же просто отобразить их указывая в свойствах поля - путь к данным.
Ну дальше эти данные будут нужны для печати отчета
Скажите пожалуйста, а как-нибудь можно записать в реквизиты документа, те реквизиты справочника, которые были взяты из его ТЧ (То есть это дата поступления, и дата рождения) ??
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(alexk @ 07.10.12, 21:00)
Ну дальше эти данные будут нужны для печати отчета
Ну так зачем тогда их тягать запросом в форму. Отобразите их используя обычные поля указав путь данных через Студента. В запросе для печати получить эти данные уже нет проблемы, отображение их на форме не имеет значение в данном случае.
Цитата(alexk @ 07.10.12, 21:00)
Скажите пожалуйста, а как-нибудь можно записать в реквизиты документа, те реквизиты справочника, которые были взяты из его ТЧ (То есть это дата поступления, и дата рождения) ??
А зачем Вы храните такие реквизиты как дата поступления/дата рождения в ТЧ справочника? А по сути вопроса - можно все.
Личные бесплатные консультации не даю, для этого есть форум!
Группа: Пользователи
Сообщений: 48
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(logist @ 08.10.12, 10:44)
Ну так зачем тогда их тягать запросом в форму. Отобразите их используя обычные поля указав путь данных через Студента. В запросе для печати получить эти данные уже нет проблемы, отображение их на форме не имеет значение в данном случае.
Да но это форма документа, а документ подразумевает собой выдачу справок об обучении, вот проще может это через форму документа делать
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!