1с оперативное проведение. Проведение документа. Зачем нужны управляемые блокировки

(no title)

1с оперативное проведение. Проведение документа. Зачем нужны управляемые блокировки

about1c

Решил написать сегодня о таких известных вещах, как режимы проведения документов. Возможно текст будет кому-то полезен.Если время будет позволять, то и дальше буду выкладывать подобные мини-статейки, которые будут касаться в основном УПП, т.к.

я его сейчас время от времени “ковыряю” :)Итак, режимы проведения документов в УПП.Я их условно разделю на две группы:1. Оперативное/неоперативное2. Отложенное проведение (оно же допроведение)

1. Оперативное/неоперативное проведение.

Если кратко, то документ, который проводится текущей датой – проводится оперативно. Документ, который проводится в текущей дате, но задним числом, проводится неопреративно.

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

Если выбрать неоперативный вариант проведения документа, то его момент времени на временной оси не изменится, иначе документ будет перемещен на новый (текущий) момент времени.Только при оперативном проведении выполняется проверка возможности проведения документа, т.е.

при оперативном проведении выполняются все возможные проверки тех или иных условий, при которых документ должен быть проведен, либо наоборот, не может быть проведен. И здесь есть лазейка для хитрых пользователей, которые не оперативно перепроводят когда-то проведенные оперативно документы.

Контроль возможности проведения не выполняется – делай что хочешь. 🙂 Имхо, всевозможные восстановления последовательностей появились именно благодаря возможности неоперативного проведения документов.

2. Отложенное проведение (допроведение)

Причина возникновения такого явления, как допроведение документов – проблема блокировок. Документ в момент проведения делает записи как минимум в один регистр (иначе смысл его проводить?). В момент проведения выполняется блокировка таблицы регистра. Блокировки бывают разных видов и они безусловно необходимы, т.к.

позволяют исключить большинство коллизий при записи и считывании информации из базы данных. Но чем больше блокировок, тем медленнее выполняется проведение. Т.е. страдает производительность системы.

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

Формируются записи только по тем регистрам, без которых, как говорится, «никак не обойтись». Минимально необходимый набор. Это в основном регистры управленческого и оперативного учета. Полное проведение делается позже, при помощи регламентных заданий в момент, когда информационная система не востребована, например, ночью.

Расписание допроведения пользователь может настроить самостоятельно.

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

Настройка допроведения – это условно-постоянная информация, которая вносится в справочник «Настройки допроведения документов». Указывается, какие документы будут допроводится – все или только те, которые этого требуют. Вместе с этим можно настроить расписание автоматического допроведения.

Документы, которые требуют допроведения, можно просмотреть в журнале «Отложенное проведение документов». Они будут отмечены желтым цветом в колонке с пиктограммой проведения. Журнал можно открыть, например, через меню «Отложенное проведение» в интерфейсе «Заведующий учетом».

Более наглядно картину об отложенном проведении можно увидеть в обработке «Диаграмма отложенного проведения». В ней достаточно наглядно представлена информация о временной оси проведения по каждой организации, для которой включен режим отложенного проведения.

Принудительно запустить допроведение можно из обработки «Допроведение документов», которая расположена в том же меню «Отложенное проведение». В обработке обязательно указывается настройка допроведения, которая была сохранена ранее в справочник «Настройки допроведения документов».

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

В этом случае наиболее эффективное решение – сдвигать дату начала действия режима допроведения на начало следующего месяца. Делается это в регистре сведений «Список организаций для отложенного проведения». Кстати, в этот регистр и сохраняются изменения, которые были сделаны в настройке программы в разделе «Отложенное проведение».

about1c

Скажу пару слов о параметрах, которые можно задать в меню “Настройка программы”. Они в большинстве своем интуитивно понятны, но некоторые требуют пояснения.

Например, включение/отключение регистра «Свободные остатки». Для чего он нужен и нужен ли вообще? На мой взгляд, лучше этот регистр при ведении учета использовать. Основной плюс – при контроле остатков анализируется один регистр «Свободные остатки», а не несколько (Товары на складах, Товары в рознице, Товары в резерве на складах и т.д.

). Но есть и минусы – т.к. появляется дополнительный регистр складского учета, то повышается время затрачиваемое на проведение документа. Ну и база пухнет, естественно.

В разделе “Регламентные задания” есть интервал для опроса регламентных заданий в файловом варианте. Но не указано в чем он измеряется. Значение задается в секундах.

На раздел «Расчет себестоимости» можно обращать внимание, только если учет ведется в РАУЗ. В партионном учете данные из этого раздела вообще не используются.

Сокращение “СЛУ”, которое можно увидеть в названии полей этого раздела, расшифровывается, как Система Линейных Уравнений. Они используются при расчете себестоимости выпуска. Играясь цифрами в этом разделе можно повысить скорость расчета себестоимости выпуска.

Например, если в течение месяца документ «Расчет себестоимости выпуска» активно используется, то для “черновых” расчетов можно уменьшить значение в поле «Максимальное количество итераций СЛУ», скажем, до 20 и увеличить значение в поле «Среднее отклонение решения СЛУ», скажем до -3 (кстати это число обозначает степень). При этом конечно погрешность расчета увеличится.

Но в конце месяца можно вернуть прежние значения, понизив скорость и погрешность расчета и выполнить “чистовой” расчет.

Флажок «Использовать временные таблицы…» желательно установить, т.к. повышается оптимальность запросов и использования оперативной памяти. По идее. 🙂

Раздел «Версионирование» очень хорошая возможность, на мой взгляд, за которую однако нужно платить ростом объема базы данных.

Рост идет за счет того, что в системе сохраняются все копии измененных объектов (справочников и/или документов). Имеет смысл версионировать только ключевые, важные документы.

Просмотреть историю изменения объектов можно в отчете «История изменения объектов», который расположен в меню «Сервис»

Page 3

?

|

about1c

Особенности настройки учетной политики управленческого учета.

Раздел Запасы.

Метод списания По ЛИФО поддерживается только в партионном учете, а в РАУЗ не используется.
Флажок Не включать НДС в стоимость партий необходимо устанавливать, если мы выделяем НДС отдельно от стоимости товара. Если же мы работаем, например, на ЕНВД, то данный флажок нужно снять, чтобы НДС увеличивал стоимость партии товара. Т.к. мы не сможем в дальнейшем возместить этот налог из бюджета. Данный флажок имеет отношение только к материальным ценностям в момент их поступления на склад.
Настройка Порядок формирования учетных цен интуитивно понятна:- По плановым ценам – учетная цена определяется на основании  плановых цен, которые заданы по специальному типу цены, который выбран в учетной политике в качестве плановой.- По прямым затратам – учетная цена определяется по данным складского учета- По нулевой стоимости – учетная цена равна нулю.

Раздел Производство и учет затрат 

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

Раздел Производство->Распределение затрат 

Источник: //about1c.livejournal.com/6987.html

Блокировки данных в 1С:Предприятии 8

1с оперативное проведение. Проведение документа. Зачем нужны управляемые блокировки

Управляемые блокировки в 1С 8.2. в простых и понятных примерах. Статья будет полезна тем, кто все еще не до конца понимает принципы работы управляемых блокировок и то, чем отличаются блокировки новой схемы проведения от старой.

Для тех у кого есть доступ, так же советую ознакомится с исчерпывающей статьей от 1С про блокировки данных в 1С:Предприятии 8, которую можно прочитать здесь: //kb.1c.ru/articleView.

jsp?id=30

Будем рассматривать принципы работы управляемых блокировок на некоторой тестовой конфигурации. Учет ведется в разрезе номенклатуры и свойств номенклатуры.

Приходная накладная (ПН) ничего не блокирует, но пишет данные в регистр накопления “Остаток товара”.

На примере документа Расходная накладная (РН) изучим, как работают управляемые блокировки, а затем посмотрим на новую схему проведения документов.

В ПН и РН есть одинаковые по структуре табличные части (ТЧ) СписокНоменклатуры, в которых содержится список Номенклатуры, Свойств, Количество, Сумма, Цена:

В Регистре накопления есть соответсвующие измерения: Номенклатура, Свойство и два ресурса – Сумма и Количество. 

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

Обратим внимание, что в файловой версии можно устанавливать блокировки только на таблицы целиком (см. таблицу ниже), построчные (в разрезе выбранных движений из регистра накопления, например) блокировки в файловом режиме не работают. Примеры тестировались на 1С 8.2 + MS SQL 2008 R2 Express.

Детальнее про поддерживаемые режимы блокировок тут: //v8.1c.ru/overview/Term_000000642.htm

Примеры рассматриваются на следующих РН и ПН:

ПН – 01

ПН – 02

РН – 01

Пример 1. Блокировка по конкретно известной номенклатурной позиции

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

Движения.ОстаткиНоменклатуры.Записывать = Истина;

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.

Режим = РежимБлокировкиДанных.

Исключительный;
ЭлементБлокировки.УстановитьЗначение(“Номенклатура”,Справочники.Номенклатура.НайтиПоНаименованию(“Ботинки”)); //поиск по наименованию в целях примера
Блокировка.

Заблокировать(); //установили блокировку по номенклатуре с наименованием “Ботинки”

//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по измерению “Номенклатура” с наименованием “Ботинки” и ПН – 02 будет ожидать завершения блокировки регистра накопления по измерению “Номенклатура” с наименованием “Ботинки”.

Пример 2. Блокировка по конкретно известной паре номенклатурная позиция – свойство

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

Движения.ОстаткиНоменклатуры.Записывать Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.

УстановитьЗначение(“Номенклатура”, Справочники.Номенклатура.НайтиПоНаименованию(“Ботинки”)); //поиск по наименованию в целях примера
ЭлементБлокировки.УстановитьЗначение(“Свойство”, Справочники.Свойства.НайтиПоНаименованию(“черные 42 размера”)); //поиск по наименованию в целях примера
Блокировка.

Заблокировать//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по паре измерений “Номенклатура” (с наименованием “Ботинки”) -“Свойство” (с наименованием “черные 42 размера”), а ПН – 02 проведется без ожидания, так как в ее ТЧ СписокНоменклатуры нет пары  “Номенклатура”-“Свойство”, которая будет образовывать соответвствующее движение.

Пример 3. Блокировка на всю таблицу регистра накопления

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.

Режим = РежимБлокировкиДанных.

Исключительный;
Блокировка.Заблокировать();

//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки таблицы регистра накопления и ПН – 02 будет ожидать завершения блокировки таблицы регистра накопления.

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

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.

Режим = РежимБлокировкиДанных.

Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Номенклатура”, “Номенклатура”);
Блокировка.Заблокировать();

//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по измерению “Номенклатура” и значением “Ботинки” из источника СписокНоменклатуры и ПН – 02 будет ожидать завершения блокировки регистра накопления по измерению “Номенклатура” и значением “Ботинки” из источника СписокНоменклатуры (так как именно такое значение реквизита “Номенклатура” в переданной как источник ТЧ).

Пример 5. Блокировка по комбинации полей из источника данных для блокировки (это, например, список движений или список номенклатуры со свойствами по которой будут движения)

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

Блокировка = Новый БлокировкаДанных;

ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.

ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Номенклатура”, “Номенклатура”);
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Свойство”, “Свойство”);
Блокировка.

Заблокировать();
 

//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по паре измерений “Номенклатура” значение “Ботинки” из переданного источника – “Свойство” значение “черные 42 размера” из переданного источника, а ПН – 02 проведется без ожидания, так как в ее ТЧ СписокНоменклатуры нет пары  “Номенклатура”-“Свойство”, которая будет образовывать соответвствующее значениям полей источника блокировки движение.

Пример 6. Блокировка по двум полям из источника данных для блокировки

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

//условие “И” – будут заблокированы и записи для номенклатуры из ТЧ СписокНоменклатуры

// с любыми свойствами и записи для любой номенклатуры со свойствами из ТЧ СписокНоменклатуры
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.

ОстаткиНоменклатуры”;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Номенклатура”, “Номенклатура”);
ЭлементБлокировки = Блокировка.

Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры;
ЭлементБлокировки.

ИспользоватьИзИсточникаДанных(“Свойство”, “Свойство”);
Блокировка.Заблокировать();

//Далее идет заполнение движений

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по измерению “Номенклатура” значение “Ботинки” с любыми свойствами и отдельно по “Свойству” со значением “черные 42 размера” для любой номенклатуры, в ПН – 01 есть и номенклатура “Ботинки” и номенклатура со свойствами “черные 42 размера”. Аналогично ПН – 02 будет ожидать завершения блокировки, так как в ПН – 02 есть номенклатура “Ботинки”. 

Пример 7. Новая схема проведения (чем же отличается БлокироватьДляИзменеия = Истина от блокировок при помощи объекта БлокировкаДанных)

Код процедуры ОбработкаПроведения(Отказ, Режим) модуля объекта документа РасходнаяНакладная:

//Новая схема (без механизма контроля остатков)

//Разбор БлокироватьДляИзменения = Истина
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать(); //Набор пустой, нет значений полей пространства блокировки. нечего блокировать.

//очень упрощенный пример создания движений расходной
Для Каждого СтрокаН Из СписокНоменклатуры Цикл
Движение = Движения.ОстаткиНоменклатуры.ДобавитьРасход();
Движение.Период = Дата;
Движение.Номенклатура = СтрокаН.Номенклатура;
Движение.Количество = СтрокаН.

Количество;
Движение.Сумма = СтрокаН.Сумма;

Движение.Свойство = СтрокаН.Свойство;
КонецЦикла;

//1
Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать(); //Набор не пустой будет выполнена блокировка, источник – ТЧ СписокТоваров

//Далее должен идти механизм контроля остатков

Как это работает:

Если в процессе проведение РН – 01, сделать попытку провести ПН – 01, то она будет ожидать завершения блокировки регистра накопления по паре измерений “Номенклатура” значение “Ботинки” из переданного источника – “Свойство” значение “черные 42 размера” из переданного источника, а ПН – 02 проведется без ожидания, так как в ее ТЧ СписокНоменклатуры нет пары  “Номенклатура”-“Свойство”, которая будет образовывать соответвствующее значениям полей источника блокировки движение.

При использовании команды БлокироватьДляИзменения = Истина на регистр накопления по значениям измерений движений установится исключительная блокировка. Никаких конструкций с использованием объекта БлокировкаДанных для этого писать не нужно.

Код под комментарием //1 выше аналогичен следующему коду:

//Работает аналогично, как и 1
Движения.ОстаткиНоменклатуры.Записать();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить();
ЭлементБлокировки.Область = “РегистрНакопления.ОстаткиНоменклатуры”;
ЭлементБлокировки.Режим = РежимБлокировкиДанных.

Исключительный;
ЭлементБлокировки.ИсточникДанных = Движения.ОстаткиНоменклатуры.Выгрузить();
Для Каждого Измерение Из Метаданные.РегистрыНакопления.ОстаткиНоменклатуры.Измерения Цикл
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных(Измерение.Имя, Измерение.Имя);
КонецЦикла;
Блокировка.

Заблокировать();

//Далее должен идти механизм контроля остатков

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

Источник: //www.helperp.ru/articles/35-blokirovki

Юрист-эксперт
Добавить комментарий