&НаСервере
Функция ПолучитьТабДокНаСервере()
…..
КартинкаШтрихкода=ПолучитьКартинкуШтрихкода(ШтрихКод);
Если НЕ КартинкаШтрихкода = Неопределено Тогда
Область.Рисунки.Картинка.Картинка= КартинкаШтрихкода;
КонецЕсли;
….
КонецФункции
Функция ПолучитьКартинкуШтрихкода(ШтрихКод)
// В зависимости от типа платформы подключим соответствующую внешнюю компоненту
ИнформацияОСистеме = Новый СистемнаяИнформация;
Если ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86 Тогда
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
ИначеЕсли ИнформацияОСистеме.ТипПлатформы = ТипПлатформы.Linux_x86 Тогда
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодовLinux32», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
Иначе
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодовLinux64», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
КонецЕсли;
// Создадим объект внешней компоненты
Компонент = Новый(«AddIn.КартинкаШтрихкода.Barcode»);
// Если нет возможности рисовать
Если НЕ Компонент.ГрафикаУстановлена Тогда
// То картинку сформировать не сможем
Возврат Неопределено;
КонецЕсли;
// Если в системе установлен шрифт Tahoma
Если Компонент.НайтиШрифт(«Tahoma») = Истина Тогда
// Выбираем его как шрифт для формирования картинки
Компонент.Шрифт = «Tahoma»;
Иначе
// Шрифт Tahoma в системе отсутствует
// Обойдем все доступные компоненте шрифты
Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл
// Получим очередной шрифт, доступный компоненте
ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч);
// Если шрифт доступен
Если ТекущийШрифт <> Неопределено Тогда
// Они и будет шрифтом для формирования штрихкода
Компонент.Шрифт = ТекущийШрифт;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Установим размер шрифта
Компонент.РазмерШрифта = 8;
// Зададим размер картинки
Компонент.Ширина = 100;
Компонент.Высота = 90;
// Разрешим компоненте самой определять тип кода
Компонент.АвтоТип = Истина;
// ИЛИ установим код EAN-13
// Компонент.ТипКода = 1;
Компонент.ТипКода = 2;
//
// Тип смотрим в документации на внешнюю компоненту
Компонент.ОтображатьТекст=Ложь;
// Если код содержит контрольный символ, обязательно указываем
Компонент.СодержитКС = СтрДлина(Штрихкод) = 13;
// Если отображать контрольный символ не нужно
// Компонент.ВидимостьКС = Ложь;
// Формируем картинку штрихкода
Компонент.ЗначениеКода = Штрихкод;
// Если установленная нами ширина меньше минимально допустимой для этого штрихкода
Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда
// Скорректируем ширину
Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10;
КонецЕсли;
// Сформируем картинку
ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод();
// Если картинка сформировалась
Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда
// Формируем из двоичных данных
Возврат Новый Картинка(ДвоичныеДанныеКартинки);
КонецЕсли;
Возврат Неопределено;
КонецФункции
выдет ошибку
{Форма.Форма.Форма(263)}: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту)
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаПечатиШтрихкодовWindows32», «КартинкаШтрихкода», ТипВнешнейКомпоненты.Native);
по причине:
Установлен безопасный режим. Выполнение операции запрещено
на версии 8.2.13.199 работало нормально, после обновления на 8.2.14.540 появилась такая ошибка…
Добрый день!
Проверьте в реестре, что никакие компоненты больше не зарегистрированы, при необходимости, разрегистрируйте их.
- Зайти в реестр (<Win+R> — «regedit»).
- Запустить поиск (Ctrl+F) по строке «AddIn.DiadocInvoiceApi» (Поиск пойдет от выделенной ветки. Таким образом Вы можете, например, пропустить поиск по ветке HKEY_CLASSES_ROOT).
- Ищете записи о компоненте в ветках реестра:
HKEY_CLASSES_ROOT\ — повторите поиск, нажав F3.
HKEY_LOCAL_MACHINE\ — это значит, что компонента была зарегистрирована под всех пользователей и скорее всего для регистрации потребуется запуск консоли от имени администратора.
HKEY_CURRENT_USER\ — это значит, что компонента зарегистрирована под текущего пользователя.
HKEY_USERS<SID>\ — это значит, что компонента зарегистрирована под пользователя с указанным SID. SID-ы других пользователей может смотреть только администратор. При работе от пользователя увидите только ветку с SID текущего пользователя. - Рядом с найденной веткой найдите ветку «AddIn.DiadocInvoiceApi.1\CLSID». Зайдите в неё и скопируйте значение из параметра по умолчанию.
- Запустите поиск по этому значению.
- В найденной ветке будет подветка «InprocServer32». В параметре «InprocServer32» по умолчанию будет указан путь до компоненты (именно по этому пути Windows ищет компоненту).
- Если автоматическая регистрация компоненты не срабатывает, тогда:
Если в реестре вы нашли другие зарегистрированные компоненты Диадок, то их необходимо разрегистрировать. В случаях, когда указанного в реестре каталога или файла не существует, их необходимо создать.
После того, как все компоненты будут разрегистрированы, удалите компоненты с диска ( Shift + Del ). После успешной разрегистрации компоненты веток с именем «AddIn.DiadocInvoiceApi» оставаться не должно.
После этого:
1 Закройте 1С
2. Запустите консоль от имени администратора и введите следующие команды:
2.1 C:\Windows\System32\regsvr32.exe /u «полный путь до компоненты»
2.2 C:\Windows\System32\regsvr32.exe /i «полный путь до компоненты»
2.3 C:\Windows\System32\regsvr32.exe /i:user «полный путь до компоненты»
2.4 C:\Windows\System32\regsvr32.exe /u «полный путь до компоненты»
2.5 C:\Windows\System32\regsvr32.exe /i:user «полный путь до компоненты»
3. Все действия в консоли обязательно проделать до конца.
4. После выполнения действий проверьте работу модуля.
Определения:
«полный путь до компоненты» — пример «C:\Users\permikin\AppData\Local\Temp\AddInDiadocAPI_5_28_6_502_x86_64.dll»
При разрегистрации может возникнуть ошибка с кодом «0x80070005» или «0х80004005» это значит, что консоль запущена без прав администратора, либо что по указанному пути нет компоненты.
Если возникнут трудности при проверке или регистрации компоненты, напишите об этом.
Доброго дня! 1C 8.2.13.205 Продолжаю пытаться создать простую ВК на delphi по технологии COM для 8.2. Требуемый функционал такой: в ВК передаются номер в виде строки и дата, а ВК возвращает ссылку на документ авансовый отчет, найденный по этим параметрам. В ветке удалось таки получить ссылку в режиме толстого клиента. Что-то никак не получается решуть текущую задачу: получить ссылку на документ авансовый отчет на сервере. (нужно получить ссылку на сервере, чтобы вернуть ее тонкому клиенту) Что делаю (весь код выполняется &НаСервере): Ошибка в строке 2: Тип не определен (AddIn.LIB1) Вариант 2. Ошибка в строке 3: Метод объекта не обнаружен (GetNUM) Вариант 3. Ошибка в строке 3: Не удалось загрузить внешнюю компаненту по причине: Ошибка при вызове метода контекста (ПодключитьВнешнююКомпоненту): Недопустимое значение параметра (параметр номер ‘1’) (Некорректное имя компоненты) Еще раз хочу подчеркнуть, что если подключить эту компоненту на клиенте (в режиме толстого клиента), то она нормально возвращает ссылку на документ. Подскадите, пжл, если кто-то в курсе, что нужно сделать чтобы ВК вернула ссылку на сервере? Было бы интересно взглянуть на какой-нибудь пример по этой теме, если кто знает, подскажите, где глянуть? Спасибо.
1c падает с ‘access violation’ Дебагером Дельфи смотрю — Init вроде отрабатывает. Надо глядеть, может требования к описанию интерфейсов поменяли.
Благодарю! ПодключитьВнешнююКомпоненту(ПутьККомпоненте,Идентификатор,ТипВнешнейКомпоненты.COM) возвращает истина. На строчке Объект=Новый(«Addin.LIBRARY.LIB1»); 1с вылетает без какого-либо описания ошибки..
ну дык попробуй версию по-свежее
>> Дебагером Дельфи смотрю — Init вроде отрабатывает. А у меня чото нифига не отрабатывает. Странно..
Подниму. Может кто сталкивался с проблемой, описанной в и .
Делать ком компоненты уже не актуально
подскажи, пжл, другой способ решения сабжа. Работать должно на Тонком, толстом и Вэбе.
кури доку от 1С, как делать обычные компоненты
>> как делать обычные компоненты в не удалось найти такого раздела.. Расскажи, пжл, немного подробней про обычные компоненты.
так это.. вроде же из компонент NativeAPI невозможно работать с данными 1С? или можно? Не подскажешь, как можно связаться с кирпичом?
Тэги:
Комментарии доступны только авторизированным пользователям
Карась
01.08.12 — 10:27
Добрый день! Я пытаюсь использовать компоненту NameDecl.dll для склонения имен, узнала, что в ЗУПе есть такая компонента, нашла код ее обработки
ЗагрузитьВнешнююКомпоненту(«NameDecl.dll»);
НайденноеЗначение = Новый(«AddIn.NameDeclension»);
Исключение
Сообщить(«Ошибка загрузки внешней компоненты для склонения ФИО! Функции склонения будут недоступны!»);
КонецПопытки;
а он ее не находит, выдает сообщение об ошибке, подскажите пожалуйста в чем может быть проблема
eromanov
1 — 01.08.12 — 10:28
библиотеку не плохо было бы зарегистрировать в винде…
БледноЗолотистый
2 — 01.08.12 — 10:32
УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной(«глКомпонентаСклоненияФИО»), ФИО, 2, , ФИО);
Fish
3 — 01.08.12 — 10:34
Карась
4 — 01.08.12 — 10:35
там уже ход мысли потерялся
Карась
5 — 01.08.12 — 10:37
я ее уже зарегистрировала
eromanov
6 — 01.08.12 — 10:37
ну что не помогает?)
БледноЗолотистый
7 — 01.08.12 — 10:37
Вот это что возвращает — глЗначениеПеременной(«глКомпонентаСклоненияФИО»)?
zak555
8 — 01.08.12 — 10:38
(0) зачем тебе эта компонента ?
Карась
9 — 01.08.12 — 10:38
в смысле что?
Карась
10 — 01.08.12 — 10:39
(9)а как я имена склонять буду?Если есть другой способ, подскажите, я только рада буду
Карась
11 — 01.08.12 — 10:39
Ой(8)
БледноЗолотистый
12 — 01.08.12 — 10:43
(10) На (7) отвечать собираемся?
Карась
13 — 01.08.12 — 10:44
Честно признаюсь не знаю, рискну предположить что возвращает компоненту
SeraFim
14 — 01.08.12 — 10:46
в чем проблемаа? Если загрузила, то используй
РезультатСклонения = «»;
Если УниверсальныеМеханизмы.Просклонять(глЗначениеПеременной(«глКомпонентаСклоненияФИО»), ФизЛицо.Наименование, 4, ФизЛицо.Пол, РезультатСклонения) Тогда
ТоЧтоВамНадо = РезультатСклонения;
КонецЕсли;
вместо 4 нужно поставить номер того падежа, в который нужно просклонять
Карась
15 — 01.08.12 — 10:47
(14) да в том то и проблема, что я ее не загрузила
Карась
16 — 01.08.12 — 10:47
он ее загрузить не может,хотя она зарегестрирована
zak555
17 — 01.08.12 — 10:48
БледноЗолотистый
18 — 01.08.12 — 10:50
(13)Тогда рискну предположить, что я вам помог. С чистой совестью покидаю тему. Удачи.
Карась
19 — 01.08.12 — 10:50
(17)я ее вчера пыталась вставить,но склонять он не хотел, у меня ФИО вбивается в одну строку
Fish
20 — 01.08.12 — 10:52
(19) Вообще-то эта функция и предназначена для ФИО из одной строки.
zak555
21 — 01.08.12 — 10:52
(19)
1. он это кто ?
2. пример фио
eromanov
22 — 01.08.12 — 10:52
конструктивного диалога тут совсем не получается, бум ждать телепатов…
SeraFim
23 — 01.08.12 — 10:53
в ЗиКБУ:
Попытка
// Загружаем внешнюю компоненту
ПодключитьВнешнююКомпоненту(«ОбщийМакет.КомпонентаСклоненияФИО», «Decl», ТипВнешнейКомпоненты.Native);
НайденноеЗначение = Новый(«AddIn.Decl.CNameDecl»);
Исключение
// Не удалось выполнить операции с внешней компонентой
СообщитьОбОшибке(«Ошибка загрузки внешней компоненты для склонения ФИО! Функции склонения будут недоступны!»);
КонецПопытки;
то есть сама компонента загружена в общийМакет, как двоичные данные
Карась
24 — 01.08.12 — 10:53
Извиняюсь, сейчас попробую на все ответить
Карась
25 — 01.08.12 — 10:54
(21) 1. тот файл который вы мне кинули
2.Иванов Иван Иванович
Карась
26 — 01.08.12 — 10:55
(22) если последний ваш вопрос, то компоненту я зарегистрировала
zak555
27 — 01.08.12 — 10:56
(25) и как склоняла ?
Карась
28 — 01.08.12 — 10:57
Ничего не меняла
Карась
29 — 01.08.12 — 10:57
(27)Так и оставляла
Fish
30 — 01.08.12 — 10:58
(29) Вот тебе обработка для примера. Смотри, разбирайся. http://zalil.ru/33632890
Карась
31 — 01.08.12 — 11:00
(30) спасибо, буду пробовать
Fish
32 — 01.08.12 — 11:10
(31) Всё описание есть в комментариях, но на всякий случай: Параметр «Пол» — необязательный (задаётся цифрой: 1 — мужской, 2- женский), используется для правильного склонения фамилий, по которым нельзя точно сказать — мужская или женская фамилия. «Z4» — тоже необязательный, задаёт порядок ФИО, т.е., если 123, то получим ФИО, если 321 — то получим ОИФ, если 1, то только фамилия и т.п.
Что будет непонятно, спрашивай.
Карась
33 — 01.08.12 — 11:16
(32)Хорошо, тогда я пока попробую без указания пола
у меня обработка загрузилась странно, если ее запускать он в форме реквизитов не видит, но это я думаю мой косяк уже
Fish
34 — 01.08.12 — 11:20
(33) Что значит «в форме реквизитов не видит»? Не совсем понял. Если что, то обработка не для УФ. Ты в каком режиме предприятие запускаешь?
Карась
35 — 01.08.12 — 11:26
(34)конфигуратора
Карась
36 — 01.08.12 — 11:27
(34)я просто в режиме отладчика хочу ее прошагать
Fish
37 — 01.08.12 — 11:41
(35) Т.е. у тебя в конфигураторе форма чистая что ли? Странно.
Карась
38 — 01.08.12 — 11:43
(37)Он вкладку форма не открывает, чтобы в нее пройти, а открывает ее во вкладке диалог
БледноЗолотистый
39 — 01.08.12 — 11:45
Не надоело изобретать велосапед?
1. У ТС ЗУП, а значит есть такой объект метаданных — ОбщиеМакеты.КомпонентаСклоненияФИО, которых хранит саму dll-ку в двоичных данных.
2. Эта dll написана по технологии Native API, значит регистрировать ее в системе не надо.
3. В глобальном модуле есть функция глЗначениеПеременной(Имя), и если передать ей «глКомпонентаСклоненияФИО», она подключит компоненту из 1. и вернет ее, см (23)
4. Теперь у нас есть компонента, но работать с ней на прямую не удобно, поэтому в ЗУП есть такие методы: УниверсальныеМеханизмы.Просклонять и УниверсальныеМеханизмы.ПросклонятьФамилиюИмяОтчество.
Теперь понятно объяснил? (0)Хоть пробовали что я писал в (2)?
Карась
40 — 01.08.12 — 11:49
(39)признаюсь честно, не пробовала, но теперь понятно, спасибо, что так подробно расписали
Карась
41 — 01.08.12 — 11:51
(39)забыла сказать, я работаю в управление торговлей
Карась
42 — 01.08.12 — 11:55
Соответственно я ее там не нашла
Fish
43 — 01.08.12 — 11:57
(38) Вообще-то, там нет никакой вкладки «Форма». У формы есть вкладка «Модуль», где собственно и находится код.
Карась
44 — 01.08.12 — 12:06
(43)понятное дело, я там посмотрела, но чтобы проработать в режиме отладчика, я ее открываю а у меня формочка пустая
БледноЗолотистый
45 — 01.08.12 — 12:08
(41)Ясно, хотя в первой теме из (3) Serg_1960 давал ссылку, с инструкцией как использовать эту компоненту в своей конф., пробовали?
Карась
46 — 01.08.12 — 12:37
(45)Ой точно, я забыла про нее,я тогда еще к ЗУП доступа не имела, все надо пробовать так, пойду разбираться, спасибо всем огромное за помощь!!!
Карась
47 — 01.08.12 — 16:07
Пока не получилось((
Я не могу достать Компоненту склонения как здесь
http://www.1c-pro.ru/topic41980.html
У меня в ЗУПе я ее не нашла, скорее всего это из-за демо версии, не подскажете, может ее где скачать можно?
Fish
48 — 01.08.12 — 16:17
(47) Похоже, придётся тебе таки вызывать специалиста к себе. Здесь имхо телепаты уже закончились :))
Карась
49 — 01.08.12 — 16:19
Да не выйдет специалиста вызвать я на практике здесь нахожусь, изучаю))
Fish
50 — 01.08.12 — 16:22
(49) Ну тут тебе уже всё, что могли, объяснили и разжевали. Хотя на форуме есть любители клепать наглядные видеопримеры, может, они помогут :))) Главное — не отчаиваться.
Карась
51 — 01.08.12 — 16:24
Не, я не отчаиваюсь, наверное лучше всего еще раз сесть и заново все написать))
БледноЗолотистый
52 — 01.08.12 — 16:30
(51) Напиши свой e-mail, вечером помогу.
Карась
53 — 01.08.12 — 16:52
прошу прощения, я открыла у себя личной информации e-mail
Карась
54 — 01.08.12 — 16:54
(52)большое спасибо,заранее, только извиняюсь сразу за задержки в ответах до утра, несколько дней интернет временно только на работе((
Карась
55 — 02.08.12 — 10:33
Урааааааааааа, компонента подключилась,огромное спасибо(52),теперь склонять пока не хочет))
Карась
56 — 02.08.12 — 10:43
Ааааа, все теперь и склоняет!!!!
Данный компонент не используется на этом компьютере 1с при запуске
В отличие от 7.7 необходимо указывать полный путь к DLL (или положить файл DLL в папку BIN платформы 1С:Предприятие). Вместо СоздатьОбъект(«Addin.Имя») используется Новый(«Addin.Имя»), использовать при этом ключевое слово COMОбъект не нужно.
Хранение записей о внешних компонентах в реестре Windows
Зарегистрированная внешняя компонента хранится в реестре следующим образом.
Предположим, что у нас есть внешняя компонента E:EventsEvents.dll.
В 1С мы пишем:
Теперь зайдем в программу regedit.exe (Пуск-Выполнить-Regedit.exe).
Если регистрация прошла успешно, то в реестре мы увидим следующие записи (я сделал поиск по подстроке «AddIn.Events» в редакторе реестра regedit.exe, нажав сочетание клавиш Ctrl-F):
Значение является уникальным для каждого OLE-объекта идентификатором (CLSID). Его должен явно задать разработчик в коде внешней компоненты.
Значение ProgID, которое в нашем случае — «AddIn.Events» также задает разработчик внешней компоненты.
Чтобы в реестре появились эти записи, необходимы права доступа
Начиная с Windows 2000, обычный пользователь не имеет прав доступа к указанным выше ветвям реестра. Нужны права или администратора, или привилегированного пользователя Windows. После первой загрузки компонента пропишет себя в реестре, и ее смогут использовать и непривилегированные пользователи Windows.
Где 1С ищет внешнюю компоненту?
Если при загрузке внешней компоненты вы не указываете полный путь, такой как E:EventsEvents.dll или сетевой путь наподобие ВашСерверПапкаГдеЛежатВКEvents.dll, то 1С ищет внешние компоненты
-относительно папки 1Cv7BIN (КаталогПрограммы())
-относительно каталога информационной базы (КаталогИБ())
Метод ЗагрузитьВнешнююКомпоненту(), обнаружив ВК по новому пути, обновляет ее регистрацию в реестре
Это означает, например, что на терминальном сервере программист, который вошел в тестовую базу, где лежит ВК, и потом ее стер, оставит у всех пользователей запись в реестре о несуществующей ВК.
Аналогичная проблема — когда ВК по данному пути недоступна тем или иным пользователям.
А поскольку пользователи не имеют права на изменение записей в реестре, то у них перестанет загружаться и внешняя компонента.
В 1С:Предприятие 8.0 убрана возможность загрузки ВК относительно каталога ИБ.
В 7.7 же, чтобы избежать проблем, всегда убирайте ВК из каталога ИБ, и прописывайте полные пути (или складывайте DLL в общую для всех пользователей папку BIN).
Кардинальное решение проблемы — VKLoader
Имеется компонента VKLoader.dll (автор — Александр Орефков), которая позволяет решить проблемы с регистрацией компонент.
Цитата:
«vkloader (далее ВК) — внешняя компонента для 1С-Предприятия 7.7, которая может загружаться без ее регистрации в реестре, и загружать другие внешние компоненты без их регистрации. Предназначена для беспроблемной загрузки внешних компонент пользователями, не имеющими прав на запись в HKCR ветку реестра.
Принцип работы основан на перехвате обращения 1С к WinAPI функциям CLSIDFromProgID и CoCreateInstance.
Также ВК решает проблему «зависания» процесса 1С в памяти при закрытии программы при использовании несовсем корректно написанных сторонних внешних компонент».
Пример использования vkloader:
Замечу, что сама vkloader «умеет» загружать себя без прав доступа к реестру.
Еще одно решение: RegsvrEx
Автор — AlexQC.
Регистрирует компоненты (OLE-объекты) в пользовательской ветке реестра.
http://infostart.ru/projects/index.php?id=559
Самая простая причина неполадок
Очень часто причиной неработоспособности любого электронного прибора является отсутствие вилки в розетке. Аналогичная ситуация возникает с внешними компонентами, поэтому при их загрузке полезно проверять, а есть ли в наличии указанный файл DLL (к сожалению, этого не делает сам движок 1С:Предприятие 7.7).
Дополнительно:
Для старта внешней компоненты DynamicModuleServer.dll на Windows Server 2003 необходимо добавить исполняемый файл (1cv7s.exe) в исключения из механизма Windows под названием DEP (Data Execution Prevention): Control Panel -> System -> Advanced ->Performance Settings ->Data Execution Prevention
Информационная база не обнаружена
Ошибка «Информационная база не обнаружена» возникает только в клиент-серверном режиме работы 1С. Она означает, клиент 1С не может подключиться к указанной базе данных.
- Убедитесь, что сервер 1С доступен.
- Проверьте, существует ли указанная база данных на сервере 1С.
- Если база присутствует — убедитесь, что в настройках безопасности SQL сервера установлены разрешения для имени пользователя и пароля, под которыми база была добавлены на сервере 1С предприятия.
- Бывают ситуации, когда при восстановлении базы 1С из бекапа в Windows меняется владелец её владелец, для исправления просто выполните рекомендации из предыдущего пункта.
Эксплуатация » Ошибка при загрузке внешней компоненты в 1С
Добрый день.
Используется:
Windows8.1 x64, 1С:Предприятие 8.3 (8.3.13.1644), ARM_ORION_PRO1_20_2
Orion1C.dll ,брал из каталога 1C_WorkTime, в каталоге находятся Orion1C.sil и Orion1C.dll
при использовании Example1.exe и Example2.exe все происходит корректно
На текущий момент такая ошибка при использовании метода в 1с
ЗагрузитьВнешнююКомпоненту(«Orion1C.dll»); выдает ошибку
«Не смогли загрузить внешнюю компоненту.»
ОписаниеОшибки() = «Ошибка при вызове метода контекста (ЗагрузитьВнешнююКомпоненту): Ошибка при загрузке внешней компоненты»
Пробовал указать полный путь к местонахождению dll, ошибка та же.
При попытке зарегистрировать компоненту с помощь. regsvr32 выходит ошибка,
«модуль . Orion1C.dll загружен, но не удалось выполнить вызов DLLRegisterServer, код ошибки: 0х80004005»
Подскажите что можно сделать.
1 год 11 месяцев назад
– Ряснов Александр 1 год 10 месяцев назад
Проверил на ЗУП2,5 «Толстый клиент (обычное приложение)», но в режиме совместимости 8.2/8.3 + такси (7 рка — х64, ХР — х32), грузит и работает (от имени — Админ=владелец). Файлы «Orion1C.sil» и «Orion1C.dll», взял на сайте (СКУД и УРВ для 1С:Предприятие 8 (2.8.1)), и просто скопировал в папку «BIN». Регистрация «regsvr32» не требуется, в х64, работает только на 1С-х32, в папке («1C_WorkTime») есть файл «pdf», там всё расписано. И в качестве клиента, и в качестве сервера («Режим работы») «Внешняя компонента загружена», «Создан объект URV»….
И ещё (из файла документации):
«ЗАМЕЧАНИЕ: на управляемых формах программа работает ощутимо медленнее, поэтому, если есть возможность оставаться на обычных формах, то разработчик рекомендует запускать программу в режиме «Обычное приложение».»
(Заинтригован, т.к. у «1С» ников упор в сторону «управляемых форм», буду пробовать «на разгон», там есть такая «фича», будет время, кратко распишу… )
. А запуск в отладочном режиме — даёт много дополнительной информации…
– Карпов Дмитрий 1 год 10 месяцев назад
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)
Решение проблем с регистрацией внешних компонент в терминале
При этом пользователи видят, например, картинку представленную в анонсе статьи.
В то время как при работе с локальных компьютеров никаких проблем с подключением внешних компонент нет.
С чем это связано? Это связано с тем, что, когда пользователи работают через сервер терминалов, они имеют меньше прав, чем при работе на локальном компьютере.
В этом легко убедиться, если зайти на сервер терминалов под учетной записью с административными правами.
Причина такой разницы заключается в том, что 1С не может зарегистрировать внешнюю компоненту в реестре, когда пользователь работает в терминале под обычными правами, т.к. у обычного пользователя нет прав на запись в ветку системного реестра HKEY_CLASSES_ROOT.
В публикациях на тему подключения внешних компонент в терминале предлагаются самые разные методы решения этой проблемы.
1. Запустить первый раз 1С под административными правами.
Этот вариант далеко не всегда срабатывает. Ниже объясню, почему.
2. Дать обычным пользователям терминала права на запись в ветку системного реестра HKEY_CLASSES_ROOT.
Недостаточно «продвинутым» пользователям лучше этого не делать, иначе могут быть проблемы.
3. С помощью различных «примочек» регистрировать ВК от имени пользователя с полными правами.
Тоже не есть хорошо.
Так как же все таки лучше выйти из этой ситуации?
Я предлагаю свой вариант решения этой проблемы. По моему мнению — простой и красивый, не предлагавшийся на лансере ранее.
Исследуя эту проблему, я задался вопросом — а зачем 1С вообще пытается зарегистрировать ВК по новому пути? Ведь она уже зарегистрирована в системе.
Дело оказалось в том, что в типовых конфигурациях 1С (например «Управление Торговлей») используется такой синтаксис метода глобального контекста ПодключитьВнешнююКомпоненту():
ОбъектДрайвера = Новый («AddIn.АТОЛСканер.Scaner45»);
Как видим, ВК драйвера подключается из макета «ДрайверАТОЛСканерШтрихкода» справочника «ПодключаемоеОборудование».
Что же при этом происходит?
1С сохраняет компоненту во временной папке пользователя, например «C:Documents and SettingsUserLocal SettingsTemp1032v8_4_12.tmp»
и пытается зарегистрировать ее в ветке реестра HKEY_CLASSES_ROOT именно по этому пути.
На терминале у обычных пользователей нет прав на изменение этой ветки реестра, поэтому компонента у них не подключается.
Теперь о том, как выйти из этой ситуации.
Метод глобального контекста ПодключитьВнешнююКомпоненту() имеет несколько вариантов синтаксиса. Вот этим мы и воспользуемся.
Итак, по шагам:
1. Регистрируем внешнюю компоненту утилитой regsvr32.exe на сервере терминалов в папке C:WINDOWSSYSTEM32 для 32-разрядной ОС или в папке C:WINDOWSSYSWOW64 для 64-разрядной ОС.
2. Используем один из двух дополнительных вариантов синтаксиса метода ПодключитьВнешнююКомпоненту():
Вариант 1:
ПодключитьВнешнююКомпоненту(«C:WINDOWSSysWOW64Scaner1C.dll», «АТОЛСканер», ТипВнешнейКомпоненты.COM);
ОбъектДрайвера = Новый («AddIn.АТОЛСканер.Scaner45»);
Вариант 2:
ОбъектДрайвера = Новый (ProgID);
На мой взгляд, вариант № 2 предпочтительнее.
При этом 1С не пытается перерегистрировать ВК по новому пути в реестре и таким образом, все проблемы решаются.
Ну вот собственно и все. Успехов в работе!
Найти хорошего 1С программиста для сопровождения и внедрения 1С-программ довольно сложно — нужно оценить ваш уровень ведения учета и четко сформулировать для себя конкретные требования к работе программиста 1С.
Очистка базы от документов УУ версия на SQL
Свободное проведение документов
Выгрузка зарплаты В банк ВТБ24
Помощь пользователю при ошибке при входе в систему
Если уж при работе системы произошла ошибка – мы стараемся сделать так, чтобы сообщение о ней давало пользователю подсказку – как исправить эту ошибку (если пользователь может ее исправить сам) или предоставить пользователю удобный способ сообщить об ошибке специалистам (в техподдержку и т.п.). Большой шаг в этом направлении был сделан в версии 8.3.17, и мы продолжаем двигаться дальше.
В версии 8.3.21 мы переработали подход к сообщениям об ошибках, возникающих при входе в систему. Теперь администраторы и разработчики могут добавить в сообщения информацию, которая более подробно объяснит пользователю причину проблемы и, возможно, сможет помочь пользователю решить её. Мы рекомендуем задействовать эти новые возможности, когда они появятся, чтобы сделать работу пользователей удобнее.
Если ошибка произошла при входе в систему, пользователю можно будет показать дополнительную информацию, которая сможет помочь ему решить возникшую проблему:
Текст (например, «Позвоните дежурному администратору по телефону +7 (495) 123-45-67»)
Ссылка на ресурс с информацией (например, на сайт, где описаны способы решения возникшей проблемы)
При показе сообщения об ошибке под системным сообщением отображается текст помощи (если задан) и ссылка “Нужна помощь” (если задана ссылка на ресурс с информацией). Полный тест ошибки отображается при нажатии на ссылку “Показать подробности…”:
Ошибки, возникающие при входе в систему – одни из самых непростых в обработке. Такие ошибки, в частности, могут возникать из-за недоступности сервера 1С, и, значит, в этот момент с сервера нельзя получить данные о том, какую информацию показать пользователю. Поэтому описанную выше информацию можно записать для каждой базы в файл списка баз *.v8i – при неудачном входе в систему информация будет считана из этого файла (при доступности файла) и показана пользователю.
Есть варианты работы, когда файлы *.v8i недоступны – работа в облаке, удалённая работа и т.п. Поэтому эту информацию также можно настроить через стандартную обработку «Управление настройками отображения ошибок» (параметры «Текст помощи» и «Навигационная ссылка помощи») и сохранить в инфобазе. Если с клиента уже был ранее осуществлен успешный вход в систему – эти параметры считываются с сервера и кэшируется на клиенте.
Если клиент успешно связался с сервером и считал актуальные значения параметров «Текст помощи» и «Навигационная ссылка помощи», но далее при работе системы возникли проблемы при соединении с сервером – в диалоге попытки повторного подключения будут использованы последние считанные значения параметров.
Обратите внимание! Информация, записанная в файле *.v8i, и настройки параметров «Текст помощи» и «Навигационная ссылка помощи» — независимы друг от друга. В случае, если доступен файл *.v8i, но недоступен сервер 1С и на клиенте нет закэшированных значений параметров «Текст помощи» и «Навигационная ссылка помощи» – пользователю будет показана информация из файла *.v8i, в противном случае – информация из параметров «Текст помощи» и «Навигационная ссылка помощи».
Настройки подключения к базе
В файл списка баз (*.v8i) в свойства базы добавляется параметры:
StartupErrorHelpText (строка) – текст, отображаемый в диалоге ошибки до начала сеанса или диалоге попытки повторного подключения
StartupErrorHelpURL (строка) – ссылка на ресурс с информацией
Тонкий клиент
Для разработчиков и администраторов появится возможность задать параметры для отображения сообщений об ошибках при входе в систему, как программно (через новые свойства и методы объектов встроенного языка), так и в стандартной обработке «Управление настройками отображения ошибок» (вызывается из пункта системного меню «Функции для технического специалиста»):
Про параметр «Адрес сервера обработки ошибок при запуске» — в отдельном разделе ниже.
Переработаны также тексты сообщений, которые показываются в различных проблемных ситуациях при входе в систему:
Проверьте сетевое соединение
Проверьте, что параметры подключения указаны верно
Если проблема возникла уже после начала работы с системой — на форме повтора попытки соединения с сервером отображаемый текст будет таким же, как и на таблице вверху, а полный текст можно посмотреть, нажав на ссылку «Показать подробности…».
Веб-клиент
Мы постарались реализовать аналогичные «дружественные» сообщения об ошибках при входе в систему и в веб-клиенте. В веб-клиенте есть сложности в отслеживании взаимодействия браузер-сервер, т.к. браузер – внешнее для нас приложение, и мы не всегда можем контролировать происходящие в нем процессы. Тут нам пришла на помощь технология service-workers. Эта технология, в частности, позволяет кэшировать информацию на стороне клиента, что может быть использовано для подгрузки данных при недоступности сетевого ресурса.
При невозможности связаться с веб-сервером в браузере будет отображена страница с информацией об ошибке подключения, текстом, заданный в настройках, и текстом, полученным из запроса на адрес сервиса информации (т.е. фактически с той же информацией, что и в тонком клиенте):
Это будет работать при соблюдении нескольких условий:
Подключение к веб-серверу по HTTPS
На веб-сервер уже был осуществлен удачный вход из браузера (для кэширования на клиенте страницы, показывающей информацию об ошибке)
Браузер должен поддерживать технологию service-workers
Про сервер обработки ошибок при запуске
Выше мы упомянули параметр «Адрес сервиса обработки ошибок при запуске».
Если этот параметр задан, то при ошибках запуска по этому адресу клиент 1С сделает запрос дополнительной информации. А по этому адресу можно настроить веб-сервер, который будет отдавать более подробную информацию о текущей ситуации — информировать пользователей при возникновении неожиданных аварийных ситуаций и / или недоступности сервера и т.п. Например, можно отобразить пользователю текст “Мы уже работаем над проблемой. Работа сервера возобновится после 14:00”.
Для поддержки это сценария можно реализовывать совсем простой вариант: просто положить JSON-файл в папку и настроить веб-сервер (Apache, nginx, IIS) на отдачу этого файла. При возникновении проблем на сервере можно вписать в этот файл необходимый текст (userMessage) и настроить время, до которого этот текст будет отображаться на форме (в нашем примере – до 14:00).
Можно реализовывать и более сложные сценарии – например, отправлять информацию об ошибках при входе в систему на внутренний сервис техподдержки организации.
Регистрация компоненты comcntr.dll (для COM соединения с базой 1С)
Если фоновый процесс COM-соединения завершается с ошибкой:
: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string
Нужно зарегистрировать библиотеку ComConnector comcntr.dll из каталога программы.
. Перед этим нужно отключить службу агента сервера 1С:Предприятия и все программы, использующие эту DLL .
В 32-битной версии сервера проблема решилась бы командой: regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»
но в 64-битной версии команда будет примерно такой * : C:WindowsSysWOW64regsvr32 «C:Program Files (x86)1cv88.3.5.1119bincomcntr.dll»
При удачном выполнении Вы увидите:
Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
Если и это не помогло, попробуйте переустановить платформу 1С в режиме Исправить и отметьте COM соединение