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