Ошибка "Предыдущий сеанс публикации на уровне транзакций не завершена обработка" при открытии окна Входа в транзакцию продаж в обработке заказов на продажу

В этой статье представлено решение для предыдущего сеанса публикации на уровне транзакций не завершена обработка ошибки, которая может возникнуть при попытке открыть окно Запись транзакции продаж в обработке заказов на продажу в Microsoft Dynamics GP или в Microsoft Business Solutions — Great Plains.

Применимо к: Microsoft Dynamics GP
Исходный номер базы знаний: 852623

Симптомы

При попытке открыть окно Запись транзакции продаж в разделе Обработка заказов на продажу в Microsoft Dynamics GP или Microsoft Business Solutions — Great Plains может появиться следующее сообщение об ошибке:

Обработка предыдущего сеанса публикации на уровне транзакции не завершена. Пожалуйста, дайте время на его завершение. Если вы считаете, что это не удалось, выйдите из Great Plains и войдите обратно, чтобы восстановить транзакции.

Примечание.

Чтобы открыть окно Запись транзакции продаж, выберите Транзакции, наведите указатель на пункт Продажи, а затем — Запись транзакции продаж.

Причина

Эта проблема может возникнуть, когда записи блокируются в таблице SY00500, в таблице SY00800 или в таблице SOP10100. У записей пустой номер пакета или идентификатор пользователя указан в качестве номера пакета.

Решение

Чтобы устранить эту неполадку, выполните следующие действия:

  1. Все пользователи должны выйти из Microsoft Dynamics GP.

  2. Создайте резервную копию базы данных компании.

  3. В анализаторе запросов SQL выполните следующую инструкцию delete в таблице SY00800 для базы данных DYNAMICS.

    DELETE SY00800
    
  4. Найдите записи проблем в таблице SY00500, выполнив следующие инструкции для базы данных компании.

    Примечание.

    В следующих инструкциях xxx представляет идентификатор пользователя, содержащий ошибку.

    SELECT * from SY00500 where BACHNUMB = ''
    SELECT * from SY00500 where BACHNUMB = 'xxx'
    
  5. Если у вас есть записи, возвращаемые с пустым полем BACHNUMB, используйте следующую инструкцию delete.

    DELETE SY00500 where BACHNUMB = ''
    
  6. Если у вас есть записи, возвращаемые с идентификатором пользователя в поле BACHNUMB, используйте следующую инструкцию delete.

    Примечание.

    В следующей инструкции xxx представляет идентификатор пользователя, содержащий ошибку.

    DELETE SY00500 where BACHNUMB ='xxx'
    
  7. Убедитесь, что вы можете выбрать существующие документы в окне Запись транзакции продаж. Чтобы открыть это окно, выберите Транзакции, наведите указатель на пункт Продажи, а затем выберите Запись транзакции продаж. Если вы хотите удалить существующий документ, нажмите кнопку Удалить. Если вы хотите аннулировать существующий документ, выберите Void.

  8. Если вы продолжаете получать сообщение об ошибке или не можете выбрать существующие документы в окне Запись транзакции продаж, выполните следующие скрипты в анализаторе SQL-запросов в базе данных компании, чтобы найти записи о проблемах в таблице SOP10100.

    Примечание.

    В следующих сценариях xxx представляет идентификатор пользователя, содержащий ошибку.

    SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '' SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '<xxx>'
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    
  9. Обратите внимание на все возвращаемые записи, а затем выполните следующую инструкцию в анализаторе запросов SQL, чтобы удалить проблемные записи из таблицы SOP10100.

    Примечание.

    • Необходимо убедиться, что транзакции размещены в модуле Инвентаризация и в модулях Управление дебиторской задолженностью. Если транзакции не были размещены в модуле Инвентаризация и в модуле Управление дебиторской задолженностью, после выполнения инструкций удаления необходимо повторно ввести транзакции в окне Записи транзакции продаж.
    • В следующих инструкциях xxx представляет идентификатор пользователя, содержащий ошибку.
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10100 where BACHNUMB = '' DELETE SOP10100 where BACHNUMB = 'xxx'
    
  10. В Microsoft Dynamics GP наведите указатель на пункт Обслуживание в меню Microsoft Dynamics GP, а затем выберите Проверить ссылки.

  11. В списке Ряды выберите Продажи, а затем выполните процедуру проверка ссылок в группе таблицы Sales Work .

  12. Если транзакции не были размещены в модуле Управление дебиторской задолженностью и в модуле Инвентаризация, повторно введите транзакции в окне Запись сделок продаж.