Имя: Пароль:
1C
1С v8
Недопустимое значение параметра (параметр номер '1')
, ,
0 AndrewDron
 
17.05.13
22:48
Извините, если уже поднимали эту тему.
У меня есть документ1. В нем есть 2 табличные части, в которые должны заноситься соответствующие реквизиты из другого документа2. В документе1 есть поле, которое указывает сколько записей закидать с ТаблЧасть1, а все оставшееся кидать в ТаблЧасть2. Пробовал писать процедуру, но выдает ошибку : "{Документ.РейтингиАбітурієнтів.Форма.ФормаДокумента.Форма(17)}: Ошибка при вызове метода контекста (Получить)
       Объект.Зараховані.Получить(Счетчик);
по причине:
Недопустимое значение параметра (параметр номер '1')"

Вот Процедура:

&НаСервере
Процедура Запрос()
   
   Запрос = Новый Запрос;
   Запрос.Текст = "Выбрать
                   |(Фамилия + Имя + Отчество) КАК Абитуриент, ЗНО, Льготы                    
                   |ИЗ
                   |Документ.Документ2
                   |Упорядочить По ЗНО Убыв" ;
                   
   Результат = Запрос.Выполнить();
   Объект.ТаблЧасть1.Загрузить(Результат.Выгрузить());
   
   Счетчик = 0;    
   Счетчик = Объект.ТаблЧасть1.Количество();
   Пока Счетчик > Объект.План  Цикл
       Объект.ТаблЧасть1.Получить(Счетчик); // на эти 2 строчки ругается почему-то
       Объект.ТаблЧасть1.Удалить(Счетчик);
       Счетчик = Счетчик - 1;
   КонецЦикла;
           
КонецПроцедуры

Я пересмотрел много примеров, вроде так все. Но почему не работает?
1 AndrewDron
 
17.05.13
22:51
Это я просто пытался удалить ненужные строки, хотя, их нужно как-то перекинуть в ТаблЧасть2
Может, у кого идеи какие?
2 KsiLan
 
17.05.13
22:59
А если так  
   Счетчик = Объект.ТаблЧасть1.Количество()-1;
насколько я помню нумерация начинается с 0
то есть общее количество у тебя 10 а нумерация с 0 по 9
3 AndrewDron
 
17.05.13
23:05
Ну вообще да
Но суть в том, что ругается на строчки
" Объект.ТаблЧасть1.Получить(Счетчик);
 Объект.ТаблЧасть1.Удалить(Счетчик);"

Не хочет удалять лишние строки.
То есть я поставлю в реквизите документа1, например, План = 10. а документов2, например 20. с каждого будет браться значение Фамилия + Имя + Отчество) КАК Абитуриент, ЗНО, Льготы и добавляться с ТаблЧасть1. но нужно, чтобы 10 попало в ТаблЧасть1, а остальные в ТаблЧасть2
4 AndrewDron
 
17.05.13
23:11
Написал
Счетчик = Объект.ТаблЧасть1.Количество()-1;

Только теперь не так слегка удаляет
У меня 3 документа есть. План стоит - 2. То есть должно перекинуть только 2 в ТаблЧасть1, а перекидает 3
Если ставлю План = 1 , то переносит 2 записи

А как бы мне теперь не просто удалять, а перекидать лишние в ТаблЧасть2?
5 KsiLan
 
17.05.13
23:13
)))))

тк индекс он же текущее количество  -1

Пока (Счетчик+1) > Объект.План  Цикл
6 AndrewDron
 
17.05.13
23:15
Только что так и сделал. Работает.
Спасибо огромное. Очень мне помог. Я целый день с этим воюю
24 надо диплом сдать. там тема "приемная комиссия на 1С". а начал я делать только в понедельник)
7 AndrewDron
 
18.05.13
00:20
Теперь не могу вникнуть как мне удалить в ТаблЧасть2 лишние строки. Например, в ТаблЧасть1 мы удалили 3 снизу. всего 5
то есть в ТаблЧасть2 надо удалить первые 2 сверху
8 AndrewDron
 
18.05.13
00:39
Почему это неадекватно выводит?

Счетчик2 = 1;    
   Пока Счетчик2 <=      Объект.ТаблЧасть2.Количество()-Объект.План Цикл
        Объект.ТаблЧасть2.Удалить(Счетчик2);
        Счетчик2 = Счетчик2 + 1;
   КонецЦикла;
9 AndrewDron
 
18.05.13
00:52
и как может работать этот код?
Счетчик = Объект.ТаблЧасть1.Количество()-1;
   Пока (Счетчик+1) > Объект.План  Цикл
       Объект.ТаблЧасть1.Удалить(Счетчик);
       Счетчик = Счетчик - 1;
   КонецЦикла;

ведь Пока (Счетчик+1), а потом Счетчик = Счетчик - 1
он же не меняется? но строки удаляются те,что надо. КАК?
10 exwill
 
18.05.13
01:06
(9)
Пока (Счетчик+1)

не изменяет значение переменной Счетчик.
11 mistеr
 
18.05.13
01:08
(0) Кидай все в одну ТЧ. А на форме показывай два ТП с отбором.
12 exwill
 
18.05.13
01:10
(8) После каждого

Объект.ТаблЧасть2.Удалить(


Объект.ТаблЧасть2.Количество()
будет выдавать новое значение.
13 AndrewDron
 
18.05.13
01:21
Счетчик = Объект.ТаблЧасть1.Количество()-1
Счетчик+1 = Объект.ТаблЧасть1.Количество()-1+1

это я понял

"Кидай все в одну ТЧ. А на форме показывай два ТП с отбором."
как?

дело обстоит так. например, есть 5 записей. в одну ТЧ надо кинуть 3, в другую 2

я загружаю сначала все 5 в каждую ТЧ
потом с первой убираю 2 последних кодом
Счетчик = Объект.Зараховані.Количество()-1;
   Пока (Счетчик+1) > Объект.План  Цикл
       Объект.Зараховані.Удалить(Счетчик);
       Счетчик = Счетчик - 1;
   КонецЦикла;

я хотел теперь так же со второй ТЧ убрать 3 первых кодом
Счетчик2 = 1;    
   Пока Счетчик2 <=      Объект.ТаблЧасть2.Количество()-Объект.План Цикл
        Объект.ТаблЧасть2.Удалить(Счетчик2);
        Счетчик2 = Счетчик2 + 1;
   КонецЦикла;

но оно как-попало там их удаляет
14 AndrewDron
 
18.05.13
17:59
Справился