Имя: Пароль:
1C
1С v8
v8: Периодический независимый регистр сведений изменение данных в цикле
0 nikalexgorb
 
13.08.12
15:50
Надо пробежаться по записям регистра и установить измерение СостаБригад в истину
Но почему-то создаются дополнительные записи в регистре
В чем проблема. Помогите. Плиз !!!

Проба = РегистрыСведений.ОграничениеПравПоДокументамМастеров;
ВыборкаПроба = Проба.Выбрать(,,);
Пока ВыборкаПроба.Следующий() Цикл
   Период1 = ВыборкаПроба.Период;
   ЗаписьВычета = ВыборкаПроба.ПолучитьМенеджерЗаписи();
//    Период1 ='20101201050607';
// Год-4, месяц-2,День(2цифры),часы-2,минуты-2,секунды-2    
   ЗаписьВычета.Период = Период1;
   ВыборкаПроба.СостаБригад = Истина;
   ВыборкаПроба.Записать(Истина);
КонецЦикла;
1 Mort
 
13.08.12
15:54
Если не обращать внимание что способ выбран очень хреновый - запись сначала надо прочитать в менеджер, чтобы он её "затёр". А так у тебя тупо новые записи создаются.
2 DrShad
 
13.08.12
15:55
да и не ПолучитьМенеджерЗаписи, а СоздатьМенеджерЗаписи
3 nikalexgorb
 
13.08.12
15:56
Верно. Но если создать менедер, тогда будут новые записи. А мне надо изменить те которые есть
4 Popkorm
 
13.08.12
15:57
(0)какие именно дополнительные записи?!
По РегСведениям давно не делал, ЗаписьВычета = ВыборкаПроба.ПолучитьОбъект();-не работает?!
5 nikalexgorb
 
13.08.12
15:59
т.е. Дату периода оставить прежнюю , новые записи не создавать, а перезаписать одно поле (которое булево)
6 Irbis
 
13.08.12
16:00
Кури Прочитать()
7 DrShad
 
13.08.12
16:02
(4) какой объект!? иди проспись
8 nikalexgorb
 
13.08.12
16:08
ЗаписьВычета = РегистрыСведений.ОграничениеПравПоДокументамМастеров.СоздатьМенеджерЗаписи();
   ЗаписьВычета.Период = ВыборкаПроба.Период;
   ЗаписьВычета.СостаБригад = Истина;
   ЗаписьВычета.Записать(Истина);
Вот это в цикле создает еще запись, мне это не подходит. Надо прочитать старую, установить поле СостаБригад в истину и записать
9 Irbis
 
13.08.12
16:09
(8) И что ты сделал, чтобы прочитать старую запись?
10 DrShad
 
13.08.12
16:10
(8) Прочитать() где?
11 nikalexgorb
 
13.08.12
16:10
Пытался прочитать командой ПолучитьМенеджерЗаписи()
12 Irbis
 
13.08.12
16:10
(11) Странно, наверное ты пейсатель.
13 DrShad
 
13.08.12
16:11
(11) писец
14 Irbis
 
13.08.12
16:11
(12) гвозди тоже iPhonом заколачиваешь
15 nikalexgorb
 
13.08.12
16:12
Да ладно прикалываться Тоже мне крутизна. Лучше подскажите в чем ошибка
16 DrShad
 
13.08.12
16:12
(15) читать научись
17 Irbis
 
13.08.12
16:12
(15) Читай эту ветку до просветления два или три раза уже правильно подсказали
18 nikalexgorb
 
13.08.12
16:13
Всё эта мутатень в форме списка регистра
19 Irbis
 
13.08.12
16:13
20 nikalexgorb
 
13.08.12
16:13
Хорошо перепроверю
21 nikalexgorb
 
13.08.12
16:22
Не то все (Создаются записи) Мне это не подходит
22 DrShad
 
13.08.12
16:23
пнх
23 nikalexgorb
 
13.08.12
16:24
Туда же. Конец дня. Нервишки наверное шалят
24 Irbis
 
13.08.12
16:24
Ветку закрыть, автора забанить за неумение читать на языке форума и толстый троллинг.
25 DrShad
 
13.08.12
16:25
(23) читать ветку до просветления, а то у всех как положено работает, а ему видите ли не подходит и создает новые записи
26 Бледно Золотистый
 
13.08.12
16:29
РегистрСведенийВыборка.<Имя регистра сведений> (InformationRegisterSelection.<Имя регистра сведений>)
ПолучитьМенеджерЗаписи (GetRecordManager)
Синтаксис:

ПолучитьМенеджерЗаписи()
Возвращаемое значение:

Тип: РегистрСведенийМенеджерЗаписи.

Описание:

ВыбранПолучает объект для чтения, изменения, добавления и удаления записи регистра сведений, на которой в данный момент спозиционирована выборка.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Полученный объект не является выбранным (метод Выбран возвратит Ложь). Для внесения изменений в полученную запись необходимо для этой записи сначала выполнить метод Прочитать.
27 Popkorm
 
13.08.12
16:32
как то так:
ЗаписьВычета = РегистрыСведений.ОграничениеПравПоДокументамМастеров.СоздатьМенеджерЗаписи();
ЗаписьВычета.Период      = ВыборкаПроба.Период;
ЗаписьВычета.СостаБригад = Истина;
ЗаписьВычета.Прочитать();
Если ЗаписьВычета.Выбран() Тогда
ЗаписьВычета.Период=ВыборкаПроба.Период;
ЗаписьВычета.СостаБригад = Истина;
   Запись.Записать();
КонецЕсли;
28 Popkorm
 
13.08.12
16:32
+(27)ЗаписьВычета.Записать();
29 DrShad
 
13.08.12
16:33
// В результате запроса должны присутствовать все измерения регистра
МенеджерЗаписи = РегистрыСведений.Регистр1.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтрокаРезультата);
МенеджерЗаписи.Прочитать();

// Обработка менеджера записи
МенеджерЗаписи.Реквизит1 = ;

МенеджерЗаписи.Записать();
30 DrShad
 
13.08.12
16:33
(27) и без всякого Выбран()
31 nikalexgorb
 
13.08.12
16:35
Всем спасибо Перепроверю
32 hhhh
 
13.08.12
16:35
(31) в регистрах сведений не бывает корректировки записей. Там по-любому старая запись удаляется и пишется новая. Так что ты занимаешься фигней.
33 zoom_4x
 
13.08.12
16:37
Или вот так:

ПробаНаборЗаписей = РегистрыСведений.ОграничениеПравПоДокументамМастеров.СоздатьНаборЗаписей;
ПробаНаборЗаписей.Прочитать();

Для каждого ПробаЗапись из ПробаНаборЗаписей Цикл
//    Период1 ='20101201050607';

// Год-4, месяц-2,День(2цифры),часы-2,минуты-2,секунды-2    

   ПробаЗапись.Период = Период1;
   ВыборкаПроба.СостаБригад = Истина;
   
КонецЦикла;

ПробаНаборЗаписей.Записать(Истина);
34 nikalexgorb
 
13.08.12
16:37
hhh Верно. До меня только сейчас как до жирафа дошло. (Привычка по семерке думать)
35 DrShad
 
13.08.12
16:37
(32) если я не задам все измерения перед Прочитать, то создаст новую запись ровно с теми измерениями, которые я задал
36 Vakhrin
 
13.08.12
16:39
+ (33) или выгрузить в ТЗ, заполнить колонку и обратно загрузить в набор, который и записать
37 nikalexgorb
 
13.08.12
16:40
Тоже вариант. Спасибо
38 DrShad
 
13.08.12
16:42
(33) отборы где? он прочитает все записи
39 Popkorm
 
13.08.12
16:43
(33)да да........Как то забыли про это
40 Popkorm
 
13.08.12
16:43
(32)да да........Как то забыли про это
41 DrShad
 
13.08.12
16:44
(39) НаборЗаписей без отборов что считает?
42 zoom_4x
 
13.08.12
17:00
Если нужно отобрать и изменить записи за определенный период, то тогда вот так:

ПробаНаборЗаписей = РегистрыСведений.ОграничениеПравПоДокументамМастеров.СоздатьНаборЗаписей;
ПробаНаборЗаписей.Отбор.Период.Установить('20101201050607');
ПробаНаборЗаписей.Прочитать();//

Для каждого ПробаЗапись из ПробаНаборЗаписей Цикл
//    Период1 ='20101201050607';


// Год-4, месяц-2,День(2цифры),часы-2,минуты-2,секунды-2    
    ВыборкаПроба.СостаБригад = Истина;
   
КонецЦикла;

ПробаНаборЗаписей.Записать(Истина);
43 DrShad
 
13.08.12
17:01
(42) а если по определенному измерению или набору измерений
44 zoom_4x
 
13.08.12
17:11
(43) РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Отбор (Filter)
Использование:

Только чтение.
Описание:

Тип: Отбор.
Содержит объект Отбор, по которому осуществляется текущая фильтрация записей при считывании или записи набора. Список свойств объекта зависит от свойств регистра: для регистров сведений, для которых в конфигураторе установлен режим записи "Подчинение регистратору", отбор возможен только по регистратору, для периодических регистров сведений отбор возможен по периоду и значениям измерений, для непериодических - только по значению измерений.

Важно! Отбор может устанавливаться только на равенство.
45 nikalexgorb
 
13.08.12
17:18
Спасибо !!!
46 DrShad
 
13.08.12
17:19
(44) ты думаешь я СП не читал? в твоих примерах этого нет
47 zoom_4x
 
13.08.12
17:45
(46)Напишите свой.
48 DrShad
 
13.08.12
18:03
я разве не написал?
49 Serginio1
 
13.08.12
18:56
Так может вместо
   ЗаписьВычета.Период = Период1;
   ВыборкаПроба.СостаБригад = Истина;
   ВыборкаПроба.Записать(Истина);

Сделать

ЗаписьВычета.Период = Период1;
   ЗаписьВычета.СостаБригад = Истина;
   ЗаписьВычета.Записать(Истина);