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. Параллельно запустила ту базу, которую настраивала ранее, такую же, она работает. на этом же самом компе, на этой же платформе и с этим же апачем.
Помогите пожалуйста, у меня уже кончились идеи, я не знаю что уже проверить, пните меня в нужном направлении, скажите что еще можно проверить, третий день бьюсь с этим…
После каждой манипуляции перепубликовывала базу и перезапускала апач.
Задавайте вопросы, может не все описала, я на все отвечу.
1 — 26.01.19 — 15:29
Если Postmanом послать запрос что возвращает?
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
Ошибка инициализации библиотеки модулей
3 — 26.01.19 — 15:38
Если я открываю ссылку, то у меня в браузере открывается пустая 1с, запрашивает логин пароль, то есть в браузере открывается пустая управляемая форма, что нормально, т.к. формы обычные. Это лишь говорит о том, что публикация прошла нормально и работает.
4 — 26.01.19 — 15:48
Антивирусы, файрволы? На одной машине клиент и сервер тестирование проводится?
5 — 26.01.19 — 15:51
(4) антивирус уже поставили другой. второй вопрос не очень поняла. все происходит на одной машине. причем другая база работает, это больше всего убивает, если она работает, значит ни причем ни антивирусы, ни платформа, ни апач… дело в самой второй базе, но что именно, я не могу понять.
6 — 26.01.19 — 15:56
Причем она не работает ни у меня ни у клиента. Ладно у клиента, там все с нуля поднималось, апач, веб-сервисы у платформы, обращение к другой машине и все такое… там не работало, я забрала к себе разбираться. И у меня не работает! Но у меня-то все давно настроено, поднято уже, машина одна, локальная, только базу загрузила еще одну и она не работает.
7 — 26.01.19 — 15:58
вот этот код в сервисе только правильный? его точно достаточно? что-то я уже начала сомневаться. Уже не знаю что и думать.
Посмотрите
Ответ = Новый HTTPСервисОтвет(200);
Возврат Ответ;
По идее должно быть достаточно…
8 — 26.01.19 — 16:04
а как сюда скриншоты отправить? как-то ни разу не приходилось именно сюда отправлять картинки. я хотела показать настройки.
9 — 26.01.19 — 16:22
(8) ссылкой на любой хостнг картинок
10 — 26.01.19 — 16:36
11 — 26.01.19 — 16:40
Ну вроде всю информацию предоставила. Что может быть не так? Чего ему не нравится? Помогите пожалуйста…..
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);
13 — 26.01.19 — 16:50
уже пользователя создала такого чтобы исключить неправильное написание. права у пользователя есть, это точно. все права стоят.
14 — 26.01.19 — 16:59
(0) «настроила апач 2.4»
«проверила каталог C:Program Files (x86)»
Апач 64 бита, платформа 32 бита?
15 — 26.01.19 — 17:01
(14) платформа 32 и апач 32
16 — 26.01.19 — 17:02
с другой базой на этой же платформе апач работает. Я это повторяю потому что возможно это наведет на какие-то мысли, либо отбросит какие-то вопросы. Может проще будет найти ошибку, имея эту информацию…
17 — 26.01.19 — 17:05
(16) Надо проверить общие модули конфигурации на ошибки (Ctrl+F7). Чаще всего http-сервисы не стартуют именно по этой причине.
В журнале регистрации есть ошибки после попытки подключиться к сервису?
18 — 26.01.19 — 17:07
В порядки эксперимента залей новую базу взамен рабочей, если это возможно. Может быть, у тебя апач только с одной базой настроен.
19 — 26.01.19 — 17:13
(17) в журнале регистрации ошибки не пишет. пишет две строки: аутентификация и начало. в общих модулях были ошибки, просто эти модули не использовались, я это все убрала, но один фиг 500 возвращает.
20 — 26.01.19 — 17:15
(18) а как он может быть настроен с одной базой? Это возможно? каталоги в htdocs разные у них. Причем что я и ранее делала различные сервисы на других базах (а не только в этих двух), и для них тоже есть свои каталоги в htdocs. И сейчас рабочая база вообще закрыта.
21 — 26.01.19 — 21:45
нет идей?(
22 — 26.01.19 — 21:47
Проверь еще права на папки у апача, на всякий
23 — 26.01.19 — 21:47
И зайди глянь лог аппача
24 — 26.01.19 — 21:51
И самое важное — Когда получаете ответ с кодом 500 сделайте ПолучитьТелоКакСтроку() — очень часто там диагностика по ошибке приходит
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»
26 — 26.01.19 — 22:01
(24) где сделать? в каком месте и в какой момент? можно поподробнее? ну диагностика скорее всего будет гласить ошибка инициализации библиотеки модулей. или он что-то еще мне скажет интересного?
27 — 26.01.19 — 22:04
(22) даже не знаю как сказать, как будто бы стоит только чтение, снимаю галку, сохраняю, открываю опять стоит. НО другая база работает, вот в чем дело…
28 — 26.01.19 — 22:05
может чего-то где-то зарегистрировать надо? какую-нить длл-ку… для разнообразия так сказать…
29 — 26.01.19 — 22:05
(2) Сорри — тут вы уже все сделали. Отбой. (27) Там же на каждую публикацию отдельная папка
30 — 26.01.19 — 22:06
(28) Не, апач 2.4 ничего не требует кроме переменной среды, а она у Вас стоит, иначе не работало бы вообще
31 — 26.01.19 — 22:07
Я даже не знаю. (17) делали?
32 — 26.01.19 — 22:07
покажи строку конфига LoadModule.
33 — 26.01.19 — 22:08
(29) Там же на каждую публикацию отдельная папка — ааа. вы про это. ну стоит вроде как галка только чтение, но она также стоит и у той рабочей базы. я опять же снимаю, а она ставится. не знаю, чето мне кажется не в этом дело…
Я уже задолбала со второй базой, которая работает, но что я могу поделать….
34 — 26.01.19 — 22:08
(31) да, делала
35 — 26.01.19 — 22:08
имею ввиду конфига апача.
ну и блок где указывается vrd файл
36 — 26.01.19 — 22:10
(35) я извиняюсь… а где все это искать? блин раньше не приходилось там где-то копаться глубоко….
37 — 26.01.19 — 22:11
или давай с другого конца. под каким пользователем запускается апач?
38 — 26.01.19 — 22:12
(37) подо мной. у меня админские права. это мой домашний комп, я уж себя не обделяю в правах)
39 — 26.01.19 — 22:12
Тоесть на закладке «Вход в систему» у сервиса указана ты, верно?
40 — 26.01.19 — 22:13
(39) я посмотрела в диспетчере задач под кем он работает…
41 — 26.01.19 — 22:17
В папке C:xamppapacheconf есть файлик httpd.conf
В нем должна быть строка LoadModule _1cvs_module <путь к dll> что в ней?
42 — 26.01.19 — 22:18
почему он говорит «Ошибка инициализации библиотеки модулей» ?
обычно такое на нехватку длл? или я ошибаюсь?
43 — 26.01.19 — 22:18
(41) а, это я уже смотрела, щас еще раз открою и скопирую.
44 — 26.01.19 — 22:19
(41) LoadModule _1cws_module «C:/Program Files (x86)/1cv8/8.3.10.2667/bin/wsap24.dll»
база открыта именно на этой платформе.
45 — 26.01.19 — 22:20
1С:Предприятие 8.3 (8.3.10.2667) — скопировала на всякий случай.
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>
47 — 26.01.19 — 22:22
Странно всё это. Судя по тому что ошибка на русском то выдает её именно платформа 1С. Тоесть 1C-ка не может какието свои библиотеки подтянуть.
48 — 26.01.19 — 22:23
я тут в начале топика в запросе указываю в ссылке корневой каталог StatusVag, а далее идет корневой каталог StatusVagSever (ну, вдруг кто-то заметит и подумает что ошибка тут), это я просто уже чисто поржать поменяла корневой каталог, это не ошибка….
49 — 26.01.19 — 22:23
(47) а что делать теперь?
50 — 26.01.19 — 22:25
Самый тупой вопрос.
Сервер приложений ребутала?
Службу апача?
51 — 26.01.19 — 22:26
(50) после каждой манипуляции. там в (0) я писала это…
52 — 26.01.19 — 22:28
ну блин тут какая-то тупая ошибка на поверхности лежит, как обычно. а я ее не вижу….
53 — 26.01.19 — 22:30
посмотрите (7)
54 — 26.01.19 — 22:38
отладчик говоришь не работает?
55 — 26.01.19 — 22:39
(54) неа. не заходит туда… ну там код правильный в сервисе?
56 — 26.01.19 — 22:41
посмотрела щас настройки отладки, почему-то слетели, будто и не выставляла. снова выставила, один фиг не заходит.
57 — 26.01.19 — 22:42
может потому что я корневой каталог поменяла? могли они из-за этого сброситься?
58 — 26.01.19 — 22:42
Имя базы в vrd файлике должно с точностью до регистра совпадать с именем базы при запуске конфигуратора.
59 — 26.01.19 — 22:42
иногда из за этого отладчик не работает
60 — 26.01.19 — 22:43
А ошибка может быть и в модуле сеанса. Он первым отрабатывает.
61 — 26.01.19 — 22:44
<service name=»StatusVagSever» (58) это?
62 — 26.01.19 — 22:46
(60) модуль сеанса отлаживается, там все нормально.
что еще можно посмотреть?
63 — 26.01.19 — 22:46
нет, тут смотри:
<Point ….. base=»/crm» ib=»Srvr="srv";Ref="crm";» enable=»false»>
64 — 26.01.19 — 22:48
хе!
65 — 26.01.19 — 22:49
Если модуль сеанса отлаживается значит вероятно ошибка при компиляции одного из общих модулей (или самого модуля веб-сервиса). Поэтому отладчик в функции ничего не ловит а модуль сеанса проскакивает.
66 — 26.01.19 — 22:50
(65) Кстати да. Модуль сеанса — управление перешлов 1с.
Попробуй отладчиком идки пока не выкинет.
На одном из формуов видел — у модуля не было нужной директивы компиляции
67 — 26.01.19 — 22:54
(63) короче тут такое дело… база лежить в папке 1С, С там русская. а в врд-шке вместо буквы С указана какая-то кракозябла. я залезда в врд рабочей базы, там нормальная стоит 1С. ну я перенесла свою проблемную базу в другой каталог (да прям в корень) и сама база называется латиницей, перепубликовала, перезапустила, один фиг 500 блин…..
68 — 26.01.19 — 22:58
(65) модуль веб-сервиса я написала в (7), посмотрите, там все нормально? я убрала тот модуль что мне нужен с целью отладки вообще системы
69 — 26.01.19 — 23:00
а проверку общих модулей я сделала как сказали в (17)
70 — 26.01.19 — 23:01
Надо техжурнал включать. Может в нем чтото увидим.
71 — 26.01.19 — 23:01
(68) Да все норм, стандартный ответ.
72 — 26.01.19 — 23:03
Знаешь как техжурнал включать?
73 — 26.01.19 — 23:03
74 — 26.01.19 — 23:32
Знаете, сидела сравнивала щас две врд-шки, в «нерабочей» есть такой тег: <standardOdata enable=»true»
reuseSessions=»autouse»
sessionMaxAge=»20″
poolSize=»10″
poolTimeout=»5″/>
а в «рабочей» его нет
75 — 26.01.19 — 23:35
(74) ну так убрать публикацию OData пять секунд. Проверь и посмотри.
76 — 26.01.19 — 23:39
(74) да нет, это не то….
а насчет техжурнала.. это мне время нужно чтобы разобраться, это уже завтра. а то у нас почти 2 ночи. лежит блин курс Гилева «оптимизация» и все никак руки не дойдут, как всегда. щас бы пригодилось….
и еще что примечательно.. в «рабочей» врд-шке путь на русском и даже название базы, и все работает блин!
а тут…
77 — 26.01.19 — 23:44
(76) С техжурналом просто, положить один файлик в папку conf на сервере приложений (я так понимаю он у тебя на компе локально), обратиться к веб-сервису и посмотреть что в нем записалось.
78 — 26.01.19 — 23:45
(77) а какой файлик?
79 — 26.01.19 — 23:46
5 сек.
80 — 26.01.19 — 23:46
выбери папку в которую логи будут складываться
81 — 26.01.19 — 23:47
ага
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
83 — 26.01.19 — 23:50
в теге location поменяй путь на свой
84 — 26.01.19 — 23:51
стоп, файлик с ошибкой
85 — 26.01.19 — 23:51
(82) и куда положить? конкретно.
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>
87 — 26.01.19 — 23:55
должно что-то в логи упасть? ничего не упало.. я что-то не так сделала? путь поменяла…
88 — 26.01.19 — 23:56
Это полный лог всего. Он подхватится примерно через 60 секунд без рестарта сервера
89 — 26.01.19 — 23:56
в 1с перезашла на всякий случай
90 — 26.01.19 — 23:56
ну и попробуй обратись к веб-сервису.
91 — 26.01.19 — 23:57
всмысле к http сервису
92 — 26.01.19 — 23:57
так я обратилась…. сразу же. сейчас снова попробую.
93 — 26.01.19 — 23:58
там папки должны появиться, по одной на каждый запущеный rphost
94 — 26.01.19 — 23:59
появилось но чето пустой файл там. щас перезайду опять и обращусь.
95 — 27.01.19 — 00:00
уууу… какой большой лог…
96 — 27.01.19 — 00:00
папка с каким названием создалась?
97 — 27.01.19 — 00:01
httpd_5728 ну там еще другие, но я так поняла мне эта нужна
98 — 27.01.19 — 00:03
rphost_xxxx еще смотри
ищи строчку с EXCP
99 — 27.01.19 — 00:04
все остальные папки с префиксом 1cv8_
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)
Поиск
-
Есть программа УТ 10.3 (на 8.3). Дописал в неё дополнительный документик с управляемыми формами (чтоб через веб работал). Сделал всё, что он должен делать. Создал спец юзера, который запускается с управляемыми формами. На моём компе он работает. Выгрузил конфигурацию в файл, загрузил её на сервере в рабочую путём сравнеия и объединения. так же сделал юзера. Запускаю, а он пишет:
Ошибка инициализации библиотеки модулей
по причине:
{ОбщийМодуль.ПолныеПрава.Модуль(101,44)}: Процедура или функция с указанным именем не определена (глЗначениеПеременной)
Запрос.УстановитьПараметр(«Пользователь», <<?>>глЗначениеПеременной(«глТекущийПользователь»));
По всем настройкам облазил, всё сравнил, каждую галочку (как мне кажется). Может кто знает что за…. -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.281
- Симпатии:
- 98
- Баллы:
- 54
Ам.. попробую угадать, глЗначениеПеременной() определена в модуле обычного приложения , а не управляемого?
Ищите функцию глобальным поиском и смотрите почему к ней нет доступа.
-
Да это понятно. Она в нескольких местах определена. Просто эта конфигурация на одном компе работает в копии базы данных. А на другом, на оригинале базы, куда я её (конфигурацию) накатил, не работает.
-
Offline
Николаич87
Опытный в 1С- Регистрация:
- 1 апр 2015
- Сообщения:
- 122
- Симпатии:
- 4
- Баллы:
- 29
можно так
параметрысеанса.текущийпользователь
только вот посмотрите кто там именно нужен — ссылка на физ. лицо или на пользователя.
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.281
- Симпатии:
- 98
- Баллы:
- 54
Опять же как определена? В каких модулях? Экспортная не экспортная она? Смотрите уже в накатанной, забудьте про копию.
-
Так мне не нужен совершенно пользователь. И вроде нигде нет его запроса. Более того, даже отладка не начинается. Встаёт на этопе синтаксической проверки. Типа функция не определена. Потому как та, что определена в глобальном, она не для тонкого клиента. Но в копии базы с той же самой конфигурацией эта проверка проходит нормально, а тут застревает. Где-то в настройках нужно плюнуть
чтоб эта функция, в которой это функция вызывается тоже не проверялась.
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.281
- Симпатии:
- 98
- Баллы:
- 54
ну может где то стоит препроцессор клиент сервер?
-
Не могла же конфа при сравнении говорить, что они одинаковые, а на самом деле где-то есть различия. Я просто и дальше планирую изменения вносить, и меня не устраивает, если в разных копиях она будет по разному себя вести.
— Объединение сообщений, 29 май 2015 —
Хм… И модуль то этот, в котором ошибка, на сервере определён. А вызываемая для сервера определена (#Если Сервер И НЕ Клиент И НЕ ВнешнееСоединение Тогда).
Последнее редактирование: 29 май 2015 -
На моём компе прога не попадает в тот модуль и процедуру, где ошибка (называется «ПолныеПрава» УстановитьПараметрГраницыЗапретаИзмененияДанных). А на сервере почему-то попадает. (конфигурации одинаковые)
— Объединение сообщений, 29 май 2015 —
Вот что-то проясняется
На моём компьютере в модуле сеанса вызывается обработчик УстановкаПараметровСеанса(ИменаПараметровСеанса), в котором
ИменаПараметровСеанса=Неопрелено
И меня это устраивает. А вот на сервере видимо передаётся какое-то значение. (пока не могу от тестить, там люди работают).
Может кто-то знает что ткнуть нужно, чтоб на сервере тоже передавалось ИменаПараметровСеанса=НеопреленоПоследнее редактирование: 29 май 2015 -
Блин нет. На сервере тоже неопределено
— Объединение сообщений, 29 май 2015 —
Что-то с параметрами сеанса. На моём компе в модкль «ПолныеПрава» действительно открывается только на сервере и поэтому проверка синтаксиса проходит нормально. А на сервере почему-то применяется этот модуль на тонком клиенте, и тогда проверка синтаксиса не проходит.
— Объединение сообщений, 29 май 2015 —
АААААААА……Я нашёл!!!!!
В настройке запуска базы у меня на моём компе Основной режим запуска стоит Выбирать автоматически, а на сервере Толстый клиент
Последнее редактирование: 29 май 2015
Всем привет. Пытаюсь сделать вэб-сервис на базе 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: нет смысла писать директивы компиляции &НаСервере, &НаКлиенте и другие.
——————
На каждый вызов веб-операции создается отдельный сеанс с информационной базой, поэтому при каждом вызове веб-операции происходит инициализация параметров сеанса. Инициализация параметров сеанса происходит в модуле сеанса в процедуре «УстановкаПараметровСеанса».
Замечание 2: не нагружайте эту процедуру лишними действиями.
Лично я в данное процедуре при первом вызове делаю инициализацию только самых часто используемых параметров сеанса. И только если нужны другие параметры сеанса, при повторном вызове, обрабатываю указанные параметры.
Пример:
Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
//суть изменений — получить сразу только важные параметры, а если нужны еще параметры воспользоваться подсистемой БСП
Если ИменаПараметровСеанса=Неопределено Тогда
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ ПЕРВЫЕ 1
| Пользователи.Ссылка КАК Ссылка
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
| Пользователи.ИдентификаторПользователяИБ = &ИдентификаторПользователяИБ»;
ИдентификаторПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;
Запрос.Параметры.Вставить(«ИдентификаторПользователяИБ «, ИдентификаторПользователяИБ);
РезультатПользователи = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПараметрыСеанса.ТекущийПользователь = ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
ПараметрыСеанса.ТекущийКонтрагент = ПараметрыСеанса.ТекущийПользователь.Контрагент;
Иначе
СтандартныеПодсистемыСервер.УстановкаПараметровСеанса(ИменаПараметровСеанса);
КонецЕсли;
КонецПроцедуры
——————
Если вы читали статью 1С:Предприятие 8. Веб-сервисы. Реализация собственного веб-сервиса, то заметили что в дереве метаданных параметр ws-операции называется «Param», а в реализующем его методе называется «Параметр». Дело в том что наименование операндом в методе ws-операции не имеет значение, 1С подставляет операнды в том порядке в котором они указаны в дереве метаданных ws-операции. Например у нас есть операция Example1, в конфигураторе мы указали что операция имеет два параметра «param1» и «param2» и создали процедуру которая выводит «param2».
Если мы вызовем ws-операцию Example1 и передадим в качестве параметров param1=1, param2=2, то в результат получим 2.
Но если мы поменяем порядок операндов в конфигураторе:
То тот же самый вызов вернет 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://». Но ошибку выдаст уже веб-сервер