|
Справочники и Регламентное задание | ☑ | ||
---|---|---|---|---|
0
Adm1nSpb
30.04.17
✎
22:00
|
Добрый день!
Столкнулся с проблемой. Платформа 1С 8.1, База лежит на сервере MSSQL, 1С сервер x64 Есть регламентное задание которое запускается. После запуска происходит запрос, который получив данные о некотором списке документов, анализирует данные об их контрагентах, вызывая функцию находящуюся в общем модуле этого регл. задания с параметром ссылка на контрагента. Вот функция Функция КонтрагентСогласен(Контрагент) Экспорт Если Контрагент.Согласен = Истина Тогда Возврат Истина; иначе Возврат Ложь; КонецЕсли; КонецФункции Регламентное задание завершается с ошибкой. Пишет что {ОбщийМодуль.Модуль()}: Метод объекта не обнаружен (Согласен) В справочнике контрагенты, имеется реквизит типа булево, названный согласен. Помогите советом, как совершить проверку данных из регламентного задания? Так понимаю на сервере... |
|||
1
Adm1nSpb
30.04.17
✎
22:02
|
*названный Согласен
|
|||
2
Лефмихалыч
30.04.17
✎
22:18
|
нет метода Согласен() в общем модуле Модуль.
А код - редкое УГ. Начорта это проверять, когда можно сразу из базы просто выбрать всех согласных (или не согласных)? |
|||
3
Adm1nSpb
30.04.17
✎
22:21
|
В этом модуле Согласен употребляется лишь в этом куске кода.
Контрагент.Согласен и на эту строку ругается регламентное задание. В чем может быть причина? |
|||
4
Лефмихалыч
30.04.17
✎
22:23
|
в твоем коде и причина. Отсюда плохо видно, что у тебя написано и где.
|
|||
5
Лефмихалыч
30.04.17
✎
22:25
|
еще - как вариант - в функцию передается не ссылка на элемент справочника. А, например, непределено.
А, если передается таки-ссылка, то за такой код надо руки отрывать. Это запрос в цикле. |
|||
6
RomanYS
30.04.17
✎
22:44
|
(2) +100500
(0) код - г.., но ошибка не в нем. Ищи вызов "Согласен(" |
|||
7
Aleksey
01.05.17
✎
04:20
|
(5) нормальный код, коих в типовых полно. Типа универсализм и масштабируемость. Вдруг ты завтра еще что-то хочешь дополнительно проверить?
И счего вы взяли что согласен это метод? Может это реквизит справочника. Или вообще Контрагент - это соответствие у которого есть ключ "Согласен" (ну или должен быть) |
|||
8
Aleksey
01.05.17
✎
04:28
|
В простейшем случае вставить в начало функции попытку
Функция КонтрагентСогласен(Контрагент) Экспорт Попытка КонтрагентСогласен = Контрагент.Согласен; Исключение Возврат ложь;//это не ссылка на контрагента КонецЕсли; Если КонтрагентСогласен = Истина Тогда Возврат Истина; иначе Возврат Ложь; КонецЕсли; КонецФункции |
|||
9
Zamestas
01.05.17
✎
04:34
|
(7) "В справочнике контрагенты, имеется реквизит типа булево, названный согласен."
(0) Он точно там имеется? |
|||
10
Мимохожий Однако
01.05.17
✎
08:52
|
Например, измени в функции
КонтрагентОбъект=Контрагент.ПолучитьОбъект(); Если КонтрагентОбъект.Согласен = Истина Тогда... |
|||
11
Лефмихалыч
01.05.17
✎
10:31
|
(10) и из просто говнокода получишь феерический говнокод
|
|||
12
Adm1nSpb
01.05.17
✎
10:34
|
(2)(22) Код синтаксически верный. Что вам в нем не нравиться? Не все пишут в вашем стиле, да и не обязаны...
(9) Я бы скриншот привел, но точно говорю - реквизит есть. Проблема разрешилась странным образом. В функции регламентного задания, вызывающей функцию КонтрагентСогласен(Контрагент) вместо анализа ответа от работы функции КонтрагентСогласен(Контрагент) было написано сразу Если Контрагент.Согласен = Истина Тогда... И регламентное задание ошибок не выдало. Вроде бы и там и там - все верно, но сработал лишь этот вариант... |
|||
13
Adm1nSpb
01.05.17
✎
10:34
|
т.е. (2)(11)
|
|||
14
Лефмихалыч
01.05.17
✎
10:36
|
(12) что за бред ты несешь?
У тебя в (0) именно так и написано - сразу "Если Контрагент.Согласен = Истина Тогда" |
|||
15
Adm1nSpb
01.05.17
✎
11:19
|
(14) Вот и я говорю - странно. В функции вызывающей функцию (написанную в (0) в пределах одного общего модуля) - такое условие сработало. В той функции что (0) - нет.
|
|||
16
Лефмихалыч
01.05.17
✎
11:27
|
(15) проблема в твоем коде, еще раз говорю. Как пишешь, так оно и работает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |