Особенности распределения Комплексной конфигурации 4.5 (для 1С 7.7)
1С комплексная конфигурация РИБ распределение 1С:Предприятие 7.7
В этой заметке предлагается способ избежать длительной первичной синхронизации Комплексной конфигурации после ее преобразования в распределенную (во всяком случае, это наблюдалось в релизе 7.70.459).
Суть проблемы, в общем-то, заключается в следующем. При преобразовании информационной базы Комплексной конфигурации в распределенную все, казалось бы, идет своим чередом: создаем периферийные информационные базы, делаем для них выгрузку, "разворачиваем" эти выгрузки на соответствующих компьютерах, запускаем, после чего производим автообмен. И вот здесь получается интересная ситуация: эти выгрузки сопоставимы по размеру с исходными выгрузками для периферийных баз! Как следствие, если мы запускаем автообмен на центральной базе, то 1С может "лопатить" одну выгрузку несколько часов! Разумеется, такое положение дел не устраивало никого.
К счастью, мне подсказали, что дело возможно в запуске процедуры обновления конфигурации на периферийных базах. Начал разбираться. Оказалось, что так оно и происходит: номер релиза при формировании периферийных баз не выгружался (кстати как и префикс ИБ, указываемый в настройках), соответственно, система считала нужным "перелопатить" практически всю БД, дабы обновить ее до текущей версии. Но ведь обновление-то, фактически, не требуется!
Поэтому пришлось немного "хакнуть" процедуру ПриНачалеРаботыСистемы в глобальном модуле.
Изначально проверка необходимости обновления выглядела так:/p>
Если Константа.НомерРелиза <> Лев(Метаданные.Комментарий, 8 ) Тогда Если ПравоДоступа("Использование","Обработка.ОбновлениеИБ") = 1 Тогда ОткрытьФорму("Обработка.ОбновлениеИБ"); Иначе Предупреждение("Первый запуск программы для обновления информационной базы |должен произвести пользователь с правами администратора!", 60); СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли;
А, как мы выяснили, Константа.НомерРелиза сразу после "разворачивания" периферийный базы пустая. Поэтому этот кусок кода был модифицирован:
Если Константа.НомерРелиза <> Лев(Метаданные.Комментарий, 8 ) Тогда Если Вопрос("(заплатка) Установить номер релиза "+Метаданные.Комментарий+" без выполнения обновления?", "Да+Нет")="Да" Тогда Константа.НомерРелиза = Лев(Метаданные.Комментарий, 8 ); Иначе Если ПравоДоступа("Использование","Обработка.ОбновлениеИБ") = 1 Тогда ОткрытьФорму("Обработка.ОбновлениеИБ"); Иначе Предупреждение("Первый запуск программы для обновления информационной базы |должен произвести пользователь с правами администратора!", 60); СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецЕсли;
Как говорится, ловкость рук, и никакого мошенства. Разумеется, при запуске периферийной базы на этот вопрос необходимо отвечать утвердительно, а вот при фактическом обновлении центральной ИБ - отрицательно.
В результате проделанных манипуляций, проблема "здоровой" первичной выгрузки из периферийной базы была решена. Спасибо умным людям с "Волшебного форума"
Категория: Программирование, веб | Опубликовано 03.06.2009 | Редакция от 19.02.2017
Похожие материалы
1С Управление торговлей 10.3. Ошибка при печати этикеток: V8 - не хватает памяти
Очень простое решение неочевидной проблемы с нехваткой памяти при печати этикеток. В моем случае - 1С: Предприятие 8.1, Управление торговлей 10.3, Windows 7 (или 8) x64, принтер этикеток Godex EZ-DT-2.
Максимальная длина строкового реквизита 1С: Предприятия 8
Как узнать длину строкового реквизита, указанную в конфигураторе, на примере дополнения числа ведущими нулями.
Проверка типа ссылки в запросах 1С: Предприятия 8
Очередная краткая заметка по не вполне очевидному оператору языка запросов 1С: Предприятия 8.
Позиционирование табличного поля в 1С: Предприятии 8
Рассматривается случай, когда после заполнения табличного поля нужно было выбрать определенную строку.
Таймер в 1С: Предприятии 8
Как выполнить какой-либо программный код спустя определенное время (разово), либо регулярно через определенные промежутки времени.