К запискам с фронта (вопрос по классам) - 1Cv7 ВСД в ГИС Меркурий - КБ99 Redmine

Проект

Общее

Профиль

К запискам с фронта (вопрос по классам)

Добавил(а) Семенова Вера больше 6 лет назад

Если у меня классы подключаются в глобальном модуле ( при начале работы системы и в обработках), то при такой сборке с помощью defcls, выдается ошибка при подключении уже имеющихся, да и в начале загрузки Меркурий_Параметры_ТЕСТ -ошибки. Как это обойти?, или же будет два направления развития системы?


Ответы (17)

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

defcls.prm - служит для сопоставления имени класса с файлом обработки. Вам нужно содержимое файла defcls.prm от этого проекта добавить в уже имеющийся файл.

Если есть сложности с объединением - то выложите сюда ваш базовый defcls.prm, попробуем помочь.

P.S. Желательно при обращении указывать (скопировать) те ошибки что выходят. Будет проще помочь.

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

У меня несколько другой порядок подключения классов - нет defcls.prm, классы подключаются в глобальном модуле, сам выполняемый модуль в конфигураторе в виде обработок. Попробую туда все добавить, хотя сие есть неудобно с учетом частых обновлений

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

Можете привести куски кода?

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

// Подключение подсистемы "Сканы доков"
КлассПодсистемыСканыДоков__=СоздатьОбъект("__КлассПодсистемыСканыДоков");
КлассПодсистемыСканыДоков.ДобавитьДопГлобМодуль();
КлассПодсистемыСканыДоков.ПодписатьКлассНаСобытияФабрики(КлассФабрикаСобытий);

Выгонялка = СоздатьОбъект("__КлассВыход__");
Выгонялка.ФильтрПользователей = "Семенова_ВГ"; //не выгонять администратора
Если Выгонялка.Запустить() = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Сервис=СоздатьОбъект("Сервис");
Сервис.ВключитьРаскраскуТаблиц();
Жирный = Сервис.СоздатьШрифт(,,9,,,,);

т.е. хочу объекты создать в глобальном модуле, а .ert как обработки в конфигураторе
Ошибка такая при открытии системы:
КлассФабрикаСобытий__=СоздатьОбъект("__КлассФабрикаСобытий");
{Глобальный модуль(6350)}: Неудачная попытка создания объекта (КлассФабрикаСобытий)
с просьбой закрыть прграмму
если не закрываешь, а загружаешь "Меркурий_Параметры_ТЕСТ" - такая ошибка :

Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {C:\COPY2015P\ExtForms\Меркурий_ГлобальныйМодуль.ert(1790) }

ГМ.Инициализация(КаталогОбработки, КаталогИБ(), ТестовыйРежимРаботыМодуля); {C:\COPY2015P\EXTFORMS\МЕРКУРИЙ_ПАРАМЕТРЫ_ТЕСТ.ERT}: Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {C:\COPY2015P\ExtForms\Меркурий_ГлобальныйМодуль.ert(1790) }

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

Смотрите, вы используете классы "__КлассПодсистемыСканыДоков", "__КлассФабрикаСобытий". Где они определены? Какая то внешняя компонента?

В базовой версии (без модуля Меркурия) у вас присутствует файл в каталоге базы 1С defcls.prm?

У меня складывается ощущение что вы перезаписали имеющийся рабочий файл defcls.prm с объявленными ранее классами - на файл от меркурия. В случае если у вас уже используется файл с описанием классов, то необходимо было в него добавить строки, заменив в случае необходимость путь до файлов (если он отличается от предложенного автором)

class Меркурий_ГлобальныйМодуль = .\ExtForms\Меркурий_ГлобальныйМодуль.ert
{}
class МеркурийИнтеграция = .\ExtForms\Меркурий_Интеграция.ert 
{}

Далее версии файлов модуля Меркурий у вас устаревшие, загрузите свежие.

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

Файл defcls в конфигураторе

//# класс КлассФабрикаСобытий = КлассФабрикаСобытий@MD
//# {};
//# класс КлассПодсистемыДопПраваДоков = КлассПодсистемыДопПраваДоков@MD
//# {};
//# класс КлассПодсистемыСканыДоков = КлассПодсистемыСканыДоков@MD
//# {};
//# класс КлассВыход = КлассВыход@MD
//# {};

А версии я скачивала 22.09, загружу вечерние

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

Тогда уберите defcls вообще
и добавьте строки

//# класс КлассФабрикаСобытий = КлассФабрикаСобытий@MD
//# {};
//# класс КлассПодсистемыДопПраваДоков = КлассПодсистемыДопПраваДоков@MD
//# {};
//# класс КлассПодсистемыСканыДоков = КлассПодсистемыСканыДоков@MD
//# {};
//# класс КлассВыход = КлассВыход@MD
//# {};

//# класс Меркурий_ГлобальныйМодуль = .\ExtForms\Меркурий_ГлобальныйМодуль.ert
//# {};
//# класс МеркурийИнтеграция = .\ExtForms\Меркурий_Интеграция.ert
//# {};

Должно заработать, хотя таким объявлением классов не пользовался.

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

Все та же ошибка
Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {Меркурий_ГлобальныйМодуль@MD }

ГМ.Инициализация(КаталогМодуля, КаталогБиблиотек, ТестовыйРежимРаботыМодуля); {C:\COPY2015P\EXTFORMS\МЕРКУРИЙ_ПАРАМЕТРЫ_ТЕСТ.ERT}: Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {Меркурий_ГлобальныйМодуль@MD }

RE: К запискам с фронта (вопрос по классам) - Добавил(а) кб99 Синявский Филипп больше 6 лет назад

обновите ВСЕ файлы, в том числе dll

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

во первых- у меня Server2008, во- вторых терминальный клиент, покопаем
не нужно так нервничать

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

И DNS-сервер по определенным причинам явно не указан, что тоже обойти нужно

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

Семенова Вера писал(а):

Все та же ошибка
Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {Меркурий_ГлобальныйМодуль@MD }

ГМ.Инициализация(КаталогМодуля, КаталогБиблиотек, ТестовыйРежимРаботыМодуля); {C:\COPY2015P\EXTFORMS\МЕРКУРИЙ_ПАРАМЕТРЫ_ТЕСТ.ERT}: Меркурий_ГлобальныйМодуль::ВыборВерсии() : Слишком много параметров передано при вызове функции/процедуры объекта
Компонента.Init( {Меркурий_ГлобальныйМодуль@MD }

1) Скопируйте сюда объявления классов как сейчас у вас сделано.
2) Где лежат файлы Меркурий_ГлобальныйМодуль, Меркурий_Интеграция и ДРУГИЕ файлы тоже.

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

1.
//# класс КлассФабрикаСобытий = КлассФабрикаСобытий@MD
//# {};
//# класс КлассПодсистемыДопПраваДоков = КлассПодсистемыДопПраваДоков@MD
//# {};
//# класс КлассПодсистемыСканыДоков = КлассПодсистемыСканыДоков@MD
//# {};
//# класс КлассВыход = КлассВыход@MD
//# {};
//# класс Меркурий_ГлобальныйМодуль = Меркурий_ГлобальныйМодуль@MD
//# {};
//# класс МеркурийИнтеграция = Меркурий_Интеграция@MD
2.
Файлы Меркурий_ГлобальныйМодуль, Меркурий_Интеграция я уже подключила в глобальный модуль как обработки(пробовала и так, и так)
Остальные файлы - КаталогИБ\EXTFORMS\

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

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

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

Посмотрите версии библиотек 1CPP на сервере и на рабочей машине.
На сервере запускаете 1С под правами Администратора?
Если классы сделать не в составе конфигурации - та же самая ошибка?
Отладчиком не пробовали проходить этот момент?
При запуске 1С есть какие то уведомления или ошибки?

Какая базовая конфигурация - комплексная?

RE: К запискам с фронта (вопрос по классам) - Добавил(а) кб99 Синявский Филипп больше 6 лет назад

Вера, следуйте инструкции по обновлению модуля http://redmine.kb99.pro/projects/vsd_1c/wiki/%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8E_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F

Если честно, устал повторять одно и тоже...
С соответствиями версий надо что-то делать...
Например, отключить старые версии совсем...

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Семенова Вера больше 6 лет назад

Удалила все упоминания о dll из реестра, и зарегистрировала непосредственно на сервере.
Спасибо Михаил, спасибо Филипп.

RE: К запискам с фронта (вопрос по классам) - Добавил(а) Анисимов Михаил больше 6 лет назад

Все получилось? Описанные ранее ошибки пропали?

    (1-17/17)