Chvalov
14.07.2015, 23:50
Все делал по примерам из других конфигураций:
1. Конфигурация - Открыть конфигурацию
2. Конфигурация - Поддержка - Настройка поддержки - Включить возможность изменения
3. В появившемся окошке выбираю вторую строчку: "Объект редактируется с сохранением поддержкой", после чего с низу жму кнопку "Открыть"
4. Правой кл.мыши на БухгалтерияСельскохозяйст венногоПредприятия Открыть модуль обычного приложения
Процедуру проверки нашел:
// Процедура - обработчик события "При начале работы системы".
//
Процедура ПриНачалеРаботыСистемы()
// Начало: изменено компанией ИН-АГРО
//Инициализируем механизм защиты
ИНАГРО_ОбщегоНазначенияКл� �ент.ВывестиИнтерфейсПольз ователя(Истина);
Если НЕ ИНАГРО_ДирективыПрепроцес� �ору.ИНАГРО_Инициализирова� �ьЗащитуКонфигурации() Тогда
Предупреждение("Не удалось инициализировать систему СЛК.
|Работа системы будет завершена!", 120);
ЗавершитьРаботуСистемы(Ло� �ь);
Возврат;
КонецЕсли;
ИНАГРО_ОбщегоНазначенияКл� �ент.ВывестиИнтерфейсПольз ователя(Ложь);
Если Константы.ИНАГРО_глИдентиф икаторКонфигурации.Получи� �ь() = ""
ИЛИ Константы.ИНАГРО_глИдентиф икаторКонфигурации.Получи� �ь() <> "AccountingUkr" Тогда
Константы.ИНАГРО_глИдентиф икаторКонфигурации.Устано� �ить("AccountingUkr");
КонецЕсли;
КонтрольВерсииПлатформы.П� �оверитьВерсиюПлатформы();
ПервыйЗапуск = (Константы.НомерВерсииКонф игурации.Получить()="");
ПользовательОпределен = Ложь;
ОписаниеОшибкиОпределения Пользователя = "";
Если Не ЗначениеЗаполнено(Парамет� �ыСеанса.ТекущийПользовате ль) Тогда
Если УправлениеПользователями.� �пределитьТекущегоПользов� �теля(ОписаниеОшибкиОпреде ленияПользователя) Тогда
ПользовательОпределен = ЗначениеЗаполнено(Парамет� �ыСеанса.ТекущийПользовате ль);
КонецЕсли;
Иначе
ПользовательОпределен = Истина;
КонецЕсли;
Если Не ПользовательОпределен Тогда
Если ПустаяСтрока(ОписаниеОшиб� �иОпределенияПользователя) Тогда
ОписаниеОшибкиОпределения Пользователя = НСтр("ru='Ошибка идентификации пользователя. Обратитесь к администратору';uk='Помилка ідентифікації користувача. Зверніться до адміністратора'");
КонецЕсли;
Предупреждение(ОписаниеОш� �бкиОпределенияПользовате� �я);
ЗавершитьРаботуСистемы(Ло� �ь);
Возврат;
КонецЕсли;
ЗаголовокСистемы = Константы.ЗаголовокСистем� �.Получить();
Если НЕ Пустаястрока(ЗаголовокСис� �емы) Тогда
УстановитьЗаголовокСистем ы(ЗаголовокСистемы);
КонецЕсли;
// Открытие Панели функций
Если (НЕ ПервыйЗапуск) Тогда
ПроверитьЗапускСтартового ПомощникаИПанелиФункций();
КонецЕсли;
БИ = Обработки.БухгалтерскиеИт� �ги.Создать();
// Установить начальное значение ТипДетализацииСтандартных Отчетов
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ТипДетализацииСтандартных Отчетов") = Перечисления.ТипДетализац� �иСтандартныхОтчетов.Пуста яСсылка() Тогда
УправлениеПользователями.� �становитьЗначениеПоУмолч� �нию(глЗначениеПеременной("глТекущийПользователь"), "ТипДетализацииСтандартных Отчетов", Перечисления.ТипДетализац� �иСтандартныхОтчетов.Элеме нты);
КонецЕсли;
ОбновлениеИнформационнойБ азы.ВыполнитьОбновлениеИн� �ормационнойБазы();
//-----------------Начало ИН-АГРО Подсистема Элевотор-----------------------
Если ИНАГРО_ОбщийПовторногоИсп� �льзования.ЕстьБЭМКЗУ() Тогда
Если Метаданные.РегистрыНакопл� �ния.Найти("ИНАГРО_Остатки") <> Неопределено Тогда
Выполнить("ИНАГРО_ДирективыПрепроцес� �оруЭлеватор.ИНАГРО_Выполн� �тьОбновлениеИнформационн� �йБазы();");
КонецЕсли;
КонецЕсли;
//-----------------Конец ИН-АГРО Подсистема Элевотор-----------------------
// Выполнить проверку разницы времени с сервером приложения
Если НЕ ПроверкаРазницыВремениКли ент.ВыполнитьПроверку() Тогда
Возврат;
КонецЕсли;
Если ОбработатьПараметрыЗапуск а(ПараметрЗапуска) Тогда
Возврат;
КонецЕсли;
УправлениеСоединениямиИБ.� �становитьКонтрольРежимаЗ� �вершенияРаботыПользовате� �ей();
ЭтоФайловаяИБ = ОпределитьЭтаИнформационн аяБазаФайловая();
Если ЭтоФайловаяИБ Тогда
ПользовательДляВыполнения РеглЗаданий = Константы.ПользовательДля� �ыполненияРегламентныхЗад� �нийВФайловомВарианте.Полу чить();
Если глЗначениеПеременной("глТекущийПользователь") = ПользовательДляВыполнения РеглЗаданий Тогда
// с интервалом секунд вызываем процедуру работы с регламентными заданиями
ПоддержкаРегламентныхЗада ниеДляФайловойВерсии();
ИнтервалДляОпроса = Константы.ИнтервалДляОпро� �аРегламентныхЗаданийВФай� �овомВарианте.Получить();
Если ИнтервалДляОпроса = Неопределено
ИЛИ ИнтервалДляОпроса = 0 Тогда
ИнтервалДляОпроса = 60;
КонецЕсли;
ПодключитьОбработчикОжида ния("ПоддержкаРегламентныхЗада ниеДляФайловойВерсии", ИнтервалДляОпроса);
КонецЕсли;
КонецЕсли;
// автообмен данными
Если глЗначениеПеременной("глОбработкаАвтоОбменДанны ми") <> Неопределено Тогда
// подключим обработчик обменов данными
ПодключитьОбработчикОжида ния("ПроверкаОбменаДанными", глЗначениеПеременной("глКоличествоСекундОпросаО бмена"));
КонецЕсли;
// Открытие Быстрого освоения
ПоказыватьБыстроеОсвоение = УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ПоказыватьБыстроеОсвоение ПриНачалеРаботыСистемы");
Если ПоказыватьБыстроеОсвоение И (НЕ ПервыйЗапуск) Тогда
Обработки.БыстроеОсвоение. ПолучитьФорму().Открыть();
КонецЕсли;
// Начало: изменено компанией ИН-АГРО
глУчетнаяПолитикаПоПерсон алуОрганизации = ИНАГРО_Зарплата.ИНАГРО_Зап� �лнениеУчетнойПолитикиПоП� �рсоналуОрганизации();
// Конец: изменено компанией ИН-АГРО
Если НЕ ПервыйЗапуск Тогда
// Открытие дополнительной информации
Форма = Обработки.ДополнительнаяИ� �формация.ПолучитьФорму("ФормаРабочийСтол");
Форма.Открыть();
КонецЕсли;
// Начнем проверку динамического обновления конфигурации
НачатьПроверкуДинамическо гоОбновленияИБ();
// Автоматическая загрузка почты
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "АвтооткрытиеЭлектроннойПо чтыПриЗапускеПрограммы") = Истина
И Константы.ИспользованиеВс� �роенногоПочтовогоКлиента. Получить() Тогда
Обработки.Почта.ПолучитьФо рму().Открыть();
КонецЕсли;
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ЗагружатьАктуальныеКурсыВ алютПриЗапускеСистемы") Тогда
// Автоматическая загрузка курсов валют
ЗначениеКонстанты = Константы.НастройкиЗагруз� �иКурсовВалют.Получить();
Настройки = ЗначениеКонстанты.Получит� �();
ЗагружатьЕжедневно = Ложь;
Если Настройки <> Неопределено Тогда
Попытка
ЗагружатьЕжедневно = Настройки.ЗагружатьЕжедне� �но;
Исключение
КонецПопытки;
КонецЕсли;
Попытка
Если ЗагружатьЕжедневно Тогда
ОбработкаЗагрузкаКурсов = Обработки.ЗагрузкаКурсовВ� �лют.Создать();
Если НЕ ОбработкаЗагрузкаКурсов.К� �дДоступаАктуален() Тогда
ФормаОжиданияКурсов = ОбработкаЗагрузкаКурсов.П� �лучитьФорму("ФормаОжидания");
ФормаОжиданияКурсов.Откры� �ь();
ПодключитьОбработчикОжида ния("ОбработчикЗагрузкаКурсов", 20, Истина);
Иначе
ОбработкаЗагрузкаКурсов.З� �грузитьКурсыПоНастройкам( );
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЕсли;
Локализация.ПроверитьСоот� �етсвиеЯзыкаПлатформыИПол� �зователя();
Если Не ПервыйЗапуск Тогда
ОткрытьПутеводительПоДемо базе();
КонецЕсли;
// Форма помощника обновления конфигурации выводится поверх остальных окон.
// ИН-АГРО Чтобы не лезла в Интернет за обновлением
//Если РольДоступна(Метаданные.Ро ли.ПолныеПрава) Тогда
// ОбработкаОбновлениеКонфиг урации = Обработки.ОбновлениеКонфи� �урации.Создать();
// ОбработкаОбновлениеКонфиг урации.ПроверитьНаличиеОб� �овлений();
//КонецЕсли;
глПодключитьМенеджерЗвит1� �(Ложь);
КонецПроцедуры // ПриНачалеРаботыСистемы()
Но весь прикол в том что редактировать не можно, модуль открыт со статусом "Только чтение"
1521
Как обойти, или как же все таки ее взломать ?
1. Конфигурация - Открыть конфигурацию
2. Конфигурация - Поддержка - Настройка поддержки - Включить возможность изменения
3. В появившемся окошке выбираю вторую строчку: "Объект редактируется с сохранением поддержкой", после чего с низу жму кнопку "Открыть"
4. Правой кл.мыши на БухгалтерияСельскохозяйст венногоПредприятия Открыть модуль обычного приложения
Процедуру проверки нашел:
// Процедура - обработчик события "При начале работы системы".
//
Процедура ПриНачалеРаботыСистемы()
// Начало: изменено компанией ИН-АГРО
//Инициализируем механизм защиты
ИНАГРО_ОбщегоНазначенияКл� �ент.ВывестиИнтерфейсПольз ователя(Истина);
Если НЕ ИНАГРО_ДирективыПрепроцес� �ору.ИНАГРО_Инициализирова� �ьЗащитуКонфигурации() Тогда
Предупреждение("Не удалось инициализировать систему СЛК.
|Работа системы будет завершена!", 120);
ЗавершитьРаботуСистемы(Ло� �ь);
Возврат;
КонецЕсли;
ИНАГРО_ОбщегоНазначенияКл� �ент.ВывестиИнтерфейсПольз ователя(Ложь);
Если Константы.ИНАГРО_глИдентиф икаторКонфигурации.Получи� �ь() = ""
ИЛИ Константы.ИНАГРО_глИдентиф икаторКонфигурации.Получи� �ь() <> "AccountingUkr" Тогда
Константы.ИНАГРО_глИдентиф икаторКонфигурации.Устано� �ить("AccountingUkr");
КонецЕсли;
КонтрольВерсииПлатформы.П� �оверитьВерсиюПлатформы();
ПервыйЗапуск = (Константы.НомерВерсииКонф игурации.Получить()="");
ПользовательОпределен = Ложь;
ОписаниеОшибкиОпределения Пользователя = "";
Если Не ЗначениеЗаполнено(Парамет� �ыСеанса.ТекущийПользовате ль) Тогда
Если УправлениеПользователями.� �пределитьТекущегоПользов� �теля(ОписаниеОшибкиОпреде ленияПользователя) Тогда
ПользовательОпределен = ЗначениеЗаполнено(Парамет� �ыСеанса.ТекущийПользовате ль);
КонецЕсли;
Иначе
ПользовательОпределен = Истина;
КонецЕсли;
Если Не ПользовательОпределен Тогда
Если ПустаяСтрока(ОписаниеОшиб� �иОпределенияПользователя) Тогда
ОписаниеОшибкиОпределения Пользователя = НСтр("ru='Ошибка идентификации пользователя. Обратитесь к администратору';uk='Помилка ідентифікації користувача. Зверніться до адміністратора'");
КонецЕсли;
Предупреждение(ОписаниеОш� �бкиОпределенияПользовате� �я);
ЗавершитьРаботуСистемы(Ло� �ь);
Возврат;
КонецЕсли;
ЗаголовокСистемы = Константы.ЗаголовокСистем� �.Получить();
Если НЕ Пустаястрока(ЗаголовокСис� �емы) Тогда
УстановитьЗаголовокСистем ы(ЗаголовокСистемы);
КонецЕсли;
// Открытие Панели функций
Если (НЕ ПервыйЗапуск) Тогда
ПроверитьЗапускСтартового ПомощникаИПанелиФункций();
КонецЕсли;
БИ = Обработки.БухгалтерскиеИт� �ги.Создать();
// Установить начальное значение ТипДетализацииСтандартных Отчетов
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ТипДетализацииСтандартных Отчетов") = Перечисления.ТипДетализац� �иСтандартныхОтчетов.Пуста яСсылка() Тогда
УправлениеПользователями.� �становитьЗначениеПоУмолч� �нию(глЗначениеПеременной("глТекущийПользователь"), "ТипДетализацииСтандартных Отчетов", Перечисления.ТипДетализац� �иСтандартныхОтчетов.Элеме нты);
КонецЕсли;
ОбновлениеИнформационнойБ азы.ВыполнитьОбновлениеИн� �ормационнойБазы();
//-----------------Начало ИН-АГРО Подсистема Элевотор-----------------------
Если ИНАГРО_ОбщийПовторногоИсп� �льзования.ЕстьБЭМКЗУ() Тогда
Если Метаданные.РегистрыНакопл� �ния.Найти("ИНАГРО_Остатки") <> Неопределено Тогда
Выполнить("ИНАГРО_ДирективыПрепроцес� �оруЭлеватор.ИНАГРО_Выполн� �тьОбновлениеИнформационн� �йБазы();");
КонецЕсли;
КонецЕсли;
//-----------------Конец ИН-АГРО Подсистема Элевотор-----------------------
// Выполнить проверку разницы времени с сервером приложения
Если НЕ ПроверкаРазницыВремениКли ент.ВыполнитьПроверку() Тогда
Возврат;
КонецЕсли;
Если ОбработатьПараметрыЗапуск а(ПараметрЗапуска) Тогда
Возврат;
КонецЕсли;
УправлениеСоединениямиИБ.� �становитьКонтрольРежимаЗ� �вершенияРаботыПользовате� �ей();
ЭтоФайловаяИБ = ОпределитьЭтаИнформационн аяБазаФайловая();
Если ЭтоФайловаяИБ Тогда
ПользовательДляВыполнения РеглЗаданий = Константы.ПользовательДля� �ыполненияРегламентныхЗад� �нийВФайловомВарианте.Полу чить();
Если глЗначениеПеременной("глТекущийПользователь") = ПользовательДляВыполнения РеглЗаданий Тогда
// с интервалом секунд вызываем процедуру работы с регламентными заданиями
ПоддержкаРегламентныхЗада ниеДляФайловойВерсии();
ИнтервалДляОпроса = Константы.ИнтервалДляОпро� �аРегламентныхЗаданийВФай� �овомВарианте.Получить();
Если ИнтервалДляОпроса = Неопределено
ИЛИ ИнтервалДляОпроса = 0 Тогда
ИнтервалДляОпроса = 60;
КонецЕсли;
ПодключитьОбработчикОжида ния("ПоддержкаРегламентныхЗада ниеДляФайловойВерсии", ИнтервалДляОпроса);
КонецЕсли;
КонецЕсли;
// автообмен данными
Если глЗначениеПеременной("глОбработкаАвтоОбменДанны ми") <> Неопределено Тогда
// подключим обработчик обменов данными
ПодключитьОбработчикОжида ния("ПроверкаОбменаДанными", глЗначениеПеременной("глКоличествоСекундОпросаО бмена"));
КонецЕсли;
// Открытие Быстрого освоения
ПоказыватьБыстроеОсвоение = УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ПоказыватьБыстроеОсвоение ПриНачалеРаботыСистемы");
Если ПоказыватьБыстроеОсвоение И (НЕ ПервыйЗапуск) Тогда
Обработки.БыстроеОсвоение. ПолучитьФорму().Открыть();
КонецЕсли;
// Начало: изменено компанией ИН-АГРО
глУчетнаяПолитикаПоПерсон алуОрганизации = ИНАГРО_Зарплата.ИНАГРО_Зап� �лнениеУчетнойПолитикиПоП� �рсоналуОрганизации();
// Конец: изменено компанией ИН-АГРО
Если НЕ ПервыйЗапуск Тогда
// Открытие дополнительной информации
Форма = Обработки.ДополнительнаяИ� �формация.ПолучитьФорму("ФормаРабочийСтол");
Форма.Открыть();
КонецЕсли;
// Начнем проверку динамического обновления конфигурации
НачатьПроверкуДинамическо гоОбновленияИБ();
// Автоматическая загрузка почты
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "АвтооткрытиеЭлектроннойПо чтыПриЗапускеПрограммы") = Истина
И Константы.ИспользованиеВс� �роенногоПочтовогоКлиента. Получить() Тогда
Обработки.Почта.ПолучитьФо рму().Открыть();
КонецЕсли;
Если УправлениеПользователями.� �олучитьЗначениеПоУмолчан� �ю(глЗначениеПеременной("глТекущийПользователь"), "ЗагружатьАктуальныеКурсыВ алютПриЗапускеСистемы") Тогда
// Автоматическая загрузка курсов валют
ЗначениеКонстанты = Константы.НастройкиЗагруз� �иКурсовВалют.Получить();
Настройки = ЗначениеКонстанты.Получит� �();
ЗагружатьЕжедневно = Ложь;
Если Настройки <> Неопределено Тогда
Попытка
ЗагружатьЕжедневно = Настройки.ЗагружатьЕжедне� �но;
Исключение
КонецПопытки;
КонецЕсли;
Попытка
Если ЗагружатьЕжедневно Тогда
ОбработкаЗагрузкаКурсов = Обработки.ЗагрузкаКурсовВ� �лют.Создать();
Если НЕ ОбработкаЗагрузкаКурсов.К� �дДоступаАктуален() Тогда
ФормаОжиданияКурсов = ОбработкаЗагрузкаКурсов.П� �лучитьФорму("ФормаОжидания");
ФормаОжиданияКурсов.Откры� �ь();
ПодключитьОбработчикОжида ния("ОбработчикЗагрузкаКурсов", 20, Истина);
Иначе
ОбработкаЗагрузкаКурсов.З� �грузитьКурсыПоНастройкам( );
КонецЕсли;
КонецЕсли;
Исключение
КонецПопытки;
КонецЕсли;
Локализация.ПроверитьСоот� �етсвиеЯзыкаПлатформыИПол� �зователя();
Если Не ПервыйЗапуск Тогда
ОткрытьПутеводительПоДемо базе();
КонецЕсли;
// Форма помощника обновления конфигурации выводится поверх остальных окон.
// ИН-АГРО Чтобы не лезла в Интернет за обновлением
//Если РольДоступна(Метаданные.Ро ли.ПолныеПрава) Тогда
// ОбработкаОбновлениеКонфиг урации = Обработки.ОбновлениеКонфи� �урации.Создать();
// ОбработкаОбновлениеКонфиг урации.ПроверитьНаличиеОб� �овлений();
//КонецЕсли;
глПодключитьМенеджерЗвит1� �(Ложь);
КонецПроцедуры // ПриНачалеРаботыСистемы()
Но весь прикол в том что редактировать не можно, модуль открыт со статусом "Только чтение"
1521
Как обойти, или как же все таки ее взломать ?