|
Какой параметр передать в форму документа, чтобы нажать кнопку Записать Провести Закрыть? | ☑ | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Мимохожий Однако
24.12.21
✎
11:12
|
Сегодня неожиданно поступил от клиента данный вопрос. Конфигурация КА 2.4. Хотят провести некий массив через открытие формы по кнопке ОК.
Я не смог ответить сходу. Надеюсь в пятницу будет счастье. |
|||||||||||||||||||
1
Мимохожий Однако
24.12.21
✎
11:13
|
Я "не шмогла"
Такое невозможно |
|||||||||||||||||||
2
Ёпрст
24.12.21
✎
11:13
|
(0) а форму то нахрена открывать ?
Гений1с покусал там кого ? |
|||||||||||||||||||
3
PuhUfa
24.12.21
✎
11:14
|
(0) Кнопка "ОК" это чья кнопка?
|
|||||||||||||||||||
4
youalex
24.12.21
✎
11:14
|
ЗаписатьВФорме(<РежимЗаписи>) ?
|
|||||||||||||||||||
5
Мимохожий Однако
24.12.21
✎
11:14
|
(2)Возможно ) Общался с клиентами по удалёнке
|
|||||||||||||||||||
6
Мимохожий Однако
24.12.21
✎
11:16
|
(3) Как я понял. Это типовая кнопка "Провести и закрыть". Когда они перепроводили документы по правой клавиши из списка документов, эффект проведения был другой. А когда открывали и проводили, то "всё вставало как надо"
|
|||||||||||||||||||
7
PLUT
24.12.21
✎
11:17
|
(2) встречал г.внокод, когда магия на клиенте в форме документа происходит по кнопке ОК :)
|
|||||||||||||||||||
8
Kassern
24.12.21
✎
11:18
|
(6) ну так сравните чем отличаются эти 2 процесса проведения. Если там, что-то заполняется при открытии, или при записи на форме, то делайте это програмно в обработке и тупо Записать(РежимЗаписи.Проведение)
|
|||||||||||||||||||
9
PuhUfa
24.12.21
✎
11:18
|
(6) ну тогда надо найти отличие в "проведении" из формы... исправить этот г.внокод, взять за это 2500руб/час и не пытаться допиливать "это" -)
|
|||||||||||||||||||
10
Ryzeman
24.12.21
✎
11:19
|
Посмотреть что за хрень наколхозили на форме и выкинуть в нормальную подписку на событие. Програмное открытие формы и нажатие "ок" - это бороться с огнём маслом.
Есть другие пути |
|||||||||||||||||||
11
Kassern
24.12.21
✎
11:20
|
(8) Самый простой способ, посмотрите как заполнен ЭтотОбъект в модуле объекта при записи из формы и как он заполнен при записи программно
Есть другие пути |
|||||||||||||||||||
12
Базис
naïve
24.12.21
✎
11:21
|
По-правильному, конечно, так как сказали коллеги.
Тяп-ляп - VBS с примерно таким кодом: пауза, цикл, Sendkey [Ctrl+Enter] с задержкой, Sendkey [Down]. |
|||||||||||||||||||
13
Мимохожий Однако
24.12.21
✎
11:21
|
(10) По словам клиентов, всё типовое. Как будет доступ к базе-посмотрю, проверю. А какая подписка наиболее близка к данной ситуации?
|
|||||||||||||||||||
14
pechkin
24.12.21
✎
11:26
|
Форма.Записать(СтруктураПараметров)
|
|||||||||||||||||||
15
pechkin
24.12.21
✎
11:27
|
Классический дымовой тест
|
|||||||||||||||||||
16
Мимохожий Однако
24.12.21
✎
11:27
|
(4) Кстати. Открыл типовую демо КА2.4 и нашёл в общем модуле ОбменСКонтрагентамКлиент любопытный кусочек
#Если ТолстыйКлиентОбычноеПриложение Тогда РезультатПроверки = Неопределено; ОбменСКонтрагентамиКлиентПереопределяемый.ОбъектМодифицирован(Объект, Форма, РезультатПроверки); Если РезультатПроверки = Неопределено Тогда Если Форма.Модифицированность ИЛИ НЕ ЗначениеЗаполнено(Объект.Ссылка) Тогда Проведен = Метаданные.Документы.Содержит(Объект.Метаданные()) И Объект.Проведен; СтрПроведен = ?(Проведен, НСтр("ru = 'записать и провести. |Записать и провести?'"), НСтр("ru = 'записать. |Записать?'")); ШаблонСообщения = НСтр("ru = 'Документ изменен. Для формирования электронного документа его необходимо %1'"); ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СтрПроведен); ДополнительныеПараметры = Новый Структура(); ДополнительныеПараметры.Вставить("СсылкаНаОбъект", Объект.Ссылка); ДополнительныеПараметры.Вставить("ИмяКоманды", ИмяКоманды); ДополнительныеПараметры.Вставить("Форма", Форма); ДополнительныеПараметры.Вставить("Проведен", Проведен); Обработчик = Новый ОписаниеОповещения( "ЗаписатьВФорме", ЭтотОбъект, ДополнительныеПараметры); ПоказатьВопрос( Обработчик, ТекстВопроса, РежимДиалогаВопрос.ОКОтмена, , КодВозвратаДиалога.Отмена, НСтр("ru = 'Документ изменен.'")); КонецЕсли; КонецЕсли; #КонецЕсли |
|||||||||||||||||||
17
Мимохожий Однако
24.12.21
✎
11:28
|
(14) А что положить в СтруктураПараметров?
|
|||||||||||||||||||
18
pechkin
24.12.21
✎
11:34
|
(17) РежимЗаписи, РежимПроведения
|
|||||||||||||||||||
19
Ryzeman
24.12.21
✎
11:35
|
(13) Смотря что "встаёт". Если там автоматически заполняются какие-то обязательные реквизиты, то ПередЗаписью, наверное. Никто же пока не знает что там у них не так в принципе и в чём разница между проведением через форму и не через форму.
А то, что проведение отличается в типовой - как-то совсем невероятно. Я с типовой КА не имел дел, но отказываюсь верить, что 1с могут написать так криво. |
|||||||||||||||||||
20
Kassern
24.12.21
✎
11:36
|
(12) Вот вам пятничное решение на питоне))
x, y = pyautogui.position() pix = pyautogui.pixel(x, y) Получили координаты и цвет пикселя нужного (кнопка провести и закрыть). А дальше все просто, передаем комбинацию ктрл+ентер, либо курсор наводим и кликаем программно. После этого проверяем по пикселю, что открылась форма списка и передаем вниз и энтер и ищем снова кнопку провести и закрыть. Лучше конечно еще номер с датой проверять - делаем скрин области даты и номера документа и сравниваем с текущим номером и датой, если коэфицент совпадения больше определенного числа, то прерываем цикл. |
|||||||||||||||||||
21
pechkin
24.12.21
✎
11:37
|
(20) тогда уж лучше opencv и поиск кнопки закрыть
|
|||||||||||||||||||
22
Kassern
24.12.21
✎
11:38
|
(21) пиксель по координатам быстрее находится, чем саму кнопку искать
|
|||||||||||||||||||
23
PLUT
24.12.21
✎
11:41
|
(21) обычный биоробот из бухгалтерии справится. зачем такие сложности?
|
|||||||||||||||||||
24
Kassern
24.12.21
✎
11:43
|
(23) тут написать то мин 15-20. А биороботу еще платить надо, да и подзабить на работу может
|
|||||||||||||||||||
25
youalex
24.12.21
✎
11:51
|
(16) не взлетает без соответствующего экспортного метода.
А если метод есть, то можно его напрямую дергать. В качестве бреда - можно форму документа скопировать в обработку, а там в цикле менять объект (ЗначениеВРеквизитОбъекта) и ЗаписатьВФорме() ) Так и наглядно будет все |
|||||||||||||||||||
26
Kassern
24.12.21
✎
11:52
|
(25) еще больше пятничных костылей в студию)
|
|||||||||||||||||||
27
Ryzeman
24.12.21
✎
11:53
|
(26) Програмно нажимать Tab и считывать активный элемент. Если он является кнопкой, прочитать его заголовок, если там "ок", то програмно послать Enter
|
|||||||||||||||||||
28
Kassern
24.12.21
✎
11:54
|
(27) это только для 1 документа, а нужно обойти динамический список и провести все там)
|
|||||||||||||||||||
29
ptiz
24.12.21
✎
13:13
|
(16) Ну да, там в итоге и вызывается методе формы: Форма.ЗаписатьВФорме()
|
|||||||||||||||||||
30
ptiz
24.12.21
✎
13:14
|
Но это только для толстого клиента
|
|||||||||||||||||||
31
pechkin
24.12.21
✎
13:26
|
(29) Но зачем, когда можно просто Записать()
|
|||||||||||||||||||
32
ptiz
24.12.21
✎
13:34
|
(31) ЗаписатьВФорме() вызывает срабатывание обработчиков формы ПередЗаписью, ПриЗаписи, ПослеЗаписи
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |