Ошибка при подготовке описаний подсистем 1с

Короткая инструкция для быстрого начала разработки собственной конфигурации на базе «Библиотеки стандартных подсистем»  описана на диске ИТС здесь . В ней описаны только обязательные действия, кото…

Разработка конфигурации «с нуля»

Короткая инструкция для быстрого начала разработки собственной конфигурации на базе «Библиотеки стандартных подсистем»  описана на диске ИТС здесь . В ней описаны только обязательные действия, которые необходимы для первого запуска разрабатываемого решения.

Этап №1  Определиться со списком внедряемых подсистем. Для этого нужно запустить  обработку ПервоеВнедрениеБСП из комплекта поставки, которая позволяет выбрать подсистемы для внедрения с учетом их зависимостей друг от друга.

Рис. 1

Этап № 2. После определения состава подсистем нажать Сохранить настройки для конфигуратора  и задать имя файла для сохранения настроек.

Этап № 4. Создать новую пустую базу и выполнить следующие действия:

  •  Вызвать меню Конфигурация – Сравнить, объединить с конфигурацией из файла.
  •  Выбрать файл 1Cv8.cf из поставки БСП.
  •  На предложение выполнить полную загрузку конфигурации ответить Нет.
  •  На предложение постановки на поддержку ответить Да.
  •  Выбрать Действия – Загрузить настройки из файла. Указать файл, сохраненный на этапе №2
  •  Затем нажать Выполнить .   В случае внедрения не всех подсистем БСП при завершении процедуры сравнения и объединения конфигураций может появиться окно с информацией о наличии неразрешенных ссылок (см. пример в Внедрение подсистемы “Обмен данными” без подсистемы “Работа с почтовыми сообщениями”). Сообщения в этом окне необходимо пропустить, выбрав кнопку Продолжить.

Этап №  5 Действия после сравнения, объединения

  •  Установить в свойствах конфигурации имя конфигурации, например, «МояКонфигурация».
  •  Установить в свойствах конфигурации номер версии разрабатываемой конфигурации. Например, при начале разработки конфигурации можно установить номер 1.0.1.1.
  •  Скопировать общий модуль ОбновлениеИнформационнойБазы.
  •  Заменить в названии скопированного модуля на имя или сокращение имени конфигурации (например, ОбновлениеИнформационнойБазыМК).
  •  Заменить текст модуля на:
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
//  имя конфигурации и номер версии на
 Описание.Имя = "МояКонфигурация";
 Описание.Версия = "1.0.1.1";
 // Требуется библиотека стандартных подсистем.
 Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
 КонецПроцедуры
 Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт
 КонецПроцедуры
 Процедура ПередОбновлениемИнформационнойБазы() Экспорт
 КонецПроцедуры
 Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия,
 Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт
 КонецПроцедуры
 Процедура ПриПодготовкеМакетаОписанияОбновлений(Знач Макет) Экспорт
 КонецПроцедуры
 Процедура ПриДобавленииОбработчиковПереходаСДругойПрограммы(Обработчики) Экспорт
 КонецПроцедуры
 Процедура ПриОпределенииРежимаОбновленияДанных(РежимОбновленияДанных, СтандартнаяОбработка) Экспорт
 КонецПроцедуры
 Процедура ПриЗавершенииПереходаСДругойПрограммы(Знач ПредыдущееИмяКонфигурации, Знач ПредыдущаяВерсияКонфигурации, Параметры) Экспорт
 КонецПроцедуры

Этап 6.  В процедуре ПриДобавленииПодсистем  общего модуля ПодсистемыКонфигурацииПереопределяемый обязательно нужно добавить  строчку

МодулиПодсистем.Добавить("ОбновлениеИнформационнойБазыМК");

На рис 2 показан пример, где я создал конфигурацию “с нуля” с именем Преводчик

Рис 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 Тогда Продолжить; КонецЕсли; ВставитьИменаПодчиненныхПодсистем(Имена, ТекущаяПодсистема, ОтключенныеПодсистемы, ИмяТекущейПодсистемы + «.»); КонецЦикла; КонецПроцедуры #КонецОбласти
  1. Ребят ну это уже достало меня:

    {ОбщийМодуль.ОбщегоНазначения.Модуль(2680)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().

    Для объекта метаданных «Отчет.NEW_ЗаказыИПродажи»
    не найден идентификатор
    в справочнике «Идентификаторы объектов метаданных».

    Для разработчика: возможно требуется обновить вспомогательные данные,
    которые влияют на работу программы. Для выполнения обновления можно:
    — воспользоваться внешней обработкой
    «Инструменты разработчика: Обновление вспомогательных данных»,
    — либо запустить программу с параметром командной строки 1С:Предприятия 8
    «/С ЗапуститьОбновлениеИнформационнойБазы»,
    — либо увеличить номер версии конфигурации, чтобы при очередном запуске
    выполнились процедуры обновления данных информационной базы.
    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

    Каждый раз когда приходится создавать новое что то в конфе (напр, в данный момент: отчёт) то при запуске этого отчёта ругается этим кодом.

    » Управление небольшой фирмой, редакция 1.4 (1.4.8.3) »


  2. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.155
    Симпатии:
    217
    Баллы:
    104

    Ну вот, в сообщении же явно написано, что надо сделать.
    Запустите программу с параметром «/С ЗапуститьОбновлениеИнформационнойБазы».
    При этом запустится обработка обновления ИБ. И все будет ОК.


    АндрейАйтерра нравится это.
  3. ну эта то понятно)) ну ведь раньше то такого не бывало. че эт вдруг ему приспичило?))


  4. 1cUserAndrew

    Offline

    1cUserAndrew
    Профессионал в 1С
    Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.155
    Симпатии:
    217
    Баллы:
    104

    Сейчас просто во всех (или почти во всех) типовых конфигурациях есть справочник «Идентификаторы объектов метаданных». Он в какой-то мере повторяет структуру метаданных конфигурации.
    Когда Вы добавляете новый объект в конфигурацию (в данном случае новый отчет), этот справочник требуется обновить (добавить в справочник Ваш отчет). Вот программа этого и требует ))


  5. Саша82

    Offline

    Саша82
    Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26

    А почему раньше в УТ 11 в этом справочнике была кнопка, а сейчас нет?
    Теперь только запустить программу с параметром «/С ЗапуститьОбновлениеИнформационнойБазы» или использовать обработку «Инструменты разработчика: Обновление вспомогательных данных»? Кстати где ее взять?

    Попробовал увеличить номер версии конфигурации, но почему при запуске вышла вот такая ошибка?

    {ОбщийМодуль.ОбщегоНазначенияКлиентСервер.Модуль(2418)}: Ошибка при подготовке описаний подсистем:
    версия "11.1.7.67" конфигурации "УправлениеТорговлей" (см. процедуру ОбновлениеИнформационнойБазыУТ.ПриДобавленииПодсистемы)
    не совпадает с версией конфигурации в метаданных "11.1.7.68".
         ВызватьИсключение ТекстИсключения;
  6. я обычно имя конфа меняю: УправлениеТорговлей на УправлениеТорговлей1. и достаточно. при запуске сам начинает обновление. попробуйте так


  7. Саша82

    Offline

    Саша82
    Активный ученик

    Регистрация:
    11 окт 2007
    Сообщения:
    307
    Симпатии:
    0
    Баллы:
    26

    Менять имя надо будет тоже попробовать. Я в списке конфигураций создал еще одну со ссылкой на первую и запускаю с параметром /С ЗапуститьОбновлениеИнформационнойБазы

  8. А у меня с параметром /С ЗапуститьОбновлениеИнформационнойБазы не обновлялся, поэтому обновляю как выше упомянул.


  9. slonopotam

    Offline

    slonopotam
    Новичок в 1С

    Регистрация:
    7 дек 2014
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    4

    Попробуйте «/С…» набирать в английской раскладке, остальное естественно на русском, тогда обновление запускается. У меня обновилось.


  10. Galich

    Offline

    Galich
    Опытный в 1С

    Регистрация:
    6 июн 2014
    Сообщения:
    281
    Симпатии:
    9
    Баллы:
    29

    Может пригодится.

    Вложения:


    АндрейАйтерра нравится это.

  11. Zeksi42

    Offline

    Zeksi42

    Регистрация:
    25 апр 2015
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    а для Управления Торговли есть подобный файл?


  12. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    По сути он универсальный, он служит для обновления структуры метаданных, т.е. их структуру. Вроде так :)


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

При моделировании информации, рассказанной по данному теме , столкнулся с проблемой, которая не освещена ни в курсе, ни в данной ветке обсуждения… Проблему решил – хочу поделится решением (в случае, если кто то так же столкнулся с данной проблемой) при реализации “тесного внедрения БСП 2.1.9.2.” и настройки синхронизации на стороне базы, используюйще УФ (т.е. уже имеющей внедренный БСП)

Ошибка выполнения созданного и настроенного обмена на стороне Базы приемника – при использовании БСП 2.1.9.2 в базе источнике (стоит отметит, что с базой источником проблематика не связана):


{ОбщийМодуль.ОбщегоНазначения.Модуль(2954)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().

Для объекта метаданных “ПланОбмена.ОбменИсходнаяБухгалтерия3”
не найден идентификатор
в справочнике “Идентификаторы объектов метаданных”.

Для разработчика: возможно требуется обновить вспомогательные данные,
которые влияют на работу программы. Для выполнения обновления можно:
– воспользоваться внешней обработкой
“Инструменты разработчика: Обновление вспомогательных данных”,
– либо запустить программу с параметром командной строки 1С:Предприятия 8
“/С ЗапуститьОбновлениеИнформационнойБазы”,
– либо увеличить номер версии конфигурации, чтобы при очередном запуске
выполнились процедуры обновления данных информационной базы.
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(

Решение, которое мне помогло:

1. В “ПланОбмена” – в обоих программах = Добавить реквизит “ИспользоватьОтборПоОрганизации” – без этого происходит ошибка проверки данного реквизита.

2. В “ПланОбмена” БП3 – добавить Макет “ПравилаОбменаКорреспондента”, заполнив его текстом правил обмена из БазыИсточника (откуда данные идет в БП3). Если этого не сделать – происходит ошибка проверки всех требуемых условий для добавленния данных о ПланеОбмена в Регистр “Правила для обмена данными” – т.к. для добавления ТРЕБУЕТСЯ иметь оба эти макета… Ошибка происходит в функции “ВыполнитьОбновлениеВерсииТиповыхПравилДляОбменаДанными” = в общем модуле “ОбменДаннымиСервер”.

3. Создать внешнюю обработку для “ручного” обновления информации в справочнике “ИдентификаторыОбъектовМетаданных” – со следующим кодом (выполнение на сервере без контекста):

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

Понравилась статья? Поделить с друзьями:
  • Ошибка при подготовке к установке автокад
  • Ошибка при подключении к серверу мэш
  • Ошибка при подключении к серверу майнкрафт через хамачи
  • Ошибка при подключении к серверу майнкрафт недействительная сессия
  • Ошибка при подготовке к установке autodesk revit 2023