8.х управление платным обучением

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем morfiy, 24 апр 2008.

  1. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    У меня есть документ"Учебный план",в нем перечень дисциплин и количество часов для каждой.Таких документов 12(то есть для каждого семестра).Все дисциплины и количество часов фиксируются в регистре сведений.В отчете нужно,чтобы помимо этих данных в итоге выводилось еще общее количество часов за все семестры.Как в отчете это сделать?Можно из регистра сведений получить такие данные?если да,то как????
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Для начала - как вы строите отчет?

    Данные из регистра получить можно

    Вот один вариант:
    Когда вы выводите строки отчета вы можете подсчитывать итоги по дисциплинам
    Вот еще вариант:
    Вы можете сделать запрос по регистру с установленным отбором по каждой дисциплине без учета семестров и получить итоги. Ну можно в крайнем случае стандартными методами регистров воспользоваться. Но скорее всего вручную придется табличку просуммировать.
  3. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Все разобралась=) Но одно так и не могу сделать: как внести в документ по значению реквизита "Фамилия" (с типом ссылка на справочник Студенты), различные данные этого студента:серия,номер паспорта,адрес и т.д.
  4. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    У вас на форме есть реквизит - Студент (или фамилия, вы лучше знаете). Обработайте событие "ПриИзменении" и внесите все, что нужно.
  5. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Процедуру пытаюсь написать примерно таким способом:

    Адрес=Справочники.Студенты.НайтиПоРеквизиту("Наименование").АдресМастаЖительства;//выдает ошибку недостаточно фактических параметров

    Адрес-это реквизит документа,находится на форме этого документа.
    Наименование-встроенный реквизит справочника
    АдресМестаЖительства-реквизит справочника,значение которого я хочу получить
  6. AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Синтаксис:
    НайтиПоРеквизиту(<Имя реквизита>, <Значение реквизита>, <Родитель>, <Владелец>)
    Параметры:
    <Имя реквизита> (обязательный)
    Тип: Строка. Имя реквизита, как он задан в конфигураторе, по значению которого осуществляется поиск. Тип значения произвольный, кроме ХранилищеЗначения и строк произвольной длины.
    <Значение реквизита> (обязательный)
    Тип: Произвольный. Значение реквизита, по которому должен выполняться поиск.
    <Родитель> (необязательный)
    Тип: СправочникСсылка. Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
    <Владелец> (необязательный)
    Тип: СправочникСсылка. Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
    Возвращаемое значение:
    Тип: СправочникСсылка. Ссылка на найденный элемент справочника. Если не существует ни одного элемента с требуемым значением реквизита, то будет возвращена пустая ссылка.
    Описание:
    Осуществляет поиск элемента по значению реквизита.
    Примечание:
    Если существует несколько элементов с указанным значением реквизита, то будет найдет только один из них.
    Для реквизитов типа Строка поиск осуществляется по точному соответствию.


    СП - спасет мир :)
  7. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Сразу выскажу свою мысль.
    Если у вас два студента Ивановых Иван Иванычей? Ну полные тезки - это не редкость. Что вы по наименованию искать будете?

    Не делайте реквизит, соответствующий студенту строковым, а сразу делайте ссылку на справочник студентов (так вы выберете нужного вам Иванова).

    После чего все упрощается

    Код:
    Адрес = Студент.АдресМестаЖительства;
    
    
  8. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    выдает ошибки:поле студента не обнаружено.
    Пробовал несколько способов:

    Адрес=Справочники.Студенты.АдресМестаЖительства;

    или Студент=Справочники.Студенты;
    Адрес=Студент.АдресМестаЖительства;
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Так естественно, у вас нет еще поля студент или реквизита.
    Кстати, если Студент - просто поле. а не реквизит, то придется так:
    ЭлементыФормы.Студент.Значение.АдресМестаЖительства.

    Но сдается мне что-то вы не так спроектировали. Может скриншоты выложите?
  10. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Заработало))Спасибо!Еще вопросик:можно ли создать такой отчет,чтобы первоначально была форма,где можно выбрать например какого-нибудь студента и для него вывести данные из регистраСведений или из документов. Когда пытаюсь создать свою форму с реквизитами,то обработчик кнопки"Сформировать"требуется забивать в ручную и макет строить тоже ручками.Посоветуйте,как можно сделать все проще???
  11. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Воспользуйтесь конструктором выходных форм, там все параметры можно разместить на форме, а сам отчет строится конструктором запросов. Еще есть вариант с системой компоновки данных, но я сейчас вам по ней мало чего скажу.

    Чтобы вызвать конструктор выходной формы - сощдаете отчет и в конфигураторе - Действия - Конструкторы - конструктор выходной формы.

    А там уже решайте - через построитель он у вас будет или с фиксированным макетом, но все сгенерируется!
  12. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    Можно ли в справочнике(Студенты) сделать какое-нибудь поле куда бы вносились все документы этого студента,какое это поле и как их туда внести
  13. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    В форме документа "УчебныйПлан" делаю кнопку,при нажатии которой создается новый документ"ДопСоглашение".Этот документ вводится на основании Учебного плана,поэтому хочу для него использовать процедуру ОбработкаЗаполнения(?).Что будет основанием?Перебрала всевозможные варианты,проблема какой тип значения будет у параметра Основание.
    Воспользоваться стандартной кнопочкой"Ввести на основании" это допСоглашение я не могу,так как мне необходимо проверить заполнены ли строки табличной части.
  14. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    1. Сделайте табличное поле на форме - просто таблицу значений - не реквизиты справочника и заполняйте его при открытии (или перед открытием)
    2. Делайте ввод на основании. При ОбработкеЗаполнения - кстати она вызывается при вызове метода документа "Заполнить()". Так вот при обработке заполнения анализируйте основание и если что-то не так заполнено - сообщайте об ошибке и закрывайте окно.
  15. TopicStarter Overlay
    morfiy
    Offline

    morfiy

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

    Запрос.УстановитьПараметр("Фамилия", Фамилия);
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    ТП=ЭлементыФормы.ТабличноеПоле1;
    //пытаюсь записать все,что выбрано из регистра
    Пока Выборка.Следующий() Цикл
    НоваяСтрока=ТП.ДобавитьСтроку();
    КонецЦикла;
    В результате,в табличное поле ничего не записывается

    Вообще,проблема как выбрать из регистров сведений нужные данные,в нескольких местах мне необходимо получать такие данные,а при отладке ошибки возникают:не найдена таблица регистрСведений....
  16. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Ну вы лучше используйте метод "Загрузить" у табличного поля. кажется так.
    Либо вам надо создать колонки корректно и заполнить их данными.
    Ну и проверьте результат запроса - не пустой ли?
  17. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
    А как сделать,чтобы пользователю выдать сообщение что ему надо сделать
  18. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Посмотрите хелп по процедурам/функциям
    Сообщить
    Предупреждение
    Вопрос

    И вообще есть раздел "функции для интерактивной работы".

    Но вообще обычно всю помощь делают в описании - и по кнопке F1 пользователь получает нужную информацию
  19. TopicStarter Overlay
    morfiy
    Offline

    morfiy

    Регистрация:
    8 апр 2008
    Сообщения:
    27
    Симпатии:
    0
    Баллы:
    1
  20. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Проверьте периодичность регистра сведений. Проверьте что вы вводите.

Поделиться этой страницей