|
УФ. Как получить доступ к объекту в модуле объекта. | ☑ | ||
---|---|---|---|---|
0
Полька
14.11.18
✎
15:24
|
Разбираюсь с УФ и регламентными операциями.
Есть обработка. УФ. В реквизитах есть собственно ОБЪЕКТ, к которому из модуля формы есть доступ. Это ясно. Можно ли получить к нему доступ из модуля объекта? Собственно, нужно только структуру получить. |
|||
1
ДенисЧ
14.11.18
✎
15:26
|
ЭтотОбъект?
РеквизитФормыВЗначение() ? |
|||
2
AlvlSpb
14.11.18
✎
15:27
|
(0) Вы смеетесь? Откуда ж еще проще получать доступ к Объекту как не из его же модуля?
|
|||
3
Сияющий в темноте
14.11.18
✎
15:58
|
В модуле обьекта доступны все поля(реквизиты)обьекта,получить доступ к обьекту можно только для передаяи его куда то наружу.
|
|||
4
Полька
14.11.18
✎
16:01
|
в модуле формы есть такое выражение:
ОбъектДляСервера = РеквизитФормыВЗначение("Объект") перетаскиваю в модуль объекта - ругается на РеквизитФормыВЗначение. "Процедура или функция с указанным именем не определена" |
|||
5
segn
14.11.18
✎
16:05
|
(4) Нахуа это перетаскивать в модуль объекта.
|
|||
6
SeiOkami
14.11.18
✎
16:08
|
(4), в модуле объекта нет такого метода. Он есть только на форме.
В модуле объекта уже есть ЭтотОбъект. С ним и работайте |
|||
7
Полька
14.11.18
✎
16:11
|
(5) нужно из обработки сделать работающую в фоновом режиме.
|
|||
8
Полька
14.11.18
✎
16:20
|
вот эти строки из модуля формы нужно, чтобы выполнились в модуле объекта
ОбъектДляСервера = РеквизитФормыВЗначение("Объект"); ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект); ОбъектДляСервера.ВыполнитьЗагрузку(); |
|||
9
AlvlSpb
14.11.18
✎
16:50
|
(8) объясни толком какая задача стоит? Потому что это
ОбъектДляСервера = РеквизитФормыВЗначение("Объект"); ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект); масло масляное. Получаешь объект и заполняешь его самим собою |
|||
10
singlych
14.11.18
✎
16:50
|
(8) ВыполнитьЗагрузку()
так напиши в модуле |
|||
11
Полька
15.11.18
✎
09:13
|
(9) нужно из стандартной обработки V8Exchan83 сделать регламентное задание по загрузке данных в 1C:Документооборот из .xml файла
Иду по самому простому пути- перенесла нужные процедуры из модуля формы в модуль объекта и пытаюсь их "причесать" |
|||
12
AlvlSpb
15.11.18
✎
09:41
|
(11) ОбъектДляСервера = РеквизитФормыВЗначение("Объект")
Это в модуле формы получает Объект, в котором находишься. В модуле ОБЪЕКТА этого делать не надо. Вы уже в Объекте. Просто ЭтотОбъект.ВыполнитьЗагрузку() |
|||
13
ildary
15.11.18
✎
10:21
|
(7) Вы путаетесь в показаниях - в шапке у Вас вопрос по модулю объекта, а в (7) - фоновое задание.
|
|||
14
catena
15.11.18
✎
10:40
|
(13) А вы умеете делать фоновое из других частей обработок?
|
|||
15
Полька
16.11.18
✎
14:28
|
Эпопея продолжается.
(12) спасибо. ругаться перестало :))) и только :) Регламентная операция отрабатывает, но результата нет. В Журнале регламентных заданий пишет, что задание выполнено. В журнале регистрации вот записи по очереди: .............. Фоновое задание. Дополнительные отчеты и обработки. Команда ОткрытьОбработку: Запуск. Дополнительные отчеты и обработки. Подключение, БезопасныйРежим = "Нет". Фоновое задание. Запуск Дополнительные отчеты и обработки. Команда ОткрытьОбработку: Завершение. Сеанс. Завершение Фоновое задание. Успешное завершение Сеанс. Завершение Фоновое задание. Отмена Фоновое задание. Запуск Сеанс. Завершение Фоновое задание. Успешное завершение ............................... Не понимаю- почему запуск несколько раз. И почему отмена свершилась. И почему тогда- "успешное завершение" |
|||
16
Полька
16.11.18
✎
14:28
|
Запускала из Журнала регламентных вручную.
|
|||
17
palsergeich
16.11.18
✎
14:30
|
(15) Успешное завершение - всего лишь означает что нет необработанных исключений и не гарантирует того что задание завершилось действительно успешно)
|
|||
18
Полька
16.11.18
✎
15:03
|
...
|
|||
19
Бубка Гоп
16.11.18
✎
15:18
|
(15) Отладка в помощь
|
|||
20
ZDenis
16.11.18
✎
15:24
|
(18) А что делает эта обработка? может там в интерактивном виде реквизиты есть, а фоновое задание то про них не знает.
|
|||
21
Полька
16.11.18
✎
15:41
|
(20) нужно из стандартной обработки V8Exchan83 сделать регламентное задание по загрузке данных в 1C:Документооборот из .xml файла
Иду по самому простому пути- перенесла нужные процедуры из модуля формы в модуль объекта. |
|||
22
Бубка Гоп
16.11.18
✎
15:54
|
(21) возьми УниверсальныйОбменДаннымиXML из любой типовой, там в модуле все есть, зачем из формы то лепить?
|
|||
23
Бубка Гоп
16.11.18
✎
16:03
|
(21) давай я погуглю за тебя
http://catalog.mista.ru/public/86109/ |
|||
24
Полька
19.11.18
✎
09:37
|
В общем, так.
Делаю в ручном режиме. В модуле формы: &НаКлиенте Процедура ВыполнитьЗагрузку(Команда) Объект.ИмяФайлаОбмена = "\\трам-пам-пам.xml"; Объект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА; Объект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА; Объект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА; Объект.ОптимизированнаяЗаписьОбъектов=ИСТИНА; Объект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА; Объект.РежимОбмена="Загрузка"; ВыполнитьЗагрузкуНаСервере1(); КонецПроцедуры &НаСервере Процедура ВыполнитьЗагрузкуНаСервере1() ОбъектДляСервера = РеквизитФормыВЗначение("Объект"); ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект); ОбъектДляСервера.ВыполнитьЗагрузку(); КонецПроцедуры загружается ........................................... делаю в фоновом. в модуле объекта: ЭтотОбъект.ИмяФайлаОбмена = "трам-пам-пам.xml"; ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА; ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА; ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА; ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА; ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА; ЭтотОбъект.РежимОбмена="Загрузка"; ЭтотОбъект.ВыполнитьЗагрузку(); не загружается |
|||
25
catena
19.11.18
✎
10:11
|
(24)"не загружается" - это не симптом. Ищите ошибку, недостаточность выборки данных, на чем стопорится, чего не хватает.
ЭтотОбъект.ВыполнитьЗагрузку(); Что это? |
|||
26
Полька
19.11.18
✎
10:24
|
(25) а то я не понимаю, что где-то что-то не взлетает и надо искать:)))))
поскольку делаю все в 1 раз: и УФ вижу, и конфигурацию Документооборот и фоновые задания то и пытаюсь разобраться. "не загружается"- именно симптом, ибо явных ошибок нет, файл выгрузки нормален, что подтверждает загрузка вручную. А как понять- чего не хватает? |
|||
27
Полька
19.11.18
✎
10:27
|
в Журнале регистрации выходит
Фоновое задание. Отмена Вот как понять- почему это выходит? |
|||
28
Новиков
19.11.18
✎
10:30
|
(27) ты умеешь отлаживать фоновые задания? Отладка - подключение - автоматическое подключение - поставь все галки. Затем поставь точку останова в точке входа - и иди пошагам пока не улетишь в ошибку, если она есть. И твои вопросы отпадут.
|
|||
29
Полька
19.11.18
✎
10:48
|
(28) не умею.
Поставила галки. Открыла базу в режиме отладки. Поставила точку останова в процедуре ВыполнитьКоманду(ИдентификаторКоманды) не останавливается |
|||
30
Полька
19.11.18
✎
13:12
|
...
|
|||
31
Полька
19.11.18
✎
13:34
|
Ребят, ну как отладку наладить? Подскажите, плиз.
|
|||
32
Полька
19.11.18
✎
13:46
|
Вообще извратилась :))))
Из модуля формы вызвала процедуру модуля объекта ВыполнитьКоманду(). Запустила вручную. Все загрузилось. А в фоновом не загружается. Значит, проблема не в коде. |
|||
33
Fuas4
19.11.18
✎
14:41
|
(32) В коде. В фоне что-то такое используете, чего нет в фоне. Обращение к текущему пользователю, например. По идее, в списке рег заданий должна ошибка выводиться
|
|||
34
Полька
19.11.18
✎
14:52
|
(33) Обращения нет. Ошибка не выводится. Выводится: "Задание выполнено".
Может, я фоновое где-то не правильно настроила? Первый раз же. |
|||
35
Полька
19.11.18
✎
14:55
|
В Доп.отчетах и обработках добавила обработку.
Загрузила ее из внешнего файла. Настроила расписание на 1 раз в день. Но пока запускаю из журнала "Регламентные и фоновые задания" кнопкой "Выполнить сейчас" |
|||
36
Fuas4
19.11.18
✎
15:45
|
(34) надо отладчиком смотреть. Если не получается отладчиком, надо запись в текстовый файл делать и там смотреть что происходит. М.б. там все задание внутри попытки, тогда не будет ошибок в выполнении рег задания. Оно попыталось, у него не получилось, все ок, оно молодец
|
|||
37
Fuas4
19.11.18
✎
15:45
|
(35) Фоновое правильно настроено
|
|||
38
dezss
19.11.18
✎
15:54
|
покажи что у тебя в
Функция СведенияОВнешнейОбработке() Экспорт написано. |
|||
39
Полька
19.11.18
✎
16:01
|
(38)
Функция СведенияОВнешнейОбработке() Экспорт ДанныеДляРег = Новый Структура(); ДанныеДляРег.Вставить("Наименование", "Загрузка из УПП в ДОК"); ДанныеДляРег.Вставить("БезопасныйРежим", ЛОЖЬ); ДанныеДляРег.Вставить("Версия", "ver.: 1.001"); ДанныеДляРег.Вставить("Информация", "Загрузка из УПП в ДОК справочников Должности, СтруктураПредприятия и Сторудники"); ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка"); ТабЗнКоманды = Новый ТаблицаЗначений; ТабЗнКоманды.Колонки.Добавить("Идентификатор"); ТабЗнКоманды.Колонки.Добавить("Использование"); ТабЗнКоманды.Колонки.Добавить("Представление"); НовСтрока = ТабЗнКоманды.Добавить(); НовСтрока.Идентификатор = "ОткрытьОбработку"; //НовСтрока.Использование = "ОткрытиеФормы"; НовСтрока.Использование = "ВызовСерверногоМетода"; НовСтрока.Представление = "Открыть обработку"; ДанныеДляРег.Вставить("Команды", ТабЗнКоманды); Возврат ДанныеДляРег; |
|||
40
Deon
19.11.18
✎
16:02
|
А поясните мне глубинный смысл этой конструкции:
ОбъектДляСервера = РеквизитФормыВЗначение("Объект"); ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект); |
|||
41
Полька
19.11.18
✎
16:03
|
(40) это вопрос к создателям обработки V8Exchan83 :)
|
|||
42
Deon
19.11.18
✎
16:12
|
Кстати, если отладка не работает, понапихай в код ЗаписьЖурналаРегистрации(), да смотри, до куда доходит
|
|||
43
Полька
19.11.18
✎
16:13
|
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
ЗаписьЖурналаРегистрации("Соединение с базой",,,,СтрокаСоединенияИнформационнойБазы()); ЭтотОбъект.ИмяФайлаПравилОбмена = "\\SRV1C83\Store\Обмен\Правила выгрузки УПП ДОК.xml"; ЭтотОбъект.ИмяФайлаОбмена = "\\SRV1C83\Store\Обмен\Выгрузка УПП ДОК ПредпДолж.xml"; ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА; ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА; ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА; ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА; ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА; ЭтотОбъект.РежимОбмена="Загрузка"; ЭтотОбъект.ВыполнитьЗагрузку(); КонецПроцедуры Собственно, вот и все. |
|||
44
dezss
19.11.18
✎
16:14
|
(43) вот только хотел спросить про то, есть ли экспортная ВыполнитьКоманду)))
|
|||
45
Полька
19.11.18
✎
16:17
|
(44) с Функция СведенияОВнешнейОбработке() Экспорт нормально?
|
|||
46
dezss
19.11.18
✎
16:20
|
(45) ну я там, собственно, хотел увидеть, чем заполняется
НовСтрока.Использование = "ВызовСерверногоМетода"; И когда увидел ВызовСерверногоМетода, то и подумал про ВыполнитьКоманду. |
|||
47
Полька
19.11.18
✎
16:25
|
(42) поставила.
похоже, что проходит по процедуре. только загрузку не выполняет. |
|||
48
dezss
19.11.18
✎
16:29
|
(47) добавь еще после
ЭтотОбъект.ВыполнитьЗагрузку(); |
|||
49
dezss
19.11.18
✎
16:33
|
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
|
|||
50
Deon
19.11.18
✎
17:10
|
(47) А у пользователя, под которым агент сервера запущен, есть права на каталоги, в которых файлики лежат?
|
|||
51
Полька
20.11.18
✎
09:27
|
Продолжаю бодаться :))))
(48) делала. в журнале выводит 2 записи, те, что ставила ДО ЭтотОбъект.ВыполнитьЗагрузку(); И ПОСЛЕ между ними ничего не пишет в журнал. (49) а в качестве параметров что? (50) есть. и в ручном режиме отрабатывает из под этого пользователя и промежуточный файл записывала в этот каталог. |
|||
52
catena
20.11.18
✎
09:32
|
(51)Гениально. Это и так было понятно, что будет две записи. Для отладки нужно залезть внутрь процедуры и навтыкать там в стратегических местах. Анализировать, до какого момента исполняется.
|
|||
53
Полька
20.11.18
✎
09:45
|
(52) вся процедура
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт ЭтотОбъект.ИмяФайлаПравилОбмена = "\\SRV1C83\Store\Обмен\Правила выгрузки УПП ДОК.xml"; ЭтотОбъект.ИмяФайлаОбмена = "\\SRV1C83\Store\Обмен\Выгрузка УПП ДОК ПредпДолж.xml"; ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА; ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА; ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА; ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА; ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА; ЭтотОбъект.РежимОбмена="Загрузка"; ЭтотОбъект.ВыполнитьЗагрузку(); КонецПроцедуры стратегическое место одно :)))) |
|||
54
dezss
20.11.18
✎
09:53
|
(51) >>(49) а в качестве параметров что?
Ну просто для вызова серверного метода написано, что должны быть такие параметры у процедуры. Что будет, если одного из них, я хз. Один параметр вообще для вызова клиентского метода. |
|||
55
Полька
20.11.18
✎
09:56
|
(54) если ставить Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
то что-то нужно передать в ПараметрыВыполненияКоманды. |
|||
56
Мимохожий Однако
20.11.18
✎
10:02
|
(53) В процедуру ВыполнитьЗагрузку() попадаешь отладчиком?
|
|||
57
DrWatson
20.11.18
✎
10:09
|
(53) не одно. ЭтотОбъект.ВыполнитьЗагрузку() - это же целая процедура там много чего делается.
Ох, лучше всё-таки поработать в направлении отладки фонового задания. |
|||
58
Полька
20.11.18
✎
10:13
|
(56) (57) Тогда что нужно для отладки фонового?
Служба на сервере с ключом debug загружена. Отладка-Подключение-Автоматическое подключение- "галки" поставила. Точки останова поставила. Запускаю регламентное- останова нет. |
|||
59
DrWatson
20.11.18
✎
10:21
|
Помню с отладкой регламентных был один тонкий момент - строка имена базы и сервера при запуске твоего конфигуратора должны совпадать со строкой запуска сервера с точностью до регистра букв.
Проверяется так: Выполнить СтрокаСоединенияИнформационнойБазы в фоновом, записать результат в журнал регистрации. Там посмотреть и сверить что у тебя написано в списке баз. Может это и и справили, но проверить стоит. |
|||
60
Полька
20.11.18
✎
10:22
|
(59) совпадает. проверяла
|
|||
61
dezss
20.11.18
✎
10:24
|
(55) ну ты же не передаешь ИдентификаторКоманды, параметры тоже не передавай...
я просто не проверял, важно ли совпадение по количеству параметров. |
|||
62
Полька
20.11.18
✎
10:26
|
(61) если не передаю, то в ОбщемМодуле вываливается на ошибку. Потому что там
Если ПараметрыКоманды = Неопределено Тогда ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды); Иначе ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды); КонецЕсли; |
|||
63
ZDenis
20.11.18
✎
10:31
|
(62) Не совсем понимаю как вы собираетесь отлаживать внешнюю подключенную обработку. Куда вы там точки останова то ставите?
Я бы предложил сделать заведомо ошибку через Попытка Исключение и поставить галочку "остановка по ошибке". И вот тогда уже попасть в этот исполняемый модуль. |
|||
64
DrWatson
20.11.18
✎
10:32
|
(60) Ну, что ещё там может быть?
debug ведь напрямую в реестр прописывали? Службу после этого надо перезапускать. Брандмауэр, наверняка, может блокировать. При первом запуске конфигуратора с новым релизом он спрашивает, я всегда разрешаю. Больше не знаю, у меня просто работало. Разве что только какая нибудь путаница со службами, портами, если их несколько. А обычная-то серверная отладка работает? |
|||
65
DrWatson
20.11.18
✎
10:34
|
+(63) Кстати, да. Работает или нет отладка фоновых нужно проверять точкой останова на коде фонового, а не внешней обработки.
|
|||
66
Полька
20.11.18
✎
10:35
|
(63) у меня и внешняя есть. и встроила уже в конфигурацию.
|
|||
67
Полька
20.11.18
✎
10:36
|
(64) это сисадмины делали. клянутся, что сделали :) службу перезапускали еще вчера.
|
|||
68
ZDenis
20.11.18
✎
10:41
|
(66) Попробуй настроить без обращения к объекту, т.е. без ЭтотОбъект....
Прописать в ВыполнитьЗагрузку() напрямую необходимые переменные |
|||
69
ZDenis
20.11.18
✎
10:43
|
Ну и попробуй все таки (63), чтобы точно в модуль попасть
|
|||
70
Полька
20.11.18
✎
10:45
|
Запустила обработку в ручном режиме с отладкой. В процедуре
&НаКлиенте останавливается. &НаСервере - нет |
|||
71
ZDenis
20.11.18
✎
10:50
|
(70) значит соврамши админы, не перезапустили с debug
|
|||
72
catena
20.11.18
✎
10:55
|
(71)Или не прописали. Или прописали, но не там.
|
|||
73
Полька
20.11.18
✎
10:57
|
(71) (72) если писан, то не понят, если понят, то не так......:))))
пошла отлавливать их :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |