![]() |
![]() |
![]() |
|
8.2 Метод ПолучитьОбъект() | ☑ | ||
---|---|---|---|---|
0
Stado_adama
21.01.11
✎
13:38
|
есть ТЗ с двумя колонками Код (СправочникСсылка.ЦветомодельКоллекционныеАтрибуты) и Контракт (СправочникСсылка.ПоставщикКонтракт) у справочника ЦветомодельКоллекционныеАтрибуты есть реквизит ПоставщикКонтракт (СправочникСсылка.ПоставщикКонтракт) надо присвоить этому реквизиту значение которые лежит в ТЗ.Контракт
написал код: &НаКлиенте Процедура ПрименитьИзменения(Команда) Для Каждого Строка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(Строка.Контракт) Тогда Продолжить; КонецЕсли; Объект = Строка.Код.ПолучитьОбъект(); Объект.ПоставщикКонтракт = Строка.Контракт; Попытка Объект.Записать(); Исключение Сообщить("Не удалось записать цветомодель " + Строка.Код.Владелец.Код); КонецПопытки; КонецЦикла; КонецПроцедуры ругается: {Обработка.ПроставляемКонтракты.Форма.Форма.Форма(119)}: Метод объекта не обнаружен (ПолучитьОбъект) Объект = Строка.Код.ПолучитьОбъект(); в чем трабла? |
|||
1
ДенисЧ
21.01.11
✎
13:40
|
Код - это не объект, а строка или число...
|
|||
2
vicof
21.01.11
✎
13:40
|
на клиенте не может быть объектов
|
|||
3
Stado_adama
21.01.11
✎
13:40
|
+ (0) пробовал писать процедуру на сервере, тоже ругается
|
|||
4
almar
21.01.11
✎
13:41
|
(0) На клиенте нет такого метода
|
|||
5
Stado_adama
21.01.11
✎
13:41
|
(1) зарезервированное слово, которое низя использовать?
|
|||
6
vicof
21.01.11
✎
13:42
|
(5) нет, просто не является ссылкой на объект
|
|||
7
almar
21.01.11
✎
13:42
|
(3) На сервере добавь
Если НЕ ЗначениеЗаполнено(Строка.Код) Тогда Продолжить; КонецЕсли; |
|||
8
Ненавижу 1С
гуру
21.01.11
✎
13:43
|
какой тип у реквизита Код?
|
|||
9
Defender aka LINN
21.01.11
✎
13:43
|
(3) Та я бы тебя на месте 1С вообще матом послал, если бы ты меня пытался получить объекту строки или числа.
|
|||
10
Stado_adama
21.01.11
✎
13:43
|
(6) читаем (0)
есть ТЗ с двумя колонками Код (СправочникСсылка.ЦветомодельКоллекционныеАтрибуты) |
|||
11
Stado_adama
21.01.11
✎
13:45
|
Реквизит ТЗ Код переименовал в ЦКА на всякий случай и исправил код на следующий:
&НаСервере Процедура ПрименитьИзмененияНаСервере() Для Каждого Строка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(Строка.Контракт) Тогда Продолжить; КонецЕсли; Объект = Строка.ЦКА.ПолучитьОбъект(); Объект.ПоставщикКонтракт = Строка.Контракт; Попытка Объект.Записать(); Исключение Сообщить("Не удалось записать цветомодель " + Строка.ЦКА.Владелец.Код); КонецПопытки; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПрименитьИзменения(Команда) Для Каждого Строка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(Строка.Контракт) Тогда Продолжить; КонецЕсли; ПрименитьИзмененияНаСервере(); КонецЦикла; КонецПроцедуры ругается: {Обработка.ПроставляемКонтракты.Форма.Форма.Форма(119)}: Ошибка при установке значения атрибута контекста (Объект) Объект = Строка.ЦКА.ПолучитьОбъект(); по причине: Нельзя изменять поле, содержащее объект данных формы |
|||
12
almar
21.01.11
✎
13:45
|
(9) Колонка Код типизирована?
|
|||
13
almar
21.01.11
✎
13:46
|
(11) Переименуй переменную Объект
|
|||
14
Ненавижу 1С
гуру
21.01.11
✎
13:47
|
(9) может не заполнен таки?
|
|||
15
Stado_adama
21.01.11
✎
13:47
|
(8) СправочникСсылка.ЦветомодельКоллекционныеАтрибуты
(9) читаем (0) и (10) |
|||
16
Stado_adama
21.01.11
✎
13:50
|
(14)точка останова на Объект = Строка.ЦКА.ПолучитьОбъект(); говорит что Выражение Строка.ЦКА имеет значение AW12 Типа СправочникСсылка.ЦветомодельКоллекционныеАтрибуты
|
|||
17
программистище
21.01.11
✎
13:51
|
а попробуй
&НаСервере Процедура ПрименитьИзмененияНаСервере() Для Каждого СтрокаСписка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(СтрокаСписка.Контракт) Тогда Продолжить; КонецЕсли; ОбъектЦКА = СтрокаСписка.ЦКА.ПолучитьОбъект(); ОбъектЦКА.ПоставщикКонтракт = СтрокаСписка.Контракт; Попытка ОбъектЦКА.Записать(); Исключение Сообщить("Не удалось записать цветомодель " + СтрокаСписка.ЦКА.Владелец.Код); КонецПопытки; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ПрименитьИзменения(Команда) Для Каждого СтрокаСписка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(СтрокаСписка.Контракт) Тогда Продолжить; КонецЕсли; ПрименитьИзмененияНаСервере(); КонецЦикла; КонецПроцедуры |
|||
18
программистище
21.01.11
✎
13:53
|
а вообще код дикий )))
в цикле тот же самый цикл |
|||
19
Stado_adama
21.01.11
✎
13:54
|
(18) заметил уже :) не убрал при копировании... ПрименитьИзменения сейчас выглядет так:
&НаКлиенте Процедура ПрименитьИзменения(Команда) ПрименитьИзмененияНаСервере(); КонецПроцедуры |
|||
20
Stado_adama
21.01.11
✎
13:56
|
(17) ты прав... поменял объект на объектЦКА и заработало...
Всем Спасибо! |
|||
21
romboro
21.01.11
✎
13:58
|
Насколько я понял, в переменной Объект содердится основной реквизит формы типа ОбработкаОбъект. Нельзя переприсваивать значение этой переменной. Попробуйте использовать переменную с другим именем, например
ОбъектЦКА = Строка.ЦКА.ПолучитьОбъект(); ... |
|||
22
программистище
21.01.11
✎
14:02
|
да не за что )
|
|||
23
СноваЗдорова
21.01.11
✎
14:09
|
Замени в
Для Каждого Строка Из Объект.СписокЦветомоделей Цикл Если НЕ ЗначениеЗаполнено(Строка.Контракт) Тогда Продолжить; КонецЕсли; Объект = Строка.ЦКА.ПолучитьОбъект(); Переменную Строка на другое, более нейтральное название |
|||
24
СноваЗдорова
21.01.11
✎
14:10
|
а, уже? =))
|
|||
25
МЮЛЛЕР
21.01.11
✎
14:23
|
Для Каждого Строка Из Объект.СписокЦветомоделей Цикл - ну да, если бы так типовые писали - был бы ужас
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |