Загрузка внешних обработок

Автор АЛьФ, 17 февраля 2024, 11:09

« назад - далее »

АЛьФ

Цитата: Злоп от 21 февраля 2024, 21:30Вопрос4 (доп. к ВОпрос1):
сделали Сервис1.ЗагрузитьВнешнююОбработку("Отчет.ОстаткиТовара", КаталогИБ()+"\ExtForms\ОстаткиТовара.ert");
- Сервис1 уничтожился (закончился контекст видимости Сервис1) - что стало с загруженной обработкой?
сделали в другом контексте Сервис2.ЗагрузитьВнешнююОбработку("Отчет.ОстаткиТовара", КаталогИБ()+"\ExtForms\ОстаткиТовара.ert");
или повторно зашли в контекст где Сервис1.ЗагрузитьВнешнююОбработку("Отчет.ОстаткиТовара", КаталогИБ()+"\ExtForms\ОстаткиТовара.ert");
- будет повторно загружена или как?


Вытекает из предыдущего ответа. Модуль останется на месте.
При повторном вызове метода будет повторно загружен.

Злоп

Цитата: АЛьФ от 21 февраля 2024, 22:03Если НадоЗагрузить = 1 Тогда
ну, это-то понятно, но некрасиво/неудобно, впихнуть бы этот флаг третьим параметром типа...

Злоп

Получается если у меня процесс состоит из 10-15 внешних обработок
то где-то "в начале" процесса я делаю типа
.
Сервис1.ЗагрузитьВнешнююОбработку("Отчет.Обработка1", КаталогИБ()+"\ExtForms\Обработка1.ert");
Сервис1.ЗагрузитьВнешнююОбработку("Отчет.Обработка2", КаталогИБ()+"\ExtForms\Обработка2.ert");
...
Сервис1.ЗагрузитьВнешнююОбработку("Отчет.ОбработкаN", КаталогИБ()+"\ExtForms\ОбработкаN.ert");
.
и дальше по коду процесса обработки открываю как внутренние, типа

Если Режим="ОТЛАДКА" Тогда
  Сервис1.ЗагрузитьВнешнююОбработку("Отчет.ОбработкаX", КаталогИБ()+"\ExtForms\ОбработкаX.ert");
КонецЕсли;
ОткрытьФорму("Отчет.ОбработкаX",конт);
.
так?

Злоп

Вопрос5: а что будет при загрузке обработки если файл обработки отсутствует?
Штатно ОткрытьФорму на несуществующий внешний отчет ничего не говорит, просто молча идет дальше по коду...
И что будет если вместо ert подсунуть/попадется какая-нить хрень?
.
Полагаю, что при неуспешной подгрузке внешнего отчета - надло вывалиться в рантайм-ошибку с сообщением в ОС.

АЛьФ

Цитата: Злоп от 21 февраля 2024, 22:14
Цитата: АЛьФ от 21 февраля 2024, 22:03Если НадоЗагрузить = 1 Тогда
ну, это-то понятно, но некрасиво/неудобно, впихнуть бы этот флаг третьим параметром типа...

Может тогда сделать чтобы метод возвращал хэш загруженного файла, а третьим параметром как раз принимал хэш. Если текущий хэш совпадает с переданным, то не загружаем. Соответственно, если третий параметр не передан, то грузим всегда. Если передана пустая строка, а отчет такой уже загружен (или есть внутренний такой), то не грузим.

АЛьФ

Цитата: Злоп от 21 февраля 2024, 22:25Вопрос5: а что будет при загрузке обработки если файл обработки отсутствует?
Штатно ОткрытьФорму на несуществующий внешний отчет ничего не говорит, просто молча идет дальше по коду...
И что будет если вместо ert подсунуть/попадется какая-нить хрень?
.
Полагаю, что при неуспешной подгрузке внешнего отчета - надло вывалиться в рантайм-ошибку с сообщением в ОС.

Это надо будет уже при реализации проверять и решать.
По логике должна ошибка выпадать - "нет файла" и "неверный формат файла".

Злоп

Цитата: АЛьФ от 21 февраля 2024, 22:29а третьим параметром как раз принимал хэш. Если текущий хэш совпадает с переданным, то не загружаем ... Если передана пустая строка,...то не грузим.
Лично мне не нравится вот это "извращение" - пустая строка - это третий параметр ХЕШ, для загруженного отчета пустая строка не совпадет с текущим хешем = ГРУЗИМ, для незагруженного хеш = неопределено, пустая строка не совпадает с неопределено - значит ГРУЗИМ. А у тебя как-то все наоборот... Чуток бы пологичнее как-то МОЖЕТ БЫТЬ. Но автору виднее...

АЛьФ

Плотно засел за реализацию этого функционала.
Поразительно все же как уйма потраченного времени и бессонные ночи в итоге выливаются в пару десятков строк кода.

Злоп

Цитата: АЛьФ от 06 марта 2024, 16:43Плотно засел за реализацию этого функционала.
Поразительно все же как уйма потраченного времени и бессонные ночи в итоге выливаются в пару десятков строк кода.
Если писать вдумчиво и не торопясь, а не ночами в режиме нехватки времени - то получается всё норм. Я вот смотрю на написанное впопыхах - ну капец же, шняга полная

АЛьФ

Цитата: Злоп от 06 марта 2024, 21:08
Цитата: АЛьФ от 06 марта 2024, 16:43Плотно засел за реализацию этого функционала.
Поразительно все же как уйма потраченного времени и бессонные ночи в итоге выливаются в пару десятков строк кода.
Если писать вдумчиво и не торопясь, а не ночами в режиме нехватки времени - то получается всё норм. Я вот смотрю на написанное впопыхах - ну капец же, шняга полная

Вдумчиво и не торопясь - это днем на работе.

Уперся в очередной тупик. Все грузится, но с пустым модулем. Никак не пойму в чем дело.
И набрел на занимательный глюк - в режиме Предприятие можно открыть отчет, как в Конфигураторе. Реквизиты формы редактируются и даже можно сохранить, как внешний отчет.

sau

Цитата: АЛьФ от 06 марта 2024, 22:28
Цитата: Злоп от 06 марта 2024, 21:08
Цитата: АЛьФ от 06 марта 2024, 16:43Плотно засел за реализацию этого функционала.
Поразительно все же как уйма потраченного времени и бессонные ночи в итоге выливаются в пару десятков строк кода.
Если писать вдумчиво и не торопясь, а не ночами в режиме нехватки времени - то получается всё норм. Я вот смотрю на написанное впопыхах - ну капец же, шняга полная

Вдумчиво и не торопясь - это днем на работе.

Уперся в очередной тупик. Все грузится, но с пустым модулем. Никак не пойму в чем дело.
И набрел на занимательный глюк - в режиме Предприятие можно открыть отчет, как в Конфигураторе. Реквизиты формы редактируются и даже можно сохранить, как внешний отчет.
В этом контексте есть ли возможность менять местами колонки в ТаблицеЗначений (МногострочнойЧасти) (перетягиванием мыши или программно).

Злоп

Цитата: sau от 17 марта 2024, 01:23менять местами колонки в ТаблицеЗначений
для тз можно же регулировать порядок ОТОБРАЖЕНИЯ колонок третьим параметром метода Видимость

АЛьФ

Цитата: sau от 17 марта 2024, 01:23В этом контексте есть ли возможность менять местами колонки в ТаблицеЗначений (МногострочнойЧасти) (перетягиванием мыши или программно).
Все же для сложных взаимоотношений с табличными частями я рекомендую посмотреть в сторону ТабличноПоле из 1С++.