Ошибка инициализации библиотеки модулей 1с 8 http сервис

Http-сервис возвращает 500 Internal server error
   Kudryashka

26.01.19 — 15:18

Доброго времени суток

База 8 на обычных формах самописка, написала http-сервис, настроила апач 2.4 на своем компе, затем внедрила клиенту, все это работает уже несколько месяцев. Другой клиент на такой же базе тоже захотел себе такую функцию. Я загрузила себе его базу, скопировала наработки, которые работают на первой, только поменяла код в сервисе, все точно так же настроила, но сервис возвращает ошибку:

HTTP/1.1 500 Internal server error

Ошибка инициализации библиотеки модулей

Я подумала что ошибка в коде сервиса, включила отладку, но отладка в сервис не заходит. Тогда я убрала весь код из сервиса, оставила только две строки:

    Ответ = Новый HTTPСервисОтвет(200);

    Возврат Ответ;

Все. Ошибки в коде отсутствуют как класс. Должно возвращать 200, но отладка опять не заходит и возвращает 500. Проверила все пути, шаблоны, инициализацию. И апач и база на одном компе, я обращаюсь через 127.0.0.1 или localhost. Порт правильный. Авторизация проходит, идет дальше, отправляет обычний жсончик, я вижу его во временных файлах, но сервер отпуливает и все тут. Ошибка инициализации библиотеки модулей наводит на мысль что не хватает каких-то длл. Я проверила каталог C:Program Files (x86)1cv88.3.10.2667bin, там имеются файлы wsap24.dll и wsisapi.dll. Параллельно запустила ту базу, которую настраивала ранее, такую же, она работает. на этом же самом компе, на этой же платформе и с этим же апачем.

Помогите пожалуйста, у меня уже кончились идеи, я не знаю что уже проверить, пните меня в нужном направлении, скажите что еще можно проверить, третий день бьюсь с этим…

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

Задавайте вопросы, может не все описала, я на все отвечу.

   Anarki

1 — 26.01.19 — 15:29

Если Postmanом послать запрос что возвращает?

   Kudryashka

2 — 26.01.19 — 15:36

Я для проверки сервиса использую обработку, которая отправляет запрос. ранее всегда использовала ее, в ней не сомневаюсь, вот через нее я и получаю 500. я проверяла Telerik-ом запрос-ответ, и то, что я там увидела — сюда скопировала.

вот подробнее его «расшифровка»

POST http://127.0.0.1:2018/StatusVagSever/hs/StatusVag/PostDepozit HTTP/1.1

Host: 127.0.0.1:2018

Proxy-Authorization: NTLM TlRMTVNTUAABAAAAB7IIogkACQAuAAAABgAGACgAAAAGAbEdAAAAD09MR0FOQldPUktHUk9VUA==

Authorization: Basic MTExOjExMQ==

User-Agent: 1C+Enterprise/8.3

Accept: */*

Connection: Keep-Alive

Content-Type: application/json; charset=utf-8

Content-Length: 32

{

«bin»: «120140000000»

}

HTTP/1.1 500 Internal server error

Date: Fri, 25 Jan 2019 15:36:45 GMT

Server: Apache/2.4.34 (Win32) OpenSSL/1.1.0i PHP/7.2.10

Content-Length: 78

Connection: close

Content-Type: text/plain; charset=UTF-8

Ошибка инициализации библиотеки модулей

   Kudryashka

3 — 26.01.19 — 15:38

Если я открываю ссылку, то у меня в браузере открывается пустая 1с, запрашивает логин пароль, то есть в браузере открывается пустая управляемая форма, что нормально, т.к. формы обычные. Это лишь говорит о том, что публикация прошла нормально и работает.

   Anarki

4 — 26.01.19 — 15:48

Антивирусы, файрволы? На одной машине клиент и сервер тестирование проводится?

   Kudryashka

5 — 26.01.19 — 15:51

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

   Kudryashka

6 — 26.01.19 — 15:56

Причем она не работает ни у меня ни у клиента. Ладно у клиента, там все с нуля поднималось, апач, веб-сервисы у платформы, обращение к другой машине и все такое… там не работало, я забрала к себе разбираться. И у меня не работает! Но у меня-то все давно настроено, поднято уже, машина одна, локальная, только базу загрузила еще одну и она не работает.

   Kudryashka

7 — 26.01.19 — 15:58

вот этот код в сервисе только правильный? его точно достаточно? что-то я уже начала сомневаться. Уже не знаю что и думать.

Посмотрите

    Ответ = Новый HTTPСервисОтвет(200);

    Возврат Ответ;

По идее должно быть достаточно…

   Kudryashka

8 — 26.01.19 — 16:04

а как сюда скриншоты отправить? как-то ни разу не приходилось именно сюда отправлять картинки. я хотела показать настройки.

   palsergeich

9 — 26.01.19 — 16:22

(8) ссылкой на любой хостнг картинок

   Kudryashka

10 — 26.01.19 — 16:36

   Kudryashka

11 — 26.01.19 — 16:40

Ну вроде всю информацию предоставила. Что может быть не так? Чего ему не нравится? Помогите пожалуйста…..

   Kudryashka

12 — 26.01.19 — 16:49

Обработкой обращаюсь так:

    HTTP = Новый HTTPСоединение(«127.0.0.1″,2018,»111″,»111»,,,,Ложь);

……..

    ЗаголовокЗапросаHTTP.Вставить(«Content-Length», РазмерФайлаНаОтправку);

    ЗаголовокЗапросаHTTP.Вставить(«Content-Type», «application/json; charset=utf-8»);

    ЗапросHTTP = Новый HTTPЗапрос(«/StatusVagSever/hs/StatusVag/PostDepozit», ЗаголовокЗапросаHTTP);

   Kudryashka

13 — 26.01.19 — 16:50

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

   Юрий Лазаренко

14 — 26.01.19 — 16:59

(0) «настроила апач 2.4»

«проверила каталог C:Program Files (x86)»

Апач 64 бита, платформа 32 бита?

   Kudryashka

15 — 26.01.19 — 17:01

(14) платформа 32 и апач 32

   Kudryashka

16 — 26.01.19 — 17:02

с другой базой на этой же платформе апач работает. Я это повторяю потому что возможно это наведет на какие-то мысли, либо отбросит какие-то вопросы. Может проще будет найти ошибку, имея эту информацию…

   Юрий Лазаренко

17 — 26.01.19 — 17:05

(16) Надо проверить общие модули конфигурации на ошибки (Ctrl+F7). Чаще всего http-сервисы не стартуют именно по этой причине.

В журнале регистрации есть ошибки после попытки подключиться к сервису?

   МимохожийОднако

18 — 26.01.19 — 17:07

В порядки эксперимента залей новую базу взамен рабочей, если это возможно. Может быть, у тебя апач только с одной базой настроен.

   Kudryashka

19 — 26.01.19 — 17:13

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

   Kudryashka

20 — 26.01.19 — 17:15

(18) а как он может быть настроен с одной базой? Это возможно? каталоги в htdocs разные у них. Причем что я и ранее делала различные сервисы на других базах (а не только в этих двух), и для них тоже есть свои каталоги в htdocs. И сейчас рабочая база вообще закрыта.

   Kudryashka

21 — 26.01.19 — 21:45

нет идей?(

   palsergeich

22 — 26.01.19 — 21:47

Проверь еще права на папки у апача, на всякий

   palsergeich

23 — 26.01.19 — 21:47

И зайди глянь лог аппача

   palsergeich

24 — 26.01.19 — 21:51

И самое важное — Когда получаете ответ с кодом 500 сделайте ПолучитьТелоКакСтроку() — очень часто там диагностика по ошибке приходит

   Kudryashka

25 — 26.01.19 — 21:59

(23) логи смотрела я.. и эррор и акцесс. в момент посылания зароса в эррор ничего не пишет.

зато в акцессах он радостно сообщает как меня пнул

127.0.0.1 — — [26/Jan/2019:23:58:20 +0500] «POST /StatusVagSever/hs/StatusVagSever/PostDepozit HTTP/1.1» 500 78 «-» «1C+Enterprise/8.3»

   Kudryashka

26 — 26.01.19 — 22:01

(24) где сделать? в каком месте и в какой момент? можно поподробнее? ну диагностика скорее всего будет гласить ошибка инициализации библиотеки модулей. или он что-то еще мне скажет интересного?

   Kudryashka

27 — 26.01.19 — 22:04

(22) даже не знаю как сказать, как будто бы стоит только чтение, снимаю галку, сохраняю, открываю опять стоит. НО другая база работает, вот в чем дело…

   Kudryashka

28 — 26.01.19 — 22:05

может чего-то где-то зарегистрировать надо? какую-нить длл-ку… для разнообразия так сказать…

   palsergeich

29 — 26.01.19 — 22:05

(2) Сорри — тут вы уже все сделали. Отбой. (27) Там же на каждую публикацию отдельная папка

   palsergeich

30 — 26.01.19 — 22:06

(28) Не, апач 2.4 ничего не требует кроме переменной среды, а она у Вас стоит, иначе не работало бы вообще

   palsergeich

31 — 26.01.19 — 22:07

Я даже не знаю. (17) делали?

   etc

32 — 26.01.19 — 22:07

покажи строку конфига LoadModule.

   Kudryashka

33 — 26.01.19 — 22:08

(29) Там же на каждую публикацию отдельная папка — ааа. вы про это. ну стоит вроде как галка только чтение, но она также стоит и у той рабочей базы. я опять же снимаю, а она ставится. не знаю, чето мне кажется не в этом дело…  

Я уже задолбала со второй базой, которая работает, но что я могу поделать….

   Kudryashka

34 — 26.01.19 — 22:08

(31) да, делала

   etc

35 — 26.01.19 — 22:08

имею ввиду конфига апача.

ну и блок где указывается vrd файл

   Kudryashka

36 — 26.01.19 — 22:10

(35) я извиняюсь… а где все это искать? блин раньше не приходилось там где-то копаться глубоко….

   etc

37 — 26.01.19 — 22:11

или давай с другого конца. под каким пользователем запускается апач?

   Kudryashka

38 — 26.01.19 — 22:12

(37) подо мной. у меня админские права. это мой домашний комп, я уж себя не обделяю в правах)

   etc

39 — 26.01.19 — 22:12

Тоесть на закладке «Вход в систему» у сервиса указана ты, верно?

   Kudryashka

40 — 26.01.19 — 22:13

(39) я посмотрела в диспетчере задач под кем он работает…

   etc

41 — 26.01.19 — 22:17

В папке C:xamppapacheconf есть файлик httpd.conf

В нем должна быть строка LoadModule _1cvs_module <путь к dll> что в ней?

   Kudryashka

42 — 26.01.19 — 22:18

почему он говорит «Ошибка инициализации библиотеки модулей» ?

обычно такое на нехватку длл? или я ошибаюсь?

   Kudryashka

43 — 26.01.19 — 22:18

(41) а, это я уже смотрела, щас еще раз открою и скопирую.

   Kudryashka

44 — 26.01.19 — 22:19

(41) LoadModule _1cws_module «C:/Program Files (x86)/1cv8/8.3.10.2667/bin/wsap24.dll»

база открыта именно на этой платформе.

   Kudryashka

45 — 26.01.19 — 22:20

1С:Предприятие 8.3 (8.3.10.2667) — скопировала на всякий случай.

   Kudryashka

46 — 26.01.19 — 22:21

а вот блок публикации, как просили

# 1c publication

Alias «/StatusVagSever» «C:/xampp/htdocs/StatusVagSever/»

<Directory «C:/xampp/htdocs/StatusVagSever/»>

    AllowOverride All

    Options None

    Require all granted

    SetHandler 1c-application

    ManagedApplicationDescriptor «C:/xampp/htdocs/StatusVagSever/default.vrd»

</Directory>

   etc

47 — 26.01.19 — 22:22

Странно всё это. Судя по тому что ошибка на русском то выдает её именно платформа 1С. Тоесть 1C-ка не может какието свои библиотеки подтянуть.

   Kudryashka

48 — 26.01.19 — 22:23

я тут в начале топика в запросе указываю в ссылке корневой каталог StatusVag, а далее идет корневой каталог StatusVagSever (ну, вдруг кто-то заметит и подумает что ошибка тут), это я просто уже чисто поржать поменяла корневой каталог, это не ошибка….

   Kudryashka

49 — 26.01.19 — 22:23

(47) а что делать теперь?

   palsergeich

50 — 26.01.19 — 22:25

Самый тупой вопрос.

Сервер приложений ребутала?

Службу апача?

   Kudryashka

51 — 26.01.19 — 22:26

(50) после каждой манипуляции. там в (0) я писала это…

   Kudryashka

52 — 26.01.19 — 22:28

ну блин тут какая-то тупая ошибка на поверхности лежит, как обычно. а я ее не вижу….

   Kudryashka

53 — 26.01.19 — 22:30

посмотрите (7)

   etc

54 — 26.01.19 — 22:38

отладчик говоришь не работает?

   Kudryashka

55 — 26.01.19 — 22:39

(54) неа. не заходит туда… ну там код правильный в сервисе?

   Kudryashka

56 — 26.01.19 — 22:41

посмотрела щас настройки отладки, почему-то слетели, будто и не выставляла. снова выставила, один фиг не заходит.

   Kudryashka

57 — 26.01.19 — 22:42

может потому что я корневой каталог поменяла? могли они из-за этого сброситься?

   etc

58 — 26.01.19 — 22:42

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

   etc

59 — 26.01.19 — 22:42

иногда из за этого отладчик не работает

   etc

60 — 26.01.19 — 22:43

А ошибка может быть и в модуле сеанса. Он первым отрабатывает.

  

   Kudryashka

61 — 26.01.19 — 22:44

<service name=»StatusVagSever» (58) это?

   Kudryashka

62 — 26.01.19 — 22:46

(60) модуль сеанса отлаживается, там все нормально.

что еще можно посмотреть?

   etc

63 — 26.01.19 — 22:46

нет, тут смотри:

<Point ….. base=»/crm» ib=»Srvr=&quot;srv&quot;;Ref=&quot;crm&quot;;» enable=»false»>

   Kudryashka

64 — 26.01.19 — 22:48

хе!

   etc

65 — 26.01.19 — 22:49

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

   palsergeich

66 — 26.01.19 — 22:50

(65) Кстати да. Модуль сеанса — управление перешлов 1с.

Попробуй отладчиком идки пока не выкинет.

На одном из формуов видел — у модуля не было нужной директивы компиляции

   Kudryashka

67 — 26.01.19 — 22:54

(63) короче тут такое дело… база лежить в папке 1С, С там русская. а в врд-шке вместо буквы С указана какая-то кракозябла. я залезда в врд рабочей базы, там нормальная стоит 1С. ну я перенесла свою проблемную базу в другой каталог (да прям в корень) и сама база называется латиницей, перепубликовала, перезапустила, один фиг 500 блин…..

   Kudryashka

68 — 26.01.19 — 22:58

(65) модуль веб-сервиса я написала в (7), посмотрите, там все нормально? я убрала тот модуль что мне нужен с целью отладки вообще системы

   Kudryashka

69 — 26.01.19 — 23:00

а проверку общих модулей я сделала как сказали в (17)

   etc

70 — 26.01.19 — 23:01

Надо техжурнал включать. Может в нем чтото увидим.

   palsergeich

71 — 26.01.19 — 23:01

(68) Да все норм, стандартный ответ.

   etc

72 — 26.01.19 — 23:03

Знаешь как техжурнал включать?

   palsergeich

73 — 26.01.19 — 23:03

   Kudryashka

74 — 26.01.19 — 23:32

Знаете, сидела сравнивала щас две врд-шки, в «нерабочей» есть такой тег:     <standardOdata enable=»true»

            reuseSessions=»autouse»

            sessionMaxAge=»20″

            poolSize=»10″

            poolTimeout=»5″/>

а в «рабочей» его нет

   etc

75 — 26.01.19 — 23:35

(74) ну так убрать публикацию OData пять секунд. Проверь и посмотри.

   Kudryashka

76 — 26.01.19 — 23:39

(74) да нет, это не то….

а насчет техжурнала.. это мне время нужно чтобы разобраться, это уже завтра. а то у нас почти 2 ночи. лежит блин курс Гилева «оптимизация» и все никак руки не дойдут, как всегда. щас бы пригодилось….

и еще что примечательно.. в «рабочей» врд-шке путь на русском и даже название базы, и все работает блин!

а тут…

   etc

77 — 26.01.19 — 23:44

(76) С техжурналом просто, положить один файлик в папку conf на сервере приложений (я так понимаю он у тебя на компе локально), обратиться к веб-сервису и посмотреть что в нем записалось.

   Kudryashka

78 — 26.01.19 — 23:45

(77) а какой файлик?

   etc

79 — 26.01.19 — 23:46

5 сек.

   etc

80 — 26.01.19 — 23:46

выбери папку в которую логи будут складываться

   Kudryashka

81 — 26.01.19 — 23:47

ага

   etc

82 — 26.01.19 — 23:49

<?xml version=»1.0″ encoding=»UTF-8″?>

<config xmlns=»http://v8.1c.ru/v8/tech-log»>;

<dump create=»false» type=»3″/>

<log history=»72″ location=»C:logs»>

    <event>

        <ne property=»name» value=»EXCP»/>

    </event>

    <property name=»all»/>

</log>

</config>

назвать logcfg.xml

   etc

83 — 26.01.19 — 23:50

в теге location поменяй путь на свой

   etc

84 — 26.01.19 — 23:51

стоп, файлик с ошибкой

   Kudryashka

85 — 26.01.19 — 23:51

(82) и куда положить? конкретно.

   etc

86 — 26.01.19 — 23:53

В C:Program Files (x86)1cv88.3.10.2667binconf

правильный файл:

<?xml version=»1.0″ encoding=»UTF-8″?>

<config xmlns=»http://v8.1c.ru/v8/tech-log»>;;

<dump create=»false» type=»3″/>

<log history=»72″ location=»C:logs»>

    <event>

        <ne property=»name» value=»»/>

    </event>

    <property name=»all»/>

</log>

</config>

   Kudryashka

87 — 26.01.19 — 23:55

должно что-то в логи упасть? ничего не упало.. я что-то не так сделала? путь поменяла…

   etc

88 — 26.01.19 — 23:56

Это полный лог всего. Он подхватится примерно через 60 секунд без рестарта сервера

   Kudryashka

89 — 26.01.19 — 23:56

в 1с перезашла на всякий случай

   etc

90 — 26.01.19 — 23:56

ну и попробуй обратись к веб-сервису.

   etc

91 — 26.01.19 — 23:57

всмысле к http сервису

   Kudryashka

92 — 26.01.19 — 23:57

так я обратилась…. сразу же. сейчас снова попробую.

   etc

93 — 26.01.19 — 23:58

там папки должны появиться, по одной на каждый запущеный rphost

   Kudryashka

94 — 26.01.19 — 23:59

появилось но чето пустой файл там. щас перезайду опять и обращусь.

   Kudryashka

95 — 27.01.19 — 00:00

уууу… какой большой лог…

   etc

96 — 27.01.19 — 00:00

папка с каким названием создалась?

   Kudryashka

97 — 27.01.19 — 00:01

httpd_5728  ну там еще другие, но я так поняла мне эта нужна

   etc

98 — 27.01.19 — 00:03

rphost_xxxx еще смотри

ищи строчку с EXCP

   Kudryashka

99 — 27.01.19 — 00:04

все остальные папки с префиксом 1cv8_

   Kudryashka

100 — 27.01.19 — 00:06

тут в этом файле нашла строчки с эррорами

04:46.995026-0,CONN,1,process=httpd,ClientID=232,Protected=0,Txt=’Connected, client=(2)127.0.0.1:55377, server=(2)127.0.0.1:1560′

04:46.995029-0,CONN,1,process=httpd,Txt=QueryCredentialsAttributes: Error 80090304!

04:46.995035-0,CONN,1,process=httpd,ClientID=233,Protected=0,Txt=’Connected, client=(2)127.0.0.1:55378, server=(2)127.0.0.1:1561′

04:46.995036-0,CONN,1,process=httpd,Txt=QueryCredentialsAttributes: Error 80090304!

Ошибка инициализации библиотеки модулей

Автор ТихомировИгорь, 11 ноя 2015, 13:45

0 Пользователей и 1 гость просматривают эту тему.

Самостоятельно занимаюсь изучением 1:С Предприятие 8.3 по книге Радченко М.Г.
При изучении на девятом задании возникла проблема. Все делаю правильно, как описано в книге, но выдает следующую ошибку:

Ошибка инициализации библиотеки модулей
по причине:
{ОбщийМодуль.РаботаСоСправочниками.Модуль(3,7)}: Неопознанный оператор
Общие <<?>>модули   Отбор = Новый Структура(«Номенклатура», ЭлементНоменклатуры);

Подскажите пожалуйста в ем может быть проблема.


Приведите код из вашего общего модуля РаботаСоСправочниками с 1 по 5-ую строку


Цитата: vitasw от 11 ноя 2015, 13:49
Приведите код из вашего общего модуля РаботаСоСправочниками с 1 по 5-ую строку

&НаКлиенте
Процедура ПереченьНоменклатурыНоменклатураПриИзмененииНаСервере()
   // Получить текущую строку табличной части.
   СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;

      // Установить цену.
   СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(
                                         Объект.Дата, СтрокаТабличнойЧасти.Номенклатура);

                                   // Пересчитать сумму строки
   РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры


Это точно код из общего модуля? Покажите скрином.




Цитата: vitasw от 11 ноя 2015, 14:07
http://www.lessons1c.ru/articles/55-moduly82.html

Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
   // Создать вспомогательный объект «Отбор».
Общие модули   Отбор = Новый Структура(«Номенклатура», ЭлементНоменклатуры);

       // Получить актуальные значения ресурсов регистра.
    ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
    Возврат ЗначенияРесурсов.Цена;
КонецФункции

Прошу прошения, перепутал




Цитата: ТихомировИгорь от 11 ноя 2015, 14:25

Цитата: vitasw от 11 ноя 2015, 14:22

Цитата: ТихомировИгорь от 11 ноя 2015, 14:20Общие модули   Отбор = Новый Структура(«Номенклатура», ЭлементНоменклатуры);

В этой строке вас ничего не смущает? Так в книге НЕ написано.

Смущает, но что не пойму.

Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт
// Создать вспомогательный объект "Отбор".
Отбор = Новый Структура("Номенклатура", ЭлементНоменклатуры);
// Получить актуальные значения ресурсов регистра.
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор);
Возврат ЗначенияРесурсов.Цена;
КонецФункции

Вот как там написано. Где вы увидели в этом коде фразу «Общие модули»?


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Ошибка инициализации библиотеки модулей

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

  1. Есть программа УТ 10.3 (на 8.3). Дописал в неё дополнительный документик с управляемыми формами (чтоб через веб работал). Сделал всё, что он должен делать. Создал спец юзера, который запускается с управляемыми формами. На моём компе он работает. Выгрузил конфигурацию в файл, загрузил её на сервере в рабочую путём сравнеия и объединения. так же сделал юзера. Запускаю, а он пишет:
    Ошибка инициализации библиотеки модулей
    по причине:
    {ОбщийМодуль.ПолныеПрава.Модуль(101,44)}: Процедура или функция с указанным именем не определена (глЗначениеПеременной)
    Запрос.УстановитьПараметр(«Пользователь», <<?>>глЗначениеПеременной(«глТекущийПользователь»));

    По всем настройкам облазил, всё сравнил, каждую галочку (как мне кажется). Может кто знает что за….


  2. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Ам.. попробую угадать, глЗначениеПеременной() определена в модуле обычного приложения , а не управляемого?

    Ищите функцию глобальным поиском и смотрите почему к ней нет доступа.

  3. Да это понятно. Она в нескольких местах определена. Просто эта конфигурация на одном компе работает в копии базы данных. А на другом, на оригинале базы, куда я её (конфигурацию) накатил, не работает.


  4. Николаич87

    Offline

    Николаич87
    Опытный в 1С

    Регистрация:
    1 апр 2015
    Сообщения:
    122
    Симпатии:
    4
    Баллы:
    29

    можно так

    параметрысеанса.текущийпользователь

    только вот посмотрите кто там именно нужен — ссылка на физ. лицо или на пользователя.


  5. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    Опять же как определена? В каких модулях? Экспортная не экспортная она? Смотрите уже в накатанной, забудьте про копию.

  6. Так мне не нужен совершенно пользователь. И вроде нигде нет его запроса. Более того, даже отладка не начинается. Встаёт на этопе синтаксической проверки. Типа функция не определена. Потому как та, что определена в глобальном, она не для тонкого клиента. Но в копии базы с той же самой конфигурацией эта проверка проходит нормально, а тут застревает. Где-то в настройках нужно плюнуть :) чтоб эта функция, в которой это функция вызывается тоже не проверялась.


  7. TerANik

    Offline

    TerANik
    Профессионал в 1С

    Регистрация:
    19 ноя 2014
    Сообщения:
    1.281
    Симпатии:
    98
    Баллы:
    54

    ну может где то стоит препроцессор клиент сервер?

  8. Не могла же конфа при сравнении говорить, что они одинаковые, а на самом деле где-то есть различия. Я просто и дальше планирую изменения вносить, и меня не устраивает, если в разных копиях она будет по разному себя вести.

    — Объединение сообщений, 29 май 2015

    Хм… И модуль то этот, в котором ошибка, на сервере определён. А вызываемая для сервера определена (#Если Сервер И НЕ Клиент И НЕ ВнешнееСоединение Тогда).

    Последнее редактирование: 29 май 2015
  9. На моём компе прога не попадает в тот модуль и процедуру, где ошибка (называется «ПолныеПрава» УстановитьПараметрГраницыЗапретаИзмененияДанных). А на сервере почему-то попадает. (конфигурации одинаковые)

    — Объединение сообщений, 29 май 2015

    Вот что-то проясняется
    На моём компьютере в модуле сеанса вызывается обработчик УстановкаПараметровСеанса(ИменаПараметровСеанса), в котором
    ИменаПараметровСеанса=Неопрелено
    И меня это устраивает. А вот на сервере видимо передаётся какое-то значение. (пока не могу от тестить, там люди работают).
    Может кто-то знает что ткнуть нужно, чтоб на сервере тоже передавалось ИменаПараметровСеанса=Неопрелено

    Последнее редактирование: 29 май 2015
  10. Блин нет. На сервере тоже неопределено

    — Объединение сообщений, 29 май 2015

    Что-то с параметрами сеанса. На моём компе в модкль «ПолныеПрава» действительно открывается только на сервере и поэтому проверка синтаксиса проходит нормально. А на сервере почему-то применяется этот модуль на тонком клиенте, и тогда проверка синтаксиса не проходит.

    — Объединение сообщений, 29 май 2015

    АААААААА……Я нашёл!!!!! :)

    В настройке запуска базы у меня на моём компе Основной режим запуска стоит Выбирать автоматически, а на сервере Толстый клиент

    Последнее редактирование: 29 май 2015


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Всем привет. Пытаюсь сделать вэб-сервис на базе 1С, который возвращал бы заказ пользователя по идентификатору заказа. Это нужно для интеграции с сайтом, написанным на java.На свой запрос получаю вот такой ответ: <soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»> Где можно посмотреть, какая именно библиотека модулей не может быть инициализирована? Есть в 1С какие-нибудь журналы/логи, куда может попасть такая ошибка? Гугление почему-то не дало никаких результатов.

Да, wsdl с сервера отдаётся. Кстати, тело модуля, который должен обрабатывать этот запрос, выглядит так: Если переписать этот модуль так: то web-сервис сообщит, что обязательный выходной параметр не задан. (Или что-то вроде того…)

# xdtoЗаказ = Заказ Это что такое?

Так ты возвращаешь тип. СериализаторXDTO.ЗаписатьXDTO(Заказ.ПолучитьОбъект);

# xdtoЗаказ = Заказ — это комментарий. Не исполняемый код. Serginio1, твой вариант не работает, выдаёт такую же ошибку. Однако, если написать так: то результат будет такой: <soap:Envelope xmlns:soap=»http://www.w3.org/2003/05/soap-envelope»>            <soap:Text xml:lang=»ru_RU»>Неизвестная ошибка. {WebСервис.ДанныеЗаказа.Модуль}: Ошибка при вызове метода контекста (ПолучитьОбъект) по причине: {WebСервис.ДанныеЗаказа.Модуль}: Ошибка при вызове метода контекста (ПолучитьОбъект) по причине: Элемент не выбран!</soap:Text> Похоже, что 1С не может найти объект с кодом, который я передаю. Попробовал создать примитивный пример: В ответ получил то с чего начал: <soap:Envelope xmlns:soap=»http://www.w3.org/2003/05/soap-envelope»>

Попробуй получи просто код документа в виде строки

во-первых, сомневаюсь, что во внешнем приложении нужен заказ целиком. правильнее описать в пакете XDTO нужный XDTO-объект, и формировать и возвращать его. во-вторых, необходимо предусмотреть что-то, что будет возвращать твой метод при отсутствии заказа.

XDTO-объект навряд ли поймет Java

На самом деле СериализаторXDTO.ЗаписатьXDTO(Заказ.ПолучитьОбъект); Возвращает XDTO объект. Только в описании возврата функцией должен быть тип DocumentObject.ЗаказПокупателя ( Правда нужно добовить в пакет сервиса

XDTO — это лишь одинесовская обертка XML Schema. Java поймет

Serginio1, ты абсолютно прав. После добавления в список пакетов модуля код заработал: Возвращается, конечно, пустой заказ покупателя. Но это уже хоть что-то. Однако, добавив одну строчку: получаем старую ошибку:

Кстати новую версию поставил? Заказ = Документы.ЗаказПокупателя.НайтиПоНомеру(Код)    Возврат СериализаторXDTO.ЗаписатьXDTOЗаказ.ПолучитьОбъект); при правильном коде. Уникальность номера непериодическая?

Serginio1, не понял вопроса. Новую версию чего нужно было поставить? Код, который передаётся в функцию Получить однозначно уникальный — другого заказа покупателя с таким идентификатором нет. Есть ли где-нибудь у 1С возможность посмотреть, что это за «Внутренняя ошибка. Ошибка инициализации библиотеки модулей»? Какая-нибудь аналогия stacktrace?

Вообще, я понял, что на самом деле использовал вместо кода «Номер». То есть, «Номер» однозначно уникальный в систем — на сколько я понимаю, это первичный ключ. Ещё интересная особенность — даже если поставить «#» перед вызовом  Документы.ЗаказПокупателя.НайтиПоНомеру(Номер) — всё-равно возникает ошибка «Внутренняя ошибка…».

Да не находит у тебя заказ по номеру

Новая версия 8.3.3. НайтиПоНомеру использует 2 параметра номер и дату документа. Бывают без периодичности в течении года итд. Уникальный это УникальныйИдентификатор

Да и поставт проверку в параметры проверка на все клиенты и серверы

И прежде чем запускать сделай проверку из 1С. Лучше все методы выносить в отдельный модуль, что бы тестировать из толстого клиента

Serginio1, ёптить, а где можно прочитать вообще обо всех функциях/методах объектов 1С? Есть какая-то документация по API типа MSDN? Проблема «Внутренняя ошибка. Ошибка инициализации библиотеки модулей» была связана с тем, что я не ставил точку с запятой в конце первой строки. Я не ожидал, что компилятор не сругнётся… Спасибо большое тебе за помощь. Уверен, что без твоих советов, я бы пропал.

Называется справка. Плюс Желтые книги форумы и накопленный опыт

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Содержание:

1.       Диагностика ошибки инициализации модуля

2.       Устранение ошибки инициализации модуля

В данной статье будет описано, как устранять ошибку в системе «1С:Предприятие», когда при обновлении типовой конфигурации появляется объявление вида «Ошибка инициализации модуля:EF_00_00ХХХХХ». Будет проведён анализ данной неполадки и приведены способы по её устранению.   


1.    Диагностика ошибки инициализации модуля

Данная ошибка довольно часто появляется у юзеров системы 1С, когда после обновления выдает ошибку и всплывает объявление об ошибке по инициализации модуля. Окно с данной неполадкой в системе 1С представлено на скриншоте далее:

Окно ошибки инициализации модуля

Появление окна с данной неполадкой означает то, что система 1С не имеет возможности автоматического удаления патча с правками. Данный патч с правками недавно был внесён в обновление системы и позволяет быстро определять возможные неполадки и править их.

Обычно, специфика патчей с правками подразумевает то, что эта система автономная и будет удалять всё лишнее самостоятельно, как только версия 1С будет обновлена. Однако, в реальности, случается иначе: автоматическое удаление может не срабатывать, обновление прерывается и возникает ошибка по инициализации модуля.  

2.    Устранение ошибки инициализации модуля

Рассмотрим алгоритм действий пользователя для устранения ошибки инициализации модуля. Очевидно, что необходимо провести удаления патча самостоятельно.

Для удаления патча вручную существует два метода:

1.     Через режим «1С:Предприятие» в системе. Откроем вкладку в меню «Администрирование», после чего кликнем на «Обслуживание», перейдём на раздел «Обновление программы» и избираем «Установленные исправления(патчи)», как демонстрируется на скриншоте с примером ниже:

Установленные исправления в режиме 1С Предприятия в системе

Перед пользователем появится список патчей с правками, как показано далее:

Список патчей с правками и их удаление

Избираем тот патч, который подлежит удалению и кликаем «Удалить исправление».

Также можно запустить перечень со всеми правками, которые были установлены, при помощи кнопки «Все функции», переходим на «Стандартные», после чего избираем «Управление расширениями конфигурации», как показано на скриншоте далее:

Управление расширениями конфигурации

2.     Удалить патчи через «1С 8 Конфигуратор». Чтобы провести данную процедуру, понадобится избрать пункт «Конфигурация» и перейти по ссылке «Расширения конфигурации». Появится новая вкладка с перечнем все расширений, которые были установлены, выбираем нужное и кликаем на «Удалить», как демонстрируется на скриншоте с примером ниже:

Удаление расширения в 1С 8 Конфигуратор

Оба способа являются рабочими и возобновляют корректную работу системы 1С, избавляя ошибки после установки обновления.

В данной статье была продиагностирована ошибка после обновления1С по инициализации модуля, а также было приведено два метода по устранению данной неполадки.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса

Итак. Код метода каждой ws-операции находится в модуле веб-сервиса, к которому принадлежит эта ws-операция.

Код веб-сервиса 1с

Модуль веб-сервиса исполняется только на Сервере.
Замечание 1: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.

Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:

Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
   Запрос = Новый Запрос;
   Запрос.Текст =
   «ВЫБРАТЬ ПЕРВЫЕ 1
   | Пользователи.Ссылка КАК Ссылка
   |ИЗ
   | Справочник.Пользователи КАК Пользователи
   |ГДЕ
   | Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
   ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
   Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);  
   РезультатПользователи = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;       
   КонецЦикла;
   ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
   СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————

Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».

Код веб-сервиса 1с

Если мы вызовем ws-операцию Example1 и передадим в качестве параметров param1=1, param2=2, то в результат получим 2.
Но если мы поменяем порядок операндов в конфигураторе:

Код веб-сервиса 1с

То тот же самый вызов вернет 1.
Замечание 3: после смены порядка параметров ws-операции, не забудьте поменять их порядок в заголовке функции, реализующей эту операцию.
Замечание 4: в качестве операндов ws-операции можете использовать отличные от заданных в конфигураторе имена.
——————

Если у части параметров ws-операции установлена галочка «Возможно пустое значение», то данный параметр может быть не указан при вызове, но тут есть несколько нюансов. При использовании клиента, например SoapClient вы не можете при передачи параметра просто взять и не указать параметр совсем. Например:

$a=$client->Plus2();


Эта строка вызовет ошибку «Неизвестная ошибка. Недостаточно параметров операции». То есть сам параметр надо передать, указав значение null:

$zz=array(«Param»=>null);
$a=$client->Plus2($zz);

Но тогда возникает вопрос, а как этот пустой параметр будет передан в 1С. Логично что программисту 1С захочется сделать в методе веб-операции следующее:

Функция Plus2(Параметр=0)
Возврат Параметр+2;
КонецФункции

То есть указать значение операнда в случае его отсутствия.
Теперь надо вызвать наш веб-операцию с пустым. Приведу пример xml сообщения soap с передачей значение null.

<soapenv:Envelope xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:uri=»www.URI.com»>
   <soapenv:Header/>
   <soapenv:Body>
      <uri:Plus2>
         <uri:Param xsi:nil=»true»></uri:Param>
      </uri:Plus2>
   </soapenv:Body>
</soapenv:Envelope>


xsi:nil=»true»  — указывает, что данный параметр не имеет значение. Для того что бы можно было указать null дополнительно надо связать префикс xsi с пространством имен: xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance».


Но если он сделает вызов такой ws-операции с пустым значением то получит сообщение об ошибке:

<soap:Envelope xmlns:soap=»http://schemas.xmlsoap.org/soap/envelope/»>
   <soap:Header/>
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
         <faultstring>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</faultstring>
         <detail>Неизвестная ошибка. {WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено
по причине:
{WebСервис.WebService.Модуль(2)}: Преобразование значения к типу Число не может быть выполнено</detail>
      </soap:Fault>
   </soap:Body>
</soap:Envelope>



Все потому, что переданное значение null преобразуется в значение 1с — «Неопределено». В этом можно убедиться если переписать процедуру так.



Функция Plus2(Параметр=0)
Если Параметр = Неопределено Тогда
Результат = 1;
Иначе
Результат = 2;
КонецЕсли;
Возврат Результат;
КонецФункции


Результатом будет — 1. 
Замечание 5: нет смысла писать значение операнда ws-операции по умолчанию(Функция Plus2(Параметр=0)). Для операндов, которые могут принимать пустое значение надо добавить проверку на равенство «Неопределено».
——————

Замечание 6: При передачи в веб-операцию параметра строкового типа, строка из одного или нескольких пробелов обрезается до пустой строки.
——————

Замечание 7: При передаче в веб-операцию параметра типа дата (datetime) с использованием формата с указанием на часовой пояс, время приводится к часовому поясу в котором находится платформа 1с. Например если операция имеет параметр «Дата» типа datetime, ПК на котором располагается 1с находится в часовом поясе +6, то при передаче в этот параметр значения ‘2012-09-14T00:00:00.000+02:00’ в коде веб-операции данный параметр будет иметь значение ‘14.09.2012 4:00:00’. Следовательно ‘+02:00’ указывает на то, в каком поясе находится отправитель. Это позволит вам не задумываться о переводе времени при работе в нескольких часовых поясах.
——————

Веб-сервисы как правило создают для обмена информацией с информационными системами разного происхождения. Перед программистом 1С возникает вопрос какие структуры XDTO стоит использовать. Например нужно на сайт из 1С передать информацию по какому либо товару. Есть два подхода: передача в виде объектов и передача в виде таблиц. При передаче в виде объектов вы создаете иерархическую структуру XDTO например:

На рисунке видно что имеется объект «Номенклатура», этот объект имеет поле «ЕдиницаИзмерения», которое имеет тип объекта «Единица измерения» и при выгрузке остатков через объект «Остатки номенклатуры» в свойстве «Массив» будет происходить передача всего объекта номенклатура и его остатка. То есть при каждой передаче передается довольное объемный объект Номенклатура, хотя она меняется довольно редко и при большом количестве номенклатуры (порядка 2000 при данной структуре) выгрузка бы просто не завершилась, т.к. хостинг ограничивает и объем передаваемых данных и время выполнения скрипта по передаче. Для ускорения передачи проще передавать массив [УИДНоменклатуры — Остаток]. В таком случае передается только уникальный идентификатор номенклатуры, по которому мы всегда сможем получить его свойства.
И у того и у другого способа есть свои достоинства и недостатки.
Достоинства объектного способа:

  • вы всегда получаете полный объем информации и нет необходимости в синхронизации объектов по идентификаторам;
  • удобочитаемость — вы всегда видите наименование объекта и его свойства. а не просто идентификатор.

Недостатки объектного способа:

  • при изменении структуры приходится переписывать код всех процедур в которых идет работа с этим объектом;
  • большой объем передаваемых данных;
  • для формирования объекта необходимо получать все его свойства из запроса или лругим способом.

Достоинства табличного подхода:

  • небольшой объем передаваемых данных;
  • при изменении свойств объекта достаточно изменить только одну процедуру п синхронизации этого объекта;
  • для передачи ссылки на объект нет необходимости получать все его свойства в каждой ws-операции.

Недостатки табличного подхода:

  • трудно читать soap-сообщения;
  • при выгрузке данных ссылок на объекты, надо продумать еще и операции по получению свойств этих объектов и их своевременную синхронизацию(например при смене наименования товара его надо тут же выгрузить на сайт);

Замечание 8: при проектировании структуры выгрузки веб-сервиса не пренебрегайте вопросами объема передаваемых данных и времени их передачи, т.к. передача через веб-сервисы действительно проходит долго. Приведу пример своего опыта. Я хотел узнать максимальный объем передаваемых данных и создал веб сервис который передавал массив объектов XDTO. Один объект занимал примерно 740 байт (это довольно мало, т.к. не забывайте что в этот объем входят и длинна тегов soap сообщения). При канале в 5 Мбит/с смог передать 150 тысяч таких объектов и все это занимало чуть больше 100 Мб. И эта передача выполнялась 3,5 минуты. После 100 Мбайт soap-клиент (souapUI) просто завис. При использовании платного хостинга данная выгрузка бы прервалась на 2 минуте (обычно такое ограничения ставят хостеры на время выполнения скрипта).
——————

Замечание 9: для уменьшения передаваемых данных используйте короткие названия свойств объектов XDTO, т.к. они используются в названиях тегов (каждый тег повторяется два раза при открытии и закрытии тега). Используется кодировка UTF8, а это 2 байта на символ.
——————

Замечание 10: Указание  типа dateTime без символа «T» например: «2012-09-14 15:00:00» не вызывает ошибки, но отбрасывает часы,минуты и секунды. То есть система примет эту дату как «2012-09-14».
——————

Замечание 11: в качестве URI пространства имен можно указать не только ссылку, но и строки не являющие ссылками, даже в кириллице и даже цифры, но это совсем не означает что не происходит проверок этого поля. В это поле, например, нельзя указать «http://tcp://». Но ошибку выдаст уже веб-сервер

Понравилась статья? Поделить с друзьями:
  • Ошибка инициализации библиотек vba excel
  • Ошибка звуковой файл меньше 2 кб
  • Ошибка импорта vcard xiaomi
  • Ошибка инициализации библиотек vba 1004
  • Ошибка звуковой карты виндовс 10