Всем привет.
Конфа КА2 в которую интегрирована часть объектов расширяющая функционал и эта часть отдельно на поддержке.
Объекты сопоставлял довольно тщательно и не спеша. Это не первая нетиповая БД которую я обновляю но определенно таких больших апдейтов не было..
На все про все ушло у меня 2 полных дня (объектов в обновлении было очень много)…
После апдейта программа вылетает с ошибкой.
Ошибка при подготовке описаний подсистем:
в описании подсистемы (см. процедуру ОбновлениеИнформационнойБазыБТС.ПриДобавленииПодсистемы)
указано имя подсистемы «БиблиотекаТехнологииСервиса», которое уже зарегистрировано ранее.
{ОбщийМодуль.СтандартныеПодсистемыПовтИсп.Модуль(48)}: ВызватьИсключение ТекстОшибки;
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(237)}: ОписанияПодсистем = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем();
{Обработка.РезультатыОбновленияПрограммы.Форма.ИндикацияХодаОбновленияИБ.Форма(33)}: РежимОбновленияДанных = ОбновлениеИнформационнойБазыСлужебный.РежимОбновленияДанных();
{ОбщийМодуль.ОбновлениеИнформационнойБазыКлиент.Модуль(201)}: Форма = ОткрытьФорму(ИмяФормы,,,,,, Новый ОписаниеОповещения(
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(2147)}: ВыполнитьОбработкуОповещения(ИнтерактивнаяОбработка, Параметры);
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(291)}: Если ВыполняетсяИнтерактивнаяОбработкаПередНачаломРаботыСистемы() Тогда
{МодульУправляемогоПриложения(91)}: СтандартныеПодсистемыКлиент.ПриНачалеРаботыСистемы();
Вы мне здорово поможете если укажете направление или идею куда двигаться чтобы победить ошибку..
Подсистемы с именем БиблиотекаТехнологииСервиса в конфе нет и не было.
Процедура ОбновлениеИнформационнойБазыБТС.ПриДобавленииПодсистемы в новой конфигурации поставщика не сильно отличается от предыдущей основной конфигурации.
Я пробовал заменял код процедуры ПриДобавленииПодсистемы на тот который был до обновления… Результат такой же.
Разработка конфигурации «с нуля»
Короткая инструкция для быстрого начала разработки собственной конфигурации на базе «Библиотеки стандартных подсистем» описана на диске ИТС здесь . В ней описаны только обязательные действия, которые необходимы для первого запуска разрабатываемого решения.
Этап №1 Определиться со списком внедряемых подсистем. Для этого нужно запустить обработку ПервоеВнедрениеБСП из комплекта поставки, которая позволяет выбрать подсистемы для внедрения с учетом их зависимостей друг от друга.
Этап № 2. После определения состава подсистем нажать Сохранить настройки для конфигуратора и задать имя файла для сохранения настроек.
Этап № 4. Создать новую пустую базу и выполнить следующие действия:
- Вызвать меню Конфигурация – Сравнить, объединить с конфигурацией из файла.
- Выбрать файл 1Cv8.cf из поставки БСП.
- На предложение выполнить полную загрузку конфигурации ответить Нет.
- На предложение постановки на поддержку ответить Да.
- Выбрать Действия – Загрузить настройки из файла. Указать файл, сохраненный на этапе №2
- Затем нажать Выполнить . В случае внедрения не всех подсистем БСП при завершении процедуры сравнения и объединения конфигураций может появиться окно с информацией о наличии неразрешенных ссылок (см. пример в Внедрение подсистемы “Обмен данными” без подсистемы “Работа с почтовыми сообщениями”). Сообщения в этом окне необходимо пропустить, выбрав кнопку Продолжить.
Этап № 5 Действия после сравнения, объединения
- Установить в свойствах конфигурации имя конфигурации, например, «МояКонфигурация».
- Установить в свойствах конфигурации номер версии разрабатываемой конфигурации. Например, при начале разработки конфигурации можно установить номер 1.0.1.1.
- Скопировать общий модуль ОбновлениеИнформационнойБазы.
- Заменить в названии скопированного модуля на имя или сокращение имени конфигурации (например, ОбновлениеИнформационнойБазыМК).
- Заменить текст модуля на:
Процедура ПриДобавленииПодсистемы(Описание) Экспорт // имя конфигурации и номер версии на Описание.Имя = "МояКонфигурация"; Описание.Версия = "1.0.1.1"; // Требуется библиотека стандартных подсистем. Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы"); КонецПроцедуры Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт КонецПроцедуры Процедура ПередОбновлениемИнформационнойБазы() Экспорт КонецПроцедуры Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия, Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт КонецПроцедуры Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт КонецПроцедуры Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт КонецПроцедуры Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт КонецПроцедуры Процедура ПриЗавершенииПереходаСДругойПрограммы(Знач ПредыдущееИмяКонфигурации, Знач ПредыдущаяВерсияКонфигурации, Параметры) Экспорт КонецПроцедуры
Этап 6. В процедуре ПриДобавленииПодсистем общего модуля ПодсистемыКонфигурацииПереопределяемый обязательно нужно добавить строчку
МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыМК");
На рис 2 показан пример, где я создал конфигурацию “с нуля” с именем Преводчик
Если не добавить эту строку или не создавать общий модуль с обновления информационной базы по правилам на этапе 5, то при старте в режиме запуска приложения возникает ошибка такого рода:
{ОбщийМодуль.СтандартныеПодсистемыПовтИсп.Модуль(77)}: Ошибка при подготовке описаний подсистем: в общих модулях, указанных в процедуреПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистемы не найдено описание подсистемы, совпадающей с именем конфигурации
Previous ArticleПечать Pdf файла
#Область СлужебныйПрограммныйИнтерфейс
// Возвращает описания всех библиотек конфигурации, включая
// описание самой конфигурации.
//
Функция ОписанияПодсистем() Экспорт
МодулиПодсистем = Новый Массив;
МодулиПодсистем.Добавить(«ОбновлениеИнформационнойБазыБСП»);
ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистем(МодулиПодсистем);
ОписаниеКонфигурацииНайдено = Ложь;
ОписанияПодсистем = Новый Структура;
ОписанияПодсистем.Вставить(«Порядок», Новый Массив);
ОписанияПодсистем.Вставить(«ПоИменам», Новый Соответствие);
ВсеТребуемыеПодсистемы = Новый Соответствие;
Для Каждого ИмяМодуля Из МодулиПодсистем Цикл
Описание = НовоеОписаниеПодсистемы();
Модуль = ОбщегоНазначения.ОбщийМодуль(ИмяМодуля);
Модуль.ПриДобавленииПодсистемы(Описание);
Если ОписанияПодсистем.ПоИменам.Получить(Описание.Имя) <> Неопределено Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(«ru = ‘Ошибка при подготовке описаний подсистем:
|в описании подсистемы (см. процедуру %1.ПриДобавленииПодсистемы)
|указано имя подсистемы «»%2«», которое уже зарегистрировано ранее.’»),
ИмяМодуля, Описание.Имя);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Если Описание.Имя = Метаданные.Имя Тогда
ОписаниеКонфигурацииНайдено = Истина;
Описание.Вставить(«ЭтоКонфигурация», Истина);
Иначе
Описание.Вставить(«ЭтоКонфигурация», Ложь);
КонецЕсли;
Описание.Вставить(«ОсновнойСерверныйМодуль», ИмяМодуля);
ОписанияПодсистем.ПоИменам.Вставить(Описание.Имя, Описание);
// Настройка порядка подсистем с учетом порядка добавления основных модулей.
ОписанияПодсистем.Порядок.Добавить(Описание.Имя);
// Сборка всех требуемых подсистем.
Для каждого ТребуемаяПодсистема Из Описание.ТребуемыеПодсистемы Цикл
Если ВсеТребуемыеПодсистемы.Получить(ТребуемаяПодсистема) = Неопределено Тогда
ВсеТребуемыеПодсистемы.Вставить(ТребуемаяПодсистема, Новый Массив);
КонецЕсли;
ВсеТребуемыеПодсистемы[ТребуемаяПодсистема].Добавить(Описание.Имя);
КонецЦикла;
КонецЦикла;
// Проверка описания основной конфигурации.
Если ОписаниеКонфигурацииНайдено Тогда
Описание = ОписанияПодсистем.ПоИменам[Метаданные.Имя];
Если Описание.Версия <> Метаданные.Версия Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(«ru = ‘Ошибка при подготовке описаний подсистем:
|версия «»%2«» конфигурации «»%1«» (см. процедуру %3.ПриДобавленииПодсистемы)
|не совпадает с версией конфигурации в метаданных «»%4«».’»),
Описание.Имя,
Описание.Версия,
Описание.ОсновнойСерверныйМодуль,
Метаданные.Версия);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(«ru = ‘Ошибка при подготовке описаний подсистем:
|в общих модулях, указанных в процедуре ПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистемы
|не найдено описание подсистемы, совпадающей с именем конфигурации «»%1«».’»),
Метаданные.Имя);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
// Проверка наличия всех требуемых подсистем.
Для каждого КлючИЗначение Из ВсеТребуемыеПодсистемы Цикл
Если ОписанияПодсистем.ПоИменам.Получить(КлючИЗначение.Ключ) = Неопределено Тогда
ЗависимыеПодсистемы = «»;
Для Каждого ЗависимаяПодсистема Из КлючИЗначение.Значение Цикл
ЗависимыеПодсистемы = Символы.ПС + ЗависимаяПодсистема;
КонецЦикла;
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр(«ru = ‘Ошибка при подготовке описаний подсистем:
|не найдена подсистема «»%1«» требуемая для подсистем: %2.’»),
КлючИЗначение.Ключ,
ЗависимыеПодсистемы);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
КонецЦикла;
// Настройка порядка подсистем с учетом зависимостей.
Для Каждого КлючИЗначение Из ОписанияПодсистем.ПоИменам Цикл
Имя = КлючИЗначение.Ключ;
Порядок = ОписанияПодсистем.Порядок.Найти(Имя);
Для каждого ТребуемаяПодсистема Из КлючИЗначение.Значение.ТребуемыеПодсистемы Цикл
ПорядокТребуемойПодсистемы = ОписанияПодсистем.Порядок.Найти(ТребуемаяПодсистема);
Если Порядок < ПорядокТребуемойПодсистемы Тогда
Взаимозависимость = ОписанияПодсистем.ПоИменам[ТребуемаяПодсистема
].ТребуемыеПодсистемы.Найти(Имя) <> Неопределено;
Если Взаимозависимость Тогда
НовыйПорядок = ПорядокТребуемойПодсистемы;
Иначе
НовыйПорядок = ПорядокТребуемойПодсистемы + 1;
КонецЕсли;
Если Порядок <> НовыйПорядок Тогда
ОписанияПодсистем.Порядок.Вставить(НовыйПорядок, Имя);
ОписанияПодсистем.Порядок.Удалить(Порядок);
Порядок = НовыйПорядок — 1;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
// Смещение описания конфигурации в конец массива.
Индекс = ОписанияПодсистем.Порядок.Найти(Метаданные.Имя);
Если ОписанияПодсистем.Порядок.Количество() > Индекс + 1 Тогда
ОписанияПодсистем.Порядок.Удалить(Индекс);
ОписанияПодсистем.Порядок.Добавить(Метаданные.Имя);
КонецЕсли;
Для Каждого КлючИЗначение Из ОписанияПодсистем.ПоИменам Цикл
КлючИЗначение.Значение.ТребуемыеПодсистемы =
Новый ФиксированныйМассив(КлючИЗначение.Значение.ТребуемыеПодсистемы);
ОписанияПодсистем.ПоИменам[КлючИЗначение.Ключ] =
Новый ФиксированнаяСтруктура(КлючИЗначение.Значение);
КонецЦикла;
ОписанияПодсистем.Порядок = Новый ФиксированныйМассив(ОписанияПодсистем.Порядок);
ОписанияПодсистем.ПоИменам = Новый ФиксированноеСоответствие(ОписанияПодсистем.ПоИменам);
Возврат Новый ФиксированнаяСтруктура(ОписанияПодсистем);
КонецФункции
// Возвращает Истина, если привилегированный режим был установлен
// при запуске с помощью параметра UsePrivilegedMode.
//
// Поддерживается только при запуске клиентских приложений
// (внешнее соединение не поддерживается).
//
Функция ПривилегированныйРежимУстановленПриЗапуске() Экспорт
УстановитьПривилегированныйРежим(Истина);
Возврат ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить(
«ПривилегированныйРежимУстановленПриЗапуске») = Истина;
КонецФункции
// Возвращает соответствие имен предопределенных значений ссылкам на них.
//
// Параметры:
// ПолноеИмяОбъектаМетаданных — Строка, например, «Справочник.ВидыНоменклатуры»,
// Поддерживаются только таблицы
// с предопределенными элементами:
// — Справочники,
// — Планы видов характеристик,
// — Планы счетов,
// — Планы видов расчета.
//
// Возвращаемое значение:
// Соответствие, где
// Ключ — Строка — имя предопределенного,
// Значение — Ссылка предопределенного.
//
Функция СсылкиПоИменамПредопределенных(ПолноеИмяОбъектаМетаданных) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ТекущаяТаблица.Ссылка КАК Ссылка,
| ТекущаяТаблица.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| &ТекущаяТаблица КАК ТекущаяТаблица
|ГДЕ
| ТекущаяТаблица.Предопределенный = ИСТИНА«;
Запрос.Текст = СтрЗаменить(Запрос.Текст, «&ТекущаяТаблица», ПолноеИмяОбъектаМетаданных);
Выборка = Запрос.Выполнить().Выбрать();
ПредопределенныеЗначения = Новый Соответствие;
Пока Выборка.Следующий() Цикл
ИмяПредопределенного = Выборка.ИмяПредопределенныхДанных;
ПредопределенныеЗначения.Вставить(ИмяПредопределенного, Выборка.Ссылка);
КонецЦикла;
Возврат ПредопределенныеЗначения;
КонецФункции
// Возвращает признак использования в информационной базе полного РИБ (без фильтров).
// Проверка выполняется по более точному алгоритму, если используется подсистема «Обмен данными».
//
// Параметры:
// ФильтрПоНазначению — Строка — Уточняет, наличие какого РИБ проверяется.
// Допустимые значения:
// — Пустая строка — любого РИБ
// — «СФильтром» — РИБ с фильтром
// — «Полный» — РИБ без фильтров.
//
// Возвращаемое значение: Булево.
//
Функция ИспользуетсяРИБ(ФильтрПоНазначению = «») Экспорт
Если УзлыРИБ(ФильтрПоНазначению).Количество() > 0 Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
// Возвращает список используемых в информационной базе узлов РИБ (без фильтров).
// Проверка выполняется по более точному алгоритму, если используется подсистема «Обмен данными».
//
// Параметры:
// ФильтрПоНазначению — Строка — Задает назначение узлов планов обмена РИБ, которые необходимо вернуть.
// Допустимые значения:
// — Пустая строка — будут возвращены все узлы РИБ
// — «СФильтром» — будут возвращены узлы РИБ с фильтром
// — «Полный» — будут возвращены узлы РИБ без фильтров.
//
// Возвращаемое значение: СписокЗначений.
//
Функция УзлыРИБ(ФильтрПоНазначению = «») Экспорт
ФильтрПоНазначению = ВРег(ФильтрПоНазначению);
СписокУзлов = Новый СписокЗначений;
ПланыОбменаРИБ = ПланыОбменаРИБ();
Запрос = Новый Запрос();
Для Каждого ИмяПланаОбмена Из ПланыОбменаРИБ Цикл
Если ЗначениеЗаполнено(ФильтрПоНазначению)
И ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.ОбменДанными») Тогда
ОбщийМодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль(«ОбменДаннымиСервер»);
НазначениеРИБ = ВРег(ОбщийМодульОбменДаннымиСервер.НазначениеПланаОбмена(ИмяПланаОбмена));
Если ФильтрПоНазначению = «СФИЛЬТРОМ» И НазначениеРИБ <> «РИБСФИЛЬТРОМ»
Или ФильтрПоНазначению = «ПОЛНЫЙ» И НазначениеРИБ <> «РИБ» Тогда
Продолжить;
КонецЕсли;
КонецЕсли;
Запрос.Текст =
«ВЫБРАТЬ
| ПланОбмена.Ссылка КАК Ссылка
|ИЗ
| ПланОбмена.[ИмяПланаОбмена] КАК ПланОбмена
|ГДЕ
| НЕ ПланОбмена.ЭтотУзел
| И НЕ ПланОбмена.ПометкаУдаления»;
Запрос.Текст = СтрЗаменить(Запрос.Текст, «[ИмяПланаОбмена]», ИмяПланаОбмена);
ВыборкаУзлов = Запрос.Выполнить().Выбрать();
Пока ВыборкаУзлов.Следующий() Цикл
СписокУзлов.Добавить(ВыборкаУзлов.Ссылка);
КонецЦикла;
КонецЦикла;
Возврат СписокУзлов;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Использование идентификаторов объектов метаданных конфигурации и расширений.
// Только для внутреннего использования.
Функция ОтключитьИдентификаторыОбъектовМетаданных() Экспорт
ОбщиеПараметры = ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности();
Если НЕ ОбщиеПараметры.ОтключитьИдентификаторыОбъектовМетаданных Тогда
Возврат Ложь;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.ВариантыОтчетов»)
ИЛИ ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки»)
ИЛИ ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.РассылкаОтчетов»)
ИЛИ ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.УправлениеДоступом») Тогда
ВызватьИсключение
НСтр(«ru = ‘Невозможно отключить справочник Идентификаторы объектов метаданных,
|если используется любая из следующих подсистем:
|- ВариантыОтчетов,
|- ДополнительныеОтчетыИОбработки,
|- РассылкаОтчетов,
|- УправлениеДоступом.’»);
КонецЕсли;
Возврат Истина;
КонецФункции
// Только для внутреннего использования.
Функция ИдентификаторыОбъектовМетаданныхПроверкаИспользования(ПроверитьОбновление = Ложь, ОбъектыРасширений = Ложь) Экспорт
Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(ОбъектыРасширений);
Если ПроверитьОбновление Тогда
Справочники.ИдентификаторыОбъектовМетаданных.ДанныеОбновлены(Истина, ОбъектыРасширений);
КонецЕсли;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции работы с обменом данными.
// Возвращает список планов обмена РИБ.
// Если конфигурация работает в модели сервиса,
// то возвращает список разделенных планов обмена РИБ.
//
Функция ПланыОбменаРИБ() Экспорт
Результат = Новый Массив;
Если ОбщегоНазначения.РазделениеВключено() Тогда
Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
Если Лев(ПланОбмена.Имя, 7) = «Удалить» Тогда
Продолжить;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует(«СтандартныеПодсистемы.РаботаВМоделиСервиса») Тогда
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль(«РаботаВМоделиСервиса»);
ЭтоРазделенныеДанные = МодульРаботаВМоделиСервиса.ЭтоРазделенныйОбъектМетаданных(
ПланОбмена.ПолноеИмя(), МодульРаботаВМоделиСервиса.РазделительОсновныхДанных());
Иначе
ЭтоРазделенныеДанные = Ложь;
КонецЕсли;
Если ПланОбмена.РаспределеннаяИнформационнаяБаза
И ЭтоРазделенныеДанные Тогда
Результат.Добавить(ПланОбмена.Имя);
КонецЕсли;
КонецЦикла;
Иначе
Для Каждого ПланОбмена Из Метаданные.ПланыОбмена Цикл
Если Лев(ПланОбмена.Имя, 7) = «Удалить» Тогда
Продолжить;
КонецЕсли;
Если ПланОбмена.РаспределеннаяИнформационнаяБаза Тогда
Результат.Добавить(ПланОбмена.Имя);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Результат;
КонецФункции
// Определяет режим регистрации данных на узлах плана обмена.
//
// Параметры:
// ПолноеИмяОбъекта — Строка — Полное имя проверяемого объекта метаданных.
// ИмяПланаОбмена — Строка — Проверяемый план обмена.
//
// Возвращаемое значение:
// Неопределено — объект не включен в состав плана обмена,
// «АвторегистрацияВключена» — объект включен в состав плана обмена, авторегистрация включена,
// «АвторегистрацияОтключена» — объект включен в состав плана обмена, авторегистрация отключена,
// объекты обрабатываются при создания начального образа РИБ.
// «ПрограммнаяРегистрация» — объект включен в состав плана обмена, авторегистрация отключена,
// регистрация осуществляется программно с помощью подписок на события,
// объекты обрабатываются при создания начального образа РИБ.
//
Функция РежимРегистрацииДанныхДляПланаОбмена(ПолноеИмяОбъекта, ИмяПланаОбмена) Экспорт
ОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);
ЭлементСоставаПланаОбмена = Метаданные.ПланыОбмена[ИмяПланаОбмена].Состав.Найти(ОбъектМетаданных);
Если ЭлементСоставаПланаОбмена = Неопределено Тогда
Возврат Неопределено;
ИначеЕсли ЭлементСоставаПланаОбмена.Авторегистрация = АвторегистрацияИзменений.Разрешить Тогда
Возврат «АвторегистрацияВключена»;
КонецЕсли;
// Анализ подписок на события для более сложных вариантов использования,
// когда механизм платформенной авторегистрации отключен для объекта метаданных.
Для каждого Подписка Из Метаданные.ПодпискиНаСобытия Цикл
НачалоНазванияПодписки = ИмяПланаОбмена + «Регистрация»;
Если ВРег(Лев(Подписка.Имя, СтрДлина(НачалоНазванияПодписки))) = ВРег(НачалоНазванияПодписки) Тогда
Для каждого Тип Из Подписка.Источник.Типы() Цикл
Если ОбъектМетаданных = Метаданные.НайтиПоТипу(Тип) Тогда
Возврат «ПрограммнаяРегистрация»;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат «АвторегистрацияОтключена»;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Возвращает соответствие имен «функциональных» подсистем и значения Истина.
// У «функциональной» подсистемы снят флажок «Включать в командный интерфейс».
//
Функция ИменаПодсистем() Экспорт
ОтключенныеПодсистемы = Новый Соответствие;
ОбщегоНазначенияПереопределяемый.ПриОпределенииОтключенныхПодсистем(ОтключенныеПодсистемы);
Имена = Новый Соответствие;
ВставитьИменаПодчиненныхПодсистем(Имена, Метаданные, ОтключенныеПодсистемы);
Возврат Новый ФиксированноеСоответствие(Имена);
КонецФункции
// Проверяет наличие механизма платформы, предупреждающего об опасных действиях.
//
// Возвращаемое значение:
// Булево — если Истина, тогда работает механизм предупреждений безопасности.
//
Функция ЕстьЗащитаОтОпасныхДействий() Экспорт
Свойства = Новый Структура(«ЗащитаОтОпасныхДействий, UnsafeOperationProtection»);
ЗаполнитьЗначенияСвойств(Свойства, ПользователиИнформационнойБазы.ТекущийПользователь());
Возврат Свойства.ЗащитаОтОпасныхДействий <> Неопределено
Или Свойства.UnsafeOperationProtection <> Неопределено;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Для справочника ИдентификаторыОбъектовМетаданных.
// Только для внутреннего использования.
Функция ИдентификаторОбъектаМетаданныхПоПолномуИмени(ПолноеИмяОбъектаМетаданных) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.ИдентификаторОбъектаМетаданныхПоПолномуИмени(
ПолноеИмяОбъектаМетаданных);
КонецФункции
// Только для внутреннего использования.
Функция ТаблицаПереименованияДляТекущейВерсии() Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.ТаблицаПереименованияДляТекущейВерсии();
КонецФункции
// Только для внутреннего использования.
Функция СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений = Ложь) Экспорт
Возврат Справочники.ИдентификаторыОбъектовМетаданных.СвойстваКоллекцийОбъектовМетаданных(ОбъектыРасширений);
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Работа с предопределенными данными.
// Получает ссылку предопределенного элемента по его полному имени.
// Подробнее — см. ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент();
//
Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного, ПривилегированныйРежим) Экспорт
ИмяПредопределенного = ВРег(ПолноеИмяПредопределенного);
Точка = СтрНайти(ИмяПредопределенного, «.»);
ИмяКоллекции = Лев(ИмяПредопределенного, Точка — 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
Точка = СтрНайти(ИмяПредопределенного, «.»);
ИмяТаблицы = Лев(ИмяПредопределенного, Точка — 1);
ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1);
ТекстЗапроса = «ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 Ссылка ИЗ &ПолноеИмяТаблицы ГДЕ ИмяПредопределенныхДанных = &ИмяПредопределенного»;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, «&ПолноеИмяТаблицы», ИмяКоллекции + «.» + ИмяТаблицы);
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.УстановитьПараметр(«ИмяПредопределенного», ИмяПредопределенного);
Результат = Запрос.Выполнить();
Если Не Результат.Пустой() Тогда
Возврат Результат.Выгрузить()[0].Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
Функция НовоеОписаниеПодсистемы()
Описание = Новый Структура;
Описание.Вставить(«Имя», «»);
Описание.Вставить(«Версия», «»);
Описание.Вставить(«ТребуемыеПодсистемы», Новый Массив);
// Свойство устанавливается автоматически.
Описание.Вставить(«ЭтоКонфигурация», Ложь);
// Имя основного модуля библиотеки.
// Может быть пустым для конфигурации.
Описание.Вставить(«ОсновнойСерверныйМодуль», «»);
// Режим выполнения отложенных обработчиков обновления.
// По умолчанию Последовательно.
Описание.Вставить(«РежимВыполненияОтложенныхОбработчиков», «Последовательно»);
Описание.Вставить(«ПараллельноеОтложенноеОбновлениеСВерсии», «»);
Возврат Описание;
КонецФункции
Процедура ВставитьИменаПодчиненныхПодсистем(Имена, РодительскаяПодсистема, ОтключенныеПодсистемы, ИмяРодительскойПодсистемы = «»)
Для Каждого ТекущаяПодсистема Из РодительскаяПодсистема.Подсистемы Цикл
Если ТекущаяПодсистема.ВключатьВКомандныйИнтерфейс Тогда
Продолжить;
КонецЕсли;
ИмяТекущейПодсистемы = ИмяРодительскойПодсистемы + ТекущаяПодсистема.Имя;
Если ОтключенныеПодсистемы.Получить(ИмяТекущейПодсистемы) = Истина Тогда
Продолжить;
Иначе
Имена.Вставить(ИмяТекущейПодсистемы, Истина);
КонецЕсли;
Если ТекущаяПодсистема.Подсистемы.Количество() = 0 Тогда
Продолжить;
КонецЕсли;
ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ОтключенныеПодсистемы, ИмяТекущейПодсистемы + «.»);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
При моделировании информации, рассказанной по данному теме , столкнулся с проблемой, которая не освещена ни в курсе, ни в данной ветке обсуждения… Проблему решил – хочу поделится решением (в случае, если кто то так же столкнулся с данной проблемой) при реализации “тесного внедрения БСП 2.1.9.2.” и настройки синхронизации на стороне базы, используюйще УФ (т.е. уже имеющей внедренный БСП)
Ошибка выполнения созданного и настроенного обмена на стороне Базы приемника – при использовании БСП 2.1.9.2 в базе источнике (стоит отметит, что с базой источником проблематика не связана):
”
{ОбщийМодуль.ОбщегоНазначения.Модуль(2954)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().
Для объекта метаданных “ПланОбмена.ОбменИсходнаяБухгалтерия3”
не найден идентификатор
в справочнике “Идентификаторы объектов метаданных”.
Для разработчика: возможно требуется обновить вспомогательные данные,
которые влияют на работу программы. Для выполнения обновления можно:
– воспользоваться внешней обработкой
“Инструменты разработчика: Обновление вспомогательных данных”,
– либо запустить программу с параметром командной строки 1С:Предприятия 8
“/С ЗапуститьОбновлениеИнформационнойБазы”,
– либо увеличить номер версии конфигурации, чтобы при очередном запуске
выполнились процедуры обновления данных информационной базы.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
”
Решение, которое мне помогло:
1. В “ПланОбмена” – в обоих программах = Добавить реквизит “ИспользоватьОтборПоОрганизации” – без этого происходит ошибка проверки данного реквизита.
2. В “ПланОбмена” БП3 – добавить Макет “ПравилаОбменаКорреспондента”, заполнив его текстом правил обмена из БазыИсточника (откуда данные идет в БП3). Если этого не сделать – происходит ошибка проверки всех требуемых условий для добавленния данных о ПланеОбмена в Регистр “Правила для обмена данными” – т.к. для добавления ТРЕБУЕТСЯ иметь оба эти макета… Ошибка происходит в функции “ВыполнитьОбновлениеВерсииТиповыхПравилДляОбменаДанными” = в общем модуле “ОбменДаннымиСервер”.
3. Создать внешнюю обработку для “ручного” обновления информации в справочнике “ИдентификаторыОбъектовМетаданных” – со следующим кодом (выполнение на сервере без контекста):
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
ошибка при подготовке описаний подсистем для
Яндекс браузер не открывает pdf
Модули расширяют функциональные границы обозревателей, в том числе и Yandex. По умолчанию многие из них активированы, однако бывают случаи, когда…
Ширина лоджии в монолитном доме
Балконы и лоджии в квартире никогда не были лишней частью помещения, более того, квартиры без балконов стоят дешевле, чем оснащенные…
Шаблон для объявления с отрывными листочками
Автор: admin Дата записи Если вы хотите что-нибудь продать или купить, можно бесплатно расклеить объявления по городу. Чтобы сэкономить на…
Что означают прямоугольники в сообщениях
ошибка при подготовке описаний подсистем для . Присоединяйся! спасибо и смайлики Большое спасибо за ответ. Спасибо, мне уже ответили. Под квадрат тебя…
Что называется невозможной фигурой в автокаде
Невозможный трезубец Впервые иллюзия была опубликована в журнале «Mad» в 1965 году (художник Норман Минго). Сколько здесь колонн? Иллюзия итальянского…
Что входит в основную информацию страницы вк
Вконтакте – популярная социальная сеть, которая собрала в себе огромное количество разных и приятных функций. Многие пользователи, пользуясь данным сервисом…
Показать ещё
Популярные публикации
При обновлении платформы 1С очень часто система выдаёт сообщение об ошибке. Рассмотрим, как исправить ошибку «Нарушена целостность структуры конфигурации при обновлении 1С».
Так выглядит ошибка о нарушении целостности структуры конфигурации
Возникновение подобной проблемы связано с разными причинами. Такое может быть при обновлении конфигурации (особенно динамической), при формировании отчётов, при попытке проведения документа и так далее. Случается её появление как бы «из воздуха»- когда никто вроде ничего не делал, а ошибка есть. Правильнее говорить в этом случае, что причина её не установлена.
Встречается она в совершенно различных платформах — в файловых базах, в клиент-серверных, пр.
Решение
Вариантов лечения целостности есть несколько (не забывайте, что перед любыми действиями нужно делать резервную копию своей базы):
- Удалить временные файлы (читайте нашу ). Это помогает тогда, когда ошибка возникла только у одного из пользователей;
- Если конфигуратор доступен и его можно открыть-провести тестирование её и исправление (см. ниже). Если открыть нельзя- сделать это утилитой chdbfl.exe (но только если база — файловая). Примерное расположение её: — C:\ProgramFiles(x86)\1cv8\8.3.4.389\bin);
- Если база клиент-сервернаяи установлена на SQL сервере воспользоваться запросом «delete*fromconfigsave»;
- При доступности конфигуратора- попробовать осуществить выгрузку и загрузку базы;
- Некоторые ошибки исправляются в более поздних версиях платформы- установите новую платформу;
Если ни один из вариантов не принёс исправления — обратитесь к специалистам.
ВАЖНО.
Хотя бы раз в неделю обязательно делайте копию!
Разберёмся с особенностями использования системной утилиты для тестирования и исправления базы.
Перед проведением любых действий сделайте резервную копию данных!
Для входа в режим тестирования/исправления зайти в конфигуратор системы, выбрать в меню — Администрирование/Тестирование-исправление.
Окно проверки и режимы
Это окно предназначено для указания списка производимых действий для работы утилиты. Опишем функции каждого из них:
Реиндексация таблиц
При установке этой опции производится реиндексация заданных таблиц. Это означает полное перестроение индексов. После такой процедуры производительность системы существенно повышается — она не будет лишней.
Логическая целостность
Эта функция проверяет логическую и структурную целостности базы, находит ошибки организации данных.
Ссылочная целостность
В этом случае информация проверяется на присутствие «битых» ссылок. Они являются следствием некорректной обработки данных — чаще всего при их удалении или обмене.
При их обнаружении есть выбор трёх вариантов операций:
- Создавать объекты — системой создаются пустые элементы-заглушки (позднее их можно заполнить информацией);
- Очищать ссылки-они будут очищеныпрограммно;
- Не изменять-ссылки будут только показаны.
Пересчёт итогов
Итоги — это таблица подсчётов-результатов бухгалтерских данных. Их пересчёт увеличивает производительность.
Сжатие таблиц
Возможность сжатия и в итоге уменьшения объёма базы вызвано тем, что при удалении данных 1С не удаляет их физически. Тоесть пользователь их не видит их, но они существуют. Именно функция сжатия удаляет невидимые записи окончательно. Подобный эффект достигается выгрузкой/загрузкой файла базы (с расширениемdt).
Реструктуризация таблиц
Процедура пересоздания таблиц вызывается при изменении структуры метаданных. Полная реструктуризация — процесс очень длительный, нужно быть предельно внимательным.
Если тестирование/исправление не принесло положительного результата — воспользуйтесь приложением chdbfl.exe.
Создание резервной копии(вручную и автоматически)
Архивирование-архиважная операция, необходимая каждому пользователю, программисту, админу. Такую копиюбазы часто называют бэкапом 1С.
Наличие бэкапа помогает сохранить присутствие духа, времени, денег и много чего ещё в неожиданных и непредсказуемых ситуациях. Если кто-то вырвал шнур из системного блока, авария в электросети, потопом кофе залило компьютер, да мало ли что…
Создание бэкапа занимает до десяти минут.
Если такая ситуация произошла и вас нет бэкапа- то вы точно теперь будете его создавать!
Админы бывают двух типов: одни делают бэкап, другие — будут делать бэкап.
Выгрузка файла
Если в начальном окне программы выбрать своё предприятие и нажать указанную на рисунке кнопку, то мы войдём в 1С в режиме «Конфигуратор».
Этот режим, вообще, предназначен для разработки и администрирования. Дальше нужно в меню выбрать «Администрирование/Выгрузить информационную базу…» :
Затем нужно будет ответить системе на предложение выбора пути — куда именно должен быть выгружен файл и его название.
Об успешном проведении операции вы узнаете первым.
Восстановление резервного файла
Восстановление базы также производится из знакомого нам режима конфигуратора, но теперь уже выбираем опцию «Администрирование/ »:
Выбираем Загрузить информационную базу
Необходимо выбрать ранее сохранённый файл (с расширение мdt). Потом согласиться с предупреждением системы о потере не сохранённой информации (будет потеряна).
При успешном выполнении 1С предложит перезапуск конфигуратора.
Автоматическая архивация
Во избежание собственной забывчивости можно воспользоваться одной из программ для автоархивации, например, Effector saver 3.
Она позволяет легко, в несколько шагов, автоматизировать создание бэкапов. Способна выполнять свои функциии с файловой системой, и с клиент-серверной. Настройка её занимает всего около пятнадцати минут, но польза от неё не подлежит обсуждению.
Этому приложению доступна обработкалюбых версий 1С: 7.7, 8.1, 8.2, 8.3. Ей безразлично что обрабатывать- файловые данные или находящиеся на сервере MS SQL илиPostgreSQL. Плюс она бесплатна (есть коммерческая версия, расширенная).
Сначала скачиваем и устанавливаем дистрибутив Effector Saver.
После указания каталога крайний шаг — настроить расписание. Для этого на одноимённой вкладке указывается режим отработки задания и время для его выполнения:
Для того, чтобы убедиться в верности настроек, нужно нажать на кнопку нижней панели — «проверить». При успешной проверке должно отобразитсяприятное сообщение «Основные параметры заполнены верно».
Мы ознакомили вас с причинами и исправлением проблемы «нарушена целостность структуры конфигурации 1С». После прочтения этого материала вы легко справитесь с этой проблемой.
Загрузите последную версию обработок 1С
Программа IT Audit поддерживает несколько платформ 1С. Поэтому при выборе файла внешней обработки необходимо учитывать используемую конфигурацию и платформу 1С. В наименовании файла внешней обработки приводится информация о номере конфигурации, для которой предназначена обработка.
Внешние обработки 1С загружаются на странице Загрузить
Проверьте, поддерживается ли разработчиками IT Audit используемая конфигурация 1С
При открытии внешней обработки в 1С возникает ошибка «Нарушение прав доступа»
Использование внешних обработок требует наличия у пользователя 1С установленного права Использование в качестве OLE Automation сервера
. При отсутствии прав может возникать ошибка «Нарушение прав доступа» или иная аналогичная ошибка.
Режим 1С: Предприятие
- В списке пользователей откройте учетную запись необходимого пользователя.
- В учетной записи пользователя нажмите на кнопку Права доступа
. Установите флажок на значении Открытие внешних отчетов и обработок
. - Сохраните внесенные изменения. Выйдите из программы и заново откройте программу в режиме «1С: Предприятие». Затем откройте необходимую обработку.
Режим Конфигуратор
- Зайдите в программу в режиме Конфигуратор
. - В учетной записи пользователя перейдите на закладку «Прочие». В списке «Доступные роли» установите флажок на значении Интерактивное открытие внешних отчетов и обработок
. - Сохраните внесенные изменения. Откройте программу в режиме «1С: Предприятие» и откройте необходимую обработку.
В пункте «Администрирование» откройте список пользователей и откройте учетную запись необходимого пользователя.
При отсутствии пользователей 1С необходимо создать пользователя (например, «Администратор»)
Ошибка загрузки файла внешней обработки в результате настроек защиты 1С от опасных действий
Начиная с платформы 1С 8.3.9.x в настройках пользователя программы 1С по умолчанию включен запрет на выполнение опасных действий. Поэтому перед выполнением обращения к платформе 1С для пользователя 1С необходимо выполнить следующие настройки в конфигурации 1С.
- В программе 1С: Предприятие откройте необходимую конфигурацию в режиме Конфигуратор
. - В открывшейся форме выберите пользователя 1С от имени которого производится подключение к базе 1С из программы IT Audit. Двойным кликом левой кнопки мыши откройте форму Пользователь
с настройками выбранного пользователя. - В открывшейся форме снимите флажок в поле Защита от опасных действий
. Затем нажмите на кнопку ОК
для сохранения внесенных изменений.×
Подключение к 1С в режиме интеграции занимает длительное время
Если подключение к 1С: Предприятие занимает длительное время (более 2-3 минут), то по всей видимости, программа 1С: Предприятие в отдельном окне выводит информационное сообщение, содержащее причину невозможности подключения.
Чтобы ознакомиться с сообщением программы 1С: Предприятие, нажмите на клавиатуре клавиши Alt+Tab
. По мере нажатия клавиши «Tab»» будет открыто сообщение программы 1С: Предприятие. Ознакомьтесь с данным сообщение и выполните его. Например, достаточно часто выводится сообщение о необходимости пересчета остатков на определенную дату.При открытии отчета 1С в режиме интеграции возникает ошибка: «недопустимая строка с указанием класса», «не удалось подключить фабрику класса COM для компонента» и т.п.
Если в системе установлено несколько версий одной и той же платформы 1С, то для подключения к базе 1С будет использоваться последняя корректно установленная версия (версия платформы 1С, которая зарегистрирована в качестве OLE-сервера).
Если необходимо указать другую платформу, то в командной строке Windows от имени администратора выполните команду для регистрации 1С: Предприятия в качестве OLE-сервера:
например,«C:\Program Files\1cv83\bin\1cv8.exe» /regserver
regsvr32 «C:\Program Files\1cv83\bin\comcntr.dll»
Аналогичные действия необходимо провести, если платформа 1С вообще не зарегистрирована в качестве OLE-сервера (например, в результате некорректной установки платформы или запуска программы 1С из скопированного каталога с программой), то есть возникает ошибка «Недопустимая строка с указанием класса…».
Отсутствует лицензия на использование 1С
При невозможности подключения к базе данных программы 1С: Предприятие 8.3 (8.2) по причине отсутствия права на работу с программой (отсутствует USB-ключ защиты программы 1С: Предприятие) будет выведено информационное сообщение: «Не обнаружен ключ защиты программы (не найдена лицензия)».
В строке меню открывшейся конфигурации 1С нажмите Администрирование
и выберите пункт Пользователи
. Откроется форма Список пользователей
.
При отсутствии пользователей 1С необходимо создать пользователя (например, «Администратор»)
Печать (Ctrl+P)
Инструкция по внедрению библиотеки стандартных подсистем
Библиотека включает в себя набор универсальных функциональных подсистем,
предназначенных для использования в прикладных решениях на платформе “1С: Предприятие 8.3”
Файлы поставки содержит
1. 1Cv8.cf – файл поставки библиотеки. Не предназначен для создания
информационных баз по шаблону.
2. 1Cv8_demo.dt – демонстрационная база.
3. 1Cv8_demo.cf – файл поставки демонстрационной базы.
Первое внедрение подсистем библиотеки в конфигурацию и обновление версии уже внедренной библиотеки заметно отличаются. После загрузки файла 1Cv8.cf в пустую конфигурацию, нужно выполнить настройку объектов библиотеки как описано в разделе 2.2, иначе при запуске в режиме предприятия будет выдано сообщение
Когда я впервые внедрял БСП,
я использовал файл 1Cv8_demo.cf, где уже все настроено и загрузил его в пустую конфигурацию, а затем включил возможность изменения конфигурации и методично удалял не нужные мне добавленные объекты в файле конфигурации 1Cv8_demo.cf и подготовил себе другой файл cf, который можно загружать в пустую конфигурацию без настройки перенесенных объектов библиотеки.
В целом процесс внедрения состоит из следующих этапов:
Этап 1
. Перенос объектов метаданных из файла поставки библиотеки в конфигурацию.
Этап 2
. Настройка перенесенных объектов библиотеки.
Этап 3
. Использование объектов библиотеки при разработке конфигурации.
Все функциональные подсистемы, входящие состав библиотеки, относятся к родительской подсистеме «Стандартные подсистемы» в дереве объектов метаданных конфигуратора. Подсистемы, предназначенные для конфигураций, рассчитанных на работу в модели сервиса, подчинены подсистеме «Работа в модели сервиса».
Для задачи первоначального внедрения и последующих обновлений версий библиотеки в прикладных решениях в дистрибутив входит специальный инструмент – помощник внедрения (внешняя обработка ПервоеВнедрениеБСП.epf).
В его функции входит поддержка принятия решений по внедрению библиотеки в конфигурацию, а также автоматический контроль фактического результата внедрения. Поскольку принятие решений по внедрению и контроль их выполнения не требуют погружения в технические детали реализации, то проектирование, реализация и контроль могут выполняться разными специалистами и в разные моменты времени
Этап 1 Перенос объектов метаданных из файла
поставки библиотеки в конфигурацию.
Первое внедрение
Шаг 1.
Для выполнения переноса объектов библиотеки в свою конфигурацию при первом внедрении нужно выбрать в режиме Конфигуратор команду меню Конфигурация – Сравнить, объединить с конфигурацией из файла. В диалоговом окне указать файл поставки библиотеки и подтвердить запрос о постановке к ней на поддержку.
Шаг 2 .
В открывшемся окне сравнения и объединения конфигураций снять все флажки, ставить галку “включать область подчиненных подсистем” и отметить переносимые объекты с помощью команды Действия – Отметить по подсистемам конфигурации поставщика.
Из группы подсистем Стандартные подсистемы выбрать:
- обязательные подсистемы
: Базовая функциональность, Обновление версии ИБ, Пользователи, Контактная информация. Отметим, что при внедрении подсистемы «Пользователи» для использования в модели сервиса
подсистема «Контактная информация» - подсистемы, которые требуется внедрить в вашу конфигурацию, например, сервисные подсистемы, нормативно-справочная информация и
классификаторы - если предполагается работа конфигурации в модели сервиса, то нужно включить дополнительные подсистемы, обязательные к переносу в конфигурацию для работы в модели сервиса
Шаг 3.
Дополнительно нужно установить или снять флажки для отдельных объектов библиотеки и их свойств и выбрать режим объединения Взять из файла (Действия – Установить режим для всех…) и нажать кнопку Выполнить. В окне со списком зависимых объектов нажать кнопку Продолжить.
Шаг 4
. После завершения сравнения и объединения перейти ко второму этапу – настройка объектов библиотеки. В зависимости от числа внедряемых подсистем этот шаг может занять от одного до нескольких часов.
Обновление версии библиотеки
В этом разделе описана общая схема обновления на новую версию библиотеки. Отдельные особенности обновления каждой конкретной версии библиотеки приведены в сопроводительном документе updateSSL.htm
, входящем в поставку библиотеки. Как правило, при переходе между редакциями, подредакциями и релизами библиотеки (первая,
вторая и третья цифры в номере версии) требуется выполнить дополнительные действия по обновлению, а при переходе между исправительными релизами библиотеки (четвертая цифра
в номере версии), как правило, никаких дополнительных действий не требуется. В редких случаях, когда дополнительные действия все же необходимы при обновлении на исправительный релиз библиотеки, соответствующие инструкции содержатся не только в updateSSL.htm, но и в файле readme.txt в разделе Важно. Для обновления версии библиотеки нужно выбрать команду меню Конфигурация – Поддержка – Обновить конфигурацию. В диалоговом окне указать вариант Выбор файла обновления, задать путь к файлу поставки библиотеки и подтвердить запрос об
обновлении версии конфигурации поставщика.
Шаг 1.
Предварительно необходимо подготовить к удалению из конфигурации устаревшие объекты метаданных библиотеки. Для этого в открывшемся окне сравнения и объединения конфигураций снять все флажки напротив объектов метаданных, затем установить фильтр сравнения и объединения в значение Показывать присутствующие только в старой конфигурации поставщика в группе Новая конфигурация поставщика <- Старая конфигурация поставщика, как указано на рисунке.
Далее отметить все объекты метаданных флажками, выбрать режим объединения Взять из новой конфигурации поставщика (Действия – Установить режим для всех…) и нажать кнопку Выполнить.
При наличии ссылок на устаревшие объекты библиотеки из других объектов конфигурации или из других объектов самой библиотеки кнопка Продолжить недоступна. Следует вручную очистить все ссылки из других объектов конфигурации и перейти к шагу 2 (при этом ссылки из библиотечных объектов будут удалены автоматически на шаге 3).
Если же ссылок на устаревшие объекты библиотеки не было обнаружено и по кнопке Продолжить удалось поставить конфигурацию на поддержку, то следует отменить постановку на поддержку, вернувшись к исходной конфигурации БД (меню Конфигурация –Конфигурация базы данных – Вернуться к конфигурации БД).
Шаг 2.
Повторно выполнить команду Конфигурация – Поддержка – Обновить конфигурацию, указав в варианте Выбор файла обновления путь к файлу поставки библиотеки. В открывшемся окне сравнения и объединения конфигураций снять все флажки и отметить переносимые объекты с помощью команды Действия – Отметить по подсистемам новой конфигурации поставщика. Из группы подсистем «Стандартные подсистемы» выбрать:
● обязательные подсистемы;
● дополнительные подсистемы, обязательные к переносу в конфигурацию для работы в модели сервиса;
● все ранее внедренные подсистемы, а также подсистемы, которые дополнительно требуется внедрить в вашу конфигурацию;
● подсистемы, от которых зависят отмеченные выше подсистемы,
Затем отметить флажками для переноса этот же набор подсистем (объект метаданных «подсистема»), а так же подсистему Администрирование (если она была внедрена ранее или планируется внедрение) в окне сравнения и объединения конфигураций.
Выбрать режим объединения Взять из новой конфигурации поставщика (Действия –Установить режим для всех…).
Затем необходимо отметить к удалению из конфигурации все устаревшие объекты метаданных библиотеки. Для этого установить фильтр сравнения и объединения в значение Показывать присутствующие только в старой конфигурации поставщика в группе Новая конфигурация поставщика <- Старая конфигурация поставщика, как указано на рисунке.
Далее отметить все объекты метаданных флажками и нажать кнопку Выполнить. В окне со списком зависимых объектов нажать кнопку родолжить.
Шаг 3
. После завершения сравнения и объединения перейти ко второму этапу – настройка объектов библиотеки.
Печать (Ctrl+P)
Короткая инструкция для быстрого начала разработки собственной конфигурации на базе «Библиотеки стандартных подсистем» описана на диске ИТС здесь. В ней описаны только обязательные действия, которые необходимы для первого запуска разрабатываемого решения.
Этап №
1 Определиться со списком внедряемых подсистем. Для этого нужно запустить обработку ПервоеВнедрениеБСП
из комплекта поставки, которая позволяет выбрать подсистемы для внедрения с учетом их зависимостей друг от друга.
Рис. 1
Этап № 2.
После определения состава подсистем нажать Сохранить настройки для конфигуратора и задать имя файла для сохранения настроек.
Этап № 4
. Создать новую пустую базу и выполнить следующие действия:
- Вызвать меню Конфигурация – Сравнить, объединить с конфигурацией из файла.
- Выбрать файл 1Cv8.cf из поставки БСП.
- На предложение выполнить полную загрузку конфигурации ответить Нет.
- На предложение постановки на поддержку ответить Да.
- Выбрать Действия – Загрузить настройки из файла. Указать файл, сохраненный на этапе №2
- Затем нажать Выполнить. В случае внедрения не всех подсистем БСП при завершении процедуры сравнения и объединения конфигураций может появиться окно с информацией о наличии неразрешенных ссылок (см. пример в Внедрение подсистемы “Обмен данными” без подсистемы “Работа с почтовыми сообщениями”). Сообщения в этом окне необходимо пропустить, выбрав кнопку Продолжить.
Этап № 5
Действия после сравнения, объединения
- Установить в свойствах конфигурации имя конфигурации, например, «МояКонфигурация».
- Установить в свойствах конфигурации номер версии разрабатываемой конфигурации. Например, при начале разработки конфигурации можно установить номер 1.0.1.1.
- Скопировать общий модуль ОбновлениеИнформационнойБазы.
- Заменить в названии скопированного модуля на имя или сокращение имени конфигурации (например, ОбновлениеИнформационнойБазыМК).
- Заменить текст модуля на:
Процедура
ПриДобавленииПодсистемы
(Описание) Экспорт
// имя конфигурации и номер версии на
Описание.Имя
= «МояКонфигурация»;
Описание.Версия
= «1.0.1.1»;
// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить
(«СтандартныеПодсистемы»);
КонецПроцедуры
Процедура
ПриДобавленииОбработчиковОбновления
(Обработчики) Экспорт
КонецПроцедуры
Процедура
ПередОбновлениемИнформационнойБазы
() Экспорт
КонецПроцедуры
Процедура
ПослеОбновленияИнформационнойБазы
(Знач
ПредыдущаяВерсия, Знач
ТекущаяВерсия,
Знач
ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
КонецПроцедуры
Процедура
ПриПодготовкеМакетаОписанияОбновлений
(Знач
Макет) Экспорт
КонецПроцедуры
Процедура
ПриДобавленииОбработчиковПереходаСДругойПрограммы
(Обработчики) Экспорт
КонецПроцедуры
Процедура
ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт
КонецПроцедуры
Процедура
ПриЗавершенииПереходаСДругойПрограммы
(Знач
ПредыдущееИмяКонфигурации, Знач
ПредыдущаяВерсияКонфигурации, Параметры) Экспорт
КонецПроцедуры
Этап 6
. В процедуре ПриДобавленииПодсистем общего модуля ПодсистемыКонфигурацииПереопределяемый обязательно нужно добавить строчку
МодулиПодсистем.Добавить
(«ОбновлениеИнформационнойБазыМК»);
На рис 2 показан пример, где я создал конфигурацию “с нуля” с именем Преводчик
Рис 2
Если не добавить эту строку или не создавать общий модуль с обновления информационной базы по правилам на этапе 5, то при старте в режиме запуска приложения возникает ошибка такого рода:
{ОбщийМодуль.СтандартныеПодсистемыПовтИсп.Модуль(77)}: Ошибка при подготовке описаний подсистем: в общих модулях, указанных в процедуреПодсистемыКонфигурацииПереопределяемый.ПриДобавленииПодсистемы
не найдено описание подсистемы, совпадающей с именем конфигурации