Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/125: Рейтинг темы: голосов - 125, средняя оценка - 4.60
sbot
1

метод УстановитьАтрибут()

23.11.2008, 14:43. Показов 23454. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
При попытке вызова след метода:


Код
ТекРег.УстановитьАтрибут("Номенклатура", НовоеЗначение);
вылетает ошибка:


ТекРег.УстановитьАтрибут("Номенклатура", НовоеЗначение);
{C:\REPLACE_REFS.ERT(173)}: Действие недоступно!
Данная операция устанавливает новый атрибут НовоеЗначение для измерения Номенклатура регистра ТекРег. В чем может быть проблема никак не могу понять, а 1С не в состоянии дать более исчерпывающую информацию кроме как "Действие недоступно!"?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2008, 14:43
Ответы с готовыми решениями:

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Написать три алгоритма решения СЛАУ: Метод прогонки, метод квадратных корней, метод вращений
Начал писать курсовую. Нужно написать три алгоритма решения СЛАУ: прогонки, квадратных корней,...

Метод медиан из трех элементов VS улучшенный быстрый метод сортировки(метод Бентли-Макилроя)
Здравствуйте! Дали весьма интересное задание. Сравнить два вышеуказанных метода сортировки для...

Мой код - метод бисекции, метод секущих (метод хорд)
Всем привет!!! Изучаем в институте С++. Сделал код, и там, и там одна и та же проблема - при любых...

11
0 / 0 / 1
Регистрация: 22.06.2013
Сообщений: 9
23.11.2008, 18:03 2
А БЫЛО ЛИ СДЕЛАНО ПРЕДВАРИТЕЛЬНО
ТекРег= CreateObject("Register.Остатки"); // или какой-то там регистр ?
Если да, работать будет 100% !
0
sbot
24.11.2008, 10:05 3
Цитата Сообщение от vbs
А БЫЛО ЛИ СДЕЛАНО ПРЕДВАРИТЕЛЬНО
ТекРег= CreateObject("Register.Остатки"); // или какой-то там регистр ?
Если да, работать будет 100% !
да, конечно было:


Код
        ТекРег = СоздатьОбъект("Регистр.ТестРег");
ТекРег.ВыбратьДвиженияДокумента(Док);
Пока ТекРег.ПолучитьДвижение()=1 Цикл
Если ТекРег.ПолучитьАтрибут("Номенклатура") = СтароеЗначение Тогда
ТекРег.УстановитьАтрибут("Номенклатура", НовоеЗначение); // ошибка: Действие не доступно!
КонецЕсли;
конецЦикла;
Странно для меня то, что метод ПолучитьАтрибут() работает. А вот УстановитьАтрибут() совершенно не хочет, выдавая ошибку "Действие не доступно!"
0 / 0 / 0
Регистрация: 07.07.2008
Сообщений: 1,401
24.11.2008, 11:35 4
Интересно - мож быть дело в том что запускается не из модуля документа? а то действия по изменению регистров возможны вроде только из него.
0
sbot
24.11.2008, 13:16 5
Цитата Сообщение от puh14
Интересно - мож быть дело в том что запускается не из модуля документа? а то действия по изменению регистров возможны вроде только из него.
метод регистра УстановитьАтрибут() не обязательно использовать в модуле документа.
А вообще я пробовал и в модуле документа и обработкой - результат один - вылетает с ошибкой.
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
24.11.2008, 13:57 6
Ну что я могу сказать...
тут вариантов совсем немного:
1. Либо наименование атрибута задано неверно.
2. Либо значение пытаетесь не того типа запихать.
3. Либо все творите НЕ в модуле проведения документа.
Всякие там СоздатьОбъект тут не при чем.
Движения по регистру могут быть произведены исключительно в модуле документа. Ну или прямым запросами, но крайне сложно.
Теоретически, в вашем случае, если рассматривать контекст модуля проведения, должно быть так:

Код
ТекРег = СоздатьОбъект("Регистр.ТестРег");
ТекРег.ВыбратьДвиженияДокумента(Док);
Пока ТекРег.ПолучитьДвижение()=1 Цикл
Если ТекРег.ПолучитьАтрибут("Номенклатура") = СтароеЗначение Тогда
Регистр.ТестРег.УстановитьАтрибут("Номенклатура", НовоеЗначение);
Иначе
//тут какие-то действия
КонецЕсли;
Регистр.ТестРег.ДвижениеПриход...
конецЦикла;
0
sbot
24.11.2008, 14:15 7
Цитата Сообщение от vitfil
1. Либо наименование атрибута задано неверно.
2. Либо значение пытаетесь не того типа запихать.
3. Либо все творите НЕ в модуле проведения документа.
Эти варианты я в первую очередь проверил:
1) исключено, так как в ином случае не выполнялось бы условие "Если ТекРег.ПолучитьАтрибут("Номенклатура") = СтароеЗначение Тогда"
2) тоже исключено, так как я пытался даже так написать "Регистр.ТестРег.УстановитьАтрибут("Номенклатура", СтароеЗначение);" - тот же результат.
3) именно в модуле проведения, т е код выглядит таким образом:

Код
Процедура ОбработкаПроведения()
ТекРег = СоздатьОбъект("Регистр.ТестРег");
ТекРег.ВыбратьДвиженияДокумента(Док);
Пока ТекРег.ПолучитьДвижение()=1 Цикл
Если ТекРег.ПолучитьАтрибут("Номенклатура") = СтароеЗначение Тогда
ТекРег.УстановитьАтрибут("Номенклатура", НовоеЗначение); // ошибка: Действие не доступно!
КонецЕсли;
конецЦикла;
конецПроцедуры
галочка "оперативный учет" в документе выставлена.
sbot
24.11.2008, 15:22 8
В общем проблема решилась заменой

Код
ТекРег.УстановитьАтрибут("Номенклатура", НовоеЗначение);
на

Код
Регистр.ТестРег.УстановитьАтрибут("Номенклатура", НовоеЗначение);
Не пойму какой смысл тогда было предоставлять пользователю доступ к методу через объект(в данном случае ТекРег) если он все равно нигде не работает.
2 / 2 / 0
Регистрация: 06.11.2012
Сообщений: 9
25.11.2008, 13:21 9
видимо просто не работает через СоздатьОбъект()
0
0 / 0 / 0
Регистрация: 28.03.2004
Сообщений: 1,913
25.11.2008, 19:13 10
has
Ну так а я в своем коде разве что-то иное написал?
cbat
Решилось у вас именно так как я и написал! Внимательней надо читать то, что вам пишут.
Я еще раз повторюсь: движения в регистр (установку значений реквизитов и т.д.) делает документ. Для регистров, созданных через СоздатьОбъект допускается ТОЛЬКО чтение значений.
0
2 / 2 / 0
Регистрация: 06.11.2012
Сообщений: 9
26.11.2008, 07:10 11
vitfil Неправильно прочитал просто ;)
0
sbot
26.11.2008, 08:11 12
vitfil Действительно, не заметил
26.11.2008, 08:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2008, 08:11
Помогаю со студенческими работами здесь

Метод хорд, метод касательных, метод половинного деления
Ребят помогите пожалуйста. Задали тему курсовой "Решение нелинейных уравнений (метод хорд, метод...

Аналитический метод, метод половинного деления и метод итераций
Всем привет! Задача такая 1. Определить аналитическим путем точное решение уравнения a*x+b=0 на...

Метод прямоугольников, метод Симпсона, метод трапеций
Есть варианты?

Метод итерации и метод Ньютона (метод касательных)
Помогите решить методом итерации и методом Ньютона выражение привиденное ниже: e(в степени Х) -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru