Как назначить основной договор контрагента в 1С:Бухгалтерия 3.0?

Бухгалтер 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе в конфигурации 1С:Бухгалтерия предприятия 3.0 пользователи нередко сталкиваются с ситуацией: открыв список договоров, они не могут найти привычную кнопку Сделать основным. Разберем, с чем связаны эти изменения в логике программы, почему кнопка пропадает в общем списке и какими способами можно назначить основной договор контрагента в пользовательском режиме.

Архитектура хранения основных договоров

В ранних версиях конфигурации признак основного договора хранился непосредственно в карточке партнера как реквизит ОсновнойДоговорКонтрагента справочника Контрагенты. В современных версиях этот реквизит исключен, а хранение перенесено в независимый регистр сведений ОсновныеДоговорыКонтрагента.

Проанализируем причину такого архитектурного изменения. Перенос данных в регистр сведений необходим для полноценной поддержки многофирменного учета и разделения взаиморасчетов по разным направлениям деятельности. Измерениями регистра являются:

  1. Организация — собственная организация нашей информационной базы;
  2. Контрагент — партнер, с которым ведутся взаиморасчеты;
  3. Вид договора — направление взаиморасчетов (например, «С поставщиком», «С покупателем», «С комиссионером» и т. д.).

Ресурсом регистра выступает ссылка на сам Договор. Благодаря этой структуре мы можем назначить для одного и того же контрагента разные основные договоры для разных собственных юридических лиц, а также разделить основные договоры на покупку и на продажу.

Почему кнопка отсутствует в общем списке договоров

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

Способ 1. Установка через список договоров конкретного контрагента

Разберем основной и самый удобный порядок действий для пользователя:

  1. Перейдем в раздел Справочники > Контрагенты.
  2. Найдем и откроем карточку нужного контрагента (или выделим его в списке).
  3. На панели навигации карточки нажмем гиперссылку Договоры (перейдем в подчиненный список договоров).
  4. В открывшемся контекстном списке выделим нужный договор и нажмем кнопку Сделать основным (если кнопка не помещается на командную панель по ширине экрана, развернем меню Еще).

Основной договор будет визуально выделен в списке жирным шрифтом.

Способ 2. Назначение договора внутри его карточки

Рассмотрим альтернативный вариант установки признака непосредственно при создании или редактировании договора:

  1. Откроем форму самого договора.
  2. Убедимся, что заполнены реквизиты Организация, Контрагент и Вид договора.
  3. В верхней части формы или через командное меню нажмем Использовать как основной (или установим соответствующий статус в форме).
  4. Нажмем Записать и закрыть. При сохранении запись в регистре сведений ОсновныеДоговорыКонтрагента сформируется автоматически.

Обратите внимание: если для контрагента создается самый первый договор по определенной организации, система назначает его основным автоматически.

Способ 3. Прямое редактирование регистра сведений

Для пользователей с полными правами и администраторов доступно прямое управление записями регистра сведений:

  1. Откроем главное меню (в правом верхнем углу программы) и перейдем в пункт Функции для технического специалиста (или Все функции).
  2. Раскроем ветку Регистры сведений и выберем Основные договоры контрагента.
  3. В открывшемся списке можно вручную добавить новую строку, отредактировать существующую связку или удалить неактуальную запись.

Логика автоподстановки договоров в первичных документах

Проанализируем, как программа выполняет автоподстановку договора при создании документов («Поступление (акт, накладная)», «Реализация (акт, накладная)», платежные поручения и др.).

Система ищет соответствие строго по комбинации трех параметров: Организация шапки документа + Контрагент + Вид договора, соответствующий операции. Если для контрагента назначен основной договор по Организации №1, а документ оформляется от имени Организации №2 (по которой основной договор не задан), поле «Договор» в документе останется пустым.

Рекомендации для разработчиков

Если вы разрабатываете внешнюю обработку, интеграцию или расширение конфигурации, учитывайте следующие особенности:

  1. Нельзя обращаться к несуществующему реквизиту Контрагенты.ОсновнойДоговорКонтрагента.
  2. Для программного получения основного договора следует выполнять запрос к регистру сведений РегистрыСведений.ОсновныеДоговорыКонтрагента с отбором по организации, контрагенту и виду договора.
  3. В типовой конфигурации для работы с договорами рекомендуется использовать методы специализированного общего модуля РаботаСДоговорамиКонтрагентовБП.

Посмотрим на пример запроса для получения основного договора:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ОсновныеДоговоры.Договор КАК Договор
    |ИЗ
    |	РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговоры
    |ГДЕ
    |	ОсновныеДоговоры.Организация = &Организация
    |	И ОсновныеДоговоры.Контрагент = &Контрагент
    |	И ОсновныеДоговоры.ВидДоговора = &ВидДоговора";

Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
    ОсновнойДоговор = Выборка.Договор;
КонецЕсли;
← На главную