В системе 1С:Предприятие 7.7 были расширены по сравнению с предыдущей версией функциональные возможности компоненты "Управление распределенными ИБ". В частности, добавлены такие возможности как:
- отключение автоматической регистрации изменений элементов справочников и документов
- управление регистрацией изменений объектов из встроенного языка
- запрет миграции движений регистров и бухгалтерских операций
Подробно описание данных возможностей приведено в брошюре "1С:Предприятие 7.7. Управление распределенными ИБ". Пример использования этих возможностей приведен в методической конфигурации. Для учета товаров предназначены два регистра:
- ТовЗап - для учета товаров в натуральном выражении
- ТовУчет - для учета товаров в денежном выражении.
Движения по указанным регистрам могут производить следующие документы:
- ПрихНакл - приходная накладная, приходующая поступления товаров на склады. Данный документ производит движения по обоим упомянутым регистрам.
- РасхНакл - расходная накладная, по которой товары списываются со складов. При этом в денежном учете товары списываются по средней цене, которая вычисляется на момент проведения документа.
- Чек - документ, производящий списание товаров в натуральном выражении.
- РасходПоЧекам - документ, выполняющий списание товаров в стоимостном выражении за день по выписанным чекам;
Понятно, что в случае ввода или изменения документов задним числом могут быть изменены условия, в которых производилось проведение всех последующих документов типа РасхНакл, что, в свою очередь, может привести к изменению средней цены, по которой должны списываться товары. Для поддержания корректности списания по средней цене в конфигурации предусмотрена последовательность документов - ОсновнаяПоследовательность. Так как на последовательность оказывают влияние движения регистра ТовУчет, то любой проводимый задним числом документ, совершающий движения регистра ТовУчет влияет на все последующие документы РасхНакл, производящие списание товаров по средней цене. Для восстановления последовательности документов предназначена обработка ВосстановлениеПоследовательностей.
Теперь представим себе, что поставлена задача усовершенствования конфигурации таким образом, чтобы она могла работать в распределенной ИБ. При этом, учет товаров в натуральном выражении может вестись в каждом из узлов распределенной ИБ. Учет товаров в денежном выражении имеет смысл только по всей организации в целом. Поэтому принимается решение, что денежный учет будет вестись только в центральном узле распределенной ИБ, а движения регистра ТовУчет не будут производиться документами, проводимыми в периферийных узлах. Миграция движений регистра ТовУчет также будет запрещена. Таким образом, движения регистра ТовУчет не будут появляться в периферийных узлах. Для обеспечения этого регистру ТовУчет установлен признак "Запретить миграцию движений". А в модули документов РасхНакл и ПрихНакл введены операторы препятствующие созданию движений регистра ТовУчет при проведении документов в периферийных узлах распределенной ИБ (см. последовательности операторов)
Если ТекущаяИБЦентральная()=1 Тогда
…
КонецЕсли;
Поскольку последовательность документов ОсновнаяПоследовательность предназначена для согласования данных денежного учета товаров она не имеет смысла на периферийных узлах распределенной ИБ. В силу этой особенности для данной последовательности документов установлен признак "Единая последовательность в центральной ИБ".
Таким образом документы могут создавать движения регистра ТовУчет только при проведении в центральной ИБ, а последовательность документов ОсновнаяПоследовательность отслеживает правильность создания движений регистра ТовУчет документом РасхНакл в соответствии с выбранным методом списания товаров по средней цене.
Однако при выбранной стратегии поведения документы типов ПрихНакл и РасхНакл, проведенные в одной из периферийных ИБ и "прибывающие" оттуда в центральную ИБ не имеют движений регистра ТовУчет, хотя с точки зрения логики денежного учета должны иметь.
Для решения данной проблемы в число документов на проведение которых влияет последовательность ОсновнаяПоследовательность включаются два вида документов: РасхНакл и ПрихНакл. Включение документа РасхНакл обусловлено самой логикой указанной последовательности, ведь, в действительности, движения регистра ТовУчет, которые создает этот документ, зависят от состояния данного регистра на момент проведения документа. Документ ПрихНакл включен в последовательность исходя из того, что ОсновнаяПоследовательность в данном случае начинает использоваться и как механизм, заставляющий документы данного вида, "прибывшие" из периферийных ИБ перепроводиться, создавая ранее отсутствовавшие движения регистра ТовУчет. Дело в том, что для всех видов документов действует следующее правило: если в процессе обмена в распределенной ИБ в тот или иной узел загружен документ вида, входящего в последовательность и время этого документа меньше границы начала последовательности, то граница начала последовательности устанавливается на этот документ, а точнее на момент предшествующий этому документу, чтобы при восстановлении последовательностей он также был перепроведен. Таким образом документы
всех видов, входящих в последвательность после переноса их из периферийных ИБ в центральную будут перепроведены при первом же выполнении обработки ВосстановлениеПоследовательностей.
В этом случае, однако, могут выполняться "лишние" действия. Например, перепроведение документов вида ПрихНакл, уже проведенных в центральной ИБ является явно излишним, так как в результате перепроведения движения регистров, созданные такими документами не будут отличаться от тех, что имели место до перепроведения. В то же время эти "лишние" перепроведения не будут менять состояния ИБ и не смогут нарушить ее логическую целостность. Однако, заметим, что выполнение перепроведения этих документов необходимо, чтобы граница последовательности продвигалась вперед.
При перепроведении документов в рамках последовательности документов ОсновнаяПоследовательность в процессе выполнения обработки ВосстановлениеПоследовательностей могут изменяться только движения регистра ТовУчет, которые, как было отмечено выше, никогда не присутствуют в периферийных ИБ и, следовательно, по отношению к периферийным ИБ данные локументы остаются неизменными и нет необходимости передавать их изменения в процессе переноса изменений данных из центральной ИБ в периферийные. Для того, чтобы заблокировать такую массированную передачу изменений документов, в процедуру Выполнить() обработки ВосстановлениеПоследовательностей, непосредственно перед оператором, вызывающим проведение входящего в последовательность документа вставлен оператор, запрещающий регистрацию изменений документа при его проведении
// запретить регистрацию изменений документа при его проведении
Док.РегистрацияИзменений(0);
// собственно проведение документа. так как документы проводятся
// последовательно то граница последовательности будет перенесена на данный
// документ
Док.Провести();
В результате выполнения данной последовательности операторов документ будет перепроведен, его изменение при этом не будет зарегистрировано и в результате, если данный документ не будет (не был) изменен при каких-либо других обстоятельствах, то он не будет перенесен в периферийные ИБ в процессе передачи изменений данных.
Заметим, что для перепроведения документов, полученных из периферийных информационных баз для формирования движений по стоимостному учету, используется механизм последовательностей, что, разумеется, не является его прямым назначением. В то же время, для этой цели может использоваться и реквизит документа, в котором будут отмечаться документы, которые проведены в периферийной ИБ и должны быть перепроведены в центральной. В этом случае перепроведение таких документов должно выполняться в качестве дополнительной регламентной операцией предшествующей восстановлению последовательностей.
Таким образом, в предложенной методике демонстрируется две возможности:
1) Исключение миграции большого количества документов на периферийные ИБ при их групповом перепроведении в центральной ИБ;
2) Ограничение области действия регистра, на котором ведется стоимостной учет, центральной информационной базой.
Приведенная в данном разделе рекомендация может оказаться полезной в случаях, если установленная компонента управления распределенными базами данных использует электронную почту для организации обмена файлами переноса данных и корпоративная система обмена сообщениями построена на базе Microsoft Exchange Server.
Проблема состоит в том, что, если Microsoft Exchange Client, установленный на одной из PC, входящих в состав периферийной информационной базы, и работающий в режиме off-line (т.е. при отсутствии активного соединения с сервером), не может осуществить разрешение адреса, если адрес получателя указан в формате почты Интернет ( SMTP: ). Соответственно, сформированное 1С:Предприятием сообщение с присоединенным файлом переноса данных не может быть отправлено, если адрес получателя указан в формате почты Интернет.
Решением данной проблемы является указание адреса получателя в формате Microsoft Exchange ( EX: ). Адрес в формате Microsoft Exchange выглядит приблизительно так:
EX:/o=1C/ou=TESTLAB/cn=Recipients/cn=Centr