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

Хранилище

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

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



> Запрос для заполнения реквизитов          
alexk Подменю пользователя
сообщение 07.10.12, 14:27
Сообщение #1

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

Здравствуйте! У меня в документе есть реквизит "студент" (СправочникСсылка.Студенты), и другие реквизиты, так вот как сделать так, чтобы при выборе студента, остальные реквизиты заполнялись автоматически. Создал запрос, но он не работает.. Может в чем-то ошибка есть?
&НаКлиенте
Процедура СтудентПриИзменении(Элемент)
ЗаполнениеСтрок();
КонецПроцедуры
Процедура ЗаполнениеСтрок()
Запрос = Новый Запрос;
Запрос.Текст =
  "ВЫБРАТЬ
  | Студенты.Наименование как ФИО,
  | Студенты.Группа как Группа,
  | Студенты.Группа.Специальность как Специальность,
  | Студенты.ЛичныеДанные.(
  |  ДатаРождения
  | ) как ГодРождения,
  | Студенты.Группа.Курс как Курс,
  | Студенты.УчебныеДанные.(
  |  ДатаПоступления
  | ) как ГодПоступления
  |ИЗ
  | Справочник.Студенты КАК Студенты
  |ГДЕ
  | Студенты.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Объект.Студент);
Результат = Запрос.Выполнить();


Простите сообщение забыл в тег вставить......

Сообщение отредактировал Vofka - 07.10.12, 14:48

Vofka Подменю пользователя
сообщение 07.10.12, 14:51
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13957
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Интересно, а какая вообще строчка кода отвечает за заполнение чего-либо? Вы вообще понимаете смысл букв, которые в коде пишете?

alexk Подменю пользователя
сообщение 07.10.12, 15:45
Сообщение #3

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

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

    Запрос.УстановитьПараметр("Ссылка", Объект.Студент);

    Результат = Запрос.Выполнить();
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ФИО = Выборка.ФИО;
        Группа = Выборка.Группа;
        Специальность = Выборка.Специальность;
КонецЦикла;
        Результат.Выгрузить();
        
КонецПроцедуры

kivals Подменю пользователя
сообщение 07.10.12, 16:19
Сообщение #4

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 105
Из: Киев
Спасибо сказали: 27 раз
Рейтинг: 0

Цитата(alexk @ 07.10.12, 16:45) *
Да, конечно понимаю, но не сказать, чтобы совсем профессионально, дело в том, что я учусь программировать в 1с.. вот добавил часть кода для заполнения, но тоже, не работает..
Процедура ЗаполнениеСтрок()
    // ...
    Запрос.УстановитьПараметр("Ссылка", Объект.Студент);

    Результат = Запрос.Выполнить();
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ФИО = Выборка.ФИО;
        Группа = Выборка.Группа;
        Специальность = Выборка.Специальность;
КонецЦикла;
        Результат.Выгрузить();
        
КонецПроцедуры


Вот это:
Результат = Запрос.Выполнить();
   Выборка = Запрос.Выполнить().Выбрать();


Должно быть записано по-другому:
Результат = Запрос.Выполнить();
   Выборка = Результат.Выбрать();
   // или
   Выборка = Запрос.Выполнить().Выбрать(); // Поскольку Результат сам по себе Вам дальше не нужен

Иначе Вы заставляете компилятор делать лишнюю работу.

Вот это:
Результат.Выгрузить();

Не нужно вообще, т.к. полученную Таблицу Значений Вы даже не присваиваете никакой переменной.

Ну и самая главная ошибка:
Вы результат запроса присваиваете обычным переменным, а не свойствам реквизита формы Объект (обычно основной реквизит формы называется именно так, хотя это и не обязательно)
    Пока Выборка.Следующий() Цикл
        Объект.ФИО = Выборка.ФИО;
        Объект.Группа = Выборка.Группа;
        Объект.Специальность = Выборка.Специальность;
    КонецЦикла;

Но лучше вот так:
Выборка.Следующий(); // Только первую запись
ЗаполнитьЗначенияСвойств(Объект, Выборка, "ФИО,Группа,Специальность");


В принципе параметр "ФИО,Группа,Специальность" можно просто не указывать - это сделано чтобы создать точную аналогию Вашему коду

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

logist Подменю пользователя
сообщение 07.10.12, 16:25
Сообщение #5

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

Цитата(alexk @ 07.10.12, 15:27) *
как сделать так, чтобы при выборе студента, остальные реквизиты заполнялись автоматически.

А что с этими реквизитами будет потом? Если они нужны чисто визуально, то зачем вообще что-то писать, можно же просто отобразить их указывая в свойствах поля - путь к данным.


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

alexk Подменю пользователя
сообщение 07.10.12, 20:00
Сообщение #6

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

Цитата(logist @ 07.10.12, 17:25) *
А что с этими реквизитами будет потом? Если они нужны чисто визуально, то зачем вообще что-то писать, можно же просто отобразить их указывая в свойствах поля - путь к данным.


Ну дальше эти данные будут нужны для печати отчета

Скажите пожалуйста, а как-нибудь можно записать в реквизиты документа, те реквизиты справочника, которые были взяты из его ТЧ (То есть это дата поступления, и дата рождения) ??

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

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

Цитата(alexk @ 07.10.12, 21:00) *
Ну дальше эти данные будут нужны для печати отчета

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

Цитата(alexk @ 07.10.12, 21:00) *
Скажите пожалуйста, а как-нибудь можно записать в реквизиты документа, те реквизиты справочника, которые были взяты из его ТЧ (То есть это дата поступления, и дата рождения) ??

А зачем Вы храните такие реквизиты как дата поступления/дата рождения в ТЧ справочника? А по сути вопроса - можно все.


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

alexk Подменю пользователя
сообщение 08.10.12, 16:38
Сообщение #8

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

Цитата(logist @ 08.10.12, 10:44) *
Ну так зачем тогда их тягать запросом в форму. Отобразите их используя обычные поля указав путь данных через Студента. В запросе для печати получить эти данные уже нет проблемы, отображение их на форме не имеет значение в данном случае.


Да но это форма документа, а документ подразумевает собой выдачу справок об обучении, вот проще может это через форму документа делать

logist Подменю пользователя
сообщение 08.10.12, 16:42
Сообщение #9

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

Цитата(alexk @ 08.10.12, 17:38) *
Да но это форма документа

И что? Если все данные хранятся в справочнике, зачем их дублировать в документ...


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

Vofka Подменю пользователя
сообщение 08.10.12, 16:44
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13957
Из: Киев
Спасибо сказали: 4523 раз
Рейтинг: 3646.4

Цитата(logist @ 08.10.12, 17:42) *
Если все данные хранятся в справочнике, зачем их дублировать в документ...

Потому что со временем они в справочнике могут поменяться.

logist Подменю пользователя
сообщение 08.10.12, 16:47
Сообщение #11

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

Цитата(Vofka @ 08.10.12, 17:44) *
Потому что со временем они в справочнике могут поменяться.

Ну тогда вся логика хранения данных теряется. Зачем использовать документ, если можно использовать регистры сведений. Ведь для ФИО это стандарт.


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

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


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

 

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