Имя: Пароль:
1C
1С v8
Изменение реквизитов справочников при проведении документа 1с 8.2
, , ,
0 men-ken
 
04.02.15
12:28
Добрый день!
Нужно, чтобы при проведении документа менялись реквизиты в элементах справочника, кот. указаны в табличной части документа. Делаю так:

Процедура ОбработкаПроведения(Отказ, Режим)
    
    Для Каждого ТекСтрокаКонтрагенты Из Контрагенты Цикл
        
        Контрагент = ТекСтрокаКонтрагенты.Контрагент.ПолучитьОбъект();
        Контрагент.ОсновнойМенеджер = ЭтотОбъект.ОсновнойМенеджер;
        Контрагент.Записать();    
        
    КонецЦикла;

        
КонецПроцедуры

При проведении вот что он мне пишет:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ИФЮ_НазначениеОтветственных.МодульОбъекта(26)}: Поле объекта недоступно для записи (ОсновнойМенеджер)
        Контрагент.ОсновнойМенеджер = ЭтотОбъект.ОсновнойМенеджер;

Непонятно почему поле ОсновнойМенеджер недоступно для записи?
1 Господин ПЖ
 
04.02.15
12:29
>Нужно, чтобы при проведении документа менялись реквизиты в элементах справочника, кот. указаны в табличной части документа

за такие штуки принято ипашить по рукам...
2 Naumov
 
04.02.15
12:29
у тебя конфа, тебе виднее
3 men-ken
 
04.02.15
12:32
(1) объясните что не так?
4 barrgand
 
04.02.15
12:36
(3) В таких случаях необходимо пользоваться доп. свойствами объектов, которые будут хранится в отдельном регистре.
5 zalexey
 
04.02.15
12:43
Потому что у тебя Контрагент - это реквизит документа с типом ссылка.

Об остальном тебе уже выше написали )
6 ktvladimir
 
04.02.15
12:46
(1) я видел такие штуки в типовых решениях ) начнем с них?
навскидку... Управление инженерными данными
7 men-ken
 
04.02.15
12:48
В конфигурации уже есть регистр, в котором отражаются изменения реквизитов Справочника Контрагенты. Я так понимаю, что если программно изменить реквизиты, то старые будут храниться в регистре.
(6) ЭтотОбъект.ОсновнойМенеджер - это же тоже ссылка
8 Naumov
 
04.02.15
12:48
(6) За некоторые приемы из типовых выгоняют с экзамена, как за недопустимое. Но ничего, живут типовые своей жизнью.
9 Naumov
 
04.02.15
12:49
(7) А ты код не на клиенте случаем выполняешь?
10 ktvladimir
 
04.02.15
12:50
(7) тебе говорят о том что у документа наверняка есть реквизит "Контрагент"

то что ты потом объявляешь ТекСтрокаКонтрагенты.Контрагент.ПолучитьОбъект();
не говорит о том что он станет объектом
11 Naumov
 
04.02.15
12:50
или это не УФ?
12 ktvladimir
 
04.02.15
12:50
и ты меняешь менеджера не у объекта а у ссылки
13 hhhh
 
04.02.15
12:52
(7) так пробуй

        ОфигенныйКонтрагент = ТекСтрокаКонтрагенты.Контрагент.ПолучитьОбъект();
        ОфигенныйКонтрагент.ОсновнойМенеджер = ЭтотОбъект.ОсновнойМенеджер;
        ОфигенныйКонтрагент.Записать();
14 Господин ПЖ
 
04.02.15
12:53
>я видел такие штуки в типовых решениях ) начнем с них?

я и запрос в цикле видел
15 2083
 
04.02.15
13:00
(1) ну зачем по рукам-то сразу? когда в РАУЗ движения пишутся, создаются же ключи аналитики в справочниках
16 ktvladimir
 
04.02.15
13:02
(14) ну это смотря какая задача) иногда бывает что это оправдано)
17 2083
 
04.02.15
13:05
(16) например?
18 barrgand
 
04.02.15
13:05
(15) Если где-то при проведении документа изменяется пачка других объектов, это не значит, что надо использовать это постоянно. Тем более, что есть более правильный способ хранить информацию.
19 Naumov
 
04.02.15
13:20
(15) Создаются только отсутствующие элементы, но не изменяются. Согласись немного не такая задача.
20 yukon
 
04.02.15
13:21
(15) Ключевое слово "создаются", не обновляются как в (0), а создаются, причем всего 1 раз.
21 yukon
 
04.02.15
13:21
(19) Опередил :)
22 Defender aka LINN
 
04.02.15
13:22
(0) А при отмене проведения что происходит?
23 Огурцы
 
04.02.15
13:23
(0)не делай так, добавь новый РС "МенеджерыКлиентов" и пиши туда при проведении.
24 Огурцы
 
04.02.15
13:24
мало ли сколько гвно-кодеров типовые пишут, ты же не такой , правда?
25 yukon
 
04.02.15
13:26
(23) Что в лоб, что по лбу. Опять же вопрос, что делать при отмене проведения.

Есть вариант с периодическим регистром сведений с периодом по позиции регистратора.
26 Огурцы
 
04.02.15
13:28
(25)при отмене проведения, запись удалится сама. Какой Смысл в записи если отменили проведение документу по сути отменили само действие?
27 Огурцы
 
04.02.15
13:29
(25)можно и периодический
28 Крошка Ру
 
04.02.15
13:37
(0) Отладчиком воспользуйся.
29 ktvladimir
 
04.02.15
13:39
(17) когда в параметры нужно загонять данные обработанные на предыдущем этапе
30 Defender aka LINN
 
04.02.15
14:15
(26) С автора же станется независимый регистр захреначить
31 FIXXXL
 
04.02.15
14:23
точно Контрагент.ОсновнойМенеджер
а не ОсновнойМенеджерПокупателя ?
32 ksupalo
 
04.02.15
14:27
(0) В 1С Документооборот в справочнике "Проектные задачи" вначале так и было - даты начала и окончания задачи (план и факт) были в проектной задаче. При изменении задач, график пересчитывался, реквизиты элементов справочника менялись массово со всеми вытекающими.

С версии 1.3.х сделали регистр сведений, в которых хранят даты проектных задач - все стало хорошо - меняются записи регистра, а проектные задачи как были так и есть. График пересчитывается быстрее. Красота!

Мораль: не надо менять реквизиты справочника, если ты не в форме справочника.
33 FIXXXL
 
04.02.15
15:20
(32) если это поле имеет такой же смысл как в УТ10,3, то ничего криминального в (0) нет. Ибо поле это перезаписывать может много кто и без контроля.
Наоборот, будет видно кто манагеров тусует, если заблочить кнопку "Установить основным" на форме элемента справочника :)
Если же нужна "история" ведения клиента манагерами - тогда несомненно РС.