Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамСоздание и изменение объект…

1С:Предприятие 8.2 /
Разработчикам /
Создание и изменение объектов метаданных

Оглавление

Проверки, выполняемые в и вне транзакции записи объекта

2.1. Проверки в обработчике ОбработкаПроверкиЗаполнения выполняются вне транзакции записи объекта. Поскольку в случае некорректного заполнения объекта выполнение операции будет прервано еще до записи объекта в базу данных, то размещение проверок в этом обработчике является наиболее эффективным.

При выполнении внетранзакционных проверок в обработчике ОбработкаПроверкиЗаполнения необходимо учитывать тот факт, что новое состояние объекта еще не записано. Если требуется выполнить запрос к тем или иным данным системы, например, прочитать признак ВидНоменклатуры для товаров, выбранных в табличной части документа, "отталкиваясь" от данных документа, то такую поверку можно выполнить, применяя сохранение необходимых для запроса данных во временные таблицы.

2.2. В то же время, в обработчике ОбработкаПроверкиЗаполнения не следует размещать проверки, которые должны гарантировать целостное состояние объекта или зависящих от него данных (например, движений) на которые рассчитывает система. Поэтому для реквизитов, некорректные значения которых могут привести к рассогласованности данных в информационной базе, проверку корректности следует выполнять в обработчиках событий, возникающих в транзакции записи - ПередЗаписью, ПриЗаписи, ОбработкаПроведения (для документов).

Для транзакционных проверок, в свою очередь, выделяются два случая:

  1. Проверка состояния движений, формируемых документами оперативного учета. Такие проверки довольно часто встречаются в приложениях с оперативным учетом.
  2. Проверка состояния других объектов информационной базы, ссылки на которых содержатся в текущем объекте. Такие проверки следует применять очень редко. Не следует злоупотреблять количеством проверок в транзакции записи объекта. Следует помнить, что внутри транзакции записи имеет смысл выполнять только проверки таких ресурсов или таких правил соответствия объектов друг другу, которые не изменяются без проверок всеми участниками процесса.

В первом случае, проверку остатков некоторого ресурса имеет смысл выполнять в транзакции записи только в том случае, если все документы выполняют такую же проверку в транзакции записи. Если хоть один из документов, изменяющих ресурс, делает это без проверок, выполнение проверок другими участниками процесса бессмысленно и такие проверки необходимо выполнять вне транзакции. Исключением может быть только случай, когда документ, который выполняет изменение контролируемого ресурса без проверок, вводится крайне редко. Например, не смотря на то, что документ " Инвентаризация товаров " изменяет остатки товаров без проверок, эта ситуация допустима в виду того, что он вводится крайне редко. Каждое такое исключение из правила должно быть оправданным.

Во втором случае, если при записи Подразделения в транзакции записи выполняется проверка, что сотрудник, выбранный в качестве руководителя подразделения , имеет должность "Руководитель", то при записи Сотрудника также должна выполняться и "встречная" проверка этого же правила: нельзя записать Сотрудника с должностью отличной от "Руководитель", если он указан руководителем того или иного подразделения . Поскольку правило, что "Сотрудник", выбранный руководителем подразделения, должен иметь должность "Руководитель", может быть нарушено как при записи подразделения, так и при записи сотрудника, то и проверка должна выполняться или в транзакции записи обоих объектов, или вне транзакции записи обоих объектов (а может и не выполняться вообще).


Нас находят: xnj jpyfxftn d lfyyjq nhfypfrwbb e;t ghjbc[jlbkb jib rb, выполнять в транзакции, в данной транзакции уже происходили ошибки 1с 8 2, {ОбщийМодуль РаботаСОбщимиПеременнымиПовтИсп Модуль(84)}: Ошибка при вызове метода контекста (Получить) Возврат Константы[ИмяПараметраВР] Получить(); по причине: В данной транзакции уже происходили, что такое вне транзакции в 1с8, транзакция 1с 8 2 не может выполнена, при проведение вне транзакции остаются движения, номер транзакции 1С8, можно ли проверить есть ли транзакция 1с, можно ли в транзакции при записи установить реквизит объекта 1с


Подписка на новости RSS

Мы на Facebook