В процессе работы с конфигурацией 1С:Бухгалтерия предприятия 3.0 (ПРОФ) пользователи и разработчики могут столкнуться с критической ошибкой при попытке зарегистрировать счет-фактуру полученный на основании документа Возврат товаров поставщику. Ошибка сопровождается системным сообщением: Ошибка при вызове метода контекста (Выполнить)... Предложение ПОМЕСТИТЬ может располагаться только в основном запросе. Давайте подробно разберем причины возникновения этой ситуации и пошагово рассмотрим способы её решения.
Для начала проанализируем, почему возникает данная ошибка с точки зрения платформы 1С:Предприятие. В языке запросов 1С конструкция ПОМЕСТИТЬ используется для создания временных таблиц. Согласно синтаксическим правилам, создание временной таблицы допустимо только в основном теле запроса. Если программный код динамически формирует текст запроса (например, путем объединения нескольких фрагментов через ОБЪЕДИНИТЬ или вставки подзапросов), и внутри одного из этих фрагментов встречается ПОМЕСТИТЬ, платформа генерирует исключение.
В подсистеме учета НДС, в частности в общем модуле УчетНДСПереопределяемый, запросы собираются "на лету" в зависимости от множества факторов: типа документа-основания, наличия раздельного учета НДС, использования УПД и версии конфигурации. Рассмотрим ситуацию, когда система пытается "склеить" запрос по первичным данным и запрос по корректировкам. Если один из этих модулей пытается создать временную таблицу ТаблицыКорректировки внутри объединения, выполнение прерывается.
Первым делом нам необходимо проверить, каким образом было оформлено поступление товаров, которые мы сейчас возвращаем. Это критически важный момент для логики 1С. Проанализируем два сценария:
Счет-фактура полученный.Поступление (акт, накладная, УПД) переключатель установлен в положение "УПД".Если поставщик предоставил УПД со статусом 1, то программа ожидает, что любые последующие изменения (включая возвраты) будут оформляться через УКД (Универсальный корректировочный документ). При попытке создать обычный счет-фактуру на основании возврата к УПД, программный код может пойти по неверной ветке алгоритма, пытаясь совместить несовместимые структуры таблиц в одном запросе. Это и приводит к ошибке ПОМЕСТИТЬ ТаблицыКорректировки.
Как показывает практика решения подобных кейсов на форумах, наиболее стабильным способом устранения ошибки является смена типа регистрируемого документа. Вместо попытки создать простой Счет-фактура полученный, следует зарегистрировать Корректировочный счет-фактуру.
Рассмотрим порядок действий:
Возврат товаров поставщику.Корректировочный счет-фактуру полученный вручную, указав в качестве основания наш возврат и исходное поступление.Если ваша конфигурация "допилена" или в ней используются расширения, необходимо проанализировать их влияние на общие модули. Рассмотрим, как расширение может вызвать ошибку в типовом механизме:
Программисты часто используют аннотации &Вместо или &После для изменения логики в модуле УчетНДСПереопределяемый. Если расширение модифицирует структуру временных таблиц или добавляет свои поля в запрос, который потом передается в типовую функцию ДобавитьОснованиеВСчетФактуруПолученный, это может нарушить целостность основного запроса.
Рекомендация: Для диагностики попробуйте временно отключить все активные расширения и повторить операцию регистрации счета-фактуры. Если ошибка исчезнет — причину нужно искать в коде расширения, который некорректно работает с временными таблицами.
Иногда ошибка в динамических запросах возникает из-за некорректного состояния итогов или кэша метаданных. Выполним следующие профилактические действия:
1C:Enterprise Server и очистить содержимое папки srvinfo (за исключением файлов конфигурации и журналов).Журнал учета счетов-фактур.Посмотрим на стек вызова ошибки. Проблема возникает в цепочке методов:
РеквизитыСФ = УчетНДСВызовСервера.СоздатьСчетФактуруПолученныйНаОсновании(ПараметрыСозданияСчетаФактуры);
...
СчетФактура = УчетНДСПереопределяемый.ДобавитьОснованиеВСчетФактуруПолученный(...);
Метод ДобавитьОснованиеВСчетФактуруПолученный внутри себя вызывает функцию формирования текста запроса. Если в вашей версии БП 3.0 (в диапазоне релизов 3.0.140–3.0.143) наблюдается данная проблема, выясним, нет ли доступных патчей от фирмы 1С. В этих версиях была зафиксирована ошибка в функции ТекстЗапросаТаблицыДокументовОснований, которая некорректно обрабатывала помещение данных во временные таблицы при объединении запросов по разным типам оснований.
Подводя итог, можно сказать, что ошибка Предложение ПОМЕСТИТЬ может располагаться только в основном запросе при оформлении возврата — это чаще всего следствие конфликта между типом первичного документа (УПД) и типом регистрируемого документа НДС (обычный СФ).
Главный совет: всегда проверяйте статус первичного документа. Если поступление было оформлено как УПД, используйте механизм корректировочных документов (УКД/КСФ). Это позволит избежать программных сбоев в сложных запросах подсистемы НДС и обеспечит корректное формирование книги покупок и книги продаж.