Вход | Регистрация
 
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. Сейчас времени в обрез,  нашел обход: меняем конфигурацию, через процедуру ПриОткрытии() запускаю процедуры модуля формы.

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