Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 475 #476

Merged
merged 3 commits into from
May 14, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -491,55 +491,58 @@
&НаСервереБезКонтекста
Функция ДобавитьИменаМетаФормДляОдногоОбъектаМетаданного(CписокИменМетаФорм, ОсновнойОбъект, МетаОбъект,
ТолькоУправляемыеФормы, СписокИсключений, ИменаОсновныхФорм)

Если СписокИсключений = Ложь Или СписокИсключений.НайтиПоЗначению(МетаОбъект.Имя) <> Неопределено Тогда
Возврат Ложь;
КонецЕсли;

Если Не ПравоДоступа("Просмотр", МетаОбъект) Тогда
Возврат Ложь;
КонецЕсли;

Мета_ПолноеИмя = МетаОбъект.ПолноеИмя();

Результат = Ложь;
Если ПравоДоступа("Просмотр", МетаОбъект) Тогда
МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм);

ФормыДобавлены = ЛОЖЬ;

Для каждого МетаФорма Из МетаФормы Цикл

МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя();
Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда
МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма";
ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда
МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек";
КонецЕсли;

//МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета>
//МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма

Если ТолькоУправляемыеФормы Тогда
Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда
Продолжить;
КонецЕсли;
КонецЕсли;

// исторически в списке исключений имя формы без имени коллекции объектов метаданных
// "Справочник1.Форма.ФормаЭлемента", а не "Справочник.Справочник1.Форма.ФормаЭлемента"
Если СписокИсключений.НайтиПоЗначению(Сред(МетаФорма_ПолноеИмя, Найти(МетаФорма_ПолноеИмя, ".") + 1))
<> Неопределено Тогда
Продолжить;
КонецЕсли;

// TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации
Если НРег(Лев(МетаФорма_ПолноеИмя, СтрДлина(Мета_ПолноеИмя))) <> НРег(Мета_ПолноеИмя) Тогда

МетаФормы = ОсновнойОбъект.ПолучитьМетаФормыОбъектаДляПроверки(МетаОбъект, ИменаОсновныхФорм);

ФормыДобавлены = Ложь;

Для каждого МетаФорма Из МетаФормы Цикл

МетаФорма_ПолноеИмя = МетаФорма.ПолноеИмя();
Если Метаданные.ОсновнаяФормаОтчета = МетаФорма Тогда
МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".Форма";
ИначеЕсли Метаданные.ОсновнаяФормаНастроекОтчета = МетаФорма Тогда
МетаФорма_ПолноеИмя = МетаОбъект.ПолноеИмя() + ".ФормаНастроек";
КонецЕсли;

//МетаОбъект.Имя <Отчет1>, МетаФорма_ПолноеИмя <Отчет.Отчет1.Форма.УправляемаяФормаОтчета>
//МетаОбъект.Имя <Отчет2>, МетаФорма_ПолноеИмя <ОбщаяФорма.ФормаОтчета> // в ОФ Отчет.Отчет2.Форма

Если ТолькоУправляемыеФормы Тогда
Если Не ЭтоУправляемаяФорма(МетаФорма) Тогда
Продолжить;
КонецЕсли;

ФормыДобавлены = Истина;

CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя);
Результат = Истина;
КонецЦикла;

КонецЕсли;
КонецЕсли;

// исторически в списке исключений имя формы без имени коллекции объектов метаданных
// "Справочник1.Форма.ФормаЭлемента", а не "Справочник.Справочник1.Форма.ФормаЭлемента"
Если СписокИсключений.НайтиПоЗначению(Сред(МетаФорма_ПолноеИмя, Найти(МетаФорма_ПолноеИмя, ".") + 1))
<> Неопределено Тогда
Продолжить;
КонецЕсли;

// TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации
Если Лев(НРег(МетаФорма_ПолноеИмя), СтрДлина(Мета_ПолноеИмя)) <> НРег(Мета_ПолноеИмя) Тогда
Продолжить;
КонецЕсли;

ФормыДобавлены = Истина;

CписокИменМетаФорм.Добавить(МетаФорма_ПолноеИмя);
Результат = Истина;
КонецЦикла;

// TODO Бессмысленно открывать для отчетов основную форму отчета, настроек, варианта из конфигурации.
// Также нужно добавить стандартные формы для всяких объектов - справочники, документы
Expand All @@ -549,6 +552,7 @@
КонецЕсли;

Возврат Результат;

КонецФункции

//}
Expand Down