Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если предположить, что в декабре программа сделает перерасчет за год, то нет. Мы и обнаружили, что сумма по году не совпадает. Потом я стал сравнивать по каждому сотруднику.
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у половины сотрудников из 350 чел
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если предположить, что в декабре программа сделает перерасчет за год, то нет. Мы и обнаружили, что сумма по году не совпадает. Потом я стал сравнивать по каждому сотруднику.
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у половины сотрудников из 350 чел
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Зарплата и управление персоналом, редакция 3.1 (3.1.16.108)
Столкнулся с такой ситуацией:
При расчете зарплаты за октябрь и ноябрь 2020 г., сумма начисления по некоторым сотрудниками регистр накопления "Учет доходов для исчисления страховых взносов" не совпадают. Пример во вложении.
Обнаружили при подготовке отчета за 2020г.
Если предположить, что в декабре программа сделает перерасчет за год, то нет. Мы и обнаружили, что сумма по году не совпадает. Потом я стал сравнивать по каждому сотруднику.
До октября цифры совпадают
Регистр "Начисления и удержания по сотрудникам" совпадает с расчетным листком.
Проверял с помощью «chdbfl.exe», тестировал из конфигуратора : реиндексация, проверка логической целостности, проверка ссылочной целостности, перерасчет итогов, сжатие таблиц, реструктуризация таблиц. Ошибка осталась
Отменил все начисления зарплаты после октября 2020, на текущей конфигурации, с помощью нового документы сделал начисление зарплаты. Результат тот же.
При нажатии на строку в регистре, открывает документ начисление зарплаты, где ни у кого нет такой суммы начисления.
В регистре "Учет доходов для исчисления страховых взносов" документ-основание "Начисление зарплаты и взносов" стоит на всех записях октября
Сравнивал конфигурацию рабочей базы с чистой конфигурацией. Они идентичны.
Выгрузка в «dt» и обратная загрузка в пустую конфигурацию не помогла.
У меня несколько клиентов, у всех все нормально.
Внешнего воздействия на базу не было, за исключением загрузки кадровых документов из «Контур персонал». Кадровичка не хочет работать с 1С. Следов в этом регистре тоже не обнаружил.
Не совпадают начисления почти все, за исключение созданных отдельным документом, доплаты и т.д.
Повторюсь, ошибки примерно у половины сотрудников из 350 чел
Пробовал отследить с отладчиком откуда берется дурное значение, запутался в модулях.
Я так глубоко давно не разбирался с конфигурацией.
Если кто то подскажет хотя бы примерно где копать, буду очень благодарен.
Хранилище конфигурации предназначено для коллективной разработки конфигурации. В хранилище сохраняется история разрабатываемой конфигурации, а также информация о том, когда и кто вносил изменения в конфигурацию. Разработка конфигурации с использованием хранилища может вестись неограниченным числом пользователей.
Принцип работы
Хранилище конфигурации представляет собой базу данных, в которой сохраняются все изменения конфигурации, сделанные в процессе её разработки. После подключения информационной базы к хранилищу из него в информационную базу загружается последняя версия конфигурации, и все объекты метаданных конфигурации становятся недоступными для редактирования.
Гранулой редактирования - объектами разработки - являются все основные объекты метаданных (такие как справочники, документы, регистры сведений), а также формы и макеты. Объекты разработки могут редактироваться независимо друг от друга разными пользователями. Реквизиты, табличные часть и т.д. не являются отдельными объектами с логической точки зрения, поэтому они не были включены в состав объектов разработки. Данные объекты метаданных редактируются в составе своих родительских объектов, являющихся объектами разработки.
Для получения возможности редактирования объекта необходимо произвести его захват в хранилище. При выполнении захвата из хранилища будет получена (в случае наличия) новая версия объекта разработки. После внесения изменений объект необходимо поместить в хранилище, после этого обновленная версия объекта становится доступной для других пользователей, участвующих в процессе разработки конфигурации. Если же изменения не должны быть помещены в хранилище, то предусмотрена процедура отмены захвата, при которой из хранилища получается старая версия объекта разработки. Таким образом, можно выделить четыре простейшие операции работы с хранилищем: захват объекта в хранилище;
помещение объекта в хранилище;
получение объекта из хранилища;
отмена захвата в хранилище.
Для параллельной разработки конфигурации в хранилище используется стратегия пессимистической блокировки: в то время, пока объект разработки редактируется одним пользователем, другие пользователи не имеют возможности его редактировать.
Стоит обратить внимание на тот факт, что при подключении информационной базы к хранилищу конфигурации происходит полная замена текущей редактируемой конфигурации конфигурацией хранилища . Это необходимо для обеспечения полного соответствия идентификаторов объектов метаданных. Если все же имеется информационная база, часть объектов метаданных конфигурации которой необходимо перенести в конфигурацию хранилища, то необходимо: выгрузить конфигурацию из информационной базы в файл,
подключить информационную базу к хранилищу конфигурации,
выполнить захват объектов, которые необходимо заместить,
произвести объединение с требуемой конфигурацией.
Важно понимать, что предметом разработки является конфигурация, а не отдельные объекты. Хранилище ведет историю развития конфигурации. При помещении объектов разработки в хранилище создается новая версия конфигурации, для которой записываются: дата создания версии, пользователь, создавший версию, а также списки объектов разработки, которые были добавлены, изменены, удалены в процессе получения данной версии конфигурации. История объектов разработки не ведется. Несмотря на то, что имеется возможность просмотра истории объекта разработки, отдельно загрузить из хранилища объект разработки какой-либо версии конфигурации невозможно, возможна лишь загрузка из хранилища версии конфигурации целиком. Однако все же имеется возможность получения объекта определенной версии конфигурации: необходимо захватить объект и выполнить объединение с версией конфигурации, в которой данный объект имеет требуемое состояние.
При создании новой версии конфигурации хранилища имеется возможность записать комментарий к этой версии. Рекомендуется комментировать версии конфигурации, для того чтобы впоследствии можно было понять, что именно было изменено в данной версии конфигурации. Для наиболее значимых версий (например: выпуск релиза) рекомендуется также устанавливать метку - строку, кратко описывающую версию конфигурации хранилища.
В процессе разработки конфигурации с использованием хранилища рекомендуется периодически получать актуальное состояние объектов разработки. Это позволяет избежать возможных трудностей при помещении объектов в хранилище (например при удалении объектов метаданных из конфигурации).
Средства работы с хранилищем конфигурации позволяют просматривать историю версий конфигурации хранилища, сохранять конфигурацию определенной версии в файл, сравнивать с другими версиями конфигурации данного хранилища или же сравнивать с другой конфигурацией из файла.
Если по каким-либо причинам хранилище конфигурации недоступно, то имеется возможность продолжать работу с объектами разработки, захваченными ранее в хранилище. Таким образом, можно вести разработку, не имея постоянной непосредственной связи с хранилищем конфигурации.
Режимы использования
Для работы с хранилищем конфигурации предусмотрено несколько способов: с подключением информационной базы к хранилищу;
без подключения информационной базы к хранилищу.
Данные режимы отличаются друг от друга как набором функциональности, предоставляемой платформой 1С:Предприятия, так и своим предназначением.
Работа с подключением информационной базы к хранилищу
Этот режим является основным режимом работы с хранилищем. Он используется для групповой разработки конфигурации несколькими пользователями.
Работа в данном режиме начинается с процедуры подключения информационной базы к хранилищу. К одному хранилищу может быть одновременно подключена одна информационная база от имени одного пользователя. Если пользователь, у которого уже имеется информационная база, подключенная к данному хранилищу, произведет попытку подключения другой информационной базы, то ему будет выдано соответствующее предупреждение. Если же подключение все же будет осуществлено, то прежняя информационная база уже не сможет работать с данным хранилищем конфигурации без предварительного отключения от него. Аутентификация в хранилище от имени пользователя, не подключавшего данную информационную базу к хранилищу, невозможна.
При подключении информационной базы к хранилищу в нем регистрируется строка соединения с информационной базой. Если при последующих соединениях с хранилищем данная строка будет изменена (по каким-либо причинам информационная база была перемещена на другой ресурс), то платформой будет выдано соответствующе предупреждение, и, в случае подтверждения соединения, строка соединения будет обновлена. Если соединение происходило копией информационной базы, то работа оригинала с данным хранилищем будет невозможна без предварительного отключения от него.
Работа без подключения информационной базы к хранилищу
Режим обеспечивает возможность просмотра и администрирования хранилища без подключения к нему, т.е. без замены редактируемой конфигурации конфигурацией хранилища. В данном режиме пользователь может получить конфигурацию определенной версии хранилища, посмотреть историю конфигурации или отдельных объектов разработки, произвести действия по редактированию прав пользователей или изменению их состава.
Работа в данном режиме начинается с открытия хранилища конфигурации, данная процедура заключается в аутентификации пользователя в хранилище, которая будет автоматически предложена при выполнении любого первого действия с хранилищем в данной сессии работы Конфигуратора. Для открытия другого хранилища в данной сессии Конфигуратора необходимо закрыть текущее хранилище конфигурации, выполнив соответствующий пункт меню.
Предполагается, что данный режим будет использоваться для подготовки дистрибутивов конфигураций на основе файлов выгрузки информационных баз. Данная процедура может выглядеть следующим образом:
Создать новую информационную базу.
Открыть хранилище конфигурации.
Из хранилища конфигурации загрузить конфигурацию нужной версии.
Произвести заполнение информационной базы необходимыми данными.
Произвести подготовку дистрибутива конфигурации.
В процессе модернизации конфигурации хранилища для выпуска новых дистрибутивов необходимо повторить процедуру, начиная с пункта 2, и, если новых данных вводить не требуется, сразу выполнить подготовку дистрибутива.
Контроль ссылочной целостности
Стандартные механизмы контроля ссылочной целостности конфигурации обеспечивают контроль на уровне объектов метаданных: нельзя, например, удалить из конфигурации справочник, если на него ссылается реквизит документа и т.д. На уровне интерфейсов, форм и макетов такой контроль не ведется.
Пример: удаление справочника Склады из демонстрационной конфигурации ":
происходит проверка имеющихся на этот объект ссылок в других объектах:
"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
Документ.РасходнаяНакладная.Реквизит.Склад.Тип
РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
после удаления обнаруженных ссылок справочник Склады успешно удаляется из конфигурации, хотя ссылка не него по-прежнему имеется в интерфейсе Основной (кнопка Склады из подменю Справочники содержит действие "Склады: Открыть справочник") и формах документов ПриходнаяНакладная, РасходнаяНакладная (поля ввода, предназначенные для редактирования реквизитов Склад по-прежнему имеют тип СправочникСсылка.Склады).
При разработке конфигурации без использования хранилища этого вполне хватает. Однако для параллельной разработки конфигурации такой контроль ссылочной целостности недостаточен.
Хранилище конфигурации обеспечивает более строгий контроль ссылочной целостности конфигурации. Производится полный контроль ссылок между объектами метаданных как на уровне самих объектов, так и на уровне содержимого их форм и макетов, а также содержимого интерфейсов.
Следствием этого факта является необходимость получения из хранилища (помещения в хранилище) объектов, так или иначе связанных с объектом, над которым непосредственно производится действие. Однако хранилище конфигурации производит анализ ссылок объекта и требует получения (помещения) дополнительных объектов только в случае необходимости.
Анализ ссылок производится рекурсивно: сначала производится анализ объекта, с которым производится действие в хранилище; затем при обнаружении необходимости выполнения операции над дополнительными объектами аналогичный анализ производится для них, и так до тех пор, пока ссылки всех требуемых объектов не будут проанализированы.
Особенности конфигурирования
Разработка конфигурации в информационной базе, подключенной к хранилищу конфигурации, имеет некоторые особенности.
Как уже говорилось ранее, для получения возможности редактирования объекта необходимо произвести его захват в хранилище конфигурации. Если необходимо внести изменения в объект метаданных, не являющийся объектом разработки (реквизиты, табличные части), то необходимо произвести захват того объекта разработки, который содержит данные объекты метаданных.
Для добавления нового объекта метаданных или же для изменения порядка следования существующих объектов необходимо произвести захват родительского объекта разработки.
Удаление объектов конфигурации
Особое внимание стоит уделить процедуре удаления объектов метаданных из конфигурации. Для удаления объекта метаданных из конфигурации необходимо захватить в хранилище сам удаляемый объект, его родительский объект, а также все подчиненные объекты удаляемого. После чего появится возможность удалить объект из конфигурации.
Однако при помещении в хранилище, если на удаленный объект имеются ссылки в других объектах, средства работы с хранилищем потребуют помещение этих объектов в хранилище с очищенными ссылками на удаленный объект.
Рекомендуется перед удалением объекта из конфигурации производить поиск ссылок на данный объект. Произвести захват в хранилище всех обнаруженных объектов и вычистить из них все ссылки на удаляемый объект. После этого необходимо удалить все ссылки на удаляемый объект из форм, интерфейсов и макетов. После чего удалить объект из конфигурации и произвести попытку помещения изменений в хранилище. Если помещение в хранилище завершится неудачей из-за обнаружения ссылок на удаленный объект, то необходимо захватить указанные объекты и произвести повторную попытку помещения изменений в хранилище.
Пример: удаление справочника Склады из демонстрационной конфигурации:
Производим поиск ссылок на удаляемый объект:
"Справочник.Склады" использован в: Документ.ПриходнаяНакладная.Реквизит.Склад.Тип
Документ.РасходнаяНакладная.Реквизит.Склад.Тип
РегистрНакопления.УчетНоменклатуры.Измерение.Склад.Тип
Захватываем данные объекты и удаляем из них реквизиты, ссылающиеся на справочник Склады.
Захватываем интерфейс "Основной" и удаляем из него кнопку Склады из подменю Справочники с действием "Склады: Открыть справочник".
Захватываем корневой объект конфигурации и справочник Склады.
Удаляем справочник Склады из конфигурации.
Производим попытку помещения корневого объекта конфигурации в хранилище
Параметры командной строки для работы с хранилищем конфигурации
Параметры командной строки режима работы с хранилищем конфигурации
/ConfigurationRepositoryF <каталог хранилища> — указание имени каталога хранилища.
/ConfigurationRepositoryN <имя> — указание имени пользователя хранилища.
/ConfigurationRepositoryDumpCfg <имя cf файла> [-v <номер версии хранилища>] — сохранить конфигурацию из хранилища в файл (пакетный режим запуска).
-v <номер версии хранилища> v — номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия.
/ConfigurationRepositoryUpdateCfg [-v <номер версии хранилища>] [-revised] — обновить конфигурацию хранилища из хранилища (пакетный режим запуска).
-v<номер версии хранилища> — номер версии, если номер версии не указан, или равен -1, будет сохранена последняя версия, если конфигурация не подключена к хранилищу, то параметр игнорируется;
-revised — получать захваченные объекты, если потребуется. Если конфигурация не подключена к хранилищу, то параметр игнорируется;
-force — если при пакетном обновлении конфигурации из хранилища должны быть получены новые объекты конфигурации или удалиться существующие, указание этого параметра свидетельствует о подтверждении пользователем описанных выше операций. Если параметр не указан — действмия выполнены не будут.
/ConfigurationRepositoryUnbindCfg [-force] — отключение конфигурации от хранилища конфигурации (у пользователя должны быть административные права в данной информационной базе). Если пользователь аутентифицируется в хранилище (интерактивно или через параметры командной строки), то отключение конфигурации от хранилища также отражается в самом хранилище конфигурации (информация о подключении удаляется), если же пользователь не аутентифицировался в хранилище, то производится только локальное отключение конфигурации от хранилища.
В случае, если в конфигурации имеются захваченные объекты, которые были изменены относительно хранилища, то будет выдано соответствующее сообщение и отключения не выполнится.
–force — ключ для форсирования отключения от хранилища (пропуск диалога аутентификации, если не указаны параметры пользователя хранилища, игнорирование наличия захваченных и измененных объектов).
/ConfigurationRepositoryReport <имя файла> [-NBegin <номер версии>] [-NEnd <номер версии>] [-GroupByObject] [-GroupByComment] — построение отчета по истории хранилища. Если параметры группировки не указаны и режим совместимости указан "Не используется", то отчет формируется с группировкой по версиям. В режимах совместимости "Версия 8.1" и "Версия 8.2.13" отчет формируется с группировкой по объектам. Если конфигурация базы данных отличается от редактируемой по свойству совместимости, при обработке командной строки учитывается значение режима совместимости конфигурации базы данных.
<имя файла> — имя файла, в который выводится отчет;
NBegin — номер сохраненной версии, от которой начинается строиться отчет;
NEnd — номер сохраненной версии, по которую строится отчет;
GroupByObject — признак формирования отчета по версиям с группировкой по объектам;
GroupByComment — признак формирования отчета по версиям с группировкой по комментарию.
Примеры: для конфигурации, не присоединенной к текущему хранилищу:
для присоединенной к хранилищу конфигурации, информация для отчетов берется из текущего хранилища:
Обработка "Выгрузка и загрузка данных XML" (ВыгрузкаЗагрузкаДанныхXML)
Данная обработка позволяет производить обмен данными между одинаковыми (идентичными) конфигурациями на платформе 1С 8.х
Режимы работы
Обработка реализует 2 режима работы: Выгрузки (создание файла выгрузки указанных пользователем данных) и Загрузки (чтение файла выгрузки, созданного одноименным режимом, и запись имеющихся в нем данных). Установка режима осуществляется выбором в поле Режим.
Перед запуском того или иного режима (нажатие кнопки Выполнить) нужно указать имя файла выгрузки либо введя его вручную в поле "Имя файла", либо воспользовавшись кнопкой выбора этого поля и стандартным диалогом выбора файла.
В режиме загрузки имеется возможность редактирования использования итогов при записи регистров, что может повлиять на скорость загрузки.
Кнопки "Отключить итоги" и "Включить итоги" доступны при установленном флаге "Включить возможность редактирования использования итогов во время загрузки данных" и используются для ручного управления режимом использования итогов при загрузке данных.
Условия применимости обработки
Обработка может использоваться только в тех случаях, когда информационная база, в которой осуществлялась выгрузка данных, и та, в которой данные загружаются, являются однородными (конфигурации идентичны, данные могут различаться), либо все выгружаемые объекты практически полностью идентичны по составу и типам реквизитов и табличных частей, свойствам "ведущего" объекта метаданных и т.д. Следует отметить, что, в связи с указанными ограничениями, обработка главным образом предназначена для обмена между однородными ИБ.
Формат файла выгрузки отличается от формата файла, создаваемого при выгрузке по плану обмена, заголовочной частью. Для выгрузки данных (элементов справочников, наборов записей регистров и т.д.) обработкой используется тот же механизм XML-сериализации, что и выгрузкой по планам обмена, в этой части форматы файлов идентичны.
Определение состава выгрузки
Обработка позволяет осуществить как полную, так и частичную выгрузку данных информационной базы в файл. Настройка состава выгружаемых данных производится в диалоге путем установки флажков в колонке дерева, отображающего объекты метаданных, данные по которым могут быть выгружены. Дополнительная колонка флажков, "При необходимости", устанавливает необходимость выгрузки объектов данного типа "по ссылке". То есть, если флажок установлен только в колонке "При необходимости", то данные по такому объекту будут выгружаться не полностью, а только в том объеме, который необходим для поддержания ссылочной целостности в информационной базе, которая будет загружать файл выгрузки.
При открытии формы обработка устанавливает признак выгрузки по ссылке всем объектам, что гарантирует ссылочную целостность выгруженного фрагмента информационной базы.
При нажатии на кнопку "Определить объекты, выгружаемые по ссылке" обработка анализирует, ссылки на какие данные могут содержаться в объектах, у которых установлен признак полной выгрузки, и автоматически заполняет колонку флажков, индицирующих необходимость выгрузки по ссылке. Если объект уже имеет установленный флажок полной выгрузки, в таком случае флажок выгрузки по ссылке не устанавливается.
Возможные применения
Использование этой обработки возможно, например, для создания полной или частичной резервной копии данных, осуществления обмена данными между информационными базами, а также как вспомогательный инструмент при восстановлении проблемных информационных баз.
Механизм распределенных информационных баз предназначен для создания территориально распределенных систем на основе идентичных конфигураций 1С:Предприятия 8. Этот механизм позволяет переносить как данные 1С: Предприятия, так и изменения конфигурации информационной базы.
В тех случаях, когда предприятие представляет собой территориально распределенную структуру, зачастую сохраняется потребность в ведении единой системы учета. То есть необходимо иметь возможность работать в едином пространстве документов, получать отчеты, отражающие состояние дел как в территориально удаленных подразделениях предприятия, так и на предприятии в целом и т.п. При этом не всегда имеется возможность организовать работу всех подразделений с единой информационной базой в режиме он-лайн.
Для решения подобных задач и предназначен встроенный механизм. Распределенная система в этом случае должна иметь древовидную структуру, в которой существует корневой узел и определено отношение "главный - подчиненный" для каждой пары связанных узлов. При этом система будет стремиться поддерживать одинаковое состояние объектов данных во всех узлах распределенной ИБ.
Обмен измененных объектов данных между каждым связанным узлом выполняется в формате ХML файлов. Перенос данных непосредственно между периферийными ИБ невозможен. Поэтому изменения данных, произведенные в одном из периферийных узлов распределенной ИБ попадают в другие периферийные узлы только через центральную ИБ.
В простейшем случае (по умолчанию) областью распространения изменений для всех объектов является вся распределенная ИБ. Таким образом, в случае если в течение какого-то времени изменения данных системы не будут производиться, и, в то же время, будут произведены все необходимые действия по обмену изменениями между узлами распределенной ИБ, то все узлы будут содержать абсолютно одинаковые данные.
Внесение изменений в конфигурацию возможно только в одном (корневом) узле распределенной системы. Изменения конфигурации передаются от главного узла к подчиненным.
Механизмы распространения изменений объектов работают полностью автоматически. Разработчик конфигурации лишен возможности вмешиваться в функционирование этих механизмов. Для того, чтобы механизмы распределенной ИБ начали работать, не нужно производить никаких специальных действий по конфигурированию системы.
Для того, чтобы документы, элементы справочников и другие объекты, созданные в разных узлах распределенной ИБ можно было различать, если это необходимо, в настройках программы можно указать префикс узла распределенной базы. В этом случае в при создании нового объекта (к примеру документа) будет автоматически добавляться указанный префикс.
В основе механизма распределенных информационных баз лежат универсальные механизмы обмена данными, такие как служба регистрации изменений, инфраструктура сообщений, XML-сериализация и чтение/запись XML-документов. Однако механизм распределенных информационных баз содержит ряд специфических возможностей, недоступных через универсальные механизмы обмена данными.
К таким возможностям относится интерактивное создание начального образа информационной базы, а также интерактивное чтение и запись изменений, которые могут быть выполнены сразу же, после указания того, что данный план обмена будет использовать механизм распределенных информационных баз. Таким образом, распределенная информационная база может быть создана без какого-либо дополнительного программирования, исключительно средствами визуального конструирования. При этом обмен в распределенной информационной базе будет осуществляться на основе некоторых алгоритмов, изначально заложенных в платформе.
Все действия, выполняемые при интерактивном обмене, могут быть продублированы программно, и кроме этого разработчик имеет возможность программно управлять принятием и отправкой изменений, а также выполнять реструктуризацию распределенной информационной базы, добавляя новые и удаляя существующие узлы.
Служба регистрации изменений
Суть регистрации изменений состоит в том, чтобы иметь перечень измененных элементов данных которые должны быть переданы в очередном сообщении тому или иному узлу, с которым производится обмен данными. При каждом изменении данных регистрируется, что имеются изменения, которые предстоит передать во все узлы, с которыми поддерживается обмен этими данными. При получении подтверждения приема сообщения, в котором были отправлены изменения, записи регистрации изменений должны быть удалены.
Состав данных, которыми осуществляется обмен, описывается в Плане обмена и представляет собой перечень элементов данных.
Для каждого элемента данных, указанного в плане обмена, ведется своя таблица регистрации изменений. Таблицы имеют разную структуру, в зависимости от того, для каких элементов данных регистрируются изменения, но все-таки структуры таблиц подобны. Каждая запись указывает на некоторый элемент данных, некоторый узел и содержит номер сообщения, в котором это изменение передано в первый раз.
При описании состава данных в плане обмена, для каждого элемента данных есть возможность указать признак Авторегистрации. Авторегистрацию можно «Разрешить» или «Запретить». Если авторегистрация разрешена, то при изменении данных регистрация изменений будет выполнена автоматически. Если запрещена, то регистрацию изменения можно выполнить «вручную», средствами встроенного языка.
Инфраструктура сообщений
С точки зрения плана обмена, между узлами происходит обмен сообщениями. Каждое сообщение содержит изменения данных, изменения конфигурации (если это распределенная информационная база) и ряд служебной информации. Каждое сообщение точно ассоциировано с планом обмена, имеет уникальный номер и имеет одного отправителя и одного получателя.
Сообщение оформляется как документ XML, имеющий определенную структуру. Инфраструктура сообщений позволяет формировать нужную структуру сообщения, и контролировать ее корректность. В частности, инфраструктура сообщений поддерживает нумерацию сообщений, и позволяет получать подтверждения от узла-получателя о приеме сообщений. Такое подтверждение содержится в каждом сообщении, приходящем от узла-получателя в виде номера последнего принятого сообщения.
Коллизии
При работе в реальных распределенных ИБ один и тот же объект может изменяться одновременно в различных узлах распределенной ИБ. И при переносе измененных объектов из одной ИБ в другую может случиться так, что в какую-либо ИБ будет загружаться объект, зарегистрированный в самой этой ИБ как измененный. Такая ситуация носит название коллизии.
Приведем описание действий системы в наиболее типовых вариантах коллизий: Один и тот же объект изменен более чем в одной ИБ.
Общий принцип здесь состоит в том, что "главным" считается изменение, произведенное в центральной ИБ. Отработка ситуации различается в зависимости от того, на какой ИБ - центральной или периферийной коллизия обнаружена. Если коллизия обнаружена на центральной ИБ, то есть при загрузке файла переноса из периферийной ИБ обнаружено, что один из измененных объектов также изменен и в центральной ИБ, то изменения объекта в центральную ИБ не загружаются. При этом гарантируется, что при очередной выгрузке в адрес периферийной ИБ будет передано состояние объекта как оно есть в центральной ИБ. Если же коллизия обнаружена на периферийной ИБ, то изменения объекта, прибывшие из центральной ИБ загружаются. Объект, измененный в одной ИБ, удален в другой.
В данном случае принцип заключается в том, что изменение всегда "главнее" удаления. В случае, если на центральную ИБ прибывает файл переноса, в котором содержится информация, что некоторый объект удален на периферийной ИБ, то в центральной ИБ объект не удаляется, а в записи таблицы регистрации изменений данный объект помечается как измененный. То есть при очередном обмене объект будет восстановлен в той ИБ, в которой он был удален, причем само содержание объекта будет соответствовать той ИБ, которая "отвергла" удаление.
Аналогичные действия производятся, если коллизия обнаружена на периферийной ИБ. Объект, удаленный в одной ИБ, не может быть удален в другой по причине наличия ссылок на него.
При загрузке изменений, если загружается информация об удалении объектов, автоматически включается механизм контроля ссылочной целостности и выполняется проверка наличия ссылок в данной ИБ на объекты, которые переданы как удаленные.
В случае обнаружения коллизии такого рода, вне зависимости от того на какой из ИБ она была обнаружена, выполняется следующее: удаление не выполняется, а в таблицу регистрации изменений заносится запись о том, что объект должен быть перенесен в адрес той ИБ, из которой была прислана информация о его удалении.
При очередном обмене объект восстанавливается в той ИБ, в которой он был удален, однако само содержание объекта будет соответствовать той ИБ, которая "отвергла" удаление.
Таким образом на сегодняшний день платформа 1С:Предприятие предоставляет очень удобный механизм, использование которого относительно просто и не требуется никаких навыков в программировании, а благодаря механизму автоматического обмена от пользователя даже не требуется думать об актуальности его распределенной информационной базы.
Хранилище значений - это тип, который появился в 8-ой версии 1С позволяющий сохранять прямо в базе различные данные, включая двоичные данные (произвольные файлы). Например, так можно хранить в базе данных JPG-картинки, Word-документы и т.д. Причем данные будут храниться в самой базе (файле 1CD или в таблицах на SQL-сервере) и будут включены в штатную выгрузку базы или резервную копию средствами SQL Server.
Тип Хранилище значения может быть назначен реквизиту справочника, документа, ресурсу регистра сведений и т.д.
Примеры:
Восьмерка поддерживает сжатие данных, помещаемых в хранилище:
Если это были ДвоичныеДанные, то их можно восстановить из хранилища значения методом Получить и записать в файл методом Записать().
Если это был, например, Word-документ (doc-файл, или другой файл зарегистрированного типа), то его можно открыть так:
Чтобы очистить поле типа Хранилище значения, нужно присвоить ему Неопределено:
Если в Хранилище значений содержались какие-то ссылки, то они не будут контролироваться при контроле ссылочной целостности (операция Удаление помеченных объектов или метод НайтиПоСсылкам).
К сожалению, 1С не содержит встроенных методов для проверки того, заполнено хранилище или нет.
Такой вариант не работает:
Работает только такой вариант:
Но он требует затрат времени на извлечение данных из хранилища.
Поэтому, если это критично, нужно заводить еще один флаг, который указывает, содержит ли хранилище значение.