|
ПолучитьОБъект() В фоновом задании отрабатывает с ошибкой | ☑ | ||
---|---|---|---|---|
0
Vlaloplo
03.06.21
✎
10:19
|
Всем привет, сразу к делу, есть регламентное задание, которое запускается каждые 180 сек, ищет определенный документ в регистре и если находит, то записывает его. Все кажется просто
Код: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ASP_ПроведениеТребованиеСклад.СсылкаТребование.Ссылка КАК СсылкаТребование, | ASP_ПроведениеТребованиеСклад.СсылкаСчетФактура КАК СсылкаСчет |ИЗ | РегистрСведений.ASP_ПроведениеТребованиеСклад КАК ASP_ПроведениеТребованиеСклад"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Док = ВыборкаДетальныеЗаписи.СсылкаТребование; Документ = Док.ПолучитьОБъект(); Реквизит = Документ.УПД; Но на строке, где получаю объект, пишется ошибка в журнал регистрации, что метот объекта не обнаружен. Такая же конструкция вне регламентного срабатывает.. Обычные формы, свойства общего модуля - Сервер, клиент (обычное приложение) |
|||
1
Vlaloplo
03.06.21
✎
10:20
|
Прошу прощения, Метод*
|
|||
2
Vlaloplo
03.06.21
✎
10:21
|
Галка Вызов сервера установлена
|
|||
3
RomanYS
03.06.21
✎
10:23
|
битые ссылки?
|
|||
4
Vlaloplo
03.06.21
✎
10:25
|
(3), нет ссылка нормальная
|
|||
5
fisher
03.06.21
✎
10:26
|
Ошибка воспроизводится? На повторном запуске регламента падает там же?
|
|||
6
Vlaloplo
03.06.21
✎
10:28
|
(5) Да
|
|||
7
RomanYS
03.06.21
✎
10:34
|
(6) может права? Попробуй привилегированный режим включить
|
|||
8
Ногаминебить
03.06.21
✎
10:35
|
На первом же шаге рушится?
На одной и той же строке регистра падает? |
|||
9
Vlaloplo
03.06.21
✎
10:36
|
(7) Под полными правами делаю
Да и как права могут связанны с методом получитьОбъект()? |
|||
10
Vlaloplo
03.06.21
✎
10:37
|
(8) В регистре всегда только одна строка, после того, как регламентое выполнится (сейчас не выполняется), записи из регистра удаляются
|
|||
11
Vlaloplo
03.06.21
✎
10:38
|
Пробовал вручную удалять запись из регистра и добавлять туда другие ссылки, все равно нет, проверил теорию (3) )
|
|||
12
Vlaloplo
03.06.21
✎
10:39
|
Есть предположение, что общий модуль не глобальный, может из за этого быть?
Но я пробовал переносить процедуру в глобальный модуль, её почему то не могу указать в имени метода для регламентного.. |
|||
13
Ногаминебить
03.06.21
✎
10:41
|
В порядке бреда. Выполнить().Выгрузить() и перебирать тз потом.
|
|||
14
Галахад
гуру
03.06.21
✎
10:42
|
А отладка что показывает?
|
|||
15
Vlaloplo
03.06.21
✎
10:45
|
(13) Не совсем понял, при чем тут порядок? В результате запросе я получаю только две ссылки из одного регистра
|
|||
16
piter3
03.06.21
✎
10:47
|
скопируй из доки ПолучитьОБъект,может там буква не та
|
|||
17
Ногаминебить
03.06.21
✎
10:47
|
(15) В смысле бредовое предположение, но мало ли. :) А вообще отладку конечно смотреть и все ясно станет скорее всего.
|
|||
18
lodger
03.06.21
✎
10:49
|
Вангую, что в общем модуле документа "СсылкаТребование" есть вызовы методов\модулей недоступных на сервере. он на ПолучитьОБъект() комплит модуль и выпадает с ошибкой.
|
|||
19
RomanYS
03.06.21
✎
10:52
|
(18) если бы ошибка компиляции была до выполнения кода бы не дошло
|
|||
20
Vlaloplo
03.06.21
✎
10:53
|
В модуле объекта "СсылкаТребование" есть клиентские методы, например предупреждение, но это в обработке проведения, а я до неё не дохожу, останавливаюсь на получение объекта
|
|||
21
Vlaloplo
03.06.21
✎
10:53
|
(17), да вот отладкой понять как раз и не мог, поэтому решил у спецов спросить) Может кто сталкивался
|
|||
22
lodger
03.06.21
✎
10:54
|
(20) а это совершенно не важно. обрами эти эти методы #Если Клиент Тогда #Конец
|
|||
23
Василий Алибабаевич
03.06.21
✎
10:54
|
(0) Зачем вот это все ?:
" Док = ВыборкаДетальныеЗаписи.СсылкаТребование; Документ = Док.ПолучитьОБъект(); Реквизит = Документ.УПД; " Реквизит УПД можно 1. получить напрямую от ссылки. 2. получить сразу в запросе. |
|||
24
fisher
03.06.21
✎
10:55
|
(6) Очень странно. Убери тавтологию "ASP_ПроведениеТребованиеСклад.СсылкаТребование.Ссылка". У тебя же ASP_ПроведениеТребованиеСклад.СсылкаТребование и так ссылка, то есть обращение через точку к реквизиту "Ссылка" - лишнее. Не понимаю, как это может влиять, но вдруг. Хотя бы глаз резать не будет :)
Больше всего на права похоже. Но каким образом они могут быть порезаны для регламента - не понимаю. |
|||
25
Vlaloplo
03.06.21
✎
10:58
|
(23) Ну уж ругаться на одну переменную думаю, не стоит)
не совсем понял про 2 пункт, как я получу объект в запросе? не слышал про такие методы |
|||
26
Вафель
03.06.21
✎
10:58
|
в модуле есть клиентские функции скорее всего для толстого клиента.
их надо тегами оформить |
|||
27
Василий Алибабаевич
03.06.21
✎
10:58
|
(21) Отладка бывает еще такой ;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Док = ВыборкаДетальныеЗаписи.СсылкаТребование; Если ЗначениеЗаполнено(Док) Тогда Документ = Док.ПолучитьОБъект(); Реквизит = Документ.УПД; Иначе Сообщить("Как то так сложилось что в " + СсылкаТребование + " нифига нет."); Продолжить; КонецЕсли; |
|||
28
Vlaloplo
03.06.21
✎
10:59
|
(24), да спасибо) Не заметил, убрал лишнее обращение)
|
|||
29
Vlaloplo
03.06.21
✎
10:59
|
(27) Да заполнена ссылка, проверял я её отладкой
|
|||
30
lodger
03.06.21
✎
11:00
|
(27) только не
Сообщить("Как то так сложилось что в " + СсылкаТребование + " нифига нет."); а ЗаписьЖурналаРегистрации( НСтр("ru = 'Длительные операции.Диагностика'", ОбщегоНазначения.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Примечание, , , НСтр("ru = 'Как то так сложилось что в " + СсылкаТребование + " нифига нет.'")); |
|||
31
Василий Алибабаевич
03.06.21
✎
11:01
|
(25) Например так
"ВЫБРАТЬ | ASP_ПроведениеТребованиеСклад.СсылкаТребование.Ссылка КАК СсылкаТребование, | ASP_ПроведениеТребованиеСклад.СсылкаСчетФактура КАК СсылкаСчет, | //Вотъ оно: | ASP_ПроведениеТребованиеСклад.СсылкаТребование.УПД КАК УПД | // |ИЗ | РегистрСведений.ASP_ПроведениеТребованиеСклад КАК ASP_ПроведениеТребованиеСклад"; |
|||
32
fisher
03.06.21
✎
11:03
|
(28) Кстати, походу lodger прав. ИМХО, должно было бы записать в ЖР ошибку при компиляции, но вполне и так могло быть.
|
|||
33
fisher
03.06.21
✎
11:04
|
(19) Компиляция модулей в 1С "ленивая" - выполняется при первом обращении к модулю.
|
|||
34
fisher
03.06.21
✎
11:06
|
Можно в конфигураторе запустить синтаксическую проверку серверных модулей. И 1С по-идее должна рассказать все что ей в этом модуле не по нраву.
|
|||
35
wertyu
03.06.21
✎
11:07
|
(29) тогда у тебя (16)
|
|||
36
fisher
03.06.21
✎
11:08
|
Конфигурация - проверка конфигурации - синтаксический контроль модулей - галка на "Сервер"
|
|||
37
fisher
03.06.21
✎
11:10
|
Хотя не. Гоню. Не могло в этом случае писать ошибку "метод не обнаружен".
|
|||
38
Вафель
03.06.21
✎
11:13
|
можено тег поставить Если Сервер Тогда на весь модуль и сразу видно будет
|
|||
39
Вафель
03.06.21
✎
11:14
|
А еще могут подписки быть в модулях без сервера
|
|||
40
fisher
03.06.21
✎
11:16
|
Тогда была бы "ошибка при выполнении метода" или как там. Но не "метод объекта не обнаружен".
|
|||
41
lodger
03.06.21
✎
11:16
|
(37) так это тебе человек пересказал, а не скриншот ошибки. делаем поправки и допуски.
|
|||
42
Vlaloplo
03.06.21
✎
11:19
|
Крч разобрался
ПолучитьОбъект() серверный метод, при получении он обходил весь модуль объекта документа и натыкался на предупреждение, которое выполнялось на клиенте В модуле объекта добавил условие #Если НаКлиенте Тогда .."Выполняем клиентский метод" Все заработало без ошибок. Всем спасибо за хорошее обсуждение Так что (18) Был прав, я просто не знал, что при получении объекта он обходит все методы |
|||
43
ДенисЧ
03.06.21
✎
11:19
|
(37) Запросто мог.
(0) Сделай просто. Закомментируй ВЕСЬ модуль объекта и раскрывай по одной процедуре. Если уже проверку синтаксиса не хочешь делать... |
|||
44
fisher
03.06.21
✎
11:21
|
(43) Точно. Он же модуль не скомпилировал, а значит метод найти шансов не было :)
|
|||
45
fisher
03.06.21
✎
11:22
|
(43) Тьфу. Это же платформенный метод. Тогда странно. Не знал, что так писать может в этом случае.
|
|||
46
fisher
03.06.21
✎
11:24
|
Теоретически, если компиляция модуля объекта является частью инициализации всего класса объекта, тогда логично. Класс инициализироваться не смог, до его методов добраться не получается.
|
|||
47
ДенисЧ
03.06.21
✎
11:28
|
У нас тут в одной конфе подобная ситуация есть...
ОФ. В модуле объявлена процедура (разумеется, без &Клиент-&Сервер). Проверку проходит. А одно фоновое задание постоянно ругается... Вот освобожусь - буду разбираться... |
|||
48
fisher
03.06.21
✎
11:30
|
Насколько же шелковистее в этом плане стало при УФ.
Там модуля объектов всегда только сервер и проведение привилегированное. Красота. |
|||
49
fisher
03.06.21
✎
11:32
|
В итоге перенос в регламенты вообще всегда без проблем, так как серверный код и так всегда явно прописывается.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |