Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите с Регламентным заданием          
DrLivsi Подменю пользователя
сообщение 21.05.12, 9:42
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Всем привет!
Есть задача, автоматически снимать резервы на товары (документ ЗаказПокупателя), старше 14 дней.
1С 8.1, конфигурация "Управление торговым предприятием" дописанная
Добавил регламентное задание, задал рассписание, в общем модуле добавил процедуру которая будет отменять заказ:

Процедура СнятиеРезерва()

//запросом получаем список документов для отмены
Выборка = Запрос.Выполнить().Выбрать();

НачатьТранзакцию();
    
    Пока Выборка.Следующий() Цикл
                    
        Если Выборка.ДокументРезерва.Проведен Тогда
                ДокументРезерваОбъект = Выборка.ДокументРезерва.ПолучитьОбъект();
                
                //отменяем проведение документа
                ДокументРезерваОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);

        КонецЕсли;     
                        
    КонецЦикла;
    
    ЗафиксироватьТранзакцию();
КонецПроцедуры


При выполнении регламентного задания вылетает ошибка:
Ошибка при вызове метода контекста (ПолучитьОбъект): При подписке на событие произошла ошибка. Метод обработчика события не найден.

Что не так? И зачем мне эта подписка?

DrLivsi Подменю пользователя
сообщение 22.05.12, 14:24
Сообщение #2

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Что никто не сможет подсказать?

logist Подменю пользователя
сообщение 22.05.12, 14:53
Сообщение #3

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(DrLivsi @ 22.05.12, 15:24) *
Что никто не сможет подсказать?

Ну а стать отладчиком и посмотреть чего там не хватает - никак? обязательно надо ждать гадалок? Ну давайте будем гадать, например у документа есть подписка на событие ПриОтменеПроведения, и проблема в этом событии.

p.s. и почему запросом сразу не выбрать только проведенные документы?


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Ardi Подменю пользователя
сообщение 22.05.12, 15:03
Сообщение #4

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Вообще то есть ОТДЕЛЬНЫЙ документ который отменяет резервы.

Сообщение отредактировал Ardi - 22.05.12, 15:04


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

sava1 Подменю пользователя
сообщение 22.05.12, 15:45
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2710
Из: Проскуров
Спасибо сказали: 691 раз
Рейтинг: 669.9

По всей видимости для ДокументРезерва создана подписка ПриЗаписи, а модуля нет - вот и орет

logist Подменю пользователя
сообщение 22.05.12, 15:55
Сообщение #6

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sava1 @ 22.05.12, 16:45) *
создана подписка ПриЗаписи

Там скорее создана подписка ПриОтменеПроведения, иначе он бы уже ругался на этапе записи, а тут пытаются отменить проведение.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sava1 Подменю пользователя
сообщение 22.05.12, 15:57
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2710
Из: Проскуров
Спасибо сказали: 691 раз
Рейтинг: 669.9

Ну найти можно по-любому

DrLivsi Подменю пользователя
сообщение 22.05.12, 16:27
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(logist @ 22.05.12, 15:53) *
Ну а стать отладчиком и посмотреть чего там не хватает - никак?

Отладить регламентное задание у меня не получилось... А если код вставить в обработку, то все работает без ошибок.

Цитата(logist @ 22.05.12, 15:53) *
обязательно надо ждать гадалок? Ну давайте будем гадать, например у документа есть подписка на событие ПриОтменеПроведения, и проблема в этом событии.

Есть только подписка "ПередЗаписьюДокументаДатаЗапретаРедактирования", где проверяется возможность записи, в зависимости от даты запрета редактирования. Только не пойму чем эта подписка мешает.

Vofka Подменю пользователя
сообщение 22.05.12, 16:29
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4550 раз
Рейтинг: 3678.1

Цитата(DrLivsi @ 22.05.12, 17:27) *
Есть только подписка "ПередЗаписьюДокументаДатаЗапретаРедактирования", где проверяется возможность записи, в зависимости от даты запрета редактирования. Только не пойму чем эта подписка мешает.

Если документ находится в закрытом период - то ничего сделать с ним без полных прав нельзя.

logist Подменю пользователя
сообщение 22.05.12, 16:46
Сообщение #10

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(DrLivsi @ 22.05.12, 17:27) *
Отладить регламентное задание у меня не получилось...

Как это не получилось?

Поставить точку останова в "ДокументРезерваОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения); " и смотреть куда дальше будет идти.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

DrLivsi Подменю пользователя
сообщение 22.05.12, 17:19
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(Vofka @ 22.05.12, 17:29) *
Если документ находится в закрытом период - то ничего сделать с ним без полных прав нельзя.


Если я не ошибаюсь, то регламентное задание порождает фоновое задание, которое выполняется по умолчанию от имени пользователя, у которого есть административные права. А если так, то дата запрета не должна же мешать отмене?

logist Подменю пользователя
сообщение 22.05.12, 17:46
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Я вот что подумал, а свойство модуля в котором располагается задание имеет все необходимые флажки? Сервер, Клиент(обычное), и т.п.?

Ну и вот есть еще такое решение как почистить кэш у всех пользователей (C:\Documents and Settings\<Имя_пользователя>\Local Settings\Application Data\1C\1Cv81 )


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 22.05.12, 18:36
Сообщение #13

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4550 раз
Рейтинг: 3678.1

Цитата(DrLivsi @ 22.05.12, 18:19) *
А если так, то дата запрета не должна же мешать отмене?

Для чистоті єксперимента - убрать дату запрета редактировании (возможно на копии)

Спасибо сказали: DrLivsi,

DrLivsi Подменю пользователя
сообщение 23.05.12, 21:43
Сообщение #14

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(logist @ 22.05.12, 18:46) *
Я вот что подумал, а свойство модуля в котором располагается задание имеет все необходимые флажки? Сервер, Клиент(обычное), и т.п.?


Да, флажки стоят все.

Цитата(logist @ 22.05.12, 18:46) *
Ну и вот есть еще такое решение как почистить кэш у всех пользователей (C:\Documents and Settings\<Имя_пользователя>\Local Settings\Application Data\1C\1Cv81 )

Кэш почистил, результата нет.

Цитата(Vofka @ 22.05.12, 19:36) *
Для чистоті єксперимента - убрать дату запрета редактировании (возможно на копии)


Дату убрал, ошибка та же: При подписке на событие произошла ошибка.


Какие еще есть идеи?

logist Подменю пользователя
сообщение 24.05.12, 7:53
Сообщение #15

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(DrLivsi @ 23.05.12, 22:43) *
Какие еще есть идеи?

Ну, таки, отладчиком пройтись. Иначе можно гадать бесконечно.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: DrLivsi,

DrLivsi Подменю пользователя
сообщение 24.05.12, 22:40
Сообщение #16

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(logist @ 24.05.12, 8:53) *
Ну, таки, отладчиком пройтись. Иначе можно гадать бесконечно.


Смотрел отладчиком, после строки ...ПолучитьОбъект(), выполняется код, который находится вне процедур в модуле документа.
Поместил этот код в #Если клиент тогда ... #КонецЕсли, и даже весь закомментировал, но ошибка не исчезла.
А в подписках не нашел события, которое вызывается методом ПолучитьОбъект().

DrLivsi Подменю пользователя
сообщение 31.05.12, 15:43
Сообщение #17

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Разобрался! Если кому интересно:
Подписка на событие вызывала функцию из общего модуля, и в строке:
Источник.Ответственный = глТекущийПользователь;

возникала ошибка, т.к. переменная глТекущийПользователь = Неопределено. Добавив перед строкой определение переменной
глТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;

все заработало.
Правда что-бы до этого дойти, пришлось создавать тестовую базу на SQL.

Всем спасибо за помощь!

Vofka Подменю пользователя
сообщение 31.05.12, 16:23
Сообщение #18

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13982
Из: Киев
Спасибо сказали: 4550 раз
Рейтинг: 3678.1

Интересней, как же всё же нашли это место?

DrLivsi Подменю пользователя
сообщение 31.05.12, 16:52
Сообщение #19

Завсегдатай
****
Группа: Пользователи
Сообщений: 148
Из: Киев
Спасибо сказали: 20 раз
Рейтинг: 0

Цитата(Vofka @ 31.05.12, 17:23) *
Интересней, как же всё же нашли это место?


Путем исключения.
Создал новую тестовую базу на SQL, убрал свой документ из всех подписок, запустил - работает. Дальше добавлял по-очереди в подписку и проверял нет ли ошибки, когда определил где ошибка, полез в обработчик и там уже добавил определение переменной глТекущийПользователь.

Правда одного не понял, почему код в обработчике выполняется если он находится в условии:
   Если Источник.ЭтоНовый() Тогда
     ....
      глТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;
     ....
    КонецЕсли;

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.09.24, 13:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!