Bug 7412

Summary: 1с v8.2 не работает карта маршрутов (перемещение по блоксхеме)
Product: WINE@Etersoft Reporter: Shestakov Dmitriy <mid>
Component: GDI / DIB / GDIPLUS ; графикаAssignee: Dmitry Timoshkov <dtimoshkov>
Status: CLOSED FIXED QA Contact: Svetlana Zhukova <svzhu>
Severity: critical    
Priority: P1 CC: baraka, dtr, lav, night, regan, shpigor, svzhu, vitperov
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 20141, 16919, 22162 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 437, 8408    
Deadline: 2012-05-20   
Attachments: маршрутная карта

Description Shestakov Dmitriy 2011-07-06 17:12:35 MSK
WINE@Etersoft version: 1.0.12-eter11.13/22
редактирование карт
маршрутов бизнес-процессов, в основном, не работает - не удается
переключаться между элементами карты маршрута, выделение
сохраняется только на одном элементе
Comment 1 Svetlana Zhukova 2011-07-08 13:04:59 MSK
Инструкция по воспроизведению:
1. Запустить 1С:Предприятие 8.2 (любую базу, в любом режиме).
2. Нажать [Файл][Открыть] или CTRL+O
3. Выбрать файл "ПродажаТовара.grs"

все необходимое тут:
/var/ftp/pvt/Windows/Testing/RT/20141

ubuntu 11.04
WINE@Etersoft 1.0 Network 1.0.12-eter11.14/22

1c 8.2 база бухучет (демо) 
(присланная клиентом база загружается,но не открывается)

Открываю маршрутную карту,кликаю один жлемент,перетаскиваю его.Кликаю другой - не реагирует,выделение остается на первом.
Comment 2 Svetlana Zhukova 2011-07-08 13:05:33 MSK
Created attachment 2243 [details]
маршрутная карта
Comment 3 Shestakov Dmitriy 2011-07-08 16:20:14 MSK
Проблема воспроизводится. Фокус не переходит на обьекты в схеме, которые находятся на заднем плане, при этом можно текущий обьект перевести на задний план(правой кнопкой мыши по текущему обьекту - > на задний план), при этом автоматически один из обьектов в очереди переходит на первый план.

В консоле никаких сообщений по этому поводу(да и откуда им взяться, если просто так реализована работа фокуса).
Comment 4 Svetlana Zhukova 2011-09-14 15:15:18 MSK
*** Bug 5893 has been marked as a duplicate of this bug. ***
Comment 5 Svetlana Zhukova 2011-12-13 10:07:53 MSK
*** Bug 6575 has been marked as a duplicate of this bug. ***
Comment 6 Svetlana Zhukova 2011-12-13 10:09:57 MSK
Более свежая проверка
eterhack bottle 1c82/6575
WINE@Etersoft 1.0 SQL 2.0.0-eter0.13/2

-Входите в конфигуратор.
-Файл-Новый-Графическая схема
-Рисуете несколько блоков и пытаетесь мышкой вернуться к первому блоку.

помимо того,что

(В ответ на comment #3)
> Проблема воспроизводится. Фокус не переходит на обьекты в схеме, которые
> находятся на заднем плане, при этом можно текущий обьект перевести на задний
> план(правой кнопкой мыши по текущему обьекту - > на задний план), при этом
> автоматически один из обьектов в очереди переходит на первый план.
> 
также работает  "ТАВ"
Comment 7 Svetlana Zhukova 2011-12-13 10:56:41 MSK
P.S.Создать графическую схему можно и в режиме "предприятие", и в режиме конфигуратора, причем в пустой конфигурации (в режиме конфигуратора вообще можно просто создать папку и в ней создать базу,не имея таковой заранее)
Comment 8 Сергей Гуральник 2012-04-18 20:42:58 MSK
Когда указатель выводится за пределы блока схемы должен устанавливаться новый курсор (обычная стрелка вместо четырехконечной). Для 1С версии 8.2.14.540 это делает функция 0х15F2B500 (еще она настраивает какие-то структуры 1С-ки, видимо это переход в состояние "указатель вне объектов схемы"). Под Вайном эта функция не вызывается при выводе указателя из блока, поэтому в любой точке листа схемы реакция на правый клик, на перетаскивание такая как-будто указатель мыши над активным блоком.
Comment 9 Сергей Гуральник 2012-04-20 16:47:49 MSK
Переключение курсора есть результат приема WM_SETCURSOR. Обработчик этого сообщения выбирает нужный курсор и т.д. При попадании указателя на лист схемы происходит захват мыши и поэтому дожидаться WM_SETCURSOR и WM_NCHITTEST (видимо требуется для предыдущего сообщения) от системы бесполезно. Из-за этого 1С время от времени посылает сама себе WM_NCHITTEST через CallWindowProc(), откуда берется WM_SETCURSOR пока неясно.
Под Вайном наблюдается только WM_NCHITTEST.
Comment 10 Сергей Гуральник 2012-04-23 21:14:28 MSK
Очевидно дело не в последовательности сообщений. Под Вайном она такая же как под Виндосом. Можно подумать, что 1С не чувствует перехода с объекта на лист, хотя поведение всплывающих подсказок говорит об обратном.
Comment 11 Сергей Гуральник 2012-04-24 18:40:31 MSK
Замечена разница в вызове оконной процедуры для окна схемы. Когда указатель двигается по объекту вызов делается по адресу 0x2704E070, когда вне объектов один раз обращение происходит по 0x15F14B40. Как это организовано пока не понятно.
Comment 12 Сергей Гуральник 2012-04-25 18:30:56 MSK
Функция 0x27019060 возвращает 0 если указатель на листе и 1 в противном случае.
Вызываемые при ее работе API-функции не вызывают подозрений. Возможно проблема
возникает при работе конструктора отдельного элемента схемы.
Comment 13 Vitaly Lipatov 2012-04-28 16:05:20 MSK
Сергей, проблему надо решать для WINE@Etersoft 2.0, это никак в баге не отражено. Более того, тестирование проводилось для 1.0.12 по некоторым причинам...
Comment 14 Сергей Гуральник 2012-04-28 18:02:17 MSK
Проблема решается именно для WINE@Etersoft 2.0
Comment 15 Сергей Гуральник 2012-05-04 20:08:09 MSK
Пытаюсь найти информацию о размерах и положении отдельных элементов блок-схеvы. Судя по всему она лежит в какой-то из куч процесса. Возможно здесь выявится различие между Wine и Windows.
Comment 16 Сергей Гуральник 2012-05-11 19:52:39 MSK
Замечено, что при вызове GetCursorPos() приложению отправляется WM_NCHITTEST, хотя для Win32 ничего такого нет. После исправления ничего не поменялось.
Comment 17 Денис Баранов 2012-05-17 16:09:03 MSK
Решить проблему для W@E 2.0
Воспроизводить в любой 1С 8.2, способ воспроизведения описан тут: http://bugs.etersoft.ru/show_bug.cgi?id=7412#c1
Comment 22 Svetlana Zhukova 2012-05-21 14:49:20 MSK
wine@eter-2 bottle bugs/6575
WINE@Etersoft SQL 2.0.1-eter11/6
Принято. Фокус свободно переходит на любой элемент.