Имя: Пароль:
1C
1С v8
как изменить измерение в записи регистра сведений
0 vde69
 
модератор
11.10.13
16:21
суть проблеммы - выполняю замену значений, но если заменяемое значение в измерении, то вместо замены выполняется запись второй. Чего-то не пойму где туплю.

вот код

                ИначеЕсли Метаданные.РегистрыСведений.Содержит(СтрокаТаблицы.Метаданные) Тогда
                    Поля = Новый Массив;
                    
                    Для Каждого Измерение Из СтрокаТаблицы.Метаданные.Измерения Цикл
                        Поля.Добавить(Измерение.Имя);
                    КонецЦикла;
                    
                    Для Каждого Ресурс Из СтрокаТаблицы.Метаданные.Ресурсы Цикл
                        Поля.Добавить(Ресурс.Имя);
                    КонецЦикла;
                    
                    Для Каждого Реквизит Из СтрокаТаблицы.Метаданные.Реквизиты Цикл
                        Поля.Добавить(Реквизит.Имя);
                    КонецЦикла;
                    
                    МенеджерЗаписи = РегистрыСведений[СтрокаТаблицы.Метаданные.Имя].СоздатьМенеджерЗаписи();    
                    ЗаполнитьЗначенияСвойств(МенеджерЗаписи, СтрокаТаблицы.Данные);
                    МенеджерЗаписи.Прочитать();
                    Для Каждого Поле Из Поля Цикл
                        Если МенеджерЗаписи[Поле] = ТекущееЗначение Тогда
                            МенеджерЗаписи[Поле] = НовоеЗначение;
                        КонецЕсли;
                    КонецЦикла;
                        
                    МенеджерЗаписи.Записать();
                    
                КонецЕсли;
1 Naumov
 
11.10.13
16:23
Прочитай набор, измени и запиши с замещением.
2 Defender aka LINN
 
11.10.13
16:48
(0) Запись - это комбинация измерений
3 kiruha
 
11.10.13
17:17
У менеджера отсутствует свойство Отбор

PS> Случайно никто не знает  - как проиндексировать измерение регистра сведений (например идет вторым), если оно "ведущее" (индексировать тогда недоступно)
4 MrStomak
 
11.10.13
17:20
(3) Оно и так индексируется.
5 shuhard
 
11.10.13
17:21
(1) +1
работать через набор записей и отбор
6 Enders
 
11.10.13
17:27
(5) если работать через набор, то оно не даст заменить измерение, по которому был произведен отбор ;)
(1) Это возникает, скорее всего из-за того, что когда вы меняете измерение - это уже совершенно новая запись.

Как вариант при изменении:
1. Читаем менеджер записи
2. Очищаем его
3. Записываем
4. Заполняем новыми значениями
5. Записываем
7 shuhard
 
11.10.13
17:36
(6)[если работать через набор, то оно не даст заменить измерение, по которому был произведен отбор ;) ]
да лан
это ж два разных набора с разными отборами
один при записи затрётся
другой запишется
8 kiruha
 
11.10.13
18:11
(4)
Оно индексируются по измерениям
Измерение1 + [Измерение2 +...]
http://1cexpo.ru/informacziya/28-indeksy-tablicz-bazy-dannyx-1s-predpriyatie-82.html


Мне известно только Измерение2 , Измерение1  неизвестно
А в регистре несколько десятко тысяч записей.
Очень долго запрос исполняется - хотел проиндексировать - а тут засада - поле недоступно
9 Enders
 
11.10.13
18:20
(7) Пробовал?
А то у меня как-то не получалось, кричало что запись не соответствует отбору)
10 kiruha
 
11.10.13
18:26
(9)
А менялись ли измерения со свойствами Основной отбор или без ?
11 Enders
 
11.10.13
18:31
(10) Точно было со свойством  Осн Отбор.
Про без не помню, может тоже было, но не уверен, надо проверить)
12 Defender aka LINN
 
11.10.13
21:57
(10) Основной отбор - несколько более иначе другая вещь, есличо.
(9) Следи за руками: создаем набор,удаляем. Создаем набор, заполняем, записываем.
13 Enders
 
14.10.13
10:27
(12) ну в таком варианте согласен :)
Только вот в данном случае, имхо, лучше через менеджер.