Имя: Пароль:
1C
 
V8: Добавление записей в регистр сведений программно:
Ø
0 gilan
 
07.04.05
11:41
Надо добавить несколько записей
не через свойство документа "Движения", а через набор записей
Одну запись я добавляю так:
 
 
  Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
  Набор.Отбор.МоёИзмерение1.Установить(КакоетоЗначение1);
  Набор.Отбор.МоёИзмерение2.Установить(КакоетоЗначение2);
  
  НовЗапись = Набор.Добавить();
  НовЗапись.МоёИзмерение1= КакоетоЗначение1;
  НовЗапись.МоёИзмерение2= КакоетоЗначение2;
  НовЗапись.МойРесурс = КакоетоЧисло;
  Набор.Записать();
 
Что-то как-то сложновато. Но работает. Можно покороче написать? Как?
А если несколько записей добавлять?
Что, в цикле выполнять весь этот код?
Как грамотно написать?
1 gilan
 
07.04.05
11:47
Спецы, помогите!
2 gilan
 
07.04.05
11:54
up
3 gilan
 
07.04.05
11:56
up
4 gilan
 
07.04.05
12:02
up
5 gilan
 
07.04.05
12:12
Регистр сведений непериодический.
Записи вносятся не регистратором, а вручную.
6 gilan
 
07.04.05
12:22
Это же лучший форум! Восьмерочники! Помогите!
7 gilan
 
07.04.05
12:31
Поднимают ветки про проекты на V8, а на такой простой вопрос никто ответить не может?
8 gilan
 
07.04.05
12:38
up
9 gilan
 
07.04.05
12:45
;-( да-а...
10 Atma
 
07.04.05
13:05
ИМХО, надо добавить:
Набор.Отбор.МоёИзмерение1.Использование = Истина;
Набор.Отбор.МоёИзмерение2.Использование = Истина;
11 gilan
 
07.04.05
13:08
Зачем? Мой код работает. Как короче написать?
12 Фауст
 
07.04.05
13:23
Так можно:
 
Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
  
  Набор.Прочитать();
  
  НовЗапись = Набор.Добавить();
  НовЗапись.МоёИзмерение1= КакоетоЗначение1;
  НовЗапись.МоёИзмерение2= КакоетоЗначение2;
  НовЗапись.МойРесурс = КакоетоЧисло;
  Набор.Записать();
13 gilan
 
07.04.05
14:32
(12) Спасибо, работает.
 
Все равно я не поинмаю при чем здесь отбор и на кой он нужен. Если в отборе указать значения измерений - получим всего одну запись в наборе. А какой же это набор если там одна запись всегда?
  
  
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Прочитать (Read)
Синтаксис:
Прочитать()
Описание:
Считывает записи из базы данных по установленному отбору.
 
 
Дык я никакого отбора не устанавливал! А все равно работает.
Ничего не понимаю...
14 User256
 
07.04.05
14:53
На сколько я понимаю при записи в регистр сведений набор записей перезаписывается полностью.
Т.е. если не задать отбор и не читать набор записей то старые записи регистра перезапишутся
15 gilan
 
07.04.05
15:16
(14) Да, я это заметил, что он удаляет все записи регистра. Просто непонятно тогда чем отличается метод Прочитать() и установка отбора в данном случае. В описании встроенного языка очень краткие комментарии, ничего не понятно.
Отбор необходимо устанавливать по всем измерениям регистра?
Тогда набор записей будет содержать только одну запись?
16 User256
 
07.04.05
15:35
(15)Если отбор по всем измерениям то только одну.
Все зависит от задачи.
Иногда нужно очищать регист иногда нет, поэтому иногда нужно устанавливать отбор по всем измерениям, иногда по некоторым, иногда отбор не нужен.
17 User256
 
07.04.05
15:38
З.Ы. если старые записи в наборе не нужны то тогда набор можно не читать.
18 gilan
 
07.04.05
15:42
В принципе все понятно.
 
Ни за что бы не догадался что метод Прочитать() позволяет добавлять записи в регистр не удаляя существующие. В русском языке слово "прочитать" означает немножко другое.
 
19 Фауст
 
07.04.05
16:15
После Набор = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей()
Создается пустой набор.
 
После Набор.Прочитать() Из базы данных считывается набор записей по установленному отбру, если отбор не установлен то считывается весь регистр.
После Набпр.Записать(), перезаписываются все записи регистра по установленному отбору. если отбор не установленн, то перезаписывается весь регистр.
20 gilan
 
07.04.05
16:31
(19) Ну вот! Все доступно объяснил. Жаль, что в документации не достаточно примеров.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.