Имя: Пароль:
1C
1С v8
Регламентное задание: завершено с ошибками
,
0 Ly_Alena
 
12.05.16
10:24
Доброе утро! Простое регламентное задание (перепроводить документ, если дата изменения в этом документе совпадает с текущей датой).

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗаказПокупателя.Ссылка КАК Регистратор
        |ИЗ
        |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
        |ГДЕ
        |    ЗаказПокупателя.ДатаИзмененияЗадолженности >= НАЧАЛОПЕРИОДА(&ТекущаяДата, ДЕНЬ)
        |    И ЗаказПокупателя.ДатаИзмененияЗадолженности <= КОНЕЦПЕРИОДА(&ТекущаяДата, ДЕНЬ)
        |
        |СГРУППИРОВАТЬ ПО
        |    ЗаказПокупателя.Ссылка";

    Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата());

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

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

Через СКД проверяла - обирает заказы. Видимо проблема с проведением. Подскажите что не так?
1 ДенисЧ
 
12.05.16
10:25
А что за ошибка-то?
2 mTema32
 
12.05.16
10:29
(1) На всякий скажу, текст ошибки можно посмотреть в журнале регистрации.
3 Dmitry77
 
12.05.16
10:35
это как через СКД документы перепроводить? научите...
вообще делается внешня обработка из нее запускается процедура вызываемая из регламента...
4 Ly_Alena
 
12.05.16
10:42
(3)через скд проверила отбирает ли документы
5 ДенисЧ
 
12.05.16
10:43
6 Azverin
 
12.05.16
10:48
(0) подозреваю, что надо указать второй параметр метода Записать(,), иначе кто на сервере скажет оперативный или неоперативный режим)
7 Ly_Alena
 
12.05.16
10:50
(2) спасибо за эту подсказку! Почему-то попадает в заполнение на основании документа и ругается что не определена табличная часть. Буду смотреть! Спасибо - не знала где ошибку смотреть
8 Ly_Alena
 
12.05.16
10:57
(3) да через консоль заданий и смотрела - только там ошибка не отображается.
9 Dmitry77
 
12.05.16
11:03
(8)отладкой заниматься удобнее из обработки... Как отладишь запускаешьрегламентное задание.
10 mTema32
 
12.05.16
11:09
(7) Ну вот. В каком-то доке значит ошибка. чего-то незаполнено.
11 Ly_Alena
 
12.05.16
12:30
(10) Вопрос только почему при проведении документа он идет в процедуру ЗаполнитьПоДокументуОснованию???
12 Ly_Alena
 
12.05.16
12:32
Или при получении объекта... все равно вопрос при чем тут процедура заполнения
13 aleks_default
 
12.05.16
12:43
(11) Проверь обработчики событий записи и проведения, где-то, видимо, эта процедура вызывается...
Зайди в модуль объекта и задай поиск по тексту
14 Ly_Alena
 
12.05.16
12:45
(13) проведение документа, если не из под реглментного работает нормально - таких проблем не возникало. В одном месте использована глобальная переменная, значение которой устанавливается в документе, на основании которого заполняется табличная часть
15 Ly_Alena
 
12.05.16
13:00
Ладно, это все разглагольствование. Спасибо за подсказки. Пошла в отладку
16 lodger
 
12.05.16
13:01
(15) Записать() в попытке делайте, чтобы задание не останавливалось.
17 Azverin
 
12.05.16
13:37
+(16) а раз условие в сабже "перепроводить документ", то в запрос добавить условие:
|    И ЗаказПокупателя.Проведен
18 Ly_Alena
 
13.05.16
06:32
Продоложение следует...
Через обработку:


Процедура КнопкаВыполнитьНажатие(Кнопка)    
    МодульРегламентныхЗаданий.ПерепроведениеЗаказаПокупателя();
    
КонецПроцедуры

Все работает, перепроводит. А регламентное выдает все ту же ошибку:
"{Документ.ЗаказПокупателя.МодульОбъекта(3113,36)}: Переменная не определена (ГлТекТабЧасть)
по причине:
{Документ.ЗаказПокупателя.МодульОбъекта(3113,36)}: Переменная не определена (ГлТекТабЧасть)"

ГлТекТабЧасть - глобальная переменная, значение которой устанавливается в Документе 1. Когда на основании Документа 1 создается Заказ покупателя из ГлТекТабЧасть заполняется табличная часть. Логично, что если просто получать объект Заказ покупателя эта переменная не определена.
Как я уже говорила она используется только в одном месте в процедуре при заполнении. Кто-нибудь с таким сталкивался и что делать?
19 Мимохожий Однако
 
13.05.16
06:37
Покажи как и в каком модуле устанавливается значение ГлТекТабЧасть. Какая конфигурация,платформа? Видимо, отладчиком так и не встала на место с ошибкой.
20 Ly_Alena
 
13.05.16
06:53
Отладкой не попадает туда.
Документе 1 есть 5 табличных частей. в зависимости от того, какая табличная часть активна в ГлТекТабЧасть она и устанавливается.
Например,
Если ЭлементыФормы.АльтернативныеТЦ.ТекущаяСтраница = ЭлементыФормы.АльтернативныеТЦ.Страницы.ТЦО Тогда
        ГлТекТабЧасть=ЭлементыФормы.Товары.Значение;

При открытии в этом же документе устанавливается
ГлТекТабЧасть=ЭлементыФормы.Товары.Значение;

При заполнении на основании этого документа в заказе покупателя:
Для Каждого ТекСтрокаТовары Из ГлТекТабЧасть Цикл
            НоваяСтрока = Товары.Добавить();
УПП, 8.2
21 ALFkz
 
13.05.16
07:00
У тебя это переменная заполняется в модуле обычного приложения, если да то скорей всего это переменная заполняется при заходе через пользователь. проверь где заполняется.
22 hhhh
 
13.05.16
07:03
(20) зачем вы что-то заполняете при проведении? Оно всё равно не заполнится.
23 Ly_Alena
 
13.05.16
07:11
(22) я ничего не заполняю при проведении в том-то и дело. Выше все было сказано. Ошибку показывает на переменную, которая в заказе покупателе используется только в одном месте - при заполнении.
24 Ly_Alena
 
13.05.16
07:13
(21) в модуле обычного приложения
Перем ГлТекТабЧасть Экспорт;
в Документе 1 - заполняется. в заказе покупателя из него заполняется табличная часть.
Но ведь документы проводятся, и через обработку проводятся...
25 ИС-2
 
naïve
13.05.16
07:15
(22) +1. Нет смысла в коде. Надо найти фрагемент кода где используется эта ГлТекТабЧасть и окаймить ее конструкцией (т.е будет виден код только на клиенте)

#Если Клиент тогда

#КонецЕсли

(24) Сервер не видит глобальные переменные.  Они только для клиента, внеш. соединения.

Логика системы построена не правильно. Чтобы работало надо переделывать на регистр.

А если времени нет, то перепроведение можно повестить на планировщик задач
26 Ly_Alena
 
13.05.16
07:20
(25) На регистр недолго переделать. Спасибо!
27 Ly_Alena
 
13.05.16
07:24
(25) Спасибо!!!! Все работает!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн