GetNight | Дата: Четверг, 03.11.2016, 19:18 | Сообщение # 1 |
Подполковник
Группа: Проверенные
Сообщений: 109
Репутация: 64
Статус: Оффлайн
| Запускаем... в этом участке кода переходит на Конец, ирОбщий=Неопределено, и, как следствие, вылет 1)-------------------------------
Код #Если Сервер И Не Сервер Тогда // В конфигурации нужно, чтобы форма при создании не вызывала исключение ирКэш = ПолучитьОбщийМодульКонфигурацииЛкс("ирКэш"); ирОбщий = ПолучитьОбщийМодульКонфигурацииЛкс("ирОбщий"); ирСервер = ПолучитьОбщийМодульКонфигурацииЛкс("ирСервер"); ирПривилегированный = ПолучитьОбщийМодульКонфигурацииЛкс("ирПривилегированный"); мКаталогОбработки = ирКэш.Получить().КаталогФайловогоКэша + "\"; мНеПодключеныОбработки = Ложь; Перейти ~Конец; #КонецЕсли если заменить как в рабочей версии 3.60 на #Если _ Тогда получаем переход на Конец уже в следующей ветке с аналогичным финалом 2)-------------------------------
Код Если Не ЭтотФайл.Существует() Тогда // // Внешняя обработка открыта на клиенте пользователем и сейчас создается ее объект на сервере Перейти ~Конец; КонецЕсли; если закомментировать переход, то 3)-------------------------------
Код ирКэш = ПолучитьОбщийМодульЛкс("ирКэш", Ложь); ирОбщий = ПолучитьОбщийМодульЛкс("ирОбщий", Ложь); первая переменная присваивается, на второй вылетает смотрим, где именно? На строке Результат = ВнешниеОбработки.Создать(ПолноеИмяФайла, Ложь); 4)-------------------------------
Код Функция ПолучитьОбщийМодульЛкс(Имя, ДобавитьСсылкиНаВнешниеМодули = Истина) Экспорт
Результат = ЭтотОбъект[Имя]; Если Результат = Неопределено Тогда ПолноеИмяФайла = ПолучитьПолноеИмяФайлаПортативногоОбъектаМетаданныхЛкс(Имя); Результат = ВнешниеОбработки.Создать(ПолноеИмяФайла, Ложь); КонецЕсли; Если ДобавитьСсылкиНаВнешниеМодули Тогда Для Каждого ИмяМодуля Из мВнешниеМодули Цикл Попытка Результат[ИмяМодуля] = ЭтотОбъект[ИмяМодуля]; Исключение КонецПопытки; КонецЦикла; КонецЕсли; Попытка Результат["ирПортативный"] = ЭтотОбъект; Исключение КонецПопытки; Возврат Результат;
КонецФункции если же текущая папка будет с обработкой версии 3.60, то спокойно проходим этот участок кода, обработка создается, доходим до конца, заходим в ПрочитатьНастройки()... 5)-------------------------------
Код ~ПрочитатьНастройки: ПрочитатьНастройки(); ~Конец: Но доходим до модуля 6)-------------------------------
Код Процедура ЗаполнитьСписокИнструментовСтандартныеНастройки() Экспорт
СписокИнструментов.Очистить();
ТаблицаСписка = ирКэш.Получить().ПолучитьСписокИнструментов(); #Если Сервер И Не Сервер Тогда ТаблицаСписка = Новый ТаблицаЗначений; #КонецЕсли Если ирКэш.ЛиПортативныйРежимЛкс() Тогда ТаблицаСписка = ТаблицаСписка.Скопировать(Новый Структура("Портативный", Истина)); КонецЕсли; СписокИнструментов.Загрузить(ТаблицаСписка);
КонецПроцедуры 7)------------------------------- И получаем "Метод объекта не обнаружен", что и требовалось доказать, т.к. подгрузился старый модуль (для прохождения пункта 4 мы пытались подменить папку при запуске (запуск 3.82.1 из меню Файл, где сохранены запуски, предварительно загрузив 3.60 и выйдя из неё)
Никаких инструментов там нет и в помине, т.к. изменилась структура хранения стандартных настроек (уже не в макете а кэше).
8)----------------------------- П.С. Почему при запуске других обработок из других папкок ИР "теряет" свои "корни" и не может найти свои модули, пока заново не "загрузишь" ее повторно (можно не выходя, чтобы сохранилась текущая папка)?!!
В связи с этим есть еще одна ОГРОМНЕЙШАЯ просьба: не может ли ИР жестко запоминать свое полное место и место своих модулей на винте? А не искать по относительному пути "Модули\ирПодборИОбработкаОбъектов.epf" и т.п. ___________________________________________________________________________________ С П А С И Б О за ваш продукт, но, увы, пока пользуюсь 3.60, т.к. следующие портверсии не работали...
Сообщение отредактировал GetNight - Четверг, 03.11.2016, 19:19 |
|
| |
tormozit | Дата: Четверг, 03.11.2016, 23:16 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
| Хорошо, что изложил результаты своих исследований подробно, но жаль что немного сумбурно. Неплохо было бы 1. Указывать имена модулей, об участках которых идет речь 2. Более внятно описать "вылеты", т.е. указывать полное текстовое описание ошибки 3. Использовать тег "code"(кнопка "<>") при вставке фрагментов кода, чтобы сохранялось форматирование 4. Вставлять картинки через прикрепление файла
В твоем случае обязательно нужно использовать рекомендации http://devtool1c.ucoz.ru/forum/2-2-1
По текущему некачественному описанию могу дать такие ответы по твоим пунктам 1. Этот код не должен компилироваться в портативной версии. Поэтому такие инструкции препроцессора обе равны Ложь (на 8.3.8-) 2. Условие "Не ЭтотФайл.Существует()" должно срабатывать, как следует из комментария, только в серверном контексте. Если оно у тебя срабатывает на клиенте, то опиши подробнее ситуацию (сделай скриншот с отображением значения ЭтотФайл.ПолноеИмя и тип контекста (клиент/сервер)). Мне сложно представить, в каком случае оно может сработать на клиенте. 4. Думаю такая ошибка проявляться может только на платформе 8.2.13- 5-7. Возможно это - проявление известной проблемы. Проявляется она только при открытии разных версий портативных ИР в одном сеансе. Кажется что такое в реальной работе происходит очень редко и потому ее наверняка ресурсоемкое решение постоянно отодвигается. Опиши, зачем тебе постоянно нужно открывать разные версий портативных ИР в одном сеансе. Если же проблема проявляется и без предварительного открытия более старой версии инструментов, то просьба исследовать/описать воспроизведение именно таким способом. 8. Открытие дополнительных (не базовой) внешних обработок напрямую является недокументированной возможностью, которая поддерживается для совместимости с некоторым мало распространенным функционалом. Документированным и полноценно поддерживаемым является только открытие основной внешней обработки (ирПортативный).
|
|
| |
tormozit | Дата: Суббота, 05.11.2016, 18:50 | Сообщение # 3 |
Генералиссимус
Группа: Администраторы
Сообщений: 6387
Репутация: 165
Статус: Оффлайн
| Проблема 4 исправлена в 3.83. Думаю теперь у тебя заработает.
|
|
| |