Преобразование данных прикладных объектов в данные формы и обратно
Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:
- ЗначениеВДанныеФормы(),
- ДанныеФормыВЗначение(),
- КопироватьДанныеФормы().
Методы, работающие с прикладными объектами, доступны только в серверных процедурах. Метод для копирования значений между данными формы доступен на сервере и на клиенте, так как не требует прикладных объектов в качестве параметров.
Во время конвертирования данных формы в прикладной объект нужно учитывать их совместимость.
- ЗначениеВДанныеФормы() ‑ преобразует объект прикладного типа в данные формы.
- ДанныеФормыВЗначение() ‑ преобразует данные формы в объект прикладного типа.
- КопироватьДанныеФормы() ‑ производит копирование данных формы, обладающих совместимой структурой. Возвращает значение Истина, если копирование произведено, или Ложь, если структура объектов несовместима.
При преобразовании данных формы в прикладные объекты и обратно используется кеширование объектов, но при этом выполняется проверка актуальности версии объекта в кеше.
ПРИМЕЧАНИЕ. При выполнении стандартных действий (открытие формы, выполнение стандартной команды Записать и т. д.) в форме с основным реквизитом преобразование выполняется автоматически.
Приведем пример, как использовать преобразование данных в собственных алгоритмах.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбъектТовар = Товары.НайтиПоНаименованию("Кофейник").ПолучитьОбъект(); ЗначениеВДанныеФормы(ОбъектТовар, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Записать()
ЗаписатьНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаписатьНаСервере()
ОбъектТовар = ДанныеФормыВЗначение(Объект,Тип("СправочникОбъект.Товары"));
ОбъектТовар.Записать();
КонецПроцедуры
Также у объекта ФормаКлиентскогоПриложения существуют методы, доступные на сервере:
- ЗначениеВРеквизитФормы() ‑ выполняет преобразование объекта прикладного типа в заданный реквизит формы.
- РеквизитФормыВЗначение() ‑ преобразует реквизит данных формы в объект прикладного типа.
Использование данных методов обычно удобнее, так как они имеют, например, информацию о типе реквизита формы. Кроме того, метод РеквизитФормыВЗначение() выполняет установку соответствия данных формы и объекта, которая используется при формировании сообщений .
Также следует помнить, что при преобразовании в данные формы (как с помощью метода ЗначениеВДанныеФормы(), так и с помощью метода ЗначениеВРеквизитФормы()) объектов типа ТаблицаЗначений или ДеревоЗначений нужно учитывать следующую особенность: в преобразуемом объекте должны существовать все колонки, которые существуют в данных формы.
ВНИМАНИЕ! Колонки реквизитов, не связанные с данными , не участвуют в преобразовании значений между данными формы и объектами информационной базы и обратно. Колонки, отсутствующие в данных объекта, очищаются при преобразовании в данные формы.
При переносе объекта в данные формы платформой, или при вызове методов ЗначениеВДанныеФормы(), ЗначениеВРеквизитФормы(), переносятся только данные объекта. Внутренние состояние объекта в данные формы не переносится. Например, значение ссылки нового, которая установлена в объект методом УстановитьСсылкуНового(), будет утеряна в процессе преобразования объекта в данные формы и обратно.
В качестве первого параметра методов РеквизитФормыВЗначение() и ДанныеФормыВЗначение() могут выступать только реквизиты формы следующих типов:
- ДанныеФормыСтруктура,
- ДанныеФормыКоллекция,
- ДанныеФормыСтруктураСКоллекцией,
- ДанныеФормыДерево.
Приведем пример использования этих методов.
&НаСервере
Процедура ПересчитатьНаСервере()
// Преобразует реквизит Объект в прикладной объект. Документ = РеквизитФормыВЗначение("Объект");
// Выполняет пересчет методом, определенным в модуле документа. Документ.Пересчитать();
// Преобразует прикладной объект обратно в реквизит. ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры
gvk2009 подробно и доходчиво описал разницу методов, за что ему огромное спасибо:
В Синтаксис-Помощнике очень скупо написано о процедуре ДанныеФормыВЗначение(), чуть побольше — о РеквизитФормыВЗначение(). И совсем нет примеров использования. Попробуем с этим разобраться.
РеквизитФормыВЗначение()
Является методом управляемой формы, компилируется только &НаСервере, контекст формы является для него необходимым, поэтому компиляция &НаСервереБезКонтекста недоступна. На клиенте не работает, поскольку в результате получаем прикладной объект.
Где и когда его нужно использовать?
Метод РеквизитФормыВЗначение() необходим, если требуется из модуля формы вызвать стандартный метод объекта или метод (процедуру, функцию) из модуля объекта, из общего модуля.
Этот метод будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.
Для того, чтобы измененные данные вернуть на форму, используется метод ЗначениеВРеквизитФормы().
Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.
Примеры:
Код 1C v 8.2 УП
// 1)
&НаСервере
Процедура ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент)
ДокОбъект = РеквизитФормыВЗначение("Объект");
ДокОбъект.ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент);
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры
// 2)
&НаСервере
Процедура ОчиститьСтрокиСПустойЦенойНаСервере()
ДокОбъект = РеквизитФормыВЗначение("Объект");
ДокОбъект.ОчиститьСтрокиСПустойЦеной();
ЗначениеВРеквизитФормы(ДокОбъект, "Объект");
КонецПроцедуры
//3)
&НаСервере
Функция ОбъектЗаполнен()
Возврат РеквизитФормыВЗначение("Объект").ПроверитьЗаполнение();
КонецФункции
В указанных выше случаях метод РеквизитФормыВЗначение() похож на метод ПолучитьОбъект(). Разница в том, что первый получает объект, заполненный данными формы, а второй — объект с данными из базы.
ДанныеФормыВзначение()
В отличие от метода управляемой формы РеквизитФормыВЗначение(), процедура глобального контекста ДанныеФормыВЗначение() может работать без контекста формы, но именно поэтому, в частности, ей необходимо указывать тип конвертируемых данных.
Обратной процедурой является ЗначениеВДанныеФормы().
Примеры:
Код 1C v 8.2 УП
// 1)
&НаСервере
// Инициализация набора констант
НаборКонстантОбъект = ДанныеФормыВЗначение(НаборКонстант, Тип("КонстантыНабор"));
НаборКонстантОбъект.Прочитать();
ЗначениеВДанныеФормы(НаборКонстантОбъект, НаборКонстант);
// 2)
&НаСервере
НаборФорма = Объект.Движения.РегистрУправленческий;
Набор = ДанныеФормыВЗначение(НаборФорма, Тип("РегистрБухгалтерииНаборЗаписей.РегистрУправленческий"));
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВДанныеФормы(Набор, НаборФорма);
В этом примере на форме отображен набор записей регистра бухгалтерии. При отработке процедуры, активность набора меняется только на форме, в базе при этом ничего не происходит. Активность у набора записей регистра в базе поменяется только после выполнения операции Записать.
Код 1C v 8.2 УП
// 3)
&НаКлиенте
Процедура Заполнить(Команда)
ОснРеквизит = Объект;
ВыполнитьНаСервереБезКонтекста(ОснРеквизит);
КопироватьДанныеФормы(ОснРеквизит,Объект)
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВыполнитьНаСервереБезКонтекста(ОснРеквизит)
ОбъектЗначение = ДанныеФормыВЗначение(ОснРеквизит, Тип("ДокументОбъект.АктСверкиВзаиморасчетов"));
//...Выполнение операций с Объектом "ОбъектЗначение"
ЗначениеВДанныеФормы(ОбъектЗначение, ОснРеквизит);
КонецПроцедуры
В этом примере на клиент возвращается ОснРеквизит, содержащий измененные данные. Но его еще нужно «запихать» в отображаемую форму. Для этого используем процедуру глобального контекста КопироватьДанныеФормы().
В большинстве случаев процедуры ДанныеФормыВзначение() и РеквизитФормыВЗначение() взаимозаменяемы. При этом РеквизитФормыВЗначение проще в использовании. Но если требуется использование &НаСервереБезКонтекста — тогда только ДанныеФормыВЗначение.
В качестве иллюстрации взаимозаменяемости Пример 2 еще в двух вариантах:
Код 1C v 8.2 УП
// ВАРИАНТ 1
&НаКлиенте
Процедура Активность(Команда)
ОснРеквизитДвижения = Объект.Движения.РегистрУправленческий;
АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения);
КопироватьДанныеФормы(ОснРеквизитДвижения,Объект.Движения.РегистрУправленческий);
КонецПроцедуры // Активность()
&НаСервереБезКонтекста
Процедура АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения)
Набор = ДанныеФормыВЗначение(ОснРеквизитДвижения, Тип("РегистрБухгалтерииНаборЗаписей.РегистрУправленческий"));
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВДанныеФормы(Набор, ОснРеквизитДвижения);
КонецПроцедуры // АктивностьНаСервереБезКонтекста()
// ВАРИАНТ 2
&НаСервере
Процедура АктивностьНаСервере()
НаборФорма = РеквизитФормыВЗначение("Объект");
Набор = НаборФорма.Движения.РегистрУправленческий;
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВРеквизитФормы(НаборФорма, "Объект");
КонецПроцедуры // АктивностьНаСервере()
как записать данные в реквизит на упр форме ? |
Я |
28.01.14 — 00:54
как записать данные в реквизит на упр форме ?
1 — 28.01.14 — 00:56
Объект.<ИмяРеквизита> = …
2 — 28.01.14 — 00:57
это реквизит объекта а мне нужен реквизит на форме. он не входит в объект он отдельно
3 — 28.01.14 — 00:58
(1) казалось бы, причем здесь «Объект»…
4 — 28.01.14 — 00:59
<ИмяРеквизита> = …
5 — 28.01.14 — 01:00
.<ИмяРеквизита> = …
6 — 28.01.14 — 01:02
Сотр = справочники.Сотрудники.Выбрать();
пока сотр.Следующий() цикл
физлицо = справочники.ФизическиеЛица.НайтиПоНаименованию(сокрлп(сотр.Наименование));
сотрудник = сотр.ПолучитьОбъект();
сотрудник.ГоловнаяОрганизация = организация;
сотрудник.ТекущаяОрганизация = организация;
форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);//.ЭлементыФормы.Найти(«ТекущаяОрганизация»);
форма.ЭлементыФормы.ТекущаяОрганизация = организация;
7 — 28.01.14 — 01:02
пишется ошибка поле объекта не обнаружено текущаяорганизация
8 — 28.01.14 — 01:03
Жесть ведь. Да?
9 — 28.01.14 — 01:04
(8) мне не до шуток я специально спать не пошла — надо сделать а давно хочу…
10 — 28.01.14 — 01:58
(0) Сначала попробуй разобраться что такое Упр формы…
11 — 28.01.14 — 12:56
ап
12 — 28.01.14 — 13:04
ап ап ап
13 — 28.01.14 — 13:05
форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);//.ЭлементыФормы.Найти(«ТекущаяОрганизация»);
форма.ТекущаяОрганизация = организация;
14 — 28.01.14 — 13:44
ту же ошибку пишет… может потому чо на сервере вызываю..
15 — 28.01.14 — 13:48
давайте сначала. где и как вы пытаетесь это сделать?
16 — 28.01.14 — 13:51
во внешней обработке. в модуле формы.
&НаКлиенте
Процедура Команда1(Команда)
ОКНаСервере();
КонецПроцедуры
&НаСервере
Процедура ОКНаСервере()
орг = справочники.Организации.выбрать();
пока орг.Следующий() цикл
организация = орг.Ссылка;
конеццикла;
Сотр = справочники.Сотрудники.Выбрать();
пока сотр.Следующий() цикл
физлицо = справочники.ФизическиеЛица.НайтиПоНаименованию(сокрлп(сотр.Наименование));
сотрудник = сотр.ПолучитьОбъект();
сотрудник.ГоловнаяОрганизация = организация;
форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);
форма.ЭлементыФормы.ТекущаяОрганизация = организация;
Сообщить(«организация «+организация);
попытка
сотрудник.ФизическоеЛицо = физлицо;
Сообщить(«физлицо «+ физлицо);
исключение
конецпопытки;
сотрудник.Записать();
сообщить(«записан «+сотрудник);
конеццикла;
КонецПроцедуры
17 — 28.01.14 — 13:54
я щяс зарыдаю, посыплю голову пеплом и уйду в монастырь, женский…
где хотя-бы «Орг=Справочники.Организации.НайтиПоКоду(«__»);
запросы — нне, не надо?
18 — 28.01.14 — 13:56
там одна организация и выбирает он одну. и сотрудников 15 — зачем запрос.
19 — 28.01.14 — 14:05
(14) гениально. не прошло и суток, как вы поняли смысл своей ошибки из (6)
20 — 28.01.14 — 14:07
(18) самописная конфа?
21 — 28.01.14 — 14:16
но на клиенте тоже не работает((((
22 — 28.01.14 — 14:16
обычная бп 3.0… посоветуйте как сделать чтоб работала а то только осуждать горазды а дельных советов 0!
23 — 28.01.14 — 14:25
(21)так может-таки покажете полный вариант кода? текущее его состояние
24 — 28.01.14 — 14:38
я чет не пойму-нафиг так? просто ЭтаФОрма.Реквизит=…
25 — 28.01.14 — 14:39
не работает так(24)
26 — 28.01.14 — 14:39
я из обработки вызываю форму
27 — 28.01.14 — 14:42
(26) в той форме точно есть такой реквизит?
28 — 28.01.14 — 14:42
а открываешь?
29 — 28.01.14 — 14:42
ЭтаФорма.»Имя»
30 — 28.01.14 — 14:43
и по моему в УФ нет ЭлементыФормы. есть просто ИмяФормы.Реквизит
31 — 28.01.14 — 14:45
(26) Вызываешь форму обработки или общую или…???
32 — 28.01.14 — 14:45
В УФ элементы, а не ЭлементыФормы)
33 — 28.01.14 — 14:48
Объект.А11
34 — 28.01.14 — 14:49
Если у этого реквизита формы не установлена галка «Сохраняемые данные», то заполнять нужно в событии ПриСозданииНаСервере.
35 — 28.01.14 — 14:55
Глянул в БП 3.0.
ТекущаяОрганизация это реквизит справочника.
36 — 28.01.14 — 16:00
там в справочнике Сотрудники есть только реквизит УдалитьТекущаяОрганизация а ТекущаяОрганизация нет — у меня самы последний релиз стоит. еслиб был реквизит вообще не было бы вопросов как записать
37 — 28.01.14 — 16:00
там есть ГоловнаяОрганизация но это другой реквизит
38 — 28.01.14 — 16:22
(36) Значит ТекущаяОрганизация теперь хранится в каком-то регистре сведений. У меня не установлен последний релиз.
Taiska
39 — 28.01.14 — 16:47
спасибо всем. простите если ругалась.
Содержание:
1. Реквизиты объекта и реквизиты формы в 1С
2. Как получить значения из элементов формы 1С
1. Реквизиты объекта и реквизиты формы в 1С
В обычном приложении у элемента формы 1С 8.3 было свойство «Значение», доступное как для чтения, так и для записи. Какой аналог в управляемом приложении?
Элементы формы 1С 8.3 могут содержать реквизиты двух видов: реквизиты объекта 1С и реквизиты формы.

Красным помечен реквизит объекта 1С Контрагент, а зеленым – реквизит формы в 1С.
Интерактивно выберем эти элементы в пользовательском режиме 1С и попробуем прочитать их «программно» кнопкой «Прочитать».

Если читать значения реквизитов в клиентской процедуре, то код для 1С Предприятия будет следующий:


Все бы хорошо: мы получили на клиенте значения реквизитов объекта 1С и формы, но – не значения элементов формы 1С. На клиенте значение элементов формы 1С получить нельзя.
2. Как получить значения из элементов формы 1С
Чтобы получить значения из элементов формы 1С, нам потребуется серверный вызов:

Именно на сервере у элемента формы 1С 8.3 становится доступно свойство ПутьКДанным, по которому его можно извлечь либо из Объекта, который имеет тип ДанныеФормыСтруктура:

…либо из Формы, которая имеет тип ФормаКлиентскогоПриложения:

Форма и ее элементы не видны на сервере без контекста. То есть код для 1С:Предприятия выдаст множество ошибок.
Также Форму нельзя передать как параметр в процедуру и функцию на сервер или в общий модуль.

Еще хочется разобрать момент, когда нам возможно увидеть состояние различающихся значений в элементе форме 1С и в объекте. Это возможно в событии элемента ОбработкаВыбора.
Например, при значении поля Контрагент — Ассоль, мы выбрали контрагента Бакалея:

Новое значение доступно как параметр процедуры ВыбранноеЗначение.

Система дает шанс что-то сделать в этой ситуации.
Специалист компании ООО «Кодерлайн»
Добрыгин Михаил
|
5 / 5 / 3 Регистрация: 14.07.2015 Сообщений: 393 |
|
|
1 |
|
|
1C 8.x Как записать в объект значения из программно созданного реквизита формы30.12.2019, 15:20. Показов 2572. Ответов 2
Тут мне подсказали как отобразить на форме произвольную ТЗ
0 |
|
1142 / 689 / 203 Регистрация: 22.04.2013 Сообщений: 5,160 Записей в блоге: 1 |
|
|
30.12.2019, 16:29 |
2 |
|
ну значит неопределена ) без кода ничего понять невозможно ) а слова, что «считывает значения и переносит в базу» как-то не очень понятно
0 |
|
5 / 5 / 3 Регистрация: 14.07.2015 Сообщений: 393 |
|
|
09.01.2020, 08:21 [ТС] |
3 |
|
У меня в табличной части документа храниться все в виде Показатель, наименование колонки, Значение, на форму все выводиться в виде ТаблицаФормы с разным количеством колонок, можно изменить значение, и встал вопрос как перенести измененные значения из ТаблицаФормы в ТЧ документа. КОд написал, но он при открытии формы ругается, реквизит формы ТаблицаФормы не существует, при этом я вставил код в перед записью на сервере, так понятно? кода много с разных событих, накидать не сложно, понятно ли будет
0 |
В Синтаксис-Помощнике очень скупо написано о процедуре ДанныеФормыВЗначение(), чуть побольше — о РеквизитФормыВЗначение(). И совсем нет примеров использования. Попробуем с этим разобраться.
РеквизитФормыВЗначение() является методом управляемой формы, компилируется только &НаСервере, контекст формы является для него необходимым, поэтому компиляция &НаСервереБезКонтекста недоступна. На клиенте не работает, поскольку в результате получаем прикладной объект.
Где и когда его нужно использовать?
Метод РеквизитФормыВЗначение() необходим, если требуется из модуля формы вызвать стандартный метод объекта или метод (процедуру, функцию) из модуля объекта, из общего модуля.
Этот метод будет отрабатывать с данными, взятыми из формы, т.е. еще не записанными в базу.
Для того, чтобы измененные данные вернуть на форму, используется метод ЗначениеВРеквизитФормы().
Вторым параметром метода РеквизитФормыВЗначение является тип значения. Это необязательный параметр. Если обрабатываемый реквизит не является составным типом, то тип будет автоматически получен из реквизита формы. Иначе генерируется исключение времени выполнения.
Примеры:
1)
&НаСервере
Процедура ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент)
ДокОбъект = РеквизитФормыВЗначение(«Объект»);
ДокОбъект.ЗаполнитьТЧПоДаннымПоследнегоДокумента(Контрагент);
ЗначениеВРеквизитФормы(ДокОбъект, «Объект»);
КонецПроцедуры
2)
&НаСервере
Процедура ОчиститьСтрокиСПустойЦенойНаСервере()
ДокОбъект = РеквизитФормыВЗначение(«Объект»);
ДокОбъект.ОчиститьСтрокиСПустойЦеной();
ЗначениеВРеквизитФормы(ДокОбъект, «Объект»);
КонецПроцедуры
3)
&НаСервере
Функция ОбъектЗаполнен()
Возврат РеквизитФормыВЗначение(«Объект»).ПроверитьЗаполнение();
КонецФункции
В указанных выше случаях метод РеквизитФормыВЗначение() похож на метод ПолучитьОбъект(). Разница в том, что первый получает объект, заполненный данными формы, а второй — объект с данными из базы.
ДанныеФормыВзначение()
В отличие от метода управляемой формы РеквизитФормыВЗначение(), процедура глобального контекста ДанныеФормыВЗначение() может работать без контекста формы, но именно поэтому, в частности, ей необходимо указывать тип конвертируемых данных.
Обратной процедурой является ЗначениеВДанныеФормы().
Примеры:
1) &НаСервере
// Инициализация набора констант
НаборКонстантОбъект = ДанныеФормыВЗначение(НаборКонстант, Тип(«КонстантыНабор»));
НаборКонстантОбъект.Прочитать();
ЗначениеВДанныеФормы(НаборКонстантОбъект, НаборКонстант);
2) &НаСервере
НаборФорма = Объект.Движения.РегистрУправленческий;
Набор = ДанныеФормыВЗначение(НаборФорма, Тип(«РегистрБухгалтерииНаборЗаписей.РегистрУправленческий»));
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВДанныеФормы(Набор, НаборФорма);
В этом примере на форме отображен набор записей регистра бухгалтерии. При отработке процедуры, активность набора меняется только на форме, в базе при этом ничего не происходит. Активность у набора записей регистра в базе поменяется только после выполнения операции Записать.
3)
&НаКлиенте
Процедура Заполнить(Команда)
ОснРеквизит = Объект;
ВыполнитьНаСервереБезКонтекста(ОснРеквизит);
КопироватьДанныеФормы(ОснРеквизит,Объект)
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВыполнитьНаСервереБезКонтекста(ОснРеквизит)
ОбъектЗначение = ДанныеФормыВЗначение(ОснРеквизит, Тип(«ДокументОбъект.АктСверкиВзаиморасчетов»));
//…Выполнение операций с Объектом «ОбъектЗначение»
ЗначениеВДанныеФормы(ОбъектЗначение, ОснРеквизит);
КонецПроцедуры
В этом примере на клиент возвращается ОснРеквизит, содержащий измененные данные. Но его еще нужно «запихать» в отображаемую форму. Для этого используем процедуру глобального контекста КопироватьДанныеФормы().
В большинстве случаев процедуры ДанныеФормыВзначение() и РеквизитФормыВЗначение() взаимозаменяемы. При этом РеквизитФормыВЗначение проще в использовании. Но если требуется использование &НаСервереБезКонтекста — тогда только ДанныеФормыВЗначение.
В качестве иллюстрации взаимозаменяемости Пример 2 еще в двух вариантах:
ВАРИАНТ 1
&НаКлиенте
Процедура Активность(Команда)
ОснРеквизитДвижения = Объект.Движения.РегистрУправленческий;
АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения);
КопироватьДанныеФормы(ОснРеквизитДвижения,Объект.Движения.РегистрУправленческий);
КонецПроцедуры // Активность()
&НаСервереБезКонтекста
Процедура АктивностьНаСервереБезКонтекста(ОснРеквизитДвижения)
Набор = ДанныеФормыВЗначение(ОснРеквизитДвижения, Тип(«РегистрБухгалтерииНаборЗаписей.РегистрУправленческий»));
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВДанныеФормы(Набор, ОснРеквизитДвижения);
КонецПроцедуры // АктивностьНаСервереБезКонтекста()
ВАРИАНТ 2
&НаСервере
Процедура АктивностьНаСервере()
НаборФорма = РеквизитФормыВЗначение(«Объект»);
Набор = НаборФорма.Движения.РегистрУправленческий;
Если Набор.Количество()=0 Тогда
Возврат;
КонецЕсли;
Набор.УстановитьАктивность(НЕ Набор[0].Активность);
ЗначениеВРеквизитФормы(НаборФорма, «Объект»);
КонецПроцедуры // АктивностьНаСервере()




