Имя: Пароль:
1C
1С v8
Проблема с внедрением управляемых форм в конфигурацию на обычных
0 Boshid
 
15.11.19
14:59
Задача:
Внедрить библиотеку МДЛП в конфигурацию БП 1.5, дописанную с функционалом аптеки. Как я себе представляю процесс, есть основная база на обычных формах, в ней будут работать как обычно, а для отражения операций с лекарствами запускать второй сеанс базы в управляемом режиме. Получается смешанная конфигурация.

Что сделал:
Залил библиотеку объединением конфигураций, предварительно переименовав исходные в конфигурации модули. Затем переименовал все функции, совпадающие по пространству имён с в библиотеке и конфигурации в глобальных модулях.
Совпадающих объектов было всего 4 справочника - добавил в них реквизиты и табличные части из библиотеки, формы не стал добавлять.

Далее, при запуске базы вылетают следующие ошибки:
1) Если убрать режим совместимости, тогда вылетает ошибка SDBL: ожидается имя таблицы (pos=6).

2) Если поставить режим совместимости с 8.3.12 - вылетают ошибки управляемых блокировок. Запись из журнала:

Использование блокировки допустимо только внутри транзакции в режиме управляемых блокировок!
<1C>{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(312)}:    Блокировка.Заблокировать();
{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(136)}:            ЗаблокироватьДанныеПараметровБлокировки();
{(1)}:БлокировкаРаботыСВнешнимиРесурсами.ПриУстановкеПараметровСеанса(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(4768)}:    Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(2866)}:            ОбщегоНазначения.ВыполнитьМетодКонфигурации(Обработчик, ПараметрыОбработчика);
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(66)}:    ВыполнитьОбработчикиУстановкиПараметровСеанса(ИменаПараметровСеанса, Обработчики, УстановленныеПараметры);
{МодульСеанса(8)}:    СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(31)}:    Возврат ПараметрыСеанса.РаботаСВнешнимиРесурсамиЗаблокирована;
{ОбщийМодуль.БлокировкаРаботыСВнешнимиРесурсами.Модуль(208)}:    Если ЭтоВызовПередНачаломРаботыСистемы И РаботаСВнешнимиРесурсамиЗаблокирована() Тогда
{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(1770)}:        МодульБлокировкаРаботыСВнешнимиРесурсами.ПриДобавленииПараметровРаботыКлиентаПриЗапуске(
{ОбщийМодуль.СтандартныеПодсистемыВызовСервера.Модуль(109)}:    Если НЕ СтандартныеПодсистемыСервер.ДобавитьПараметрыРаботыКлиентаПриЗапуске(Параметры) Тогда
{ОбщийМодуль.СтандартныеПодсистемыКлиентПовтИсп.Модуль(49)}:    ПараметрыКлиента = СтандартныеПодсистемыВызовСервера.ПараметрыРаботыКлиентаПриЗапуске(Параметры);
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(504)}:    Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске();
{ОбщийМодуль.ОбщегоНазначенияКлиент.Модуль(80)}:        ИменаПодсистем = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗапуске().ИменаПодсистем;
{ОбщийМодуль.ИнтеграцияПодсистемБСПКлиент.Модуль(23)}:    Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(918)}:        ИнтеграцияПодсистемБСПКлиент.ПередНачаломРаботыСистемы(Параметры);
{ОбщийМодуль.СтандартныеПодсистемыКлиент.Модуль(267)}:    ВыполнитьОбработкуОповещения(Параметры.ОбработкаПродолжения);
{МодульУправляемогоПриложения(43)}:    СтандартныеПодсистемыКлиент.ПередНачаломРаботыСистемы();</1C>

3) Если ставить режим совместимости ниже - то всякие ошибки об отсутствии методов платформы, оно и понятно, тут вопросов нет.

Прошу помочь найти пути решения, как добиться работы базы в смешанном режиме.
1 kauksi
 
15.11.19
15:12
ставь режим совместимости 8.2.14
2 Жан Пердежон
 
15.11.19
18:30
Шаг 1. Обновить БП 1.5 на 3.0
3 Boshid
 
15.11.19
21:57
(2) Пожалуй, это лучшее предложение, которое приходило и мне в голову, но заказчик так не считает -_-
Да и переводить переписанную в хлам конфигурацию дело не самое благодарное
4 Fram
 
15.11.19
22:02
кому интересно в голову пришло в хлам переписывать БП
5 palsergeich
 
15.11.19
22:03
(4) Тогда это было модно
6 Boshid
 
15.11.19
22:04
(1) (1) В библиотеке МДЛП используются определяемые типы, так что поставить ниже 8.3.2 не получится, к тому же многих встроенных функций, наподобие НайтиСтр(), просто нет на таких версиях
7 palsergeich
 
15.11.19
22:05
(6) Это "НайтиСтр" лечится глобальным модулем, я 100 раз так делал, а вот определяемые типы - беда
8 Boshid
 
15.11.19
22:06
(4) это было давно и нелецензионно, а я тогда даже не знал о существовании 1С )
9 Boshid
 
15.11.19
22:09
(7) Я думаю, можно их в принципе удалить и заменить, если уж другого решения не найдётся.
А можно поподробнее про такой способ с глобальным модулем?
10 hhhh
 
15.11.19
22:16
(6) так и поставьте сначала 8.3.2, надо поэтапно двигаться, нельзя прыгнуть сразу через 50 платформ.
11 palsergeich
 
15.11.19
22:19
(9) Короче делаешь общий модуль клиент сервер и ставишь ему флаг глобальный
там создаешь функцию СтрНайти и ищешь в гугле ее листинг, раньше она называлась Найти и этот финт очень популярен был после выхода платформы 8.3.5, ибо такая проблема вылезла много у кого.
Тогда ошибка уйдет.
12 palsergeich
 
15.11.19
22:19
(11) Я даже тебе скоращу поиски http://catalog.mista.ru/public/841165/
13 Boshid
 
15.11.19
22:29
(10) Вы имеете в виду именно платформу откатить до 8.3.2 или режим совместимости?
Вообще попробовал сейчас режим совместимости 8.3.2 поставить - там другие ошибки сыпятся, например - ругается на определяемые типы и справочники в источнике подписок на события, и в модулях общих команд на тип параметра команды, опять же определяемые типы )
14 Boshid
 
15.11.19
22:29
(12) премного благодарю
15 Boshid
 
19.12.19
08:33
Препятствие преодолено - оказалось, что ошибка SDBL возникала при попытке установки значения константы в модуле обычного приложения. Перенёс в модуль и всё вазлетело.
16 MyNick
 
19.12.19
08:37
(0)
"Как я себе представляю процесс, есть основная база на обычных формах, в ней будут работать как обычно, а для отражения операций с лекарствами запускать второй сеанс базы в управляемом режиме."

Жмакни в галку "Использовать управляемые формы в обычном приложении". Накуа второй сеанс?
17 ДенисЧ
 
19.12.19
08:39
(15) "при попытке установки значения константы в модуле обычного приложения. Перенёс в модуль и всё вазлетело."

перенёс из модуля в модуль? ))
18 Сияющий в темноте
 
19.12.19
08:51
(17) на клиенте константы не всегда доступны.
если толстяка стартануть,то будет все работать.
Независимо от того, куда вы едете — это в гору и против ветра!