|
Изменить записи непериодического регистра сведний | ☑ | ||
---|---|---|---|---|
0
breezee
02.06.16
✎
09:27
|
Нужно изменить записи РС. Нашел код (код ниже). При попытке выборки - вылетает ошибка "недопустимое значение для параметра1" Читаю СП - написано что выборка может быть получена с отбором только по ведущим или индексированным измерениям. У меня измерение Аналитика1 - не индексировано. Можно как-то сделать выборку не объектной и по ней получать менеджер записи?
код ЛичныеДанные.Вставить("Аналитика1", ном); ЛичныеДанные.Вставить("Версия", ВыборкаДетальныеЗаписи.Ссылка1); Выборка = РегистрыСведений.ЗначенияПоказателейОтчетов5.Выбрать( ЛичныеДанные); Пока Выборка.Следующий() Цикл // изменение существующей МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи(); МенеджерЗаписи.Прочитать(); МенеджерЗаписи.Аналитика1 = номЧтоНужна; //МенеджерЗаписи.Записать(); |
|||
1
Nuobu
02.06.16
✎
09:33
|
(0) А это все измерения, которые есть в регистре?
|
|||
2
hhhh
02.06.16
✎
09:55
|
(0) делайте как все, через запрос. Зачем выпендриваться?
|
|||
3
breezee
02.06.16
✎
10:39
|
Делаю запросом (код ниже) ругается на "Запись не верна! Значение поля не соответствует установленному отбору:" по идеи верно - у меня же старый отбор и ноове значение, по которому отбор. Но как это обойти? Мне не нужно создать новый набор, нужно изменить текущий
код Набор = РегистрыСведений.ЗначенияПоказателейОтчетов5.СоздатьНаборЗаписей(); Набор.Отбор.версия.Установить(ВыборкаДетальныеЗаписи.Ссылка1); Набор.Отбор.Аналитика1.Установить(ном); // если надо Набор.Прочитать(); Если Набор.Количество() <> 0 Тогда НовыйКурс = Набор[0]; НовыйКурс.Аналитика1 = номЧтоНужна; Попытка Набор.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; |
|||
4
breezee
02.06.16
✎
10:45
|
ап
|
|||
5
Nuobu
02.06.16
✎
10:54
|
Набор.Отбор.Аналитика1.Установить(ном);// если надо
НовыйКурс.Аналитика1 = номЧтоНужна; Не удивительно, что ругается. Нужно так: Набор = РегистрыСведений.ЗначенияПоказателейОтчетов5.СоздатьНаборЗаписей(); Набор.Отбор.версия.Установить(ВыборкаДетальныеЗаписи.Ссылка1); //Набор.Отбор.Аналитика1.Установить(ном);// НЕ надо Набор.Прочитать(); Если Набор.Количество() <> 0 Тогда НовыйКурс = Набор[0]; Если НовыйКурс.Аналитика1 = Ном Тогда НовыйКурс.Аналитика1 = номЧтоНужна; КонецЕсли; Попытка Набор.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; |
|||
6
breezee
02.06.16
✎
10:59
|
(5) Спасибо! Сейчас сделал то же самое, только вообще без отборов, через пол часа может отработает, тогда проверю
|
|||
7
hhhh
02.06.16
✎
11:02
|
(3) как-то так
Набор = РегистрыСведений.ЗначенияПоказателейОтчетов5.СоздатьНаборЗаписей(); Набор.Отбор.версия.Установить(ВыборкаДетальныеЗаписи.Ссылка1); Набор.Отбор.Аналитика1.Установить(ном);// если надо Набор.Прочитать(); Если Набор.Количество() <> 0 Тогда ТЗ = Набор.Выгрузить(); Набор.Очистить(); Попытка Набор.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Набор.Отбор.версия.Установить(ВыборкаДетальныеЗаписи.Ссылка1); Набор.Отбор.Аналитика1.Установить(номЧтоНужна);// если надо ТЗ.ЗаполнитьЗначения(номЧтоНужна, "Аналитика1"); Набор.Загрузить(ТЗ); Попытка Набор.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; |
|||
8
breezee
02.06.16
✎
11:12
|
(7) Тоже большое спасибо! Хотя вариант (5) мне больше понравился лаконичностью, хотя с 1 отбором будет намного больше выбирать чем с двумя, так что ваш вариант оптимальней
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |