Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Обработка ошибочных ситуаций во встроенном языке системы 1С:Предприятие 7.7

Тип Реферат
Предмет Информатика и программирование
Просмотров
1246
Размер файла
19 б
Поделиться

Ознакомительный фрагмент работы:

Обработка ошибочных ситуаций во встроенном языке системы 1С:Предприятие 7.7

Обработка ошибочных ситуаций во встроенном языке системы 1С:Предприятие 7.7

Во встроенный язык системы 1С:Предприятие 7.7 внесена возможность обработки ошибочных ситуаций. В предыдущих версиях системы 1С:Предприятие любая ошибка, происшедшая при выполнении модулей встроенного языка приводила к завершению выполнения модуля и выдаче в окно сообщений информации о характере ошибки и модуле, в котором она произошла. При этом разработчик конфигурации не имел возможности вмешаться в процесс обработки ошибочной ситуации и предусмотреть некоторые действия, которые могут нейтрализовать последствия ошибки и позволить продолжить выполнение модуля. Особенно неприятны ситуации, когда из-за несущественных поводов прекращается выполнение длительных процедур, после чего их приходилось начинать сначала. Примером такой ситуации может послужить обработка, выполняющая обход и обновление некоторого реквизита большого числа элементов справочника в случае, если в процессе работы будет произведена попытка обновить реквизит заблокированный другим пользователем. Неприятны также ситуации, когда конфигурации, использующие внешние по отношению к системе 1С:Предприятие программные средства через механизмы OLE Automation не могли произвести проверку наличия установленных на компьютере пользователя необходимых программных средств. Примером для такого случая может послужить поведение отчета, выводящего результаты через OLE Automation в таблицу MS Excel, в условиях, когда MS Excel на компьютере пользователя отсутствует.

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

Попытка

// Некоторые действия

Исключение

// Обработка исключительной (ошибочной) ситуации)

КонецПопытки

Суть в следующем: если при выполнении последовательности операторов <// Некоторые действия> происходит ошибка, то выполнение оператора прекращается и управление передается на первый оператор последовательности <// Обработка исключительной (ошибочной) ситуации)>. После завершения выполнения данной последовательности управление получает первый оператор, следующий за КонецПопытки. В случае, если при выполнении <// Некоторые действия> ошибок не произошло, то управление, минуя <// Обработка исключительной (ошибочной) ситуации)> также попадает на первый оператор, следующий за КонецПопытки. Конструкции Попытка…Иключение…КонецПопытки могут быть вложенными, при этом для передачи управления из более внутреннего обработчика исключительной ситуации в более внешний служит оператор ВызватьИсключение. В случае, если оператор ВызватьИсключение будет выполнен в самом внешнем обработчике ошибки, то выполнение модуля будет прекращено и сообщение об ошибке будет выдано в окно сообщений, как и в случае полного отсутствия обработчиков ошибок. Для получения текста описания ошибки внутри последовательности операторов <// Обработка исключительной (ошибочной) ситуации)> служит встроенная функция ОписаниеОшибки(). Более подробно о механизме обработки исключительных ситуаций можно прочитать в книге "1С:Предприятие 7.7. Описание встроенного языка. Часть 1.".

В методической конфигурации приводится обработка ПересчетЦен, модуль которой содержит пример обработки ошибочной ситуации. Данная обработка изменяет значение реквизита Цена для всех элементов справочника Товары путем умножения на вводимый пользователем коэффициент. Предполагается, что справочник Товары может содержать несколько тысяч элементов. При этом значения реквизита для всех элементов должны быть изменены согласованно, не прерывая работы других пользователей. Для обеспечения согласованности изменения реквизитов всех элементов справочника все изменения выполняются в рамках одной транзакции.

Если в процессе записи какого-либо элемента справочника Товары произойдет ошибка, то управление будет передано в блок обработки исключительных ситуаций. Пользователю будет выдано сообщение об ошибке и запрос на повторение попытки записи элемента справочника. Если пользователь, выберет вариант "Да", то попытка записи будет повторена, а если нет, то все сделанные изменения в справочнике будут отменены и выполнение процедуры будет прекращено.

Блокировка объектов базы данных

В данном разделе рассматриваются различные стратегии и логика механизмов блокировок базы данных системы 1С:Предприятие 7.7, используемых для обеспечения многопользовательского режима работы. Как известно, все варианты системы 1С:Предприятие 7.7 способны работать с базами данных в формате .DBF/.CDX. Кроме того, имеются варианты поставки - 1С:Предприятие 7.7 для SQL, способные работать с базами данных, размещаемыми в среде серверов баз данных Microsoft SQL Server 6.5/7.0. Естественно, что для этих двух форматов баз данных используются совершенно разные механизмы доступа к данным. Но при этом логика работы с базой данных в общем остается неизменной. Соответственно, все, о чем будет рассказано в данном разделе является справедливым для обоих возможных форматов построения баз данных системы 1С:Предприятие 7.7.

Блокировки, осуществляемые в базе данных системы 1С:Предприятие 7.7 можно разделить на две группы:

Табличные (транзакционные) блокировки

Блокировки отдельных объектов базы данных

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

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

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

Установка табличных блокировок выполняются с таймаутом. Это означает, что в случае неудачной попытки установить блокировку таблицы сразу, попытки будут повторяться в течение некоторого интервала времени. Этот интервал может устанавливаться пользователем с помощью параметра "Время ожидания захвата таблиц Базы Данных", который доступен через диалог установки параметров системы 1С:Предприятие (пункт меню <Сервис/Параметры>, страница диалога <Общие>).

Блокировки отдельных объектов базы данных предназначены для обеспечения корректного взаимодействия между несколькими экземплярами системы 1С:Предприятие при изменении таких объектов как константа, элемент справочника, документ, счет бухгалтерского учета и т. п. Блокировки отдельных объектов бывают двух видов:

"Пессимистические"

"Оптимистические"

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

В более ранних чем 7.7 версиях системы 1С:Предприятие механизм "пессимистических" блокировок использовался только при редактировании тех или иных объектов базы данных и никак не мог быть задействован из встроенного языка. В версии 7.7 введена возможность явной блокировки объектов из встроенного языка. Данная возможность доступна только для объектов, создаваемых посредством обращения к функции СоздатьОбъект . Соответственно, таким способом могут быть заблокированы такие объекты базы данных как элементы справочника, счета бухгалтерского учета и документы. Блокировка отдельных объектов осуществляется с помощью обращения к методу Блокировка(<ВклВыкл>). Необязательный параметр <ВклВыкл> обозначает действие, которое надо выполнить: 1 - заблокировать объект базы данных, 0 - разблокировать. Метод возвращает значение, показывающее результат выполнения операции: 1 - операция выполнена

успешно, 0 - операция не выполнена. Если параметр при обращении к методу не задан, то возвращается текущий статус блокировки объекта базы данных: 1 - заблокирован, 0 - "свободен". Следует понимать, что имеется в виду статус блокировки, установленной этим же объектом типа справочник, документ или счет, а не каким-либо другим объектом или другим экземпляром системы 1С:Предприятие. Примером использования метода Блокировка может послужить следующий фрагмент модуля:

Спр = СоздатьОбъект("Справочник.Товары");

Спр.ВыбратьЭлементы();

Пока Спр.ПолучитьЭлемент() = 1 Цикл

Пока Спр. Спр.Блокировка(1) = 0 Цикл

Если Вопрос("Элемент справочника заблокирован! Повторить попытку?",

"Да+Нет") = "Нет" Тогда

Возврат;

КонецЕсли;

КонецЦикла;

// Модифицируем реквизиты элемента справочника

Спр.Записать(); // Записываем измененный элемент справочника

КонецЦикла;

Следует обратить внимание, что после записи модифицированного элемента справочника не производится снятия блокировки в явном виде. В этом нет необходимости, так как блокировка автоматически снимается при переходе к следующему элементу с помощью метода ПолучитьЭлемент().

Механизм "оптимистических" блокировок предназначен для обеспечения непротиворечивости модификации объектов базы данных. Работают "оптимистические" блокировки полностью автоматически. Отличие "оптимистических" блокировок от "пессимистических" можно пояснить на примере. Предположим имеется задача модификации справочника Товары (например, пересчет цен). Для выполнения этой задачи может использоваться одна из двух имеющихся специальных обработок. Каждая из них последовательно обходит элементы справочника и модифицирует их. Однако первая, подобно тому, как это было показано в приведенном выше примере перед модификацией блокирует элемент справочника, а вторая такой блокировки не производит.

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

Действия Экземпляра 1

Действия Экземпляра 2

Результат

ПолучитьЭлемент()

ОК

ПолучитьЭлемент()

ОК

Блокировка(1)

Записать()

Ошибка!

Записать()

ОК

Из приведенной таблицы видно, что Экземпляр 2 не смог произвести запись элемента справочника, заблокированного Экземпляром 1. Сработал механизм "пессимистической" блокировки. Аналогично, если бы оба экземпляра системы 1С:Предприятие пользовались первым вариантом обработки, то Экземпляр 2 не смог бы заблокировать элемент справочника.

А теперь представим, что оба экземпляра системы 1С:Предприятие пользуются вторым вариантом обработки. Тогда "встреча" на одном и том же элементе справочника может пройти следующим образом:

Действия Экземпляра 1

Действия Экземпляра 2

Результат

ПолучитьЭлемент()

ОК

ПолучитьЭлемент()

ОК

Записать()

Ошибка!

Записать()

ОК

Ошибка, которая происходит при записи элемента справочника Экземпляром 2 и является следствием работы механизма "оптимистических" блокировок. Как было упомянуто выше, задачей механизма "оптимистических" блокировок является обеспечение непротиворечивости модификации объектов базы данных. В данном же случае имеет место следующее. Экземпляр 2 считал элемент справочника и приступил к его модификации. В это время Экземпляр 1 успел считать, модифицировать и записать этот же элемент справочника. Когда Экземпляр 2 приступил к выполнению операции записи, значения реквизитов элемента справочника уже отличались от тех, которые были считаны перед модификацией. И в данной ситуации запись элемента справочника может привести к некорректным результатам, так как в общем случае, модификация реквизитов может производиться исходя из их предшествующего состояния, которое оказалось изменившимся.

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


Нет нужной работы в каталоге?

Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно