Мои комментарии

Заголовок Comment Дата публикации Дата обновления
Посмотрите в справке тип XML

Посмотрите в справке тип XML_КУРСОР.

Консенсус в обсуждении пока

Консенсус в обсуждении пока не был достигнут.
Как не выявилось и особенной заинтересованности других пользователей.

Уточните для начала несколько вопросов:

1. Под планом счетов понимается только выбор счета или оборотка и исходные остатки тоже?
2. Для разных вызовов функции ВЫБОР_СЧЕТА надо иметь возможность сортировки "по выбору пользователя"?
4. При стандартном выборе счета настройка всегда одинаковая (или зависит от графы и т.п., хранить в свойствах графы)?
3. Для разных пользователей в сетевой версии настройка общая или у каждого своя
(хранить в базе или в cfg)?

В версии 8.720 действительно

Высылаю 2 разных файла планов счетов. Достоверно установлено, что предыдущая версия 8719 ничего не портит при проверке. А версия 8720 портит план счетов, который в файле PLSCET-Err, а PLSCET-NoErr не портит. 8719 не портит ничего.

В версии 8.720 действительно был изменен алгоритм проверки наличия субсчетов.
В Вашем случае замена алгоритма повлияла на обработку файла, созданного с неправильной настройкой языкового драйвера.

Если посмотреть содержимое файла PLSCET-NoErr, то вся строковая информация представлена в формате ANSI Windows cp1251
(что соответствует настройке языкового драйвера BDE Pdox ANSI Cyrillic).

Если посмотреть содержимое файла PLSCET-Err, то видно, что русские буквы кодированы не в ANSI Windows cp1251, а в OEM/DOS cp 866
(видимо, для Paradox была сделана настройка dBase RUS cp866).

Рекомендация:
1. Выгрузить базу данных в файл SHP.
2. Исправить языковой драйвер Paradox на Pdox ANSI Cyrillic.
3. Импортировать базу из SHP.

Cо своей стороны, я постараюсь в последующей версии учесть возможность неправильной кодировки таблицы в алгоритме проверки.

SOS! После проверки

SOS! После проверки логической целостности базы (пункт меню Файлы-База данных-Проверить) слетают признаки субсчетов. Т.е. пропадают счета 2-го уровня и ниже.

Все или некоторые?
Было бы идеально получить базу до проверки на burlak@ib.ru
Если базу выслать нет возможности, то опишите подробнее с указанием
конкретных кодов счетов.

... во всех справочниках

... во всех справочниках КЛАДР, Банки сплошная тарабарская азбука. Подскажите как исправить? Как я понимаю, это проблема кодировки.

Если на компьютере установлено BDE, то надо настроить языковой драйвер ODBC для dbf файлов.
В С:\Program Files\Borland\Common Files\BDE запустите bdeadmin.exe.
Поставьте драйвер RUS cp866 как на картинке:

Я уже несколько раз

Где предлагается задавать, для каких счетов по наименованию, а для каких по коду?

Нашел, что время последнего

Нашел, что время последнего вызова инициализируется нулем при старте программы.
Значит, когда счетчик GetTickCount ушел в отрицательную область, то все - 25 дней без вызова...

В коде я поправил инициализацию и сравнение с учетом переполнения счетчика.
А сейчас для Вас временный способ решения - перезагрузить сервер.

Если "повезет", то такое

Если "повезет", то такое поведение может возникнуть если работа с ИБ попадет на период ~25 дней с момента загрузки компьютера.
Связано с переполнением 32 битного таймера (функция GetTickCount).
Т.е. время последнего вызова запоминается как большое положительное число (2147483647),
а это время + 10 сек. получается большим по модулю отрицательным числом (-2147473647).
Все - на следующие 25 дней точно остались без обработки...

Должно устраняться перезапуском ИБ.
Если не устраняется, то точно дело не в этом.

Что функция-обработчик делает и как делается вывод, что она не вызывается?
Если указать в качестве обработчика тривиальную функции, вызывающую СООБЩЕНИЕ, например?

Функция-обработчик

Функция-обработчик указывается в ib.ini [AppFunctions] IdleFunc=...
Файл ib.ini должен лежать в рабочей папке программы.
При использовании терминального сервера, скорее всего, рабочие папки у разных пользователей различаются.
Проверьте содержимое ib.ini в папке, которую показывает Справка->Компьютер как текущую.

Выгоните всех пользователей

Выгоните всех пользователей из базы и удалите файл eventnet.db.
Этот файл будет пересоздан автоматически.
Лучше работать в режиме Инфо-Сервера, когда координацией изменения базы
занимается сервер и файл eventnet.db не используется.

я так понимаю нет?

я так понимаю нет?

А я так понимаю, что обсуждались Ваши хотелки...

Конечно, функций пока нет и никакой конкретной клавиши - тоже.
Я только пытался уточнить задачу, но даже тут возникло недопонимание...

В Windows сообщения о нажатии

В Windows сообщения о нажатии и отпускании клавиш получаются в цикле обработки сообщений.
Причем клавиатурные сообщения посылаются только окну, которое имеет т.н. фокус ввода.
В ИБ таким окном может быть бланк, диалог типовой операции, графа ввода, кнопка и т.д. и т.п.
Ловить все подряд для всевозможных окон - плохая затея.

Задача отлова определенной клавиши или комбинации вне зависимости от фокуса ввода решается установкой внутри программного (в пределах процесса) хука клавиатуры.
Обычно так ловится какая-то конкретная клавища: Escape или Ctrl+Break.

Для случая прерывания вычислений можно представить пару функций:
первая устанавливает клавиатурный хук и сбрасывает признак остановки,
вторая проверяет признак остановки.

Пример:

УСТ_ПРИЗНАК_ОСТАНОВКИ(ДА) // установили хук, сбросили признак
ЦИКЛ ПОКА(ДА)
//...
ЕСЛИ ПРОВЕРИТЬ_ПРИЗНАК_ОСТАНОВКИ ТО
// обрабатываем отмену...
КОНЕЦ_ЕСЛИ
//...
КОНЕЦ_ЦИКЛА
УСТ_ПРИЗНАК_ОСТАНОВКИ(НЕТ) // убрали хук, больше не нужен

Так Вам это представлялось?

В бланках можно обрабатывать

В бланках можно обрабатывать клавиши Fx в сочетаниях с Ctrl, Shift, Alt.
При нажатии соответствующей комбинации клавиш происходит вызов библиотечной функции.
См. в редакторе бланков/контекстное меню/"События бланка".

У клиента на компьютере

У клиента на компьютере установлен Mircosoft Office 2010

Если это Starter edition, то там нет интерфейсов OLE automation и ИБ его не видит.

1. В обработчике "Перед

1. В обработчике "Перед изменением счета" запоминаем где-нибудь код счета (во временном файле и т.п.) и возвращаем НЕТ, чтобы был показан стандартный диалог.

2. В обработчике "Изменение счета" получаем новый код.
Если отличается от запомненного - производим замену.

Есть ли в ИБ возможность

Есть ли в ИБ возможность работать с др.базами данных напрямую. Например с SQL-сервером.

В ИБ 8 - нет.
ТИП_COM позволяет вызывать только простейшие методы, что недостачно для использования ADO или OLE DB.
Можно попытаться решить задачу путем программного запуска утилиты выгрузки во временный файл из ИБ.

P.S. В ИБ 10 есть возможность подключения через ODBC к MSSQL, MySQL и др.

То есть, когда не было

То есть, когда не было поддержки проки сервера, всё работало.
Реализовали, работает только с настройками?

Раньше использовалась технология WinInet.
В ней настройки интернета автоматом берутся из свойств обозревателя Windows (т.е. IE).
Но не все настраивают и используют IE...

Сейчас у нас используется библиотека curl. Для нее требуется своя настройка proxy.

Интернет я получаю через

Интернет я получаю через PROXY, где в IBW8.7 настраивается прокси сервер

Поддержка прокси реализована начиная с версии 8.718 (т.е. последней доступной на данный момент).
В рабочей папке Инфо-Бухгалтера создайте файл gnet.ini со следующим содержанием:
[proxy]
address=223.103.0.33:8123
login=proxy_user
password=proxy_password

Замените адрес прокси, порт, логин и пароль в соответствии с настройками своей сети.

В версиях ИБ 8.6 и 8.7 при

В версиях ИБ 8.6 и 8.7 при редактировании счета в плане счетов не работают стрелки вверх и вниз при переходе между названием и кодом счета.

От кода к наименованию стрелка вверх работает.
А от наименования к коду нет, т.к. начиная с 8.5 наименование двухстрочное и стрелки вверх/вниз двигают курсор по строкам внутри поля ввода.

Сделал, что при положении курсора в первой строке клавиша "вверх" выполняет переход предыдущему элементу, а в последней - клавиша "вниз" к следующему.

Аналогично в диалоге хоз. операции для 3-строчного поля содержания.
Больше такие многострочные поля ввода нигде не используются.

"...позволив, например, вести

"...позволив, например, вести редактирование в окне типовой операции , а "родное" окно редактирования при это не открывать ".

Т.е нужны обработчики добавление/изменение, заменяющие стандартный диалог с доступом к редактируемой записи через РЕД_ПОЛЕ/УСТ_РЕД_ПОЛЕ.
А куда записывать/считывать эти значения и вызывать ли типовую операцию - это дело человека, пишущего код функции-обработчика?