Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

УФ. Как получить доступ к объекту в модуле объекта.

УФ. Как получить доступ к объекту в модуле объекта.
Я
   Полька
 
14.11.18 - 15:24
Разбираюсь с УФ и регламентными операциями.
Есть обработка. УФ. В реквизитах есть собственно ОБЪЕКТ, к которому из модуля формы есть доступ. Это ясно.
Можно ли получить к нему доступ из модуля объекта? Собственно, нужно только структуру получить.
 
 
   ДенисЧ
 
1 - 14.11.18 - 15:26
ЭтотОбъект?
РеквизитФормыВЗначение() ?
   AlvlSpb
 
2 - 14.11.18 - 15:27
(0) Вы смеетесь? Откуда ж еще проще получать доступ к Объекту как не из его же модуля?
   Сияющий в темноте
 
3 - 14.11.18 - 15:58
В модуле обьекта доступны все поля(реквизиты)обьекта,получить доступ к обьекту можно только для передаяи его куда то наружу.
   Полька
 
4 - 14.11.18 - 16:01
в модуле формы есть такое выражение:
ОбъектДляСервера = РеквизитФормыВЗначение("Объект")
перетаскиваю в модуль объекта - ругается на РеквизитФормыВЗначение. "Процедура или функция с указанным именем не определена"
   segn
 
5 - 14.11.18 - 16:05
(4) Нахуа это перетаскивать в модуль объекта.
   SeiOkami
 
6 - 14.11.18 - 16:08
(4), в модуле объекта нет такого метода. Он есть только на форме.

В модуле объекта уже есть ЭтотОбъект. С ним и работайте
   Полька
 
7 - 14.11.18 - 16:11
(5) нужно из обработки сделать работающую в фоновом режиме.
   Полька
 
8 - 14.11.18 - 16:20
вот эти строки из модуля формы нужно, чтобы выполнились в модуле объекта
ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);                    
ОбъектДляСервера.ВыполнитьЗагрузку();
   AlvlSpb
 
9 - 14.11.18 - 16:50
(8) объясни толком какая задача стоит? Потому что это
ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);
масло масляное.  Получаешь объект и заполняешь его самим собою
   singlych
 
10 - 14.11.18 - 16:50
(8) ВыполнитьЗагрузку()
так напиши в модуле
 
 Рекламное место пустует
   Полька
 
11 - 15.11.18 - 09:13
(9) нужно из стандартной обработки V8Exchan83 сделать регламентное задание по загрузке данных в 1C:Документооборот из .xml файла
Иду по самому простому пути- перенесла нужные процедуры из модуля формы в модуль объекта и пытаюсь их "причесать"
   AlvlSpb
 
12 - 15.11.18 - 09:41
(11) ОбъектДляСервера = РеквизитФормыВЗначение("Объект")
Это в модуле формы получает Объект, в котором находишься. В модуле ОБЪЕКТА этого делать не надо. Вы уже в Объекте. Просто ЭтотОбъект.ВыполнитьЗагрузку()
   ildary
 
13 - 15.11.18 - 10:21
(7) Вы путаетесь в показаниях - в шапке у Вас вопрос по модулю объекта, а в (7) - фоновое задание.
   catena
 
14 - 15.11.18 - 10:40
(13) А вы умеете делать фоновое из других частей обработок?
   Полька
 
15 - 16.11.18 - 14:28
Эпопея продолжается.
(12) спасибо. ругаться перестало :)))
 и только :)
Регламентная операция отрабатывает, но результата нет.
В Журнале регламентных заданий пишет, что задание выполнено. В журнале регистрации вот записи по очереди:
..............
Фоновое задание.
Дополнительные отчеты и обработки. Команда ОткрытьОбработку: Запуск.
Дополнительные отчеты и обработки. Подключение, БезопасныйРежим = "Нет".
Фоновое задание. Запуск
Дополнительные отчеты и обработки. Команда ОткрытьОбработку: Завершение.
Сеанс. Завершение
Фоновое задание. Успешное завершение
Сеанс. Завершение
Фоновое задание. Отмена
Фоновое задание. Запуск
Сеанс. Завершение
Фоновое задание. Успешное завершение
...............................
Не понимаю- почему запуск несколько раз. И почему отмена свершилась. И почему тогда- "успешное завершение"
   Полька
 
16 - 16.11.18 - 14:28
Запускала из Журнала регламентных вручную.
   palsergeich
 
17 - 16.11.18 - 14:30
(15) Успешное завершение - всего лишь означает что нет необработанных исключений и не гарантирует того что задание завершилось действительно успешно)
   Полька
 
18 - 16.11.18 - 15:03
...
   Бубка Гоп
 
19 - 16.11.18 - 15:18
(15) Отладка в помощь
   ZDenis
 
20 - 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";
    ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА;
    ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА;
    ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА;
    ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА;
    ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА;
    ЭтотОбъект.РежимОбмена="Загрузка";

    ЭтотОбъект.ВыполнитьЗагрузку();      

не загружается
   catena
 
25 - 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
Вообще извратилась :))))
Из модуля формы вызвала процедуру модуля объекта ВыполнитьКоманду(). 
Запустила вручную.
Все загрузилось.
А в фоновом не загружается. Значит, проблема не в коде.
   Fuas4
 
33 - 19.11.18 - 14:41
(32) В коде. В фоне что-то такое используете, чего нет в фоне. Обращение к текущему пользователю, например. По идее, в списке рег заданий должна ошибка выводиться
 
 
   Полька
 
34 - 19.11.18 - 14:52
(33) Обращения нет. Ошибка не выводится. Выводится: "Задание выполнено".
Может, я фоновое где-то не правильно настроила? Первый раз же.
   Полька
 
35 - 19.11.18 - 14:55
В Доп.отчетах и обработках добавила обработку.
Загрузила ее из внешнего файла.
Настроила расписание на 1 раз в день.
Но пока запускаю из журнала "Регламентные и фоновые задания" кнопкой "Выполнить сейчас"
   Fuas4
 
36 - 19.11.18 - 15:45
(34) надо отладчиком смотреть. Если не получается отладчиком, надо запись в текстовый файл делать и там смотреть что происходит. М.б. там все задание внутри попытки, тогда не будет ошибок в выполнении рег задания. Оно попыталось, у него не получилось, все ок, оно молодец
   Fuas4
 
37 - 19.11.18 - 15:45
(35) Фоновое правильно настроено
   dezss
 
38 - 19.11.18 - 15:54
покажи что у тебя в 

Функция СведенияОВнешнейОбработке() Экспорт

написано.
   Полька
 
39 - 19.11.18 - 16:01
(38)
Функция СведенияОВнешнейОбработке() Экспорт

ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить("Наименование", "Загрузка из УПП в ДОК");
ДанныеДляРег.Вставить("БезопасныйРежим", ЛОЖЬ);
ДанныеДляРег.Вставить("Версия", "ver.: 1.001");
ДанныеДляРег.Вставить("Информация", "Загрузка из УПП в ДОК справочников Должности, СтруктураПредприятия и Сторудники");
ДанныеДляРег.Вставить("Вид", "ДополнительнаяОбработка");

ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить("Идентификатор");
ТабЗнКоманды.Колонки.Добавить("Использование");
ТабЗнКоманды.Колонки.Добавить("Представление");

НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = "ОткрытьОбработку";
//НовСтрока.Использование = "ОткрытиеФормы";

НовСтрока.Использование = "ВызовСерверногоМетода";
НовСтрока.Представление = "Открыть обработку";
ДанныеДляРег.Вставить("Команды", ТабЗнКоманды);

Возврат ДанныеДляРег;
   Deon
 
40 - 19.11.18 - 16:02
А поясните мне глубинный смысл этой конструкции:
    ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
    ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);
   Полька
 
41 - 19.11.18 - 16:03
(40) это вопрос к создателям обработки V8Exchan83 :)
   Deon
 
42 - 19.11.18 - 16:12
Кстати, если отладка не работает, понапихай в код ЗаписьЖурналаРегистрации(), да смотри, до куда доходит
   Полька
 
43 - 19.11.18 - 16:13
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт

 ЗаписьЖурналаРегистрации("Соединение с базой",,,,СтрокаСоединенияИнформационнойБазы());
        
         
    ЭтотОбъект.ИмяФайлаПравилОбмена = "\\SRV1C83\Store\Обмен\Правила выгрузки УПП ДОК.xml";
    ЭтотОбъект.ИмяФайлаОбмена = "\\SRV1C83\Store\Обмен\Выгрузка УПП ДОК ПредпДолж.xml";
    ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА;
    ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА;
    ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА;
    ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА;
    ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА;
    ЭтотОбъект.РежимОбмена="Загрузка";

    ЭтотОбъект.ВыполнитьЗагрузку();         
    
                                                                     
КонецПроцедуры

Собственно, вот и все.
   dezss
 
44 - 19.11.18 - 16:14
(43) вот только хотел спросить про то, есть ли экспортная ВыполнитьКоманду)))
   Полька
 
45 - 19.11.18 - 16:17
(44) с Функция СведенияОВнешнейОбработке() Экспорт нормально?
   dezss
 
46 - 19.11.18 - 16:20
(45) ну я там, собственно, хотел увидеть, чем заполняется
НовСтрока.Использование = "ВызовСерверногоМетода";

И когда увидел ВызовСерверногоМетода, то и подумал про ВыполнитьКоманду.
   Полька
 
47 - 19.11.18 - 16:25
(42) поставила.
похоже, что проходит по процедуре. только загрузку не выполняет.
   dezss
 
48 - 19.11.18 - 16:29
(47) добавь еще после
    ЭтотОбъект.ВыполнитьЗагрузку();
   dezss
 
49 - 19.11.18 - 16:33
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
 
 Рекламное место пустует
   Deon
 
50 - 19.11.18 - 17:10
(47) А у пользователя, под которым агент сервера запущен, есть права на каталоги, в которых файлики лежат?
   Полька
 
51 - 20.11.18 - 09:27
Продолжаю бодаться :)))) 
(48) делала. в журнале выводит 2 записи, те, что ставила 
ДО  ЭтотОбъект.ВыполнитьЗагрузку(); И ПОСЛЕ
между ними ничего не пишет в журнал.
(49) а в качестве параметров что?
(50) есть. и в ручном режиме отрабатывает из под этого пользователя и промежуточный файл записывала в этот каталог.
   catena
 
52 - 20.11.18 - 09:32
(51)Гениально. Это и так было понятно, что будет две записи. Для отладки нужно залезть внутрь процедуры и навтыкать там в стратегических местах. Анализировать, до какого момента исполняется.
   Полька
 
53 - 20.11.18 - 09:45
(52) вся процедура
Процедура ВыполнитьКоманду(ИдентификаторКоманды) Экспорт
    
    ЭтотОбъект.ИмяФайлаПравилОбмена = "\\SRV1C83\Store\Обмен\Правила выгрузки УПП ДОК.xml";
    ЭтотОбъект.ИмяФайлаОбмена = "\\SRV1C83\Store\Обмен\Выгрузка УПП ДОК ПредпДолж.xml";
    ЭтотОбъект.ЗагружатьДанныеВРежимеОбмена=ИСТИНА;
    ЭтотОбъект.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты=ИСТИНА;
    ЭтотОбъект.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления=ИСТИНА;
    ЭтотОбъект.ОптимизированнаяЗаписьОбъектов=ИСТИНА;
    ЭтотОбъект.ЗаписыватьРегистрыНаборамиЗаписей=ИСТИНА;
    ЭтотОбъект.РежимОбмена="Загрузка";

    ЭтотОбъект.ВыполнитьЗагрузку();         
    
                                                                     
КонецПроцедуры
стратегическое место одно :))))
   dezss
 
54 - 20.11.18 - 09:53
(51) >>(49) а в качестве параметров что?
Ну просто для вызова серверного метода написано, что должны быть такие параметры у процедуры. Что будет, если одного из них, я хз.
Один параметр вообще для вызова клиентского метода.
   Полька
 
55 - 20.11.18 - 09:56
(54) если ставить Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
то что-то нужно передать в ПараметрыВыполненияКоманды.
   МимохожийОднако
 
56 - 20.11.18 - 10:02
(53) В процедуру ВыполнитьЗагрузку() попадаешь отладчиком?
   DrWatson
 
57 - 20.11.18 - 10:09
(53) не одно. ЭтотОбъект.ВыполнитьЗагрузку() - это же целая процедура там много чего делается.
Ох, лучше всё-таки поработать в направлении отладки фонового задания.
   Полька
 
58 - 20.11.18 - 10:13
(56) (57) Тогда что нужно для отладки фонового?
Служба на сервере с ключом debug загружена.
Отладка-Подключение-Автоматическое подключение- "галки" поставила.
Точки останова поставила.
Запускаю регламентное- останова нет.
   DrWatson
 
59 - 20.11.18 - 10:21
Помню с отладкой регламентных был один тонкий момент - строка имена базы и сервера при запуске твоего конфигуратора должны совпадать со строкой запуска сервера с точностью до регистра букв.
Проверяется так: Выполнить СтрокаСоединенияИнформационнойБазы в фоновом, записать результат в журнал регистрации. Там посмотреть и сверить что у тебя написано в списке баз.
Может это и и справили, но проверить стоит.
   Полька
 
60 - 20.11.18 - 10:22
(59) совпадает. проверяла
   dezss
 
61 - 20.11.18 - 10:24
(55) ну ты же не передаешь ИдентификаторКоманды, параметры тоже не передавай...
я просто не проверял, важно ли совпадение по количеству параметров.
   Полька
 
62 - 20.11.18 - 10:26
(61) если не передаю, то в ОбщемМодуле вываливается на ошибку. Потому что там 
Если ПараметрыКоманды = Неопределено Тогда
            
            ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды);
            
        Иначе
            
            ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды);
            
        КонецЕсли;
   ZDenis
 
63 - 20.11.18 - 10:31
(62) Не совсем понимаю как вы собираетесь отлаживать внешнюю подключенную обработку. Куда вы там точки останова то ставите?

Я бы предложил сделать заведомо ошибку через Попытка Исключение и поставить галочку "остановка по ошибке". И вот тогда уже попасть в этот исполняемый модуль.
   DrWatson
 
64 - 20.11.18 - 10:32
(60) Ну, что ещё там может быть?
debug ведь напрямую в реестр прописывали? Службу после этого надо перезапускать.
Брандмауэр, наверняка, может блокировать. При первом запуске конфигуратора с новым релизом он спрашивает, я всегда разрешаю.
Больше не знаю, у меня просто работало. Разве что только какая нибудь путаница со службами, портами, если их несколько.
А обычная-то серверная отладка работает?
   DrWatson
 
65 - 20.11.18 - 10:34
+(63) Кстати, да. Работает или нет отладка фоновых нужно проверять точкой останова на коде фонового, а не внешней обработки.
   Полька
 
66 - 20.11.18 - 10:35
(63) у меня и внешняя есть.  и встроила уже в конфигурацию.
   Полька
 
67 - 20.11.18 - 10:36
(64) это сисадмины делали. клянутся, что сделали :) службу перезапускали еще вчера.
   ZDenis
 
68 - 20.11.18 - 10:41
(66) Попробуй настроить без обращения к объекту, т.е. без ЭтотОбъект....

Прописать в ВыполнитьЗагрузку() напрямую необходимые переменные
   ZDenis
 
69 - 20.11.18 - 10:43
Ну и попробуй все таки (63), чтобы точно в модуль попасть
   Полька
 
70 - 20.11.18 - 10:45
Запустила обработку в ручном режиме с отладкой. В процедуре 
&НаКлиенте останавливается. &НаСервере
- нет
   ZDenis
 
71 - 20.11.18 - 10:50
(70) значит соврамши админы, не перезапустили с debug
   catena
 
72 - 20.11.18 - 10:55
(71)Или не прописали. Или прописали, но не там.
   Полька
 
73 - 20.11.18 - 10:57
(71) (72) если писан, то не понят, если понят, то не так......:))))
пошла отлавливать их :)


Список тем форума
Рекламное место пустует  Рекламное место пустует
Основная теорема систематики: Новые системы плодят новые проблемы.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует