При работе в конфигурации «1С:Управление производственным предприятием 1.3» (УПП) пользователи часто сталкиваются с технической ошибкой: Ошибка при вызове метода контекста (Записать). Эта проблема особенно коварна тем, что она не всегда информативна в главном окне сообщения, а сам документ может проводиться «через раз» — в зависимости от состава номенклатуры. В данной статье мы подробно разберем, почему возникает эта ошибка, как она связана с налоговым учетом (НУ) и субконто, а также разработаем пошаговый алгоритм её устранения.
Прежде всего, нам необходимо локализовать проблему. Ошибка метода Записать при проведении документа означает, что система не может зафиксировать движения в регистрах бухгалтерии. Рассмотрим простой диагностический тест: попробуем снять флаг «Отразить в налоговом учете» в заголовке документа и провести его только по бухгалтерскому учету (БУ).
Если после этого документ проводится успешно, значит, корень проблемы кроется в настройках налогового учета или в некорректном сопоставлении счетов БУ и НУ. Проанализируем ситуацию: программа пытается сформировать проводку по налоговому плану счетов, но данные (аналитика), которые она пытается передать, не соответствуют структуре выбранного счета. Чаще всего система пытается записать субконто Контрагенты туда, где его не должно быть, или наоборот — пытается оставить обязательное поле пустым.
Документ Реализация товаров и услуг в УПП обладает сложной структурой табличной части. Многие счета учета подставляются автоматически и скрыты от глаз пользователя. Проанализируем содержимое строк документа, используя настройку списка:
Теперь внимательно изучим появившиеся данные. Особое внимание стоит уделить колонке Счет учета (НУ). Если для какой-то позиции номенклатуры там указан счет, который предполагает наличие субконто Контрагенты (например, счета расчетов, а не складские счета), система выдаст ошибку при попытке записи. Это происходит потому, что при списании товара со склада в налоговом учете аналитика по контрагенту обычно не предусмотрена типовым механизмом списания себестоимости.
Рассмотрим механизм, по которому 1С:УПП определяет, какие счета подставить в документ. Для этого используется регистр сведений Счета учета номенклатуры. Выясним причину возможных сбоев в этом регистре:
Система ищет подходящую запись по принципу «от частного к общему»:
Номенклатура и Склад.Номенклатура (без привязки к складу).Тип номенклатуры.Проанализируем ситуацию, когда в этом регистре создана запись с некорректными счетами НУ. Например, если в колонке Счет учета (НУ) по ошибке указан счет 62.01 или любой другой счет, требующий субконто Контрагенты, то при проведении реализации система попытается записать движение по этому счету без указания контрагента (так как это списание товара), что и приведет к ошибке метода Записать.
В УПП существует важный регистр — Установка соответствия счетов БУ и НУ. Рассмотрим, как он влияет на нашу проблему. Даже если в документе визуально указан верный счет БУ (например, 41.01), программа при формировании движений НУ обращается к этому регистру.
Если в настройках соответствия для счета 41.01 указан специфический счет налогового учета, у которого в плане счетов (налоговый учет) добавлено лишнее субконто или изменена иерархия аналитики, возникнет конфликт. Проверим план счетов налогового учета на предмет измененных или добавленных вручную субконто. Типовой налоговый план счетов не должен содержать субконто Контрагенты на счетах учета ТМЦ.
Разберем ситуацию, когда в реализации участвуют товары, принятые на комиссию (счет 004). В УПП реализация собственных товаров и комиссионных — это принципиально разные операции с точки зрения налогового учета.
Если в табличной части документа в колонке Статус партии указано значение Купленный, а счет учета при этом стоит 004.01, возникает логическое противоречие. Система НУ пытается найти соответствие для 004 счета, но по забалансовым счетам налоговый учет в типовой конфигурации не ведется. Это часто приводит к тому, что алгоритм проведения пытается обратиться к несуществующим объектам метаданных или передать неверные параметры в метод Записать.
Рекомендация: убедимся, что для комиссионных товаров правильно заполнен Статус партии (должен быть «На комиссии») и соответствующие счета доходов/расходов (например, 90.01.2 и т.д.).
Если визуальный осмотр счетов не помог, программисту необходимо воспользоваться отладчиком. Рассмотрим пошагово, как поймать место возникновения ошибки:
Налоговый в процедуре ПередЗаписью.ЭтотОбъект (набор записей).Субконто заполнено значением, тип которого недоступен для данного счета.Пример кода, который можно использовать в консоли отладки для анализа структуры субконто:
Для Каждого Запись Из НаборЗаписей Цикл
Счет = Запись.Счет;
Для К = 1 По Счет.ВидыСубконто.Количество() Цикл
ВидСубконто = Счет.ВидыСубконто[К-1].ВидСубконто;
ЗначениеСубконто = Запись.Субконто[ВидСубконто];
Сообщить("Счет: " + Счет + ", Вид субконто: " + ВидСубконто + ", Значение: " + ЗначениеСубконто);
КонецЦикла;
КонецЦикла;
Подводя итог, можно сказать, что ошибка «Записать» в 90% случаев в УПП вызвана попыткой подставить Контрагента в те проводки налогового учета, где этот вид субконто не предусмотрен. Для исправления выполним следующие действия:
Партии товаров на складах (налоговый учет) — иногда там зависают битые ссылки или некорректная аналитика, которая «подтягивается» при списании.Следуя этим шагам, мы сможем восстановить работоспособность документа и обеспечить корректное формирование налоговой отчетности в системе.