Как исправить ошибку «Попытка использования закрытого менеджера временных таблиц

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить ошибку «Попытка использования закрытого менеджера временных таблиц

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36318
      Фото аватараOdineski
      Участник

        Ошибка при выполнении обработчика — ‘ПередЗаписью’
        по причине:
        {РегистрНакопления.ТоварыКОтгрузке.МодульНабораЗаписей(111)}: Ошибка при вызове метода контекста (Выполнить)
        ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
        по причине:
        Попытка использования закрытого менеджера временных таблиц

      • #36319
        bot_avaOdin — Одинэсник
        Участник

          Сергей, ошибка «Попытка использования закрытого менеджера временных таблиц» при вызове ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения) в модуле регистра накопления «ТоварыКОтгрузке» обычно связана с тем, что в момент записи документа менеджер временных таблиц, который используется для записи движений регистра, уже закрыт или недоступен.

          В 1С при проведении документов с движениями по регистрам накопления часто используется менеджер временных таблиц (МенеджерВременныхТаблиц), который создаётся в рамках транзакции проведения документа. Если в процессе проведения или отмены проведения происходит вызов записи документа с режимом ОтменаПроведения вне контекста активного менеджера временных таблиц, то возникает эта ошибка.

          Основные причины и решения:

          1. **Неправильное использование записи документа с режимом ОтменаПроведения вне процедуры проведения**

          — Вызов ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения) должен происходить только в рамках процедуры проведения документа, где менеджер временных таблиц активен.
          — Если вы вызываете запись документа с таким режимом в обработчике ПередЗаписью или в другом месте вне процедуры проведения, менеджер временных таблиц может быть уже закрыт.

          2. **Рекурсивный вызов записи документа**

          — Если в обработчике ПередЗаписью вы вызываете ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения), то это может привести к рекурсивному вызову процедуры ПередЗаписью, что не допускается и приводит к ошибкам.
          — Нужно избегать вызова записи документа с режимом отмены проведения в обработчиках, которые вызываются при записи документа.

          3. **Правильное использование менеджера временных таблиц**

          — Если в вашем коде используется МенеджерВременныхТаблиц, то он должен быть создан и передан в процедуры проведения и отмены проведения.
          — В типовых конфигурациях менеджер временных таблиц создаётся автоматически при вызове Провести() или ОтменитьПроведение().
          — Если вы вручную вызываете запись с режимом отмены проведения, убедитесь, что менеджер временных таблиц передан и открыт.

          4. **Рекомендации по исправлению**

          — Не вызывайте ДокументОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения) в обработчике ПередЗаписью.
          — Если нужно отменить проведение документа, делайте это в отдельной процедуре, например, в обработчике проведения или в пользовательской обработке, где менеджер временных таблиц гарантированно открыт.
          — Используйте стандартные методы ДокументОбъект.ОтменитьПроведение() или ДокументОбъект.ОтменитьПроведение(МенеджерВременныхТаблиц).
          — Если вы пишете собственную процедуру проведения, создайте менеджер временных таблиц через Новый МенеджерВременныхТаблиц() и передавайте его в методы записи движений и отмены проведения.

          5. **Пример правильного использования отмены проведения с менеджером временных таблиц**

          6. **Если ошибка возникает в типовой конфигурации**

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

          Итого: ошибка возникает из-за вызова записи документа с режимом отмены проведения вне контекста активного менеджера временных таблиц. Нужно перенести вызов отмены проведения в процедуру, где менеджер временных таблиц создаётся и открыт, и не делать этого в обработчике ПередЗаписью.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С