Имя: Пароль:
1C
1С v8
Перенос определенных строк в табличную часть из другого документа
,
0 AndrewDron
 
19.05.13
14:35
Есть много документов Документ1, там есть реквизиты Специальность, ФИО и Оценка. В Документ2 есть реквизит Специальность и табличная часть, в которую нужно перенести только те ФИО и Оценка, у которых совпадает Специальность. То есть мы выбираем Специальность, жмем кнопку и заполняются только те студенты, у которых Специальность та, которую мы выбрали
Может подскажет кто как это можно реализовать
1 zippygrill
 
19.05.13
14:40
Запросом?
2 AndrewDron
 
19.05.13
14:54
может и запросом, но я смутно представляю как
я делал так, но заносило просто все Специальности.
Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |(Фамилия + Имя + Отчество) КАК Абитуриент, Оценка, Специальность                
                   |ИЗ
                   |Документ.АнкетаАбитуриента                
                   |Упорядочить По ЗНО Убыв" ;
                   
   Результат = Запрос.Выполнить();
   
   Объект.Зараховані.Загрузить(Результат.Выгрузить());
   Объект.Незарчисленные.Загрузить(Результат.Выгрузить());
3 AndrewDron
 
19.05.13
14:55
Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |(Фамилия + Имя + Отчество) КАК Абитуриент, Оценка, Специальность                
                   |ИЗ
                   |Документ.АнкетаАбитуриента                
                   |Упорядочить По ЗНО Убыв" ;
                   
   Результат = Запрос.Выполнить();
   
   Объект.Зачисленные.Загрузить(Результат.Выгрузить()); // это названия табличных частей
   Объект.Незачисленные.Загрузить(Результат.Выгрузить());
4 AndrewDron
 
19.05.13
14:56
А мне надо,чтобы я выбрал в документе реквизит Специальность и с мою табличную часть заносило только тех, у кого такая же специальность, а у меня заносит всех
5 Любопытная
 
19.05.13
15:26
Добавь параметр в запрос и передавай в него специальность
6 AndrewDron
 
19.05.13
15:32
а не подскажешь как? если не трудно
7 AndrewDron
 
19.05.13
15:47
Как мне проверить совпадает ли Специальность?
8 artist
 
19.05.13
15:54
...
|ГДЕ
|Документ.АнкетаАбитуриента = &Специальность
...

Запрос.УСтановитьПараметр("Специальность",ТекДок.Специальность);


Что-то в этом духе...
9 Красный рассвет
 
19.05.13
15:54
Наверно условием в запросе?
10 artist
 
19.05.13
16:03
Естественно
Документ.АнкетаАбитуриента.Специальность = &Специальность

...очепятался
11 AndrewDron
 
19.05.13
16:07
сейчас проверю
мне же вместо ТекДок.Специальность
надо писать мою табличную часть?
12 artist
 
19.05.13
16:08
(11)А вот это я ХЗ - где у тебя чего хранится...
13 AndrewDron
 
19.05.13
16:12
{(6, 44)}: Не задано значение параметра "Специальность"
Документ.АнкетаАбитуриента.Специальность = <<?>>&Специальность

Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |ФИО КАК Абитуриент, Оценка, Специальность КАК Специальность
                   |ИЗ
                   |Документ.АнкетаАбитуриента
                   |ГДЕ
                   |Документ.АнкетаАбитуриента.Специальность = &Специальность
                   |Упорядочить По Оценка Убыв" ;
                   
   Результат = Запрос.Выполнить();
   Запрос.УcтановитьПараметр("Специальность ",Объект.Зачисленные.Специальность );
14 AndrewDron
 
19.05.13
16:13
{(6, 44)}: Не задано значение параметра "Специальность"
Документ.АнкетаАбитуриента.Специальность = <<?>>&Специальность

такую ошибку выдает
15 artist
 
19.05.13
16:17
(14)мож ты книжки какие-нибудь почитаешь для начала?
16 AndrewDron
 
19.05.13
16:19
да мне диплом делать, времени нет на книжки
сдавать в среду (
помоги, пожалуйста. это единственное,что мне осталось сделать.
17 artist
 
19.05.13
16:20
пробел лишний...
где не скажу :)
18 zippygrill
 
19.05.13
17:28
Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |ФИО КАК Абитуриент, Оценка, Специальность КАК Специальность
                   |ИЗ
                   |Документ.АнкетаАбитуриента
                   |ГДЕ
                   |Документ.АнкетаАбитуриента.Специальность = &Специальность
                   |Упорядочить По Оценка Убыв" ;
                   
Результат = Запрос.Выполнить();
Запрос.УcтановитьПараметр("Специальность", Объект.Зачисленные.Специальность);
19 Ковычки
 
19.05.13
17:28
ввести на основаниии ?
20 AndrewDron
 
19.05.13
17:50
лишний пробел?

ну у меня там кнопка есть и команда на ней,нажимаешь и оно должно заполнять
21 AndrewDron
 
19.05.13
17:53
Пишет, что поле Специальность не обнаружено.
У меня есть табличная часть Зачисленные и в ней поле Специальность.

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

То есть оно не понимает что такое Объект.Зачисленные.Специальность

Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |ФИО КАК Абитуриент, Оценка, Специальность КАК Специальность
                   |ИЗ
                   |Документ.АнкетаАбитуриента
                   |ГДЕ
                   |Документ.АнкетаАбитуриента.Специальность = &Специальность
                   |Упорядочить По Оценка Убыв" ;
                   
Результат = Запрос.Выполнить();
Запрос.УcтановитьПараметр("Специальность", Объект.Зачисленные.Специальность);
22 Любопытная
 
19.05.13
18:01
Объект.зачисленные это табличная часть? Ты пытаешься запихать  параметр всю колонку, вместо одного значения.
Он не понимает, потому что ты явно объясняешь неправильно
23 AndrewDron
 
19.05.13
18:04
Может быть неправильно, простите

да, то табл часть
а как нужно? я пытался получить значение так:
ТекДок = Документы.РейтингиАбитуриентов.Выбрать();
ТЧ = ТекДок.Зачисленные.Получить();
   Запрос.УcтановитьПараметр("Специальность",Объект.Зачисленные.Специальность);                
   Результат = Запрос.Выполнить();
но оно ругается на метод Получить()
24 Любопытная
 
19.05.13
18:06
Ты что хочешь сделать? Вроде говорил - выбрать одну специальность и по ней отобрать. Значит выбери одну специальность. Сделай отдельное поле на форме, в котором указывается специальность и по значение из этого поля указывай в качестве параметра в запросе
25 AndrewDron
 
19.05.13
18:10
Попробую объяснить правильно
Есть документы АнкетаАбитуриента. Есть документ РейтингиАбитуриентов с табл частью Зачисленные.
В этом документ есть реквизит Специальность. Я выбираю ее и когда я нажимаю на кнопку, то эта табл часть должна заполниться данными из документов АнкетаАбитуриента : ФИО,Оценка, Специальность. Но отбираться должны только те анкеты, в которых Специальность такая же,как я выбрал в документе РейтингиАбитуриентов
Сделал так

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

Объект.Специальность - это реквизит документа РейтингиАбитуриентов, где я выбираю специальность, по которой отобрать абитуриентов
26 AndrewDron
 
19.05.13
18:11
что я делаю не так?
Вы бы мне очень помогли, потому что у меня пару дней,чтобы закончить диплом
27 Любопытная
 
19.05.13
18:15
Сделал так - что не работает?
28 Любопытная
 
19.05.13
18:15
Параметр установи ДО выполнения запроса
29 AndrewDron
 
19.05.13
18:17
я пробовал. пишет Метод объекта не обнаружен(УстановитьПараметр)
30 Любопытная
 
19.05.13
18:19
Не может быть
31 Любопытная
 
19.05.13
18:24
А! Я поняла) УстановитьПараметр выполняется ДО Выполнить() но ПОСЛЕ объявления запроса :)
32 AndrewDron
 
19.05.13
18:25
серьезно. метод не обнаружен
я нашел такой пример

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

       Запрос.УстановитьПараметр("КассоваяСмена", КассоваяСмена);
       Результат = Запрос.Выполнить().Выгрузить();
       Объект.Сотрудники.Загрузить(Результат);
КонецФункции  

тут разница только в том, что
КассоваяСмена = Объект.КассоваяСмена.Ссылка;

я у себя добавил .Ссылка, но все равно не работает
33 AndrewDron
 
19.05.13
18:27
в смысле ПОСЛЕ выполнения запроса?

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

у меня так
34 AndrewDron
 
19.05.13
18:28
все равно пишет не обнаружен метод объекта УстановитьПараметр
:(
35 Любопытная
 
19.05.13
18:32
Я не верю. Показывай процедуру целиком штоли. Или СП почитай... ну или хотя бы сделай так: в конфигураторе после текста запроса на след строке пишешь Запрос. Потом нажимаешь ctrl+пробел и из списка предложенного выбираешь метод УстановитьПараметр
36 AndrewDron
 
19.05.13
18:32
у меня процедура, а в том примере, что я скинул - функция
я попробовал поставить функцию - проблема не решилась
37 AndrewDron
 
19.05.13
18:33
&НаСервере
Функция Запрос()
   Спеціальність = Объект.Спеціальність.Ссылка;
   Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |(Прізвище + Імя + ПоБатькові) КАК Абітурієнт, ЗНО, Пільги КАК Пільга, Спеціальність КАК Спеціальність                
                   |ИЗ
                   |Документ.АнкетаАбітурієнта
                   |ГДЕ
                   |Документ.АнкетаАбітурієнта.Спеціальність=&Спеціальність
                   |Упорядочить По ЗНО Убыв" ;
   Запрос.УcтановитьПараметр("Спеціальність",Спеціальність);                
   Результат = Запрос.Выполнить();
   
   Объект.Зараховані.Загрузить(Результат.Выгрузить());
   Объект.Незараховані.Загрузить(Результат.Выгрузить());
       
   Счетчик = Объект.Зараховані.Количество()-1;
   Пока (Счетчик+1) > Объект.План  Цикл
       Объект.Зараховані.Удалить(Счетчик);
       Счетчик = Счетчик - 1;
   КонецЦикла;
       
   Счетчик2 = Объект.План -1;
   Пока Счетчик2 >= 0  Цикл
       Объект.Незараховані.Удалить(Счетчик2);
       Счетчик2 = Счетчик2 - 1;
   КонецЦикла;
   
   
   
КонецФункции

тут украинские названия, если что..не обращай внимания
38 Max Street
 
19.05.13
18:35
пробел между кавычками и точкой с запятой убери
39 Любопытная
 
19.05.13
18:35
Да это неважно. Блин, ну какой к чертям тебе диплом, если ты элементарный код написать не можешь. И не хочешь посмотреть и почитать как правильно и грамотно все сделать? Научные работы пишутся по тем областям, в которых разбираешься. Кем ты работать будешь после этого диплома?
40 AndrewDron
 
19.05.13
18:37
так все вышло. у нас универ дурацкий.

я искал в списке ПараметрУстановить, но его там нет
ну нажал ктрл + пробел после запроса
41 AndrewDron
 
19.05.13
18:40
убрал пробел-не помогает
в списке реально нет УстановитьПараметр
вот в чем проблема
но почему его нет?
42 Любопытная
 
19.05.13
18:40
(37) функцию переименуй, чудо
43 AndrewDron
 
19.05.13
18:41
а что не так с именем?
44 Любопытная
 
19.05.13
18:42
Нехаляльное. Назови ее ПолучитьТЗпоТЧ например)
45 AndrewDron
 
19.05.13
18:43
назвал - все равно метод не обнаружен
:(
46 Ковычки
 
19.05.13
18:44
ТЧ может быть много
47 AndrewDron
 
19.05.13
18:45
у меня 2 табличные части : Зачисленные абитуриенты и Незачисленные

там в списке есть только УстановитьПараметрыФункциональныхОпций...

почему-то нет там метода УстановитьПараметр
48 Любопытная
 
19.05.13
18:45
Все, я выдохлась.
Отладчик запускай и смотри - переменная Запрос у тебя какого типа.
49 Любопытная
 
19.05.13
18:46
Может он у тебя вообще на другое место ругается?
50 AndrewDron
 
19.05.13
18:50
работает
я наново написал строчку с УстановитьПараметр, а то я ее копировал с интернета
обирает правильно

спасибо тебе огромное. извини, что потратил твое время

а ты работаешь 1с-разработчиком?
51 Любопытная
 
19.05.13
19:07
А это важно - кем я работаю? По личным вопросам в личке есть аська, а я в аське бываю в рабочее время.
Всегда пожалуйста.
52 AndrewDron
 
19.05.13
19:09
Мне просто любопытно было
Спасибо
Независимо от того, куда вы едете — это в гору и против ветра!