Цель лекции: научиться создавать распределенные информационные системы, используя механизмы
Наша организация расширяется. У нее появился дополнительный офис, который занимается закупками материалов. Но материалы может покупать и центральный офис организации. Руководством было принято решение о том, что учет поступления материалов в дополнительном офисе должен вестись с использованием того же ПО, что и в главном офисе. Учетные данные головного и дополнительного офисов нужно синхронизировать не реже одного раза в день для того, чтобы сотрудники и того и другого офиса имели бы правильное представление об остатках материалов в организации.
Основным инструментом учета поступления материалов в нашей конфигурации является документ ПоступлениеМатериалов. При его заполнении используется множество справочников, он формирует движения в
Для решения этой задачи можно воспользоваться механизмом
Прежде чем начинать реализацию механизма, подумаем о том, все ли в нашей конфигурации готово для того, чтобы он смог нормально работать. Предположим, у нас имеются две базы данных - одну назовем Главная база (ГБ), вторую - База филиала (ФБ). После того, как база ФБ создана, в ней и в базе ГБ есть один документ ПоступлениеМатериалов с номером 00001. В базах ГБ и ФБ, каждая из которых автономно используется до того момента, когда придет время обмениваться данными, создают по одному документу ПоступлениеМатериалов. Он, в соответствии со стандартными правилами нумерации, приобретает номер 00002. И в той и в другой базе содержатся разные документы, имеющие один и тот же номер. При синхронизации данных возникнет конфликтная ситуация. Для того чтобы подобной ситуации не допустить, нам нужно предусмотреть собственные правила нумерации объектов для баз ГБ и ФБ.
Обычно подобная задача решается с помощью использования
Доработаем конфигурацию таким образом, чтобы те объекты, данными которых мы будем обмениваться, предусматривали использование различной системы нумерации в разных базах.
По предварительной оценке, произведенной выше, нас интересует, во-первых, документ ПоступлениеМатериалов, во-вторых - все справочники, используемые в системе. То есть, нам нужно создать механизм формирования номеров (для документа) и кодов (для элементов справочников), который использовал бы префиксы для разделения нумерации элементов различных баз.
Создадим новую константу (рис 7.1):
| Имя: | ПрефиксНомера |
| Тип данных: | Строка |
| Длина: | 2 |
(рис 7.1) Добавление в конфигурацию новой константыОткроем форму констант ( ) добавим на нее поле для редактирования новой константы .
(рис 7.2) Автоматическое размещение нового поля на форме константТеперь добавим в модули объекта каждого справочника (рис 7.3) обработчик события ПриУстановкеНовогоКода (выбрав его из поля Процедуры и функции панели инструментов Модуль ) такого вида:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс) Префикс=Константы.ПрефиксНомера.Получить(); КонецПроцедуры
Присваивание значения константы ПрефиксНомера параметру Префикс, приводит к тому, что код элемента справочника, присваиваемый ему при создании, начинается с заданного в константе префикса. Делая это, нужно учитывать, что количество значимых цифр кода уменьшится - для того, чтобы справиться с этой проблемой, можно увеличить длину кода справочника.
(рис 7.3) Задание префикса номера в модуле справочникаВ модуль документа ПоступлениеМатериалов нам нужно внести похожее изменение, однако, здесь идет речь о номерах объекта, в итоге, получается следующий код:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) Префикс=Константы.ПрефиксНомера.Получить(); КонецПроцедуры
Подготовительный этап выполнен, теперь приступим к созданию основного объекта, на котором основана
При обмене данными в рамках
Создадим новый
(рис 7.4) Создание нового плана обменаТеперь нам нужно настроить состав объектов, которые будут участвовать в обмене. Для этого перейдем на вкладку ):
(рис 7.5) Настройка состава плана обменаПосле того, как состав
(рис 7.6) Форма списка плана обменаЗдесь есть один предопределенный элемент, узел, который представляет собой главную информационную базу. Откроем его для редактирования, заполним поля следующим образом:
| Код: | ГБ |
| Наименование: | Главная ИБ |
Создадим еще один узел, заполним его параметры так (рис 7.7):
| Код: | ФБ |
| Наименование: | ИБ филиала |
(рис 7.7) Узлы плана обменаОбратите внимание на то, что в форме элемента ИБ филиала, а так же - в форме списка
Кнопка ) и нажмем Далее.
(рис 7.8) Создание начального образа ИБ, выбор типа расположения ИБ В следующем окне нас попросят указать каталог информационной базы и язык. Укажем C:\База филиала (если нужной папки не существует, предварительно создадим ее), в качестве языка выберем русский и нажмем Готово.
Процесс создания начального образа ИБ сопровождается серией служебных сообщений, а при успешном завершении этого процесса выводится окно сообщения с соответствующей надписью.
В папке, которая указана при создании начального образа, расположена обычная база данных 1С:Предприятие 8, готовая к работе. Подключим базу в стартовом окне программы (кнопка . Изменения конфигурации распространяются от главной базы к подчиненной, но не наоборот.
(рис 7.9) ИБ филиала, открытая в конфигуратореМожно заметить, что в базе присутствуют не только те объекты, которые указаны при настройке
Еще одна особенность - в базе филиала отсутствует список пользователей, определенный в основной базе - этот список не является частью конфигурации, к тому же, вполне логично настроить новый набор пользователей в новой информационной базе.
В сущности, в подобной базе данных конфигуратор нужен лишь для целей администрирования базы, списка пользователей, однако, он выполняет еще одну важную функцию. Если в главной базе, в одном из объектов было замечено изменение метаданных (например, добавлен новый реквизит), или был создан новый объект - для автоматического обновления информационной базы будет вызван Конфигуратор.
Откроем базу филиала в режиме 1С:Предприятие, и первым действием, которое мы выполним, будет установка константы . В основной базе установим эту константу в значение ГБ.
(рис 7.10) Настройка констант в базе филиалаЕсли вы откроете в базе филиала форму констант, то, независимо от состояния констант в основной базе, их значения будут пустыми. Константы не отмечены в составе
Теперь попробуем выполнить некоторые действия в базе филиала. А именно, создадим новый документ ). Сразу же можно отметить, что номер этого документа начинается с ФБ. Так же, если мы будем создавать в базе филиала новые элементы справочника Номенклатура, Контрагенты и других (что, учитывая специфику задачи, вполне естественно) - их коды так же будут начинаться с ФБ.
(рис 7.11) Ввод нового документа в базе филиалаДля заполнения этого документа мы, в основном, пользовались элементами справочников, которые "достались" базе филиала от основной базы, а один из элементов - "Туалетная вода", был создан уже в базе филиала. Так же обратите внимание на состав списка документов Поступление материалов в базе филиала.
Теперь добавим новый документ показано состояние списка документов этого вида в основной базе.
(рис 7.12) Новый документ в основной базеПосле того, как в базы внесены изменения, займемся их синхронизацией.
Откроем в основной базе
(рис 7.13) Сохранение файла сообщения от Главной ИБ к ИБ филиала в Главной ИБПо умолчанию имя файла выглядит как Message_ГБ_ФБ.zip (то есть, нечто вроде "Сообщение от главной базы базе филиала). Файл сообщения, на самом деле, является XML-файлом, но благодаря установке параметра Сжимать сообщение он сразу же упаковывается в ZIP-архив.
Произведем аналогичное действие в базе филиала, но теперь в списке
Предположим, некий курьер в конце дня привозит на флэш-диске файл Message_ГБ_ФБ.zip в филиал из центрального офиса, и забирает оттуда файл Message_ФБ_ГБ.zip. Эти файлы можно передать любым удобным способом, например, на переносном носителе информации, по электронной почте.
После получения файла в форме списка
(рис 7.14) Чтение файла сообщения от Главной ИБ к ИБ филиала в ИБ филиалаПосле получения сообщения о том, что чтение данных успешно завершено, мы можем взглянуть на список документов ПоступлениеМатериалов - там появится новый документ из Главной ИБ.
Проделав аналогичную операцию в Главной ИБ, мы получим там новый документ из ИБ филиала и новый, созданный там же, элемент справочника. Естественно, изменения будут внесены и в регистры, по которым проводится документ из базы филиала.
(рис 7.15) Состояние объектов Главной ИБ после чтения сообщения от ИБ филиалаВыше мы говорили о том, что
Рассмотрим пример. Добавим в узле Главная ИБ с помощью конфигуратора новую константу, назовем ее КонстантаДляРИБ. Откроем Главную ИБ в режиме 1С:Предприятие, добавим в справочник Номенклатура новый элемент - Лак для ногтей в группу Прочие материалы.
Запишем сообщение из .
(рис 7.16) Получение изменения конфигурации из Главной ИБЕсли мы ответим на данный вопрос утвердительно, запускается Конфигуратор, в базу вносятся изменения, которые, после нажатия на кнопку Обновить конфигурацию базы данных, попадают в нашу рабочую конфигурацию.
После того, как база обновлена, следует еще раз произвести чтение сообщения - для того, чтобы из него были прочитаны изменения данных объектов.
Если после обновления конфигурации не прочесть сообщение повторно - данные в базах не будут синхронизированы. В нашем случае это будет означать, что новый элемент справочника Номенклатура не будет добавлен в ИБ филиала.
В данной лекции мы рассмотрели возможности по организации распределенных баз данных. Мы пользовались стандартными средствами, однако, механизмы РИБ допускают и программное управление. Например, по умолчанию изменения, выполненные в главном узле базы имеют приоритет перед изменениями, выполненными в подчиненном узле. Это позволяет поддерживать базы в синхронизированном состоянии, однако не всегда совпадает с практическими целями. Для организации работы территориально удаленных пользователей можно так же использовать универсальные механизмы обмена данными, которые так же основаны на
Наша следующая лекция будет посвящена некоторым дополнительным возможностям, касающимся разработки для 1С:Предприятие.
Для данной лекции подготовлен видеоурок.
Цель лекции: научиться создавать распределенные информационные системы, используя механизмы
Наша организация расширяется. У нее появился дополнительный офис, который занимается закупками материалов. Но материалы может покупать и центральный офис организации. Руководством было принято решение о том, что учет поступления материалов в дополнительном офисе должен вестись с использованием того же ПО, что и в главном офисе. Учетные данные головного и дополнительного офисов нужно синхронизировать не реже одного раза в день для того, чтобы сотрудники и того и другого офиса имели бы правильное представление об остатках материалов в организации.
Основным инструментом учета поступления материалов в нашей конфигурации является документ ПоступлениеМатериалов. При его заполнении используется множество справочников, он формирует движения в
Для решения этой задачи можно воспользоваться механизмом
Прежде чем начинать реализацию механизма, подумаем о том, все ли в нашей конфигурации готово для того, чтобы он смог нормально работать. Предположим, у нас имеются две базы данных - одну назовем Главная база (ГБ), вторую - База филиала (ФБ). После того, как база ФБ создана, в ней и в базе ГБ есть один документ ПоступлениеМатериалов с номером 00001. В базах ГБ и ФБ, каждая из которых автономно используется до того момента, когда придет время обмениваться данными, создают по одному документу ПоступлениеМатериалов. Он, в соответствии со стандартными правилами нумерации, приобретает номер 00002. И в той и в другой базе содержатся разные документы, имеющие один и тот же номер. При синхронизации данных возникнет конфликтная ситуация. Для того чтобы подобной ситуации не допустить, нам нужно предусмотреть собственные правила нумерации объектов для баз ГБ и ФБ.
Обычно подобная задача решается с помощью использования
Доработаем конфигурацию таким образом, чтобы те объекты, данными которых мы будем обмениваться, предусматривали использование различной системы нумерации в разных базах.
По предварительной оценке, произведенной выше, нас интересует, во-первых, документ ПоступлениеМатериалов, во-вторых - все справочники, используемые в системе. То есть, нам нужно создать механизм формирования номеров (для документа) и кодов (для элементов справочников), который использовал бы префиксы для разделения нумерации элементов различных баз.
Создадим новую константу (рис 7.1):
| Имя: | ПрефиксНомера |
| Тип данных: | Строка |
| Длина: | 2 |
(рис 7.1) Добавление в конфигурацию новой константыОткроем форму констант ( ) добавим на нее поле для редактирования новой константы .
(рис 7.2) Автоматическое размещение нового поля на форме константТеперь добавим в модули объекта каждого справочника (рис 7.3) обработчик события ПриУстановкеНовогоКода (выбрав его из поля Процедуры и функции панели инструментов Модуль ) такого вида:
Процедура ПриУстановкеНовогоКода(СтандартнаяОбработка, Префикс) Префикс=Константы.ПрефиксНомера.Получить(); КонецПроцедуры
Присваивание значения константы ПрефиксНомера параметру Префикс, приводит к тому, что код элемента справочника, присваиваемый ему при создании, начинается с заданного в константе префикса. Делая это, нужно учитывать, что количество значимых цифр кода уменьшится - для того, чтобы справиться с этой проблемой, можно увеличить длину кода справочника.
(рис 7.3) Задание префикса номера в модуле справочникаВ модуль документа ПоступлениеМатериалов нам нужно внести похожее изменение, однако, здесь идет речь о номерах объекта, в итоге, получается следующий код:
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) Префикс=Константы.ПрефиксНомера.Получить(); КонецПроцедуры
Подготовительный этап выполнен, теперь приступим к созданию основного объекта, на котором основана
При обмене данными в рамках
Создадим новый
(рис 7.4) Создание нового плана обменаТеперь нам нужно настроить состав объектов, которые будут участвовать в обмене. Для этого перейдем на вкладку ):
(рис 7.5) Настройка состава плана обменаПосле того, как состав
(рис 7.6) Форма списка плана обменаЗдесь есть один предопределенный элемент, узел, который представляет собой главную информационную базу. Откроем его для редактирования, заполним поля следующим образом:
| Код: | ГБ |
| Наименование: | Главная ИБ |
Создадим еще один узел, заполним его параметры так (рис 7.7):
| Код: | ФБ |
| Наименование: | ИБ филиала |
(рис 7.7) Узлы плана обменаОбратите внимание на то, что в форме элемента ИБ филиала, а так же - в форме списка
Кнопка ) и нажмем Далее.
(рис 7.8) Создание начального образа ИБ, выбор типа расположения ИБВ следующем окне нас попросят указать каталог информационной базы и язык. Укажем C:\База филиала (если нужной папки не существует, предварительно создадим ее), в качестве языка выберем русский и нажмем Готово.
Процесс создания начального образа ИБ сопровождается серией служебных сообщений, а при успешном завершении этого процесса выводится окно сообщения с соответствующей надписью.
В папке, которая указана при создании начального образа, расположена обычная база данных 1С:Предприятие 8, готовая к работе. Подключим базу в стартовом окне программы (кнопка . Изменения конфигурации распространяются от главной базы к подчиненной, но не наоборот.
(рис 7.9) ИБ филиала, открытая в конфигуратореМожно заметить, что в базе присутствуют не только те объекты, которые указаны при настройке
Еще одна особенность - в базе филиала отсутствует список пользователей, определенный в основной базе - этот список не является частью конфигурации, к тому же, вполне логично настроить новый набор пользователей в новой информационной базе.
В сущности, в подобной базе данных конфигуратор нужен лишь для целей администрирования базы, списка пользователей, однако, он выполняет еще одну важную функцию. Если в главной базе, в одном из объектов было замечено изменение метаданных (например, добавлен новый реквизит), или был создан новый объект - для автоматического обновления информационной базы будет вызван Конфигуратор.
Откроем базу филиала в режиме 1С:Предприятие, и первым действием, которое мы выполним, будет установка константы . В основной базе установим эту константу в значение ГБ.
(рис 7.10) Настройка констант в базе филиалаЕсли вы откроете в базе филиала форму констант, то, независимо от состояния констант в основной базе, их значения будут пустыми. Константы не отмечены в составе
Теперь попробуем выполнить некоторые действия в базе филиала. А именно, создадим новый документ ). Сразу же можно отметить, что номер этого документа начинается с ФБ. Так же, если мы будем создавать в базе филиала новые элементы справочника Номенклатура, Контрагенты и других (что, учитывая специфику задачи, вполне естественно) - их коды так же будут начинаться с ФБ.
(рис 7.11) Ввод нового документа в базе филиалаДля заполнения этого документа мы, в основном, пользовались элементами справочников, которые "достались" базе филиала от основной базы, а один из элементов - "Туалетная вода", был создан уже в базе филиала. Так же обратите внимание на состав списка документов Поступление материалов в базе филиала.
Теперь добавим новый документ показано состояние списка документов этого вида в основной базе.
(рис 7.12) Новый документ в основной базеПосле того, как в базы внесены изменения, займемся их синхронизацией.
Откроем в основной базе
(рис 7.13) Сохранение файла сообщения от Главной ИБ к ИБ филиала в Главной ИБПо умолчанию имя файла выглядит как Message_ГБ_ФБ.zip (то есть, нечто вроде "Сообщение от главной базы базе филиала). Файл сообщения, на самом деле, является XML-файлом, но благодаря установке параметра Сжимать сообщение он сразу же упаковывается в ZIP-архив.
Произведем аналогичное действие в базе филиала, но теперь в списке
Предположим, некий курьер в конце дня привозит на флэш-диске файл Message_ГБ_ФБ.zip в филиал из центрального офиса, и забирает оттуда файл Message_ФБ_ГБ.zip. Эти файлы можно передать любым удобным способом, например, на переносном носителе информации, по электронной почте.
После получения файла в форме списка
(рис 7.14) Чтение файла сообщения от Главной ИБ к ИБ филиала в ИБ филиалаПосле получения сообщения о том, что чтение данных успешно завершено, мы можем взглянуть на список документов ПоступлениеМатериалов - там появится новый документ из Главной ИБ.
Проделав аналогичную операцию в Главной ИБ, мы получим там новый документ из ИБ филиала и новый, созданный там же, элемент справочника. Естественно, изменения будут внесены и в регистры, по которым проводится документ из базы филиала.
(рис 7.15) Состояние объектов Главной ИБ после чтения сообщения от ИБ филиалаВыше мы говорили о том, что
Рассмотрим пример. Добавим в узле Главная ИБ с помощью конфигуратора новую константу, назовем ее КонстантаДляРИБ. Откроем Главную ИБ в режиме 1С:Предприятие, добавим в справочник Номенклатура новый элемент - Лак для ногтей в группу Прочие материалы.
Запишем сообщение из .
(рис 7.16) Получение изменения конфигурации из Главной ИБЕсли мы ответим на данный вопрос утвердительно, запускается Конфигуратор, в базу вносятся изменения, которые, после нажатия на кнопку Обновить конфигурацию базы данных, попадают в нашу рабочую конфигурацию.
После того, как база обновлена, следует еще раз произвести чтение сообщения - для того, чтобы из него были прочитаны изменения данных объектов.
Если после обновления конфигурации не прочесть сообщение повторно - данные в базах не будут синхронизированы. В нашем случае это будет означать, что новый элемент справочника Номенклатура не будет добавлен в ИБ филиала.
В данной лекции мы рассмотрели возможности по организации распределенных баз данных. Мы пользовались стандартными средствами, однако, механизмы РИБ допускают и программное управление. Например, по умолчанию изменения, выполненные в главном узле базы имеют приоритет перед изменениями, выполненными в подчиненном узле. Это позволяет поддерживать базы в синхронизированном состоянии, однако не всегда совпадает с практическими целями. Для организации работы территориально удаленных пользователей можно так же использовать универсальные механизмы обмена данными, которые так же основаны на
Наша следующая лекция будет посвящена некоторым дополнительным возможностям, касающимся разработки для 1С:Предприятие.
Для данной лекции подготовлен видеоурок.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.