Последнее обновление: 23 мая 2015 в 14:58
Подпишись на RSS
rss Подпишитесь на RSS, чтобы всегда быть в курсе событий.
11 декабря 2009 · Железки

Я уже писал статью о том, как можно установить и настроить комплекты спутникого телевидения. В продолжении этой статьи решил написать более конкретно об установке комплекта Триколор, а так же подкрепить написанное видео, в котором рассказано и показано о том как собрать антенну Триколор, как закрепить антенну, а так же как настроить антенну комплекта спутникового телевидения […]


Часто на компьютерах выскакивает такая ошибка, после чего перестает работать звук, либо интернет, лово и звук и интернет.


Метки

Метки записей
Zver DVD свертка торговли Свертка по партиям Командная строка перенумарация уменьшить размер базы Новая форма счет-Фактуры свертка 1с и MySQL Свертка базы 1С ZverCD СМС переустановка windows сайт Оптимизация печать от поставщика Фото Мужчина и женщина 1с реестр Альпинизм Документы на почту jaws Asus Eee XPE Интерент LiveCD Dr.Web антивирусы Система Добавить новую метку Интренет мошенничество программы для слепых Обработки Экстремальные игры гаджеты Отношения вирус эмулирует нажатие Win Армия Ошибки 1С Драйвера Методика свертки 1С автозапуск связь восстановить нумерацию автоматизация свертка в картинках реестр Обзоры Отчет Пошаговая свертка Oracle День жестянщика Взлом 1 редактирование DBF дравер MySQL скачать удаляем пароли заблокирован Оборудование Спорт сверка базы 1С Жизнь Делаем LiveCD сертфикаты вирус Интернет Анализ ПДЗ Программы просроченная дебиторская задолженность Бухгалтерия Windows XP Drivers пакетный запуск 1С Структура 1С перенос документов Взлом Драйвер ODBC скачать узнать пароль взломать пароль расчет ПЗД портативный аккумулятор Деньги Вопросы новости Программы для 1С Спутниковое ТВ Сайты Кино office 2007 Отзывы Проблемы Установка Windows Интересные места Вирусы Лирика Игры Печатные формы открыть xlsx docx Работа office 2003 HP Pavilion dv6000 Видео партии Юмор сбились номера документов homachi локальная сеть через интернет Свертка 1С Вся антивирус бесплатно контент-провайдер Скачать 1С Экономика СМС оплата Загрузка с компакт - диска удаление документов Подключить 1С к MySQL скачать конвертер office 2003-2007 Взлом 1С Автомобили Файлы 1С вирус SMS Удаление партий код защита Финансы
24 февраля 2010

Что такое транзакция и для чего она нужна.

Автор статьи: , 24 февраля 2010 в рубрике . Метки: , . Просмотров: 18 905

Транзакции в 1С

На днях ковырялся в базе, пользователи которой жаловались на проблему «Ожидание захвата таблицы Журналы для начала транзакции«. Конечно такая проблема возникает, когда документ долго проводится. Но в моем случае в обработку проведения была дописана

logo Что такое транзакция и для чего она нужна.

Некоторые начинающие программисты не понимают что такое транзакции и как ими пользоваться. Недавно ковырялся в чужом коде и увидел, что в обработке проведения добавлен код:

Если глПользователь.Полномочия.ПроведениеБезПроверок = 0 Тогда
КолДнейОтсрочки = Контрагент.ОсновнойДоговор.ГлубинаКредита;
ДатаПросрочки = ДатаДок — КолДнейОтсрочки;
Просрочка = ПросроченныйДолгКлиента(Контрагент,ДатаПросрочки);
Если Просрочка > 0 Тогда
Если Вопрос(«Просроченный долг клиента «+ Просрочка + » Продолжить проведение?»,4,0) = 7 Тогда
глНеПроводить(Контекст,»Документ «»»+ глНазваниеДокументаВЖурнале(Контекст)+»»» Просрочка»);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru

Ключевой строкой здесь является:

Если Вопрос(«Просроченный долг клиента «+ Просрочка + » Продолжить проведение?»,4,0) = 7 Тогда

То есть при проведении документа на экран выскакивает вопрос и требует ответа оператора.

Дело в том, что при проведении документа блокируется доступ к записи в регистры. Делается это например для того, чтобы дважды не продать один и тот же товар (это как пример на пальцах). И пока у одного оператора висит этот вопрос никто не может провести документы, в строке состояния выводится Ожидание захвата таблицы Журналы для начала транзакции. Так вот, если оператор поставил документ на проведение и ушел курить, то в это время никто не может провести документы.

Что такое транзакция.

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

Чтоб было понятно отвлечемся от 1С и рассмотрим более понятный пример. Денежный банковский перевод. Сам перевод часто называют транзакцией. Сам я не знаю как работают банковские переводы, но подозреваю, что примерно состоят они из нескольких операций:

1. Первый сервер отправляет перевод.

2. Второй сервер получает перевод.

3. Второй сервер отправляет первому сообщение о получении перевода

4. Первый сервер получает сообщение о том. что второй принял перевод.

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

В 1С примерно так же. Для реализации транзакций в 1С есть несколько процедур, а именно:

НачатьТранзакцию() — начало списка операций.

ЗафиксироватьТранзакцию() — Завершение списка операций. Все что содержится в теле НачатьТранзакцию() и ЗафиксироватьТранзакцию() будет сохранено.

Отменить Транзакцию() — Не сохранит то, что написано в НачатьТранзакцию(); …. ЗафиксироватьТранзакцию();

Для чего нужна транзакция.

Применяются эти процедуры, когда надо сделать несколько действий, но при каких-то исключительных случаях необходимо «откатить» выполняемые действия. Для примера не долго думая взял код из обработки ЗакрытиеКассовойСмены:

НачатьТранзакцию();
Если НЕ((ВыбКасса.РежимККМ = Перечисление.РежимыККМ.ФР) и (СписокЧеков.РазмерСписка() = 0)) Тогда
// Теперь создадим новый документ ОтчетККМ
ДокОКС = СоздатьОбъект(«Документ.ОтчетККМ»);
ДокОКС.Новый();
глЗаполнитьШапку(ДокОКС, 0);
ОткрыватьФорму = 1;
ДокОКС.ДатаДок = ВыбДата;
ДокОКС.Фирма   = ВыбФирма;
ДокОКС.Склад   = ВыбСклад;
ДокОКС.Валюта  = глРубли;

Бла — бла — бла

Попытка
ДокЧеки.СделатьНеПроведенным();
Исключение
ОтменитьТранзакцию();
Предупреждение(ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецЕсли;

Ббла — бла — бла

ЗафиксироватьТранзакцию();
Бла-бла-бла

Ну вот как-то так )))

ЗЫ. Крайне не рекомендуется внетри тела транзакции применять операторы типа Вопрос(), Предупреждение(), которые ожидают решения оператора.




К записи "Что такое транзакция и для чего она нужна." 6 комментариев

как ужасно все-такм читать код 1С — наверное буржуям также жутко читать код на «английских» языках программирования.

зы, насчет примера. а если сбой произошел на 4ом этапе или позже, то как второй сервер откатит транзакцию? он же средства уже принял и (например) зачислил на счет клиента.

Ответить

Ничего, когда привыкнешь к коду 1С — все вполне понятно, тем более все ра русском))) Кстати есть и латинский вариант встроенного языка 1С, например Если Тогда Иначе КонецЕсли — If Then Else EndIf.
Как то видел как на 1с пишет программист Delphi. именно по английски — ему так понятнее.

Насчет примера — я не знаю как точно работает банковская система — я прост опредположил. Наверняка там не 4 пункта, а больше и все возможные варианты отрабатываются…

Ответить

Здравствуйте!у нас заблокировался контакт,и для того чтоб его разблокировать нужно было положить 100 рублей на определённый номер и ввести код транзакции.Подскажите пожалуйста где он находится,и не обман ли это! Заранее огромное спасибо!

Ответить

for: батон2й сервер ожидает ответа от 1го о том что тот ответ принял и только тогда закрывает операцию успешно.А насчет УЖАСНОГО кода. «БУРЖУИ» всегда читали код на английском и они видимо УЖАСНО горды за то что весь мир читает код на их языке.  Ну и ты видимо вместе с ними.

Ответить

Евгений, давайте разберемся поподробнее. «2й сервер ожидает ответа от 1го о том что тот ответ принял и только тогда закрывает операцию успешно» — т.е. это оповещение об успешно принятом оповещении. а если 1й отправил ответ успешно, закрыл транзакцию, а 2й сервер не получил этого второго оповещения — получится что 1й сервер закроет транзакцию, а второй нет. нарушаются как минимум 2 требования ACID. Сколько бы оповещений не было один сервер может отправить ответ успешно, а другой может его не получить. Насчет буржуев. мне действительно неудобно читать код на русском, код на англ представляется мне намного читабельнее. общался со многими буржуями, не заметил никакой гордости у них. да и не понимаю чем тут гордиться можно.

Ответить

Да что вы привязались к этому переводу. Написали же что это пример. Так сказать объяснение на пальцах. «Сам я не знаю как работают банковские переводы, но подозреваю, что примерно состоят они из нескольких операций:»

Ответить


Оставить комментарий

*

Блог программиста 1С. Программирование 1С
Если Вас что-то заинтересовало или возникли вопросы, пишите.
petr@evseev.ru
Skype - evseev_petr
ICQ - 262808698

Сохраните меня в социальных сервисах

Комментарии

Присоединяйтесь к обсуждению
  • Леха: Мало того, что это говно-антивирус требует .Net Framework не ниже 4.0, так он еще пожирает ресурсы компьютера,...
  • tommy: AVG равно еще хуже Касперского . Иди в жопу с ним
  • просто_чайник: Не люблю этот антивирус. Заметил такую особенность. Если обновить базы в начале работы, довольно часто...
  • Елена: Самое главное. Файл для совместной работы открыть нельзя! Если надо что-то отредактировать — только...
  • Виктор: Поставили мне на работе эту замечательную программку. Работать невозможно, ужасные тормоза. Стали...

Избранное видео

Ссылки