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

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

Как получить доступ к контексту формы на УФ

Как получить доступ к контексту формы на УФ
Я
   iva77ru
 
29.11.18 - 10:38
Добрый день!

1С:Предприятие 8.3 (8.3.10.2667)
Зарплата и управление персоналом, редакция 3.1 (3.1.7.144)

Переношу документы. Создаю, заполняю реквизиты. Нужно рассчитать документ: запустить процедуру расчета документа, например "Отпуск". Есть такая процедура в форме и даже экспортная. Как получить к ней доступ из обработки создания документа?
 
 
   Fragster
 
1 - 29.11.18 - 10:46
на клиенте создаешь форму, через КопироватьДанныеФормы (ИлиСкопировать, не помню уже, помню, что там порядок источник получатель с ЗаполнитьЗначенияСвойств перепутан)отправляешь в форму твой объект, запускаешь там расчет, потом через КопироавтьДанныеФормы забираешь обратно рассчитанные данные
   Fragster
 
2 - 29.11.18 - 10:47
либо есть интересный вариант - с помощью https://github.com/grumagargler/tester делаешь все интерактивно :)
   Cyberhawk
 
3 - 29.11.18 - 10:54
Если у целевой формы нет точки входа с клиента, то никак
   mikeA
 
4 - 29.11.18 - 10:56
(2) Пробовали. Много неопределённостей возникает интерфейсных.
Выбрали ещё более... интересный вариант))
https://github.com/xDrivenDevelopment/xUnitFor1C
+ https://jenkins.io/
   Вафель
 
5 - 29.11.18 - 10:57
(3) если нет, то можно в расширении добавить
   DrWatson
 
6 - 29.11.18 - 11:04
Твой код скорее всего серверный, а экспортная процедура - клиентская? Нужно искать что-то на сервере
А расчет ведь, наверняка, не на клиенте выполняется. Скорее всего эта процедура вызывает какую-нибудь серверную. Вот её и вызывай напрямую.
   Fragster
 
7 - 29.11.18 - 11:24
(4) xunit он не для интерфейсов же. а в (0) именно что надо условную кнопку нажать
   Вафель
 
8 - 29.11.18 - 11:46
(7) а что тестет умеет кнопки нажимать в ТЕКУЩЕМ сеансе?
   iva77ru
 
9 - 29.11.18 - 11:47
С клиента идет вызов серверной процедуры, но та везде присутствует параметр Форма. То есть вызов серверный, но в контексте формы. Можно конечно дойти до процедуры расчета, а затем вызывать ее и подпихивать ей нужные данные. Это я даже не знаю сколько копать придется. Неужели нет способа запустить процедуру из модуля формы?
   Вафель
 
10 - 29.11.18 - 11:48
(9) Форма.ИмяПроцедуры()
 
 Рекламное место пустует
   Fragster
 
11 - 29.11.18 - 11:51
(8) данные засасываешь в тестере и выплевываешь в клиент тестирования
   Вафель
 
12 - 29.11.18 - 11:52
(11) так ТС не тест пишет, а заполнялку документа
   iva77ru
 
13 - 29.11.18 - 11:56
&НаСервере
Док = Документы.Отпуск.СоздатьДокумент();

//заполнили реквизиты

//Нужно расчитать

{ВнешнийОтчет.ПереносДокументов.Форма.Форма.Форма(460)}: Ошибка при вызове метода контекста (ПолучитьФорму)
            Форма = Док.ПолучитьФорму("ФормаДокумента");
по причине:
Интерактивные операции недоступны
   Fragster
 
14 - 29.11.18 - 11:58
(12) да, использовать тестер как интерактивную заполнялку документа, что непонятно-то?
   Fragster
 
15 - 29.11.18 - 11:58
(13) все правильно
   Cyberhawk
 
16 - 29.11.18 - 12:04
(14) Так гемор же. Сеанс клиента тестирования может быть только начат новый - нельзя подключиться к произвольному сеансу и использовать его как клиент тестирования
   mikeA
 
17 - 29.11.18 - 14:28
(7) в (0) надо
>запустить процедуру расчета документа
>Есть такая процедура в форме и даже экспортная

Для запуска процедур формы вариант xUnitFor1C + Jenkins как раз то что надо.

С Тестером поигрался, так то оно вроде ничего, когда пару кнопок нажать по-быстрому, но когда чуть больше возникают неочевидные проблемы. Например вылезет посредине теста какое-нибудь сообщение и всё, привет.

Ну и набирать код для Тестера практически в блокноте)

Плюс если прикрутить к Jenkuins Allure, получится очень удобная система сообщений об ошибках.
   iva77ru
 
18 - 29.11.18 - 14:36
Спасибо, обязательно попробую xUnitFor1C + Jenkins. Сейчас времени в обрез,  нашел обход: меняем конфигурацию, через процедуру ПриОткрытии() запускаю процедуры модуля формы.

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