1с объект модифицирован для плана обмена попытка исключение
Для выдачи структуированной информации об ошибке в версии 8.2 служит функция ИнформацияОбОшибке().
Вызов исключения
В 1С:Предприятие 7.7 оператор ВызватьИсключение; служит для повторного вызова исключения из блока Исключение-КонецПопытки. Для вызова из других частей программы можно использовать внешнюю компоненту или деление на 0, например а=1/0.
Перехват исключений в коде
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
2. Тем не менее, необходимость перехвата исключений в коде все же возникает. Например, для того чтобы уточнить текст ошибки, дополнив его прикладной, понятной конечному пользователю, информацией. Однако при этом необходимо фиксировать причину ошибки в журнале регистрации для того, чтобы системный администратор имел возможность выполнить диагностику проблемы и при необходимости передать информацию об ошибке в службу технической поддержки.
3. Частные случаи некорректного использования и перехвата исключений.
Область применения (уточнение): управляемое приложение, обычное приложение.
3.1. Если имеется некоторая серверная бизнес-логика, которая вызывается с клиента при интерактивной работе пользователя:
&НаСервере
Процедура ВыполнитьОперацию()
// код, приводящий к вызову исключения
.
КонецПроцедуры
то неправильно маскировать от пользователя и администратора исходную проблему:
// на клиенте
Попытка
ВыполнитьОперацию();
Исключение
ПоказатьПредупреждение(,НСтр("ru = ‘Операция не может быть выполнена.’"));
КонецПопытки;
и тогда на клиенте:
Не следует использовать функцию ОписаниеОшибки , т.к. она неинформативна для разработчика, потому что не возвращает стек в тексте ошибки.
3.2. Не следует анализировать текст исключений с целью интерпретации причины ошибки. Текст исключения может меняться в зависимости от локализации. В условиях отсутствия штатных средств (например, типизированных исключений), следует выдавать пользователю тексты исключений «как есть». Для понятности, его можно дополнить пояснением возможных причин.
Например:
В тех случаях, когда анализ типов исключений критически важен для корректной работы бизнес-логики, следует отказаться от исключений и использовать коды ошибок (коды возврата). При этом недопустимо использовать числовые коды ошибок, т.к. код становится нечитаемым:
КодОшибки = ЗагрузитьФайлИзИнтернета(. );
Если КодОшибки = 12345 Тогда
.
ИначеЕсли .
правильно применять строковые литералы (например, "Успешно", "НетМестаНаДиске", "Отменено" и т.п.):
РезультатЗагрузки = ЗагрузитьФайлИзИнтернета(. );
Если РезультатЗагрузки = "Успешно" Тогда
.
ИначеЕсли .
Строковые литералы кодов ошибок не локализуются.
Исключение составляют случаи работы с веб-сервисами и другими внешними системами, где коды ошибок не доступны, а результат работы транслируется в вызывающий код прикладной конфигурации в виде исключений.
3.3. Если имеется некоторая клиентская бизнес-логика (код выполняется полностью на клиенте):
&НаКлиенте
Процедура СоздатьФайлНаДиске()
// код, приводящий к вызову исключения
.
КонецПроцедуры
то рекомендуется делать дополнительный серверный вызов для протоколирования неудачного результата операции в журнал регистрации:
3.4. Недопустимо перехватывать любые исключения, бесследно для системного администратора:
Попытка
// код, приводящий к вызову исключения
.
Исключение // перехват любых исключений
КонецПопытки;
Как правило, подобная конструкция скрывает реальную проблему, которую впоследствии невозможно диагностировать.
Правильно:
Попытка
// код, приводящий к вызову исключения
.
Исключение
// Пояснение причин перехвата всех исключений "незаметно" от пользователя.
// .
// И запись события в журнал регистрации для системного администратора.
ЗаписьЖурналаРегистрации(НСтр("ru = ‘Выполнение операции’"),
УровеньЖурналаРегистрации.Ошибка.
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
Но если пользователь не может отработать останавливающее предупреждение в рамках выполняемой операции или ошибочная ситуация носит исключительный характер и делает бессмысленными все остальные проверки, которые выводят другие останавливающие предупреждения, то следует вызывать исключение.
Процедура ПередЗаписью(Отказ)
Если Не ЗарегистрироватьИзмененияНаУзлахПлановОбмена() Тогда
ВызватьИсключение НСтр("ru = ‘Не удалось зарегистрировать изменения на узлах планов обмена. Обратитесь к администратору.’");
КонецЕсли;
.
КонецПроцедуры
Подробнее см. пп. 1.1 и 1.3 стандарта Информирование пользователя.
3.6. Недопустимо делать проверки наличия у объекта реквизитов, методов, макетов и т.п., используя для этого исключения, т.к. это может привести к сложно диагностируемым ошибкам, а также затрудняет отладку в режиме «Останавливаться по ошибке».
Вместо перехвата исключений в этом случае рекомендуется:
- использовать механизмы работы с метаданными, чтобы явным образом проверять наличие или отсутствие реквизита (макета и т.п.);
- если различия связаны с особенностями встраивания библиотек – описывать особенности явным образом в переопределяемых модулях (см. Переопределяемые и поставляемые объекты);
- пересмотреть логику работы методов, использующих перехват исключений. Например, можно предусмотреть параметры, которые определяются в вызывающем коде и указывают нужно или нет обращаться к какому-либо методу или свойству объекта.
Попытка
КонтекстЭДОСервер.ПолучитьМакет("КомпонентаОбмена");
ПутьВК = КонтекстЭДОСервер.ПутьКОбъекту + ".Макет.КомпонентаОбмена";
Исключение
КонецПопытки;
МакетКомпонентыОбмена = КонтекстЭДОСервер.Метаданные().Макеты.Найти("КомпонентаОбмена");
Если МакетКомпонентыОбмена <> Неопределено Тогда
ПутьКМакету = КомпонентаОбмена.ПолноеИмя()
КонецЕсли;
3.7. Порядок обработки исключений при использовании транзакций описан в стандарте Транзакции: правила использования.
3.8. Неправильно использовать исключения для приведения значения к типу. Для таких операций необходимо использовать возможности объекта ОписаниеТипов .
Попытка
КоличествоДнейРазрешения = Число(Значение);
Исключение
КоличествоДнейРазрешения = 0; // значение по умолчанию
КонецПопытки;
ОписаниеТипа = Новый ОписаниеТипов("Число");
КоличествоДнейРазрешения = ОписаниеТипа.ПривестиЗначение(Значение);
Как работает попытка исключение 1с
Параметры:
// Операторы попытки
Исполняемый оператор или последовательность таких операторов.
Исключение
Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов произошла ошибка времени выполнения.
// Операторы исключения
Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию.
ВызватьИсключение
Оператор позволяет вызвать исключение в тех случаях, когда несмотря на отработку исключительной ситуации операторами исключения необходимо прервать выполнение модуля с ошибкой времени выполнения. Оператор допустим только внутри операторных скобок Исключение – КонецПопытки.
КонецПопытки
Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций.
Описание:
Оператор Попытка управляет выполнением программы, основываясь на возникающих при выполнении модуля ошибочных (исключительных) ситуациях, и определяет обработку этих ситуаций. В качестве ошибочных (исключительных) ситуаций воспринимаются ошибки времени выполнения модуля. Не предусмотрено определяемых пользователем исключений.
Если при выполнении последовательности операторов попытки произошла ошибка времени выполнения, то выполнение оператора, вызвавшего ошибку, прерывается и управление передается на первый оператор последовательности операторов исключения. При этом управление будет передано даже в том случае, если ошибку вызвал оператор, находящийся в процедуре или функции, вызванной из операторов попытки. Если ошибка произошла в вызванной процедуре или функции, то ее выполнение будет прервано, а локальные переменные – уничтожены. Это справедливо для любой вложенности вызовов. После выполнения последовательности операторов исключения управление передается на следующий за ключевым словом КонецПопытки оператор. Если же последовательность операторов попытки выполнилась без ошибок, то последовательность операторов исключения будет пропущена и управление также
будет продолжено с оператора, следующего за ключевым словом КонецПопытки.
Подскажите пожалуйста.
Есть документы которым массово проставляется значение реквизита. Далее идет запись документа без перепроведения. При записи док попадает в планы обмена. Как программно записать документ и отменить регистрацию изменений для планов обмена. Планов обмена несколько, в различные системы.
Кому интиресно реализовал так:
ПланыОбменаМенеджер.УдалитьРегистрациюИзменений (ExchangePlansManager.DeleteChangeRecords)
ПланыОбменаМенеджер (ExchangePlansManager)
УдалитьРегистрациюИзменений (DeleteChangeRecords)
Синтаксис:
Удаляет записи регистрации изменений одного или группы элементов данных для одного или нескольких узлов планов обмена.
Сервер, толстый клиент, внешнее соединение.
Пример:
Спасибо с этим все понятно.
Узел - Как получить перечень всех узлов в которых регистрируются изменения объекта?
Можно попробовать например так:
Для Каждого УзелОбмена Из ПланыОбмена.ОбменДанными Цикл
// необходимые действия для УзелОбмена
КонецЦикла
Что не так? Пишет первый параметр не того типа.
Первая проблема решена удалением пустых узлов из списка.
Новая проблема во втором параметре, так же пишет недопустимй тип параметра, хотя там храниться ссылка на документ.
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Док); Недопустимое значение параметра (параметр номер '2')
Первая проблема решена удалением пустых узлов из списка.
Новая проблема во втором параметре, так же пишет недопустимй тип параметра, хотя там храниться ссылка на документ.
Пока Результат.Следующий() Цикл
Док = Результат.Ссылка.ПолучитьОбъект();
Док.Переоценка = Истина;
Док.Записать(РежимЗаписиДокумента.Запись);
Для Каждого Узел Из СписокУзлов Цикл
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Док);
Сообщить(Док + " - удалены изменения в узле: " + Узел.Значение);
КонецЦикла;
Состояние("Обрабатываемый документ: " + Док.Ссылка);
КонецЦикла;
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Док); Недопустимое значение параметра (параметр номер '2')
(11) deniseek77, Спс, но дело не в этом.
Дело в том что должен быть указан объект регистрируемый в проверяемом плане обмена. Поэтому нужно взять только те узлы для которых пишутся изменения объекта.
Как определить перечень узлов для объекта?
(12) Попробуй отмену регистрации "обернуть" в "Попытку Исключение КонецПопытки". Для тех документов, для которых есть регистрация отмена отработает, а для остальных и не надо. Однако, это сработает, если нет других косяков в алгоритме.
Кому интиресно реализовал так:
ИзмененныеОбъект.ОбменДанными.Получатели.Автозаполнение = Ложь;
ИзмененныеОбъект.ОбменДанными.Получатели.Очисить();
Не правильно тут бутерброды кушают! Нужно маслом к низу! (При изменении объекта нужно ДокументОбъект.ОбменДанными.Загрузка = Истина)
"ДокументОбъект.ОбменДанными.Загрузка = Истина" не влияет на регистрацию изменений в планах обмена.
Отключить регистрацию записываемого объекта правильно:
1) В событии ПередЗаписью
(ну и на всякий случай почистить получателей)
ПС Приведенные выше(не мной) варианты удалят регистрацию данного объекта в планах обмена даже если эта регистрация была выполнена ранее и изменения объекта были критичны для узла приемника этих данных. К тому же в моем варианте это будет работать быстрее, так как исключится запись изменений для ПО и последующее удаление этих записей (еще и с выборкой и перебором узлов в которых зарегистрировался объект)
Определяем модифицированность объекта на сервере.
Задача для примера:
При записи документа "Заказ клиента", если у него при редактировании изменилось значение реквизита "Пометка удаления", нужно выполнить какой-то программный алгоритм. Если значение не изменилось, то алгоритм выполнять не нужно. В общем, цель – определить, изменилось ли значение реквизита "Пометка удаления" перед тем, как документ будет записан.
У управляемой формы есть свойство Модифицированность . Но в данном случае оно вряд ли пригодится, так как пометка удаления может устанавливаться не из формы документа. Дальше приходит на ум использовать метод объекта метаданых "ДокументОбъект" Модифицированность () . Однако в отладчике видно, что даже если ничего не менять в документе, то при записи метод Модифицированность () всё равно принимает значение Истина .
Но выход есть. Отследить и обработать изменение реквизита "Пометка удаления" можно с помощью метода ДополнительныеСвойства . Для этого нам понадобится внести небольшие дополнения в процедуры модуля объекта документа.
В процедуре ПередЗаписью () мы сравниваем значение реквизита "Пометка удаления" редактируемого документа с значением, которое записано в базе. Если значения не равны, то записываем признак изменённости в дополнительные свойства, и далее используем его в процедуре ПриЗаписи () :
Комментарии
В своей статье Вы предлагаете не использовать свойство и/или метод 1C Модифицированность, а просто запоминаете тот реквизит или значение, которое Вам нужно проверить, а если надо проверить все реквизиты? Не перечислять же из все для запоминания старых значений?
//В модуле формы объекта:
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Экспорт
ТекущийОбъект.ДополнительныеСвойства.Вставить("Модифицированность", ЭтаФорма.Модифицированность);
КонецПроцедуры
В своей статье Вы предлагаете не использовать свойство и/или метод 1C Модифицированность, а просто запоминаете тот реквизит или значение, которое Вам нужно проверить, а если надо проверить все реквизиты? Не перечислять же из все для запоминания старых значений?
В чем суть этого оператора? В ходе выполнения программы часто могут возникать ошибки, такие как деление на ноль, корень из отрицательного числа и прочие. Эти ошибки приводят к «крушению» программы – это значит, что программа прекратит свою работу и ни какие операторы после ошибки выполняться не будут. Чтобы обойти исключительную ситуацию и продолжить выполнение программы, в языке программирования 1С существует оператор Попытка…Исключение.
Рассмотрим его синтаксис.
Попытка
//операторы попытки
Исключение
//операторы исключения.
КонецПопытки
Разберем этот синтаксис.
Ключевое слово Попытка открывает список операторов, выполнение которых может привести к исключительной ситуации, все операторы между ключевыми словами Попытка и Исключение это Операторы попытки.
Ключевое слово Исключение открывает список операторов, которые будут выполняться в том случае, если вызвана исключительная ситуация операторами попытки. Т.е. если во время выполнения программы один из операторов попытки вызвал ошибку выполнения программы (исключительную ситуацию), то выполнение данного оператора прерывается и управление передается на первый Оператор исключения. Причем обращаю Ваше внимание, что управление будет передано и в том случае, если исключительную ситуацию вызвали функции и процедуры, разработанные программистом и применяемые в качестве операторов попытки. Естественно, что если ошибка произошла в процедуре или функции, то ее выполнение будет прервано.
Описание ошибки в 1С
В коде выше я использовал собственное выражение для описания ошибки, но можно использовать метод ОписаниеОшибки(), который возвращается описание ошибки с точки зрения разработчиков платформы 1С. Это функция, которая возвращает текст с описанием ошибки. Например, код выше можно переделать так:
Тогда, при выполнении выйдет «стандартизированное» описание ошибки.
Оператор ВызватьИсключение в 1С
Оператор ВызватьИсключение можно использовать отдельно для «эмуляции» вызова исключение. Например, при выполнении этой команды формы:
Будет вызвано исключение.
Причём, в открывавшемся окне можно посмотреть место в коде, где было вызвано исключение.
Попытка внутри попытки в 1С
В платформе 1С 8.3 можно один оператор попытки разместить в другом операторе. Например, на управляемой форме обработки разместим несколько реквизитов с типом Число.
И по команде с формы попытаемся вычислить корень из каждого реквизита, при этом сделаем это в двух вложенных операторах попытки.
И результат работы этой обработки:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Планы обмена в 1С 8.3 — объект метаданных конфигурации, служащий для реализации синхронизации данных в системе 1С 8.
План обмена можно сравнить со справочником, где элементы — это узлы информационных баз. Однако в работе с планами обмена имеется множество нюансов, о них мы поговорим ниже.
Обычно обмен в 1С построен с использованием специальных правил обмена, которые формируются с помощью конфигурации Конвертация данных.
Настройки и свойства планов обмена в 1С
Как ранее было замечено, план обмена очень похож на обычный справочник в 1С, и поэтому мы рассмотрим только главные отличия обмена.
Как работать с планом обмена
Получите 267 видеоуроков по 1С бесплатно:
Распределенная информационная база
Если этот флаг установлен в настройках, то данный план обмена является распределенной информационной базой (РИБ).
Распределенная информационная база — территориально распределенная система на основе одинаковой конфигурации 1С 8.3. РИБ помимо изменений данных умеет передавать и изменений конфигурации, что очень удобно, например, при обновлении релиза конфигурации.
Состав плана обмена
Настройка, с помощью которой разработчик управляет набором объектов для обмена:
В составе плана обмена может быть 3 состояния объекта:
- Не включен в план обмена — соответственно, никаким образом для такого объекта Вы не сможете настроить обмен данными по этому плану обмена.
- Авторегистрация Запретить — это значит, что регистрировать изменения для данного узла необходимо только программным кодом по какому-то условию, как правило, подпиской на событие «При Записи». Используется метод ПланыОбмена.ЗарегистрироватьИзменения().
- Авторегистрация Разрешить — если установлена данная галка, то любые изменения элемента автоматически попадут в список изменений плана обмена.
Планы обмена и производительность 1С
Из-за системных особенностей реализации планов обмена не рекомендуется злоупотреблять выгрузкой изменений по планам обмена. Дело в том, что при чтении изменений блокируются все таблицы изменений. Т.е. при выгрузке план обмена не дает записать новые изменений, а следовательно, блокирует и сами элементы — справочники, документы и т.д.
Выгрузку рекомендуется производить в нерабочее время или совсем маленькими партиями данных, чтобы блокировки были на максимально короткий срок.
Другие статьи по 1С:
Видеолекции по технологии обмена в 1С 8.2:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
В платформе 1С:Предприятие 8.х реализовано два механизма обмена данными: универсальный механизм обмена данными и механизм распределенной информационной базы. Оба эти механизма базируются на одних тех же технологиях. Одной из этих технологий является служба регистрации изменений данных.
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить признак Авторегистрация в значение Разрешить.
Однако часто требуется регистрация не каждого изменения данных, или регистрация изменений смежных объектов, или зависящих от изменяемых данных. Это можно выполнить различными способами.
Для регистрации изменений всех данных для конкретного узла плана обмена необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные значение Неопределено.
Для регистрации изменений данных одного типа необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные объект описания метаданных, соответствующий данным.
Пример: регистрация изменения всех элементов справочника Номенклатура для узла Узел:
Код 1C v 8.х
Для регистрации конкретных данных различных типов необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сами данные, либо ссылку на них.
К объектным типам относятся справочники, документы, планы счетов, планы видов характеристик, планы расчета, бизнес-процессы, задачи. Для их регистрации необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сам объект, либо ссылку на него.
К таким регистрам относятся регистры накопления, регистры бухгалтерии, регистры расчета и регистры сведений со свойством РежимЗаписи, установленным в значение ПодчинениеРегистратору. Для регистрации изменений наборов записей указанных регистров необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
К таким регистрам относятся регистры сведений со свойством РежимЗаписи, установленным в значение Независимый. Для регистрации изменений наборов записей данного регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора, при этом, должен строго соответствовать основному отбору регистра. Выбирать поля, входящие в основной отбор регистра необходимо в соответствии с логикой работы конфигурации (см. Подготовка конфигурации к работе в распределенной информационной базе).
Для регистрации данных регистра сведений, отбираемых по некоторому критерию, необходимо:
выбрать уникальные значения измерений регистра, входящих в основной отбор (если регистр сведений является периодическим и Период включен в основной отбор, то Период также должен участвовать в отборе)
выполнить регистрацию наборов записей с установленными значениями отбора, соответствующими каждой выбранной комбинации значений измерений (входящих в основной отбор).
- константа;
- справочник;
- документ;
- план счетов;
- план видов характеристик;
- план видов расчета;
- бизнес процесс;
- задача.
А так же для наборов записей:
- регистра сведений;
- регистра бухгалтерии;
- регистра накопления;
- регистра расчета;
- перерасчета.
Каждое изменение регистрируется в специальных служебных таблицах, в названии которых в конце есть слово Изменения, например, таблица изменений для справочника контрагентов будет называться Контрагенты.Изменения.
Структура таблицы изменений подобна для всех объектов:
Запись в таблице изменений проходит следующие преобразования:
Как сделать запрос к таблице изменений
Таблицы изменений по умолчанию не видны в конструкторе запросов. Но их можно вывести с помощью кнопки Отображать таблицы изменений.
Пример запроса к таблице изменений:
Как зарегистрировать изменение объекта в 1С
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить для свойства Авторегистрация значение Разрешить.
Для того чтобы зарегистрироваться изменения вручную, программно у менеджера планов обмена существует функция ЗарегистрироватьИзменения() . Функция имеет два параметра:
Как зарегистрировать все изменения для узла
Для того, чтобы зарегистрировать все изменения для конкретного узла, нужно в первом параметре передать ссылку на узел, а во втором — значение Неопределено.
Как зарегистрировать все изменения объектов определенного типа
Для того, чтобы зарегистрировать изменения объектов определенного типа, нужно в первом параметре передать ссылку на узел, а во втором — объект описания метаданных.
Как зарегистрировать все изменения конкретных объектов
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для регистрации изменений наборов записей регистров, подчиненных регистратору необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
Для регистрации изменений наборов записей независимого регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора, при этом, должен строго соответствовать основному отбору регистра.
Набор = РегистрыСведений . КомплектующиеНоменклатуры . СоздатьНаборЗаписей ( ) ;
Набор . Отбор . Номенклатура . Значение = Номенклатура ;
Набор . Отбор . Номенклатура . Использование = Истина ;
Набор . Отбор . ХарактеристикаНоменклатуры . Значение = ХарактеристикаНоменклатуры ;
Набор . Отбор . ХарактеристикаНоменклатуры . Использование = Истина ;
ПланыОбмена . ЗарегистрироватьИзменения ( Узел , Набор ) ;
Как удалить регистрацию изменений
Как удалить регистрацию изменений полностью
Читайте также: