Имя: Пароль:
1C
 
Интерактивное изменение активности записи регистра сведений
,
0 fantomrik
 
07.12.15
13:43
Доброго дня!

Создал независимый, не периодический регистр сведений. Сделал для него форму записи и списка. В форме записи добавил реквизит формы "АкцияАктивна" (булево), который заполняю при создании формы на сервере (читая набор по отборам данной записи и беря из отбора "Активность").

Собственно при повторном открытии записи "Активность" всегда Истина.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    Набор = РегистрыСведений.ЛЗ_АкцииИнтернетМагазина.СоздатьНаборЗаписей();
    Набор.Отбор.Документ.Установить(Запись.Документ);
    Набор.Отбор.НачалоДействияАкции.Установить(Запись.НачалоДействияАкции);
    Набор.Отбор.ОкончаниеДействияАкции.Установить(Запись.ОкончаниеДействияАкции);
    Набор.Прочитать();
    
    Если ЗначениеЗаполнено(Набор) Тогда
        ЭтотОбъект.АкцияАктивна = Набор[0].Активность
    КонецЕсли;
    
КонецПроцедуры


&НаКлиенте
Процедура АкцияАктивнаПриИзменении(Элемент)
    АкцияАктивнаПриИзмененииНаСервере(АкцияАктивна);
КонецПроцедуры


&НаСервере
Процедура АкцияАктивнаПриИзмененииНаСервере(АкцияАктивна)

    Набор = РегистрыСведений.ЛЗ_АкцииИнтернетМагазина.СоздатьНаборЗаписей();
    Набор.Отбор.Документ.Установить(ЭтотОбъект.Запись.Документ);
    Набор.Отбор.НачалоДействияАкции.Установить(ЭтотОбъект.Запись.НачалоДействияАкции);
    Набор.Отбор.ОкончаниеДействияАкции.Установить(ЭтотОбъект.Запись.ОкончаниеДействияАкции);
    Набор.Прочитать();

    Набор.УстановитьАктивность(АкцияАктивна);
    Набор.Записать(Истина);
    
КонецПроцедуры
1 fantomrik
 
07.12.15
13:46
В отладке стал на строку
Процедура АкцияАктивнаПриИзмененииНаСервере(АкцияАктивна) -  Набор.Прочитать(), после установки активности она в наборе меняется, Набор.Записать(Истина) ошибок не выдает, но при повторном изменении признака активности Набор.Прочитать() все равно показывает что запись активна.
2 GROOVY
 
07.12.15
13:50
Данные формы перезаписывают твой набор.
Надо набор получать из реквизита формы.
3 fantomrik
 
07.12.15
13:54
(2) А можно подробнее, как?
4 fantomrik
 
07.12.15
14:10
Не втыкаю, подскажите строчкой кода пожалуйста :)
5 aleks_default
 
07.12.15
14:17
Объект формы используй
6 fantomrik
 
07.12.15
14:26
(5) Так у меня же ЭтотОбъект и есть упр.форма ...
7 cw014
 
07.12.15
14:29
(6) Да ладно?
8 aleks_default
 
07.12.15
14:31
(6) А если в отладке посмотреть?
9 GROOVY
 
07.12.15
14:37
Какие реквизиты формы есть, какой у них тип значения?
10 fantomrik
 
07.12.15
14:51
(7) (8) http://hostingkartinok.com/show-image.php?id=60fdec6b5f7cbcd6ee13dd3201f2ae18

(9) Ну реквизит запись с типом РСменеджерЗаписи и АкцияАктивна - Булево
http://hostingkartinok.com/show-image.php?id=29fd54f5803109c398ff2557c87425b2
11 fantomrik
 
07.12.15
14:53
(9) Фигово что то загрузил прошлую картинку http://hostingkartinok.com/show-image.php?id=4e1d7b571d7d3960eed1269f068c532b
12 GROOVY
 
07.12.15
14:56
(11)  Ну так у тебя при записи, система берет менеджер записи и затирает то, что ты в наборе придумал.

В событии ПередЗаписью пиши признак активности в ТекущийОбъект (не ЭтотОбъект).

ЗЫ: обращаться  ЭтотОбъект.АкцияАктивна = Набор[0].Активность не кошерно, ЭтотОбъект используется только для описания контекста формы.
13 fantomrik
 
07.12.15
15:01
(12) Не понял. ПередЗаписью формы? У меня же объект - запись, признак активности доступен только для набора записей.
14 GROOVY
 
07.12.15
15:07
(13)  Ты не поленись посмотреть в отладке, что в текущем объекте.
15 aleks_default
 
07.12.15
15:10
(РегистрСведенийЗапись.<Имя регистра сведений> (InformationRegisterRecord.<Имя регистра сведений>)
Активность (Active)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Содержит признак активности записи. Используется для регистров сведений, для которых в конфигураторе установлен режим записи "Подчинение регистратору".

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Записи, для которых значение данного свойства установлено в Ложь, не будут учитываться при получении "первых" или "последних" записей регистра, а также при получении сведений на определенный момент времени.
16 aleks_default
 
07.12.15
15:10
Содержит признак активности записи. Используется для регистров сведений, для которых в конфигураторе установлен режим записи "Подчинение регистратору".
17 GROOVY
 
07.12.15
15:14
(16)  И, точно. Поле будет NULL содержать. И эта зараза при записи даже ругаться не будет, что активности нет.
18 aleks_default
 
07.12.15
15:19
Свой ресурс "Активность" создавай
19 fantomrik
 
07.12.15
15:29
(14) Сделал так
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    
    ТекущийОбъект.Активность = АкцияАктивна;

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

и час бьюсь почему не работает)

(16) (17) Теперь понятно, спасибо!
20 aleks_default
 
07.12.15
15:34
(19)А стоило только ctrl-F1 нажать.