Имя: Пароль:
1C
1С v8
HTTP-сервис. Ошибка при изменении кода в модуле http-сервиса...
0 AnBlast
 
02.12.19
17:45
День добрый...

Есть http-сервис и модуль в котором обрабатываются запросы-ответы.
Добавляю туда новую функцию и все валится "Ошибка инициализации библиотеки модулей". Закомментировал код - все ок.

Получается надо перепубликовать сервис на сервисе? Или как то это можно обойти?

Заранее Спасибо!
1 palsergeich
 
02.12.19
17:48
(0) Надо просто написать функцию так, что бы сервис не падал, перепубликация нужна только при добавлении новых сервисов.
2 palsergeich
 
02.12.19
17:49
Если бы была проблема с публикацией ты бы получил 404 ошибку
3 palsergeich
 
02.12.19
17:50
А тут по ходу используется код, который не допустимв контексте HTTPсервиса и надо перенести его в контекст сервера
4 palsergeich
 
02.12.19
17:57
Пкажи код, который приводит к падению
5 AnBlast
 
02.12.19
17:58
я вообще нигде не вызываю новую функцию. просто дописал ее - обновил конфу и фсе. или это сути дела не меняет?
6 palsergeich
 
02.12.19
17:59
(5) Не меняет, даже если не используешь, в момент вызова модуль компилируется весь.
Ну и соответственно при ошибке компиляции, даже если не используется - все падает.
7 AnBlast
 
02.12.19
18:01
(6) два запроса банальных - первый выбирает список заюзанных обьектов, второй делает делает все объекты кроме полученных в первом запросе
8 Ник080808
 
02.12.19
18:03
(7) а функция случайно не в клиентском модуле?
9 AnBlast
 
02.12.19
18:04
(8) рядом с моей точно такая же функция, но написанная до меня - запрос возвращающий список
10 AnBlast
 
02.12.19
18:05
код вот такой

Функция ПолучитьКоличествоСвободныхНомеровПоКатегориям(ДатаНачала, ДатаОкончания)
    
    //ПолучимСписокЗанятых
    ЗапросЗанятых = Новый Запрос;
    ЗапросЗанятых.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    СостояниеНомеров.Номер
    |ИЗ
    |    РегистрСведений.СостояниеНомеров КАК СостояниеНомеров
    |ГДЕ
    |    (СостояниеНомеров.ДатаНачала МЕЖДУ &ДатаНачала И &ДатаОкончания
    |            ИЛИ СостояниеНомеров.ДатаОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
    |            ИЛИ (СостояниеНомеров.ДатаНачала <= &ДатаНачала
    |                И СостояниеНомеров.ДатаОкончания >= &ДатаОкончания))
    |    И СостояниеНомеров.Состояние В(&СписокСостояний)";
    ЗапросЗанятых.УстановитьПараметр("ДатаНачала", ДатаНачала);
    ЗапросЗанятых.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
    СписокСостояний = Новый Массив;
    СписокСостояний.Добавить(Перечисления.СостоянияНомеров.Забронирован);
    СписокСостояний.Добавить(Перечисления.СостоянияНомеров.Заселен);
    СписокСостояний.Добавить(Перечисления.СостоянияНомеров.Выехал);
    ЗапросЗанятых.УстановитьПараметр("СписокСостояний", СписокСостояний);
    
    СписокЗанятыхНомеров = ЗапросЗанятых.Выполнить().Выгрузить().ВыгрузитьКолонку("Номер");
    

    //ПолучимСписокДоступных как Все-ПолучимСписокЗанятых
    ЗапросСвободных = Новый Запрос;
    ЗапросСвободных.Текст =
    "ВЫБРАТЬ
    |    СправочникОтделы.Ссылка КАК Ссылка,
    |    СправочникОтделы.Код КАК Код,
    |    СправочникОтделы.Наименование КАК Наименование,
    |    СправочникОтделы.КатегорияНомера КАК КатегорияНомера,
    |    СправочникОтделы.КодФиделио КАК КодФиделио
    |ИЗ
    |    Справочник.Отделы КАК СправочникОтделы
    |ГДЕ
    |    СправочникОтделы.КатегорияНомера <> ЗНАЧЕНИЕ(Справочник.КатегорииНомеровГостиницы.ПустаяСсылка)
    |    И СправочникОтделы.ДатаНач <> ДАТАВРЕМЯ(1, 1, 1)
    |    И НЕ СправочникОтделы.Ссылка В (&СписокЗанятыхНомеров)";
    
    ЗапросСвободных.УстановитьПараметр("СписокЗанятыхНомеров", СписокЗанятыхНомеров);
    СвободныеНомера = ЗапросСвободных.Выполнить().Выгрузить();
    
    Возврат СвободныеНомера;
    
КонецФункции;
11 Ник080808
 
02.12.19
18:05
(9) код показывай
12 Ник080808
 
02.12.19
18:08
(10) ты же тзшку возвращаешь
https://forum.infostart.ru/forum9/topic177796/
13 Ник080808
 
02.12.19
18:08
"Потратил уйму времени, ошибка была в том, что в процедуре использовался возврат значения, но проверка на синтаксис ничего не давала."
14 AnBlast
 
02.12.19
18:13
(12) я эту статью читаю уже пятый день ))
в соседней функции, которая делает то же самое, только иначе возврат

    Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Комната");

и все ок

Поставил в моей

Возврат 1;

Все равно валится с той же ошибкой
15 Ник080808
 
02.12.19
18:14
(14) так тут идет возврат массива, а ты тз возвращаешь
юзай
Та же ситуация. Помог режим проверки *Сервер* (Параметры - Модули - Проверка).
16 AnBlast
 
02.12.19
18:22
(15) а я %%%%т!! ))
Точка с запятой после КонецФункции
Режим проверки помог - Спасибо!
17 palsergeich
 
02.12.19
18:23
(16) Ахахахаха, я тоже этого не заметил)))
18 palsergeich
 
02.12.19
18:23
(17) А у меня с сервисом троже была такая штука)
19 Ник080808
 
02.12.19
18:29
(17) мало кто заметил. вернее заметил никто)
20 craxx
 
02.12.19
18:31
(19) Я сразу заметил.
21 AnBlast
 
02.12.19
18:33
(20) спс, что сразу помог ))
22 craxx
 
02.12.19
18:35
(21) Ну сорри, тему только сейчас открыл.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший