Имя: Пароль:
1C
1С v8
Автоматическое подставление в документе
,
0 terletskiyab
 
21.05.18
06:28
Доброго времени суток, друзья! Я новичок и хотел бы спросить, как мне сделать чтобы при выбора семестра - курс подбивался автоматически, это у меня документ Учебный план.
То есть если 1 и 2 семестр, то автоматически подбивался бы 1 курс
Если бы 3 и 4 семестр, то автоматически подбивался бы 2 курс и так далее.
Курсы и Семестры у меня перечисление.
Распишите где нужно написать код и какой он должен быть, заранее благодарю.
1 Мимохожий Однако
 
21.05.18
06:30
Кофе для телепатов где выдают?
2 terletskiyab
 
21.05.18
06:31
3 terletskiyab
 
21.05.18
06:32
Я понял что в менеджере объекта, теперь не знаю какой код написать, в событиях ничего не нашел :(
4 фросия
 
21.05.18
06:42
> чтобы при выбора семестра
значит код надо засунуть в процедуру при изменении семестра

>
если 1 и 2 семестр, то автоматически подбивался бы 1 курс
так и пишите: Если семестр =  перечисление.семестры.семестр1 ИЛИ ...2 тогда курс = перечисл.курсы.курс1
иначеесли ....
конецесли;
названия объектов свои добавьте
5 terletskiyab
 
21.05.18
06:45
Какое событие сделать, как оно называется? ПриИзменении, я просто полный новичок
6 terletskiyab
 
21.05.18
06:53
Можете написать шаблон кода чтобы я отталкивался, пожалуйста :(
7 catena
 
21.05.18
06:55
(5)Ну это наглость уже, хотя бы справку можно прочесть.
8 2S
 
21.05.18
06:57
Цел от деления на 2 и все твое решение
9 terletskiyab
 
21.05.18
06:59
Ребят извините за наглость, просто я реально не понимаю и справку я читал, вот что получилось:


Процедура ПриИзменениеСеместра()
    Если Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ Перечисления.Семестры.ВторойСеместр Тогда
        Курс = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ Перечисления.Семестры.ЧетвертыйСеместр Тогда
        Курс = Перечисления.Курсы.ВторойКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ Перечисления.Семестры.ШестойСеместр Тогда
         Курс = Перечисления.Курсы.ТретийКурс
    КонецЕсли;
КонецПроцедуры

А как теперь сделать чтобы автоматически выбиралось смотреть в скриншотах, помогите пожалуйста :(
10 terletskiyab
 
21.05.18
07:01
То есть при выборе семестра, автоматически подбивался курс
11 фросия
 
21.05.18
07:06
тыкни на семестр на форме.перейди в свойства- там есть список действий который можно привязать к полю.
выбери При изменении.
т.е. не просто прописать процедуру в модуле а что б она автоматически создалась.
второе- у вас УФ или нет?
если УФ то надо еще разделить команды  #НаКлиенте и #НаСервере

далее Если Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ Перечисления.Семестры.ВторойСеместр Тогда
Если ( Логическое выражение ) ИЛИ (логическое выражение) ТОгда
Семестр = Перечисления.Семестры.ПервыйСеместр -  похоже на логическое выражение
Перечисления.Семестры.ВторойСеместр - вообще не логическое выражение.

Семестр =  - тоже работать не будет. надо что-то вроде  ТекущиеДанные.Семестр =
примерно так
12 igorPetrov
 
21.05.18
07:07
(9) Плохо читал.
13 terletskiyab
 
21.05.18
07:11
У меня УФ
14 igorPetrov
 
21.05.18
07:13
(13) Поздравляем!
15 фросия
 
21.05.18
07:14
(13) не страшно.
посмотрите как работает заполнение других реквизитов, всегда проще сделать что-то по образцу
16 terletskiyab
 
21.05.18
07:15
Фросия спасибо, я приблизительно знаю что писать на сервере, а вот на клиенте что писать-то? Вообще не понимаю
17 ПегийЛунь
 
21.05.18
07:23
Примерно так:

&НаСервере
Функция ПолучитьКурс(Семестр)
КурсСеместра = Перечисления.Семестры.ПервыйСеместр;
    Если Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ Перечисления.Семестры.ВторойСеместр Тогда
        КурсСеместра = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ Перечисления.Семестры.ЧетвертыйСеместр Тогда
        КурсСеместра = Перечисления.Курсы.ВторойКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ Перечисления.Семестры.ШестойСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ТретийКурс
    КонецЕсли;
Возврат КурсСеместра;
КонецФункции

&НаКлиенте
Процедура СеместрыПриИзменении(Элемент)
СеместрИКурс=Элементы.Дисциплины.ТекущиеДанные;
СеместрИКурс.Курс=ПолучитьКурс(СеместрИКурс.Семестр);
КонецПроцедуры
18 fgaabbb
 
21.05.18
07:25
дипломники )))
начни с начала - ознакомься хотя бы с одним бесплатным курсом.

можно отсюда.

http://programmist1s.ru/programmirovanie-1s/

лучше:
http://www.spec8.ru/1c-prog-fast-start
19 terletskiyab
 
21.05.18
07:29
Спасибо fgaabbb, я просто начал работать стажером в компании по 1С, вот учусь на боевых заданиях и дома видеоматериал смотрю, спасибо
20 ПегийЛунь
 
21.05.18
07:34
(19) Сей час придут профессионалы и скажут, что реализация задачи в корне не верная (проектировка базы данных).
21 terletskiyab
 
21.05.18
08:09
https://cloud.mail.ru/home/Помогите/3.png   посмотрите пожалуйста в чем ошибки
22 terletskiyab
 
21.05.18
08:09
Я уже как только не исправлял :)
23 фросия
 
21.05.18
08:13
(21) не могу вашу картинку открыть
24 фросия
 
21.05.18
08:14
параметр не передали на сервер
условия не поправили
25 фросия
 
21.05.18
08:15
&НаКлиенте
Процедура СеместрыПриИзменении(Элемент)
СеместрИКурс=Элементы.Дисциплины.ТекущиеДанные;
СеместрИКурс.Курс=ПолучитьКурс(СеместрИКурс.Семестр);

вот вам готовый код из двух строк написали, почему вы решили использовать только одну строку и то не полностью?
26 terletskiyab
 
21.05.18
08:18
Фросия, я вот поправил https://cloud.mail.ru/home/Помогите/4.png
27 Мимохожий Однако
 
21.05.18
08:19
(0) научись пользоваться отладчиком для проверки кода
28 terletskiyab
 
21.05.18
08:20
Я отладчиком как раз таки не могу воспользоваться, пока выше на скрине 2 ошибки не уйдут, я бы давно уже посмотрел, а они не дают мне посмотреть
29 фросия
 
21.05.18
08:23
ну давайте почитаем вместе сообщения об ошибке.
начинайте , я вам подскажу что не так
30 terletskiyab
 
21.05.18
08:23
31 фросия
 
21.05.18
08:24
давайте с первый вы сами разберетесь, а второе я подскажу?
32 фросия
 
21.05.18
08:25
процедура или функция ПолучитьКурс() не определена.
вы вызываете одно а на сервере описали другое. (название к одному приведите)
чем функция от процедуры отличается знаете?
33 terletskiyab
 
21.05.18
08:25
Да
34 фросия
 
21.05.18
08:26
(33) чем?
35 terletskiyab
 
21.05.18
08:27
Функции 1С и процедуры в 1С работают аналогично другим языкам — функция это именованная подпрограмма для вызова из других мест программного кода.
36 terletskiyab
 
21.05.18
08:28
https://cloud.mail.ru/home/Помогите/5.png я тут изменил ранее, но вышли ошибки и я по разному пробывал
37 фросия
 
21.05.18
08:30
(35) вопрос- в чем отличие процедуры от функции
38 terletskiyab
 
21.05.18
08:31
Из любой функции можно сделать процедуру. Функция отличается тем, что ее имени можно присвоить изнутри функции значение и использовать это имя как обычную переменную с параметрами в скобках, а процедуру нужно вызывать отдельным оператором.
39 фросия
 
21.05.18
08:31
(36) вот там где ошибки вышли- там же написано какие ошибки, прочитайте , все по-русски ведь
40 фросия
 
21.05.18
08:34
(38)
главное отличие:функция возвращает значение, процедура нет

функция Реши мне задачку(условие задачки)
решает; решает; решил;
Возврат ответ;
конецфункции

процедура Реши мне задачку (Условие Задачки)
решает; решает; решил;
КонецПроцедуры
41 Irbis
 
21.05.18
08:37
(40) Тоже не права, процедура может возвращать значения, да ещё и не одно, а может и не возвращать, в отличие от функции, которая возвращает всегда и только одно.
42 фросия
 
21.05.18
08:39
(41) Ответ = РешиМнеЗадачку(условиеЗадачки);
в такой конструкции можно использовать процедуру?
43 фросия
 
21.05.18
08:40
1ска говорит попытка использования процедуры как функции.
44 2S
 
21.05.18
08:41
(41) че?
параметры хоть напередавайтесь
45 igorPetrov
 
21.05.18
08:58
(41) Ась?
46 terletskiyab
 
21.05.18
09:06
&НаСервере
Функция КурсДляИзменения(Семестр)
    

        
    Если Семестр = Перечисления.Семестры.ПервыйСеместр ИЛИ Семестр = Перечисления.Семестры.ВторойСеместр Тогда
        КурсСеместра  = Перечисления.Курсы.ПервыйКурс
    ИначеЕсли  Семестр = Перечисления.Семестры.ТретийСеместр ИЛИ Семестр = Перечисления.Семестры.ЧетвертыйСеместр Тогда
        КурсСеместра  = Перечисления.Курсы.ВторойКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ПятыйСеместр ИЛИ Семестр =  Перечисления.Семестры.ШестойСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ТретийКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.СедьмойСеместр ИЛИ Семестр = Перечисления.Семестры.ВосьмойСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ЧетвертыйКурс
    ИначеЕсли Семестр = Перечисления.Семестры.ДевятыйСеместр ИЛИ Семестр = Перечисления.Семестры.ДесятыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ПятыйКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.ОдиннадцатыйСеместр ИЛИ  Семестр = Перечисления.Семестры.ДвенадцатыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.ШестойКурс
    ИначеЕсли Семестр =  Перечисления.Семестры.ТринадцатыйСеместр ИЛИ Семестр = Перечисления.Семестры.ЧетырнадцатыйСеместр Тогда
         КурсСеместра = Перечисления.Курсы.СедьмойКурс;
        
    КонецЕсли;
    Возврат Семестр;

    

КонецФункции

&НаКлиенте
Процедура ДисциплиныСеместрПриИзменении(Элемент)
    СеместрИКурс = Элементы.Дисциплины.ТекущиеДанные;
    СеместрИКурс.Курс = КурсДляИзменения(СеместрИКурс.Семестр);
КонецПроцедуры

Конечный итог, но почему-то не работает
47 2S
 
21.05.18
09:09
Возврат Семестр;


бьемся головой об стену до понимания
48 2S
 
21.05.18
09:14
и вообще - решение говеное, нах это все держать в перечислениях.
49 catena
 
21.05.18
09:15
(48)Ну наконец-то, с (20) ждем))
50 фросия
 
21.05.18
09:16
(46) курсСеместра надо либо определить до условий, либо в условия добавить ИНАЧЕ курсСеместр- чего нибудь присвоить
51 2S
 
21.05.18
09:16
(49) в (8) все написано
52 фросия
 
21.05.18
09:16
(46) отладчик что говорит?
53 Мимохожий Однако
 
21.05.18
09:20
(28) Поставь точку останова еще раньше. Закомментируй явно ошибочные строки
54 Мимохожий Однако
 
21.05.18
09:21
ОФФ: ТС уволили
55 ПегийЛунь
 
21.05.18
09:23
(54)Возьмите вместо ТС меня. У умею пользоваться головой и гуглом :)
56 Segate
 
21.05.18
09:23
А зачем вообще курсы и семестры хранить в перечислениях, когда это числа?
1е задается руками, второе - расчетное и получается целочисленным делением первого на 3
57 Segate
 
21.05.18
09:24
(56) тьфу... на два конечно же
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс