При переносе документов из других конфигураций (например, из Управление торговлей 10.3) в 1С:Бухгалтерию 3.0 через Конвертацию данных 2.1 часто возникает ситуация, когда реквизиты, заполняемые в интерфейсе автоматически, при программном создании остаются незаполненными. Одной из таких проблем является реквизит СпособЗачетаАванса в документе Поступление товаров и услуг.
Рассмотрим подробно, как решить эту задачу и обеспечить корректное заполнение данного поля.
Прежде чем приступать к написанию кода, важно уяснить, что СпособЗачетаАванса в 1С:Бухгалтерии 3.0 является объектом типа ПеречислениеСсылка. В конфигураторе он доступен как Перечисления.СпособыЗачетаАвансов. Возможные значения данного перечисления:
АвтоматическиПоДокументуНеЗачитыватьВ типовой конфигурации 1С:Бухгалтерия 3.0 не существует глобальной настройки, которая позволяла бы через пользовательский интерфейс задать значение «по умолчанию» для всех будущих документов. Система заполняет это поле при интерактивном создании, используя стандартные механизмы заполнения формы, которые не всегда отрабатывают при загрузке объектов из внешних баз данных.
Поскольку мы используем правила конвертации, наиболее эффективным методом будет установка значения непосредственно в процессе выгрузки или загрузки объекта. Давайте разберем шаги, которые необходимо предпринять в правилах обмена (ПКО - Правила Конвертации Объектов).
Наиболее надежный способ — принудительно задать значение реквизита в правилах конвертации. В правиле для документа ПоступлениеТоваровУслуг перейдите в обработчик ПередВыгрузкой или ПослеЗагрузки. Мы рекомендуем использовать обработчик ПослеЗагрузки, так как он гарантирует, что объект уже создан в базе-приемнике.
Для установки значения воспользуемся следующим программным кодом:
// Установка способа зачета аванса программно
Объект.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
Если вы хотите сделать правила более гибкими или работаете в условиях, когда перечисление в базе-источнике отсутствует, можно передать значение как строку и преобразовать его в коде. В обработчике события ПередВыгрузкой (или в поле конвертации свойств) можно прописать:
// Если необходимо присвоить значение принудительно
Значение = Перечисления.СпособыЗачетаАвансов.Автоматически;
После того как вы программно проставили значение Автоматически, важно убедиться, что система корректно обрабатывает расчеты. Установка способа зачета — это только половина дела. Поведение программы зависит от следующих факторов:
Учетной политики организации. Настройки счетов учета (60, 62) должны соответствовать требованиям вашего учета.Документам расчетов с контрагентами, автоматический зачет будет ориентироваться на специфику этих документов.Рекомендуем после выполнения обмена провести проверку данных. Сформируйте Оборотно-сальдовую ведомость по счету 60 (или 62) с детализацией по субконто. Если зачет авансов происходит некорректно, значит, проблема кроется не в установке реквизита, а в отсутствии аналитики или некорректных остатках по авансовым счетам на момент проведения документов.
Проблема решается простым присвоением значения перечисления СпособЗачетаАвансов.Автоматически в обработчиках Конвертации данных. Это позволяет избежать ручного вмешательства и обеспечивает корректную работу типовых механизмов 1С:Бухгалтерии 3.0 после загрузки документов. Помните, что программная установка реквизита не отменяет необходимости корректной настройки договоров и порядка расчетов в самой конфигурации.