|
v7: ОбработкаОжидания() и Таблица | ☑ | ||
---|---|---|---|---|
0
kupec
18.01.23
✎
09:54
|
Доброго дня. Ситуацию следующая....Есть обработка, при открытии запускается режим мониторинга, при выполнении определенных условий формируется таблица, сохраняется в html и отправляется адресату, таблица привязана к обработке. При ручной отправке данных, все отрабатывает на ура. При автоматическом режиме (срабатывание обработки) ругается на то, что файл "НазваниеТаблицы" не найден. Вылезает окошко, с кнопкой ОК, соответственно вся обработка встает. Куда посмотреть? Почему обработка не видит таблицу, которая хранится в файле ERT этой обработки? Именно при срабатывании ОбработкаОжидания()
|
|||
1
Bigbro
18.01.23
✎
10:34
|
<telepat mode on>
ну обработка ожидания у вас из глобальника работает, видимо и таблицу в общих таблицах ищет, если не прописано другое. <telepat mode off> |
|||
2
kupec
18.01.23
✎
10:36
|
Обработка ожидания в самой ERT
|
|||
3
Builder
18.01.23
✎
10:52
|
(2) Кусок кода покажи где таблицу вызываешь.
|
|||
4
kupec
18.01.23
✎
11:00
|
Функция ПроверкаЗакрытие()
ДатаНачало=ТекущаяДата()-30;ДатаКонец=ТекущаяДата(); Т=СоздатьОбъект("Таблица"); Т.ИсходнаяТаблица("ЗакрытиеСмены"); Т.ВывестиСекцию("Шапка");НПП=0; Док=СоздатьОбъект("Документ.ЗакрытиеСменыНаККМ"); Док.ВыбратьДокументы(ДатаНачало,ДатаКонец); Пока Док.ПолучитьДокумент()=1 Цикл Если Док.Проведен()=0 Тогда Продолжить; КонецЕсли; Если Док.ДатаДок<Дата("01.01.2023") Тогда Продолжить; КонецЕсли; Если Док.КартаККМ=Док.Банк Тогда Продолжить; КонецЕсли; НПП=НПП+1;Т.ВывестиСекцию("Строка"); КонецЦикла; Если НПП=0 Тогда Т.ВывестиСекцию("СтрокаОК"); КонецЕсли; Т.ТолькоПросмотр(1);Т.Опции(0,0,3,6); Т.ПараметрыСтраницы(1,,,,,,,,,1); ИмяФайла="C:\from1C7.7.pdf";УдалитьФайл(ИмяФайла); Т.Записать(КаталогВременныхФайлов()+"telo.html",2); Если Сохранить_В_ПДФ(1,Т,ИмяФайла)=0 Тогда УдалитьФайл(ИмяФайла);Возврат 6; КонецЕсли; Если ОтправитьПисьмо(ПолучитьАдресаДляОтправки(),ИмяФайла,"Статистика закрытий смен (эквайринг) "+ТекущаяДата())=0 Тогда Возврат 2; КонецЕсли; Возврат 1; КонецФункции |
|||
5
kupec
18.01.23
✎
11:01
|
Пордон, не то отправил
|
|||
6
kupec
18.01.23
✎
11:02
|
//создаем таблицу
Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ВозвратПоставщику"); Таб.ВывестиСекцию("Шапка"); ДокументВозврат.ВыбратьСтроки(); Пока ДокументВозврат.ПолучитьСтроку()=1 Цикл Таб.ВывестиСекцию("Строка"); КонецЦикла; Таб.ВывестиСекцию("Подвал"); //отправляем письмо Если ОтправитьПисьмо(ДокументВозврат,КаталогТемп+"\"+ИмяФайла+".xml",Таб)=0 Тогда Возврат; КонецЕсли; |
|||
7
Builder
18.01.23
✎
11:29
|
(6) Ну ХЗ, так вроде все норм.
Точно этот кусок кода в этой же обработке? Попробуй что ли вынести таблицу в файл, проверь как будет работать. |
|||
8
kupec
18.01.23
✎
11:30
|
(7) да точно все в этой обработке, руками же формируется по кнопке, а вот по автоматическому срабатыванию не хочет
|
|||
9
kupec
18.01.23
✎
11:31
|
Делал и через встроенную ОбработкуОжидания и через Формекс....
|
|||
10
Андрей_Андреич
naïve
18.01.23
✎
12:17
|
(9) Внешняя обработка? Из разряда маразма - не может обработкаожидания открывать другой ert (допустим с тем же именем но в другом каталоге)?
|
|||
11
kupec
18.01.23
✎
15:19
|
Обработка внешняя, файл открыть - открываю обработку. В ней обработкаожидания
|
|||
12
kupec
18.01.23
✎
15:20
|
Где там сказано про открытие обработкойожидания другого отчета? Сам придумал?
|
|||
13
Злопчинский
18.01.23
✎
15:53
|
сделай таблицу ТАБ внешним макетом - будет работать стопудово
или попробуй Таб объявить глобальной в обработке |
|||
14
kupec
19.01.23
✎
12:49
|
Пробую объявить переменную, по результату отпишусь
|
|||
15
Андрей_Андреич
naïve
19.01.23
✎
12:50
|
(14) И при открытии
Таб=СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ВозвратПоставщику"); |
|||
16
ЯнСмит
21.01.23
✎
13:43
|
А сформированная таблица перед отправкой сохраняется в файл, что я не увидел этого ...
|
|||
17
kupec
21.01.23
✎
16:53
|
(16) никуда не сохраняется, Таб.ИсходнаяТаблица("ВозвратПоставщику"); вот на этом моменте ругается
|
|||
18
kupec
21.01.23
✎
16:53
|
(13) добавил, не прокатило.....опять ругается
|
|||
19
Злопчинский
21.01.23
✎
18:23
|
(18) внешним макетом пробовал?
|
|||
20
Bigbro
23.01.23
✎
04:56
|
мало кода.
надо проверить на шуточки - скопировать имя таблицы. может кто-то веселый букву о на английскую поменял например. гадать можно долго. |
|||
21
Злопчинский
23.01.23
✎
07:46
|
(20) это известная трабла.
причина - хз. где-то теряется контекст обработки. почему-где - хз. это Ёпрст только внятно мог изложить. с внешним макетом - все норм работает. |
|||
22
Харлампий Дымба
23.01.23
✎
10:32
|
(21)+
Сам натыкался пару раз - решал просто создавая нужный макет в общих таблицах. В числе советов по исправлению, насколько я помню, были ещё ковыряния в меню Действия-Свойства формы. Но мне на помогло, так что заморачиваться не стал. |
|||
23
alyuev
23.01.23
✎
11:19
|
А если макет сделать внешним файлом?
|
|||
24
Djelf
23.01.23
✎
11:50
|
Объяснение бага в 30м посте от АЛьФ Таблица.ИсходнаяТаблица(...), Вызов из другого модуля.
|
|||
25
Bigbro
23.01.23
✎
11:55
|
(24) класс) век живи век учись)
|
|||
26
Злопчинский
23.01.23
✎
12:33
|
(23) я об этом давно посоветовал.
|
|||
27
Злопчинский
23.01.23
✎
12:38
|
(24) малость непонятно что имеет в виду альф под телом модуля. Код модуля после процедур или вообще весь модуль формы?
|
|||
28
Djelf
23.01.23
✎
12:43
|
(27) Не суть важно, главно что не работает ;)
Впрчем АЛьФ же доработал Твблица.ИсходнаяТаблица(Имя, [Путь]) Где в описании указано: "Если строка пути начинается не с 'MD.', то она воспринимается как путь к файлу внешнего отчета и исходная таблица ищется в этом файле. Необязательный параметр. По умолчанию - пустая строка." Не проверял. |
|||
29
Bigbro
23.01.23
✎
12:45
|
зато понятна схема.
- внизу модуля таблиц еще нет кроме глобальных - в ПриОткрытии() таблицы уже есть в запускаемой обработке та же схема. |
|||
30
Злопчинский
23.01.23
✎
12:52
|
(29) пофиг. совершенно нормальные обработки. Таб определялась в ПриОткрытии. Не пашет. Иногда. Как в (0).
|
|||
31
Bigbro
23.01.23
✎
12:54
|
сдаюсь. на такие грабли не наступал, всю жизнь таб определяю и формирую в самом конце когда все действия с базой завершены, остался вывод таблицы. наверное потому и не наступал)
|
|||
32
Злопчинский
23.01.23
✎
12:59
|
(31) Обходя грабли ms лишаешься бесценного опыта! ;-)
|
|||
33
kupec
24.01.23
✎
20:45
|
Я сделал так, при открытии
Т=СоздатьОбъект("Таблица"); Т.ИсходнаяТаблица("МояТаблица"); Т - переменная в текущей обработке. При формировании таблицы из процедуры делаю так Т.Очистить(); 2 дня, все работает |
|||
34
Злопчинский
24.01.23
✎
21:07
|
(33) ну так это я еще в (13) предлагал
|
|||
35
kupec
25.01.23
✎
11:58
|
(34) я переменную добавил, но все равно слетало. А вот когда в при открытии переделал создание объекта и позиционирование на выбранную таблицу с чисткой таблицы в процедуре стало работать. Выбор таблицы при открытии 1 раз.
|
|||
36
uno-group
25.01.23
✎
15:59
|
Зависит от того когда и откуда запускается обработка.
Если это вызвать внизу модуля //---------- Печать(); То будет ругаться так как формы еще физически не существует. Если сделать из При открытии то будет работать. Процедура ПриОткрытии() Печать(); КонецПроцедуры. |
|||
37
kupec
01.02.23
✎
11:36
|
это работает после открытия и создания формы. Не работает именно когда происходит срабатывание обработки ожидания
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |