Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста Неизвестная функция
, ,
0 espanol
 
28.11.22
08:30
Всем привет!

Такая вот ошибка.
Обработка внешняя, если нет заказов которые мы ищем на сервере в запросе, то вылазит такая вот ошибка:

Ошибка при вызове метода контекста (ПроверкаЗаказовДляСборкиНаСервере): Неизвестная функция. Функция "ПроверкаЗаказовДляСборкиНаСервере"

&НаКлиенте
Функция ПроверкаЗаказовДляСборки()
    ПОПЫТКА
        Если ФормаПроверкиЗаказовДляСборкиОткрыта = Ложь Тогда
            ЕстьЗаказы = ПроверкаЗаказовДляСборкиНаСервере(Объект.Магазин);
            Если ЕстьЗаказы = Истина Тогда
                ФормаПроверкиЗаказовДляСборкиОткрыта = Истина;
                ПараметрыФормы = Новый Структура;
                ПараметрыФормы.Вставить("Магазин", Объект.Магазин);
                ОбработчикОповещения = Новый ОписаниеОповещения("ОповещениеОткрытьФормуФормаСбораЗаказов", ЭтотОбъект);
                Режим = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
                ОткрытьФорму(ПолноеИмяОбъекта + ".Форма.ФормаСбораЗаказов", ПараметрыФормы, УникальныйИдентификатор,,,, ОбработчикОповещения, Режим);
            КонецЕсли;
        КонецЕсли;
    ИСКЛЮЧЕНИЕ
        Сообщить(ОписаниеОшибки());
    КОНЕЦПОПЫТКИ;
КонецФункции

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



В чем может быть причина?
1 Ryzeman
 
28.11.22
08:36
Ты бы лучше полный текст ошибки скинул, и кусок модуля на который ругается платформа где ты её вызываешь. Запускаешь в УФ?
2 espanol
 
28.11.22
08:37
(1) Собственно говоря это и выложил, все выше )
3 Галахад
 
гуру
28.11.22
08:39
Не кэш случайно?
4 Ryzeman
 
28.11.22
08:41
(2) Нет. Подробный текст ошибки с названиями модулей и где не может найти. Типа того


Ошибка инициализации модуля: ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(8,14)}: Процедура или функция с указанным именем не определена (МояКласснаяФункция)
    Результат = <<?>>МояКласснаяФункция();

Хотя если бы косяк в директивах был, тебе и записать не дало бы... Наверное (3) прав.
5 espanol
 
28.11.22
08:41
У меня повторить ошибку не получается, она есть только у пользователей, ито не у всех.
Конечно же это УФ.
В своей тестовой базе разворачивал, тестировал под этими пользователя, ошибки нет, платформа 1С:Предприятие 8.3 (8.3.18.1741).
(3) Думаю нет, больше похоже на глюк платформы...
6 Ryzeman
 
28.11.22
08:43
(5) Обработка - встраиваемая? На ней есть элементы пользовательских настроек?
7 espanol
 
28.11.22
08:45
(6) Обработка внешняя, находится в справочнике ДополнительныеОтчетыИОбработки. Ну это собственно говоря РМК Розница. Очень много реквизитов формы.
8 Ryzeman
 
28.11.22
08:47
(7) Ну, чистить кэши и пользовательские настройки тогда) Есть способ простой, но не очень красивые-  измени идентификатор и переименуй обработку. Для клиентов она будет якобы новой и всё заново загрузится и обновится как надо
9 espanol
 
28.11.22
08:51
(8) да, идентификатор можно поменять, у пользователей ничего страшного не произойдет? )
10 Мимохожий Однако
 
28.11.22
08:52
У функции должен быть Возврат
11 Ryzeman
 
28.11.22
08:52
(9) слетят все настройки что они делали, сортировки списков, история заполнения и т.п.
12 Ryzeman
 
28.11.22
08:52
(10) У него он есть)

>>    Возврат ?(Результат.Количество() = 0, Ложь, Истина);
13 espanol
 
28.11.22
09:16
Либо можно серверную функцию вынести в общий модуль... хотя другие аналогичные функции работаю без проблем...
14 Kassern
 
28.11.22
09:21
(12) А ничего, что УстановитьПривилегированныйРежим(Ложь);  указан после возврата? Или он автоматом закрывается, после того как из функции уходит?
15 espanol
 
28.11.22
09:23
(14) делал для теста и до возврата и после )
16 Kassern
 
28.11.22
09:24
(15) Кэш чистили у пользователей, под которыми ошибка возникает?
17 Ryzeman
 
28.11.22
09:26
(14) На самом деле ничего, потому что
>>он автоматом закрывается, после того как из функции уходит

но я люблю закрывать, что б не думалось)))
18 Kassern
 
28.11.22
09:35
И еще вопросик по поводу привилегированного режима - он же вроде не работает во внешних обработках, если мне память не изменяет?
19 НЕА123
 
28.11.22
09:39
(18)+1
и зачем привилегированный режим? вроде везде разрешенные.
20 espanol
 
28.11.22
09:42
(18) (19) просто тестил, а что?
21 НЕА123
 
28.11.22
10:51
(20)
попытку исключение на сервере тоже надо.