Обработка восстановления последовательности 1с. Бухучет инфо. I. Делаем архивную копию базы данных

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

Рассмотрим настройку и свойства последовательностей в 1С 8.2.

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

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

Получите 267 видеоуроков по 1С бесплатно:

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

Пример использования последовательности в 1С

Пример программной установки границы последовательности:

Последовательности. ПартионныйУчет. УстановитьГраницу(МоментВремени() ) ;

Пример получения текущей границы для последовательности в 1С:

ГраницаМоментВремени = Последовательности. ПартионныйУчет. ПолучитьГраницу() ;

Последовательность и производительность 1С Предприятие

Последовательность — очень опасный объект метаданных с точки зрения производительности системы. Связано это с тем, что при установке новой границы последовательности платформа блокирует попытки изменить границу другими пользователями. Как правило, если в системе используется последовательность, то используется она во многих документах системы. Поэтому база данных становится «последовательной», а не «параллельной» для пользователей (больше о производительности можно прочитать в разделе ).

Для решения данной проблемы достаточно дописывать движения по нужным регистрам и передвигать границу последовательности в нерабочее время регламентным заданием.

Восстановление границы последовательности проведения документов в 1с 8.3

И снова обращаемся к теме закрытия месяца в 1С Бухгалтерии 8.3. На этот раз рассмотрим одну вспомогательную функцию, которая называется "контроль последовательности проведения документов" . На рисунке ниже представлена форма обработки закрытия месяца, на которой вы можете видеть красную ссылку "контроль последовательности проведения документов".

Что такое контроль последовательности проведения документов в 1С

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

сайт_

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

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

Как видите, может образовываться цепочка связанных друг с другом документов. Стоит иметь это ввиду при изменениях документов "задним числом".

Тут была важная часть статьи, но без JavaScript её не видно!

1С Бухгалтерия 8 считает так: если вы перепроводите "задним числом" какой-либо документ, то, возможно, потребуется перепровести документы, которые следуют за данным. Именно из такого подхода и возникла вспомогательная функция по контролю за последовательностью проведения документов. Данная функция доступна в обработке "Закрытие месяца" по той самой красной ссылке.

Впрочем, ссылка не всегда красная. Если вы не перепроводили документы "задним числом", то ссылка будет зелёной. Если же нет, то в вышеприведённой форме контроля можно нажать кнопку "Перепровести документы". В этом случае будут перепроведены все документы с даты, в которой 1С обнаружила изменения документов "задним числом". Результат контроля перепроведения документов показан ниже.

сайт_

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

сайт_

Как видите, теперь с точки зрения 1С Бухгалтерии "всё в порядке". Однако не стоит зыбывать о том, что это всего лишь программа. Конечный ответ на вопрос "всё ли в порядке?" даёт лишь пользователь, поэтому не стоит на 100% перекладывать на 1С всё подряд — однажды такой подход может "выйти боком".

Подведём итоги

Если 1С Бухгалтерия при закрытии месяца предлагает исправить последовательность проведения документов, то обычно все нажимают на красную ссылку, показанную на картинках выше. Однако всегда ли целесообразно делать то, что рекомендует программа?

Ответы на все вопросы "почему" и "как лучше" я рассматриваю со своими учениками на курсах 1С Бухгалтерии 8 по Skype . Практика показывает, что лучше всего в 1С работают те, кто не просто "прочитал учебник", но понял как работает программа, как в ней ведется учёт и почему нужно делать так, а не иначе.

Без понимания работа в 1С — это всего лишь щёлканье по кнопкам!

Каждую ИТ систему по ведению учета на предприятии можно разделить на две условные категории с точки зрения хронологической коррекции данных:

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

2) Допускаются изменения задним числом. Корректность данных по цепочке измененных документов достигается регламентной процедурой перепроведения документов.
Подобная система является противоположностью вышеописанной системы. Соответственно это касается всех преимуществ и недостатков. Одним из недостатков является обязательное наличие регламентной процедуры коррекции цепочки измененных документов. В случае существенного роста информационного потока процедура перепроведения может продолжаться длительный промежуток времени. В случае когда эта процедура станет отнимать более 12-и часов это процедура становится потенциально опасной в надежности функционировании всей ИТ системы. Данную процедуру в типовой реализации необходимо выполнять в вечернее время так как она отнимает много серверных ресурсов и реализует много блокировок что негативно сказывается на общей работе пользователей.

Система 1С Предприятие 7.7. как правило, реализует вторую схему. Регламентная процедура коррекции измененных документов называется восстановлением последовательности 1С. Основными недостатками при изменении задним числом будут следующие пункты:

1) При изменении задним числом возникает относительно большой временной интервал между самим изменением и восстановлением последовательности в 1С.

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

Рассмотрим, почему данная процедура столь ресурсоемкая и какие есть варианты разрешения данной проблемы на примере простой оперативной БД с упрощенным составом документов.

Документы БД (усреднённая статистика):
Приходная накладная: 10 документов в день по 500 строк.
Расходная накладная: 100 документов в день по 100 строк.
Приходный кассовый ордер: 100 документов в день (без табличной части).
Расходнный кассовый ордер: 100 документов в день (без табличной части).
Регистры учета:
ОстатокТовараПоПартиям(Товар,Партия,Количество)
ОстатокТовара(Товар,Склад,Количество)
Взаиморасчеты(Клиент,Документ,Сумма)

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

Что произойдет, если мы поменяем данные по одной строчке товара приходной накладной 10-и дневной давности?

Что бы рассчитать количество связанных документов необходимо учитывать структуру регистров, по которым ведется расчет. Соответственно для того, что бы восстановить последовательность необходимо пересчитать все документы, которые участвуют в движении по регистрам измененного товара за 10-ть дней. Однако, как правило, мы не знаем в типовой реализации какую именно позицию мы меняли и поэтому пересчитываются все документы за данный период. Учитывая, что измененная строка в приходной накладной могла повлиять на взаиморасчеты нам приходится пересчитывать и ПКО и РКО. Итого получается необходимо даже после одной измененной строки провести порядка Кол.Документов=(10+100+100+100)=310 документов и соответственно обработать (500*10+100*100+100*1+100*1) = 15200 строк! Вдумайтесь еще раз в эти цифры! Даже одна измененная строка задним числом предполагает такую ресурсоемкую обработку.

В чем же причины такого неэффективного механизма восстановления последовательности в 1С?

Первая это – потеря истории изменения. Вследствие чего невозможно сказать каким было состояние документа до изменения. Это исключает селективное, выборочное перепроведение документов.

Вторая и немаловажная – отсутствие возможности обработки движений регистров построчно. Даже если будет возможно сказать какая именно позиция была изменена в документе то нельзя будет обрабатывать только эту позицию в модуле обработки проведения. Это уже следствие частично неэффективной реализации платформы 1С Предприятие 7.7.
Итогом такой реализации стало то, что при изменении одной позиции в документе все равно придется препроводить весь документ. Изменив одну строку в документе приходной накладной нам в программной реализации придется обработать остальные 499-т строк, которые не менялись!

Существуют несколько решений. Первое решение позволяет исключить проблему потери истории изменения. Как следствие уменьшение количества перепроводимых документов в зависимости от специфики базы в интервале от 10 до 100 раз. Перепроводиться будут только завязанные в последовательность документы. Такой разброс в количественных оценках определяется спецификой базы данных.
Например, если клиентам отгружается в среднем типовой полный набор товара – в случае изменения задним числом по позиции из этого документа - количество перепроводимых документов уменьшится относительно на небольшую величину

Включение логирования на T-SQL, следствием которого является ведение надежного лога по изменению в регистрах движения.
В дальнейшем специальной обработкой можно будет получать связанные последовательностью документы. Для восстановления последовательности нам необходимо будет перепроводить только их. Обработку написать эту довольно не сложно – фактически это запрос по регистрам с отбором по измерениям которые были изменены. Можно обойтись и без логирования , но это менее надежно и более трудоемко (например запоминая состояние до записи документа и после а потом записывать эту информацию в отдельный справочник).

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

Второе решение позволяет снять проблемы: потеря истории изменения и отсутствие возможности обработки движений регистров выборочно.

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

Краткое описание технической реализации:

Включение логирования на T-SQL, следствием которого является ведение надежного лога по изменения в регистрах движения. Реализуются специальные процедуры позволяющие очищать выборочно движения по регистрам. Отдельно производится анализ конфигурации и изменения в ней соответствующие концепции выборочной обработки движений по регистрам учета.
С помощью технологии внешних компонент можно реализовать процедуру которая будет аналогом процедуры ОчиститьДвижения(<ВидыДвижений>) 1С – только будет более расширенной.
А именно: ОчиститьДвиженияПоИзмерениям(<ВидыДвижений>,Измерения,СписокЗначений) - Эта процедура будет очищать не все движения по документу тем самым пересчитывая ненужную информацию и расстанавливая дополнительные блокировки а выборочно по списку значений. Как правило, это будет разница между табличной частью проведенного документа до изменения и после.
Соответственно если в табличной части были изменены 3-и позиции из 100, то удалятся только 3-и позиции. Естественно процедура будет удалять не только движения по документу, но и производить агрегационный пересчет остатков по периодам хранения. Однако это, к сожалению не все и править конфигурацию все равно придется.
Рассмотрим, какие именно изменения нужно будет произвести что бы эти изменения работали корректно. В первую очередь это анализ остатков. Тут необходимо понимать, что в проведении документа большинство времени уходит не на удаление записей, а именно на расчет остатков. Если мы знаем что остатки по 97-и позициям из вышеприведенного примера не изменились, то рассчитывать их имеет смысл только по 3-м измененным позициям. Соответственно необходимо произвести тщательный анализ конфигурации и выполнить соответствующие изменения.

Если ЗначениеВходитВСписокИзмененных(СпИзм,Значение)=0 Тогда Продолжить; КонецЕсли; Также аналогичные изменения необходимо провести и в местах модуля, где происходит запись в регистр. Движения по регистрам должны осуществляться только по измененным позициям. Восстановление последовательности в таком режиме можно выполнять в фоновом режиме с минимальной задержкой и в некоторых случаях даже внутри модуля изменяющего последовательность (если время на выполнение небольшое и блокировки будут незначительны по времени).

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

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

Компания "СофтПоинт" представляет готовое решение , которое позволит снять проблему восстановления последовательности.

Октябрь 1st, 2012

Инструкция для «1С: Предприятие 7.7. Торговля и Склад»

ВНИМАНИЕ!!! Выполнение восстановления последовательности документов обязательно перед выгрузкой данных из «Торговли и Склад» в «Бухгалтерию». При нарушении последовательности документов данные отчетов могут быть!!!НЕАКТУАЛЬНЫ!!!

I. Делаем архивную копию базы данных

1. Запускаем программу в режиме «Конфигуратор». При этом все сеансы пользователей, работающих с программой должны быть закрыты.

2. Выбираем пункт меню АДМИНИСТРИРОВАНИЕ | СОХРАНИТЬ ДАННЫЕ. Появится окно:

3. В поле «Сохранять в:» указываем имя файла резервной копии. В имени указываем дату копии.

5. При удачном завершении появится окно:

6. Внизу в окне сообщений будет выведена запись «Процедура сохранения данных завершена!»

Если при сохранении архива произошла ошибка, о чем будет сообщено, обратитесь к системному администратору (если сами таковым не являетесь:)).

7. Закрываем Конфигуратор.

II. Восстанавливаем последовательность.

1. Открываем программу в режиме «Предприятие» монопольно.

2. В меню ОПЕРАЦИИ | КОНСТАНТЫ меняем константу «Дата запрета редактирования» на дату раньше, чем нарушенная граница последовательности (ГП).

3. Например, если ГП находится на документе с датой 12.12.08, а Дата запрета редактирования установлена 31.12.08, тогда следует изменить Дату запрета редактирования на 11.12.08 либо еще раньше.

4. Выбираем пункт меню ОПЕРАЦИИ | ПРОВЕДЕНИЕ ДОКУМЕНТОВ. Появится окно, в котором необходимо выбрать вторую закладку «Последовательности»:

5. Выбираем дату, по которую необходимо восстановить последовательность. Обычно это текущая дата.

6. Отмечаем галками все три последовательности.

7. Ставим галку «Выводить сообщения о пересчитанных документах»

8. Нажимаем кнопку «Выполнить».

9. Следим за ходом выполнения обработки. В окне сообщений выводятся обработанные документы. В окне «Комментарий выполняемых действий» выводятся результаты проведения документов.

При удачном завершении программа выдаст сообщение «Восстановление последовательности документов завершено».

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

В этом случае закрываем окно «Проведение документов».

В окне «Комментарий выполняемых действий» находим последнее сообщение о проведении документа. Смотрим что за документ и что за ошибка. Сообщаем в бухгалтерию об ошибке (документ, на котором остановилась последовательность). После исправления ошибки запускаем процесс восстановления заново.

Если устранить ошибку быстро не удается (!!! НЕ ЗАБЫВАЕМ, ЧТО РАБОТАЕМ В МОНОПОЛЬНОМ РЕЖИМЕ, И ЖЕЛАЮЩИХ ПОПАСТЬ В БАЗУ ОЧЕНЬ МНОГО!!!), тогда прекращаем процесс восстановления и переносим точку актуальности (ТА) на последний документ в системе, иначе работа в программе будет невозможна.

Можно восстановить последовательности и не в монопольном режиме, но медленнее. Для этого берем обработку
sequence.rar

Перенос точки актуальности итогов (ТА)

1. Открываем общий журнал документов

2. Находим самый последний документ в системе (при этом Быстрый отбор должен быть отключен (установлен в значение «отсутствует»), иначе ТА будет перенесена некорректно)

3. Щелкаем на последнем документе правой кнопкой мыши и выбираем «Установить ТА на документ»

На вопрос «Изменить точку актуальности итогов?» отвечаем «ДА».

будет выведено окно:

4. Ничего не отмечаем и нажимаем «Выполнить».

5. В результате будет выдано сообщение «Изменение ТА завершено».

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



Просмотров