Имя: Пароль:
1C
1С v8
v8: При нажатии на кнопку Заполнить".
,
0 fenlork
 
25.07.13
13:33
Есть РС"В каком классе ученик"-там есть заполненные строки(период,класс,ученик), есть документ-Перевод ученика, с полем реквизита"Класс" и ТЧ-Ученики".Нужно создать кнопку"Заполнить" и при выборе класса, процедура нажатия на кнопку должна брать данные из регистра сведения и подставлять ученика.
1 maksim358
 
25.07.13
13:34
а в чем вопрос?
2 fenlork
 
25.07.13
13:34
Как правильно написать запрос обращения в рс
3 ДенисЧ
 
25.07.13
13:34
Благословляю.
4 IШаман
 
25.07.13
13:34
Сколько платишь?
5 cw014
 
25.07.13
13:35
(1) Он хвастается
6 Apokalipsec
 
25.07.13
13:35
надо создать не кнопку, а обработку заполнения ТЧ наверное?
7 fenlork
 
25.07.13
13:35
Процедура ЗаполнитьНажатие(Элемент)
    ТЧ=ЭтотОбъект.Ученики;
        //получитить учеников в текущем классе
        Для Каждого ТекСтрокаТЧ Из ТЧ Цикл
             Если ЗначениеЗаполнено(ЭтотОбъект.Класс) Тогда
        Запрос=Новый Запрос;
        Запрос.Текст=    
        "ВЫБРАТЬ
        |    ВКакомКлассеУченик.Ученик,
        |        |ИЗ
        |    РегистрСведений.ВКакомКлассеУченик(&период) КАК Ученик
        |{ГДЕ
        |    Ученики.Класс=&Класс
        |СГРУППИРОВАТЬ ПО";    
    Запрос.УстановитьПараметр("Класс",Класс);
    Запрос.УстановитьПараметр("период",Дата);
    Результат = Запрос.Выполнить().Выгрузить(Результат);
КонецЕсли;     
    КонецЦикла;

    КонецПроцедуры
8 fenlork
 
25.07.13
13:36
Да-надо заполнить ТЧ документа(
9 Капитан О
 
25.07.13
13:36
за запрос в цикле бьют линейкой по рукам, прямо не поднимая с гороха
10 Капитан О
 
25.07.13
13:37
(8) что планируешь делать?
11 fenlork
 
25.07.13
13:37
у меня вообще беда с переменными-учусь еще
12 cw014
 
25.07.13
13:39
(11) Куда и что нужно подставлять? Что ты заполняешь? И какие вообще там данные есть?
13 cw014
 
25.07.13
13:41
Процедура ЗаполнитьНажатие(Элемент)
        Запрос=Новый Запрос("ВЫБРАТЬ
        |    ВКакомКлассеУченик.Ученик,
        |ИЗ
        |    РегистрСведений.ВКакомКлассеУченик(&период) КАК Ученик
        |ГДЕ
        |    Ученики.Класс=&Класс");
    Запрос.УстановитьПараметр("Класс",Класс);
    Запрос.УстановитьПараметр("период",Дата);
    Ученики.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
14 cw014
 
25.07.13
13:41
|    ВКакомКлассеУченик.Ученик,

убери в конце запятую
15 cw014
 
25.07.13
13:42
Процедура ЗаполнитьНажатие(Элемент)
        Запрос=Новый Запрос("ВЫБРАТЬ
        |    ВКакомКлассеУченик.Ученик
        |ИЗ
        |    РегистрСведений.ВКакомКлассеУченик(&период) КАК ВКакомКлассеУченик
        |ГДЕ
        |    ВКакомКлассеУченик.Класс = &Класс");
    Запрос.УстановитьПараметр("Класс",Класс);
    Запрос.УстановитьПараметр("период",Дата);
    Ученики.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры
16 cw014
 
25.07.13
13:42
Вот так правильно
17 fenlork
 
25.07.13
13:43
О,Боже..кажется мне нужен сенсей..подскажите что учить
18 fenlork
 
25.07.13
13:43
прям основы из основ
19 Apokalipsec
 
25.07.13
13:45
(18) для начала - НЕ делай это кнопкой.
http://itprovince.blogspot.ru/2009/11/blog-post_27.html
20 cw014
 
25.07.13
13:45
(18) Что тебе неясно? Учение небесплатное
21 maksim358
 
25.07.13
13:47
про фильтры почитай
22 fenlork
 
25.07.13
13:48
может начать с другого языка, что бы понять суть составления алгоритмов?
23 cw014
 
25.07.13
13:49
(22) Если ты даже сути составления алгоритмов не знаешь - тогда отойди от компьютера и позови специалиста
24 IШаман
 
25.07.13
13:49
(17) Это еще дороже чем просто сделать.
25 maksim358
 
25.07.13
13:49
Фильтр = Новый Структура;
Фильтр.Вставить("Ученик", Ученик);
Сведения = РегистрыСведений.ВКакомКлассеУченик.ПолучитьПоследнее(Дата, Фильтр);
Строка.Класс= Сведения.Класс;

вот что то такое
26 Капитан О
 
25.07.13
13:50
(25) надеюсь, это всё в цикле?
27 Капитан О
 
25.07.13
13:50
(22) начни с подачи документов в вуз, ещё не поздно
28 cw014
 
25.07.13
13:51
(25) Ему учеников по классу выбрать надо. А их несколько. Да и к тому же фильтр должен содержать все измерения
29 fenlork
 
25.07.13
13:54
А чего еще в этой процедуре не хватает?
30 cw014
 
25.07.13
13:54
(29) Знаний
31 maksim358
 
25.07.13
13:55
(26) (28)а да. не до конца понял задачу.
32 fenlork
 
25.07.13
13:55
получить результат и подставить в ТЧ документа?
33 Zerg80
 
25.07.13
13:58
(0) - вон в (15) же написано все, чего тебе нехватает? И да, название РС - зач0д
34 cw014
 
25.07.13
13:59
(32) В (15) все хватает. Если конечно там нет каких либо еще условий, о которых ты не говоришь
35 Ненавижу 1С
 
гуру
25.07.13
13:59
никогда не понимал этого, ну очевидно, что 99.99% не останутся на второй год, ну 1% может уйти из этой школы и переехать, остальные паровозом каждый год идут в СЛЕДУЮЩИЙ класс, так может проще отражать те самые 1.01% отклонений?
36 IBTM
 
25.07.13
14:09
(35) те самые 00,01%)
37 fenlork
 
25.07.13
14:12
открываю Предприятие, создаю докПеревод-выбираю в поле реквизит Класс, который ссылается на справочник,в ТЧ-добавляю строку-нажимаю кнопку Заполнить-выкидывает с ошибкой в модуле-"Ошибка при вызове метода контекста(Выполнить)..
38 Капитан О
 
25.07.13
14:12
(37) и далее по тексту всё нужное для разрешения
39 Капитан О
 
25.07.13
14:13
рано автора в пофигуратор пустили
40 fenlork
 
25.07.13
14:15
Ученики.Загрузить(Запрос.Выполнить().Выгрузить());-ругаеться на эту строчку
41 Капитан О
 
25.07.13
14:16
(40) читай текст ошибки до полного просветления
42 cw014
 
25.07.13
14:17
(37) Нажми кнопку "Подробнее" и полный текст ошибки. И еще - если у тебя заполнение ТЧ - зачем ты туда руками строку добавляешь?
43 fenlork
 
25.07.13
14:27
{Документ.ПереводВДругойКласс.Форма.ФормаДокумента.Форма(16)}: Ошибка при вызове метода контекста (Выполнить)
    Ученики.Загрузить(Запрос.Выполнить().Выгрузить());
по причине:
{(4, 5)}: Нельзя задавать параметры для таблицы "РегистрСведений.ВКакомКлассеУченик"
<<?>>РегистрСведений.ВКакомКлассеУченик(&период) КАК ВКакомКлассеУченик
44 Капитан О
 
25.07.13
14:28
(43) перевожу. твой РС не является периодическим, что за хню ты от меня хочешь?
45 fenlork
 
25.07.13
14:32
периодичность-в пределах секунды
46 Капитан О
 
25.07.13
14:33
перевожу правильно. какие-такие параметры в реальной таблице ты от меня хочешь?
47 cw014
 
25.07.13
14:47
(43)(45) Потому что ты косячков и я пропустил
РегистрСведений.ВКакомКлассеУченик.СрезПоследних(&период)
48 fenlork
 
25.07.13
14:55
проблема осталась
49 cw014
 
25.07.13
14:56
(48) Вообще вот так должно быть:

ВЫБРАТЬ
|    ВКакомКлассеУченик.Ученик
|ИЗ
|    РегистрСведений.ВКакомКлассеУченик.СрезПоследних(&период, Класс = &Класс) КАК ВКакомКлассеУченик

Если проблема осталась, ошибка в студию
50 fenlork
 
25.07.13
15:38
вот теперь работает
Процедура ЗаполнитьНажатие(Элемент)
        Запрос1=Новый Запрос("ВЫБРАТЬ
        |    ВКакомКлассеУченик.Ученик КАК Ученики
        |ИЗ
        |    РегистрСведений.ВКакомКлассеУченик.СрезПоследних(&период,) КАК ВКакомКлассеУченик
        |ГДЕ
        |    ВКакомКлассеУченик.Класс = &Класс");
        
    Запрос1.УстановитьПараметр("Класс",Класс);
    Запрос1.УстановитьПараметр("период",Дата);
    Ученики.Загрузить(Запрос1.Выполнить().Выгрузить());
КонецПроцедуры
51 Капитан О
 
25.07.13
15:56
(50) не за что
52 Капитан О
 
25.07.13
15:57
мало идиотского названия регистра, так ещё и измерение во множественном числе
53 Капитан О
 
25.07.13
15:57
(52) *реквизит ТЧ
54 cw014
 
25.07.13
16:04
(50) с тебя пиво
55 cw014
 
25.07.13
16:04
+(50) мне и кэпу
56 fenlork
 
25.07.13
16:24
названия-не мои
57 Капитан О
 
25.07.13
16:32
(56) всё равно на здоровье
58 fenlork
 
25.07.13
16:38
Спасибо большое)