Всем привет! Есть задача, автоматически снимать резервы на товары (документ ЗаказПокупателя), старше 14 дней. 1С 8.1, конфигурация "Управление торговым предприятием" дописанная Добавил регламентное задание, задал рассписание, в общем модуле добавил процедуру которая будет отменять заказ:
Процедура СнятиеРезерва()
//запросом получаем список документов для отмены Выборка = Запрос.Выполнить().Выбрать();
НачатьТранзакцию();
Пока Выборка.Следующий() Цикл
Если Выборка.ДокументРезерва.Проведен Тогда ДокументРезерваОбъект = Выборка.ДокументРезерва.ПолучитьОбъект();
//отменяем проведение документа ДокументРезерваОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию(); КонецПроцедуры
При выполнении регламентного задания вылетает ошибка: Ошибка при вызове метода контекста (ПолучитьОбъект): При подписке на событие произошла ошибка. Метод обработчика события не найден.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(DrLivsi @ 22.05.12, 15:24)
Что никто не сможет подсказать?
Ну а стать отладчиком и посмотреть чего там не хватает - никак? обязательно надо ждать гадалок? Ну давайте будем гадать, например у документа есть подписка на событие ПриОтменеПроведения, и проблема в этом событии.
p.s. и почему запросом сразу не выбрать только проведенные документы?
Личные бесплатные консультации не даю, для этого есть форум!
Ну а стать отладчиком и посмотреть чего там не хватает - никак?
Отладить регламентное задание у меня не получилось... А если код вставить в обработку, то все работает без ошибок.
Цитата(logist @ 22.05.12, 15:53)
обязательно надо ждать гадалок? Ну давайте будем гадать, например у документа есть подписка на событие ПриОтменеПроведения, и проблема в этом событии.
Есть только подписка "ПередЗаписьюДокументаДатаЗапретаРедактирования", где проверяется возможность записи, в зависимости от даты запрета редактирования. Только не пойму чем эта подписка мешает.
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4550 раз
Рейтинг: 3678.1
Цитата(DrLivsi @ 22.05.12, 17:27)
Есть только подписка "ПередЗаписьюДокументаДатаЗапретаРедактирования", где проверяется возможность записи, в зависимости от даты запрета редактирования. Только не пойму чем эта подписка мешает.
Если документ находится в закрытом период - то ничего сделать с ним без полных прав нельзя.
Если документ находится в закрытом период - то ничего сделать с ним без полных прав нельзя.
Если я не ошибаюсь, то регламентное задание порождает фоновое задание, которое выполняется по умолчанию от имени пользователя, у которого есть административные права. А если так, то дата запрета не должна же мешать отмене?
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Я вот что подумал, а свойство модуля в котором располагается задание имеет все необходимые флажки? Сервер, Клиент(обычное), и т.п.?
Ну и вот есть еще такое решение как почистить кэш у всех пользователей (C:\Documents and Settings\<Имя_пользователя>\Local Settings\Application Data\1C\1Cv81 )
Личные бесплатные консультации не даю, для этого есть форум!
Я вот что подумал, а свойство модуля в котором располагается задание имеет все необходимые флажки? Сервер, Клиент(обычное), и т.п.?
Да, флажки стоят все.
Цитата(logist @ 22.05.12, 18:46)
Ну и вот есть еще такое решение как почистить кэш у всех пользователей (C:\Documents and Settings\<Имя_пользователя>\Local Settings\Application Data\1C\1Cv81 )
Кэш почистил, результата нет.
Цитата(Vofka @ 22.05.12, 19:36)
Для чистоті єксперимента - убрать дату запрета редактировании (возможно на копии)
Дату убрал, ошибка та же: При подписке на событие произошла ошибка.
Ну, таки, отладчиком пройтись. Иначе можно гадать бесконечно.
Смотрел отладчиком, после строки ...ПолучитьОбъект(), выполняется код, который находится вне процедур в модуле документа. Поместил этот код в #Если клиент тогда ... #КонецЕсли, и даже весь закомментировал, но ошибка не исчезла. А в подписках не нашел события, которое вызывается методом ПолучитьОбъект().
Путем исключения. Создал новую тестовую базу на SQL, убрал свой документ из всех подписок, запустил - работает. Дальше добавлял по-очереди в подписку и проверял нет ли ошибки, когда определил где ошибка, полез в обработчик и там уже добавил определение переменной глТекущийПользователь.
Правда одного не понял, почему код в обработчике выполняется если он находится в условии:
Если Источник.ЭтоНовый() Тогда .... глТекущийПользователь = ПараметрыСеанса.ТекущийПользователь; .... КонецЕсли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!