Представим ситуацию:
Две базы 1С:УПП, между которыми организован обмен данными по одной организации. В обоих базах колотятся документы. В одной из баз выполняется расчет себестоимости.
Утверждение: В текущей базе себестоимость будет рассчитана некорректно, так как не будет корректно восстановлена последовательность партионного учета, из-за отсутствия в последовательности партионного учета документов из связанной базы (не смотря на то, что сами документы из связанной базы есть в текущей) .
Причина: Это происходит из-за того что при обмене данными, документ приходит вместе со своими движения, данные о том что он зарегистрирован в последовательности не передаются (см. ниже — заложено в конфигурирование планов обмена данными). Чтобы зарегистрировать документ в последовательности рядовому пользователю необходимо провести его (хотя он уже пришел проведенный и с движениями), но не все пользователи перепроводят документы заново и что-то может потеряться.
Выход: Выход был найден в создании обработки, которая отдана бухгалтеру. Перед восстановлением по партиям он запускает сначала её, а потом типовую «Проведение по партиям». Тогда при восстановлении партий все документы корректно учитываются.
Тут мы как бы попадаем в капкан: С одной стороны нужно рассчитывать себестоимость учитывая все документы, с другой используя обмен нельзя переносить регистрацию этих документов в последовательностях для их корректного учета при расчете себестоимости.
Вот примерная выдержка мнения фирмы 1С: «Особенности использования последовательности документов в распределенной информационной базе (РИБ) Механизм последовательностей документов позволяет отслеживать правильный порядок проведения документов и производить восстановление этого порядка. Чтобы механизм последовательностей учел документ при своей работе, этот документ должен быть зарегистрирован в последовательности. При организации работы механизма последовательностей в распределенной информационной базе, как правило, следует придерживаться следующего принципа: документ должен регистрироваться в последовательности только в одном узле распределенной информационной базы. Это может быть либо узел, в котором документ был создан, либо другой узел, но узел должен быть один. Нарушение данного принципа может привести к различным проблемам в процессе работы с системой, например, невозможности восстановления последовательности документов. Сами последовательности документов не должны участвовать в обмене данных. Иначе записи регистрации документа будут переданы в другой узел РИБ, тем самым будет нарушен принцип регистрации документа в последовательности только в одном узле РИБ. Для реализации этого принципа документ должен содержать информацию, по которой в момент записи документа можно было бы принять решение, следует ли регистрировать его в последовательности в данном узле или нет. Например, документ может содержать реквизит с кодом того узла РИБ, в котором он (документ) был создан. При записи документа, основываясь на информации о принадлежности документа текущему узлу РИБ, следует либо очистить набор записей регистрации документа в последовательности, либо заполнить его. Из изложенного принципа возможны исключения. Например, если необходимо в каждом из узлов РИБ вести свой партионный учет номенклатуры: стоимость партий в каждом узле формируется только по тем документам, которые есть в узле. Предположим, что в периферийном узле есть документы только конкретного филиала, а в центральном узле есть еще и другие документы, например по затратам, которые не должны быть известны филиалу и т.п. Поэтому стоимость партий, рассчитанная в филиальном и центральном узлах, должна различаться. Для этого в каждом узле должна быть своя последовательность партионного учета, движения по регистрам партий должны формироваться в каждом узле отдельно, и эти движения не должны передаваться между узлами РИБ.»
Спасибо за информацию.
Сейчас решаю аналогичную задачу — создал новую последовательность и хочу зарегить в ней существующие движения документов(без проведения).
Дима, пришли мне пож. твою обработку на почту kogon50@mail.ru
А я вот никак не могу до конца логику 1С понять — почему разная себестоимость в периферии и в Центре — это нормально?
(3) Zabba, Если РАУЗ то надо тянуть ключи аналитики, а так всегда документы сразу с движениями — и ! не перепроводить.
Да нет РАУЗ, обычная УТ
Если граница последовательности больше момента времени документа, который нужно включить в последовательность, то и границу нужно сдвинуть. Или я ошибаюсь?
И еще одна ситуация: документ создан в дочерней базе, потом по обмену пришел в родительскую. Обработкой был занесен в последовательность, последовательность восстановили. А потом документ исправили в дочерней базе. Он снова пришел в родительскую, но обработка его уже не увидит и последовательность не сдвинется.
По-моему, здесь нужно в базе делать новую подписку на событие ПриЗаписи и там смотреть.
Взял часть Вашего кода за основу и написал такую проверку:
Показать
(7) chesnokov-a-v, такую ситуацию решали датой запрета изменения документов в дочерней базе (запрещали менять), а восстановление последовательностей выполняли только в основной базе. (Организация на две базы была одна + для пользователя обмена запрет на дату редактирования не ставили). А так решение через подписку на событие согласен с вами — неплохое решение.
(7) chesnokov-a-v, так как фирма 1С рекомендует нам регистрировать доки в последовательности только в одном узле, я бы дописал
Если Источник.ОбменДанными.Загрузка и Источник.Проведен и
ПланыОбмена.ГлавныйУзел() = Неопределено Тогда // только для центральной базы
……………….