При работе в конфигурации 1С:Бухгалтерия предприятия 3.0 пользователи нередко сталкиваются с ситуацией: открыв список договоров, они не могут найти привычную кнопку Сделать основным. Разберем, с чем связаны эти изменения в логике программы, почему кнопка пропадает в общем списке и какими способами можно назначить основной договор контрагента в пользовательском режиме.
В ранних версиях конфигурации признак основного договора хранился непосредственно в карточке партнера как реквизит ОсновнойДоговорКонтрагента справочника Контрагенты. В современных версиях этот реквизит исключен, а хранение перенесено в независимый регистр сведений ОсновныеДоговорыКонтрагента.
Проанализируем причину такого архитектурного изменения. Перенос данных в регистр сведений необходим для полноценной поддержки многофирменного учета и разделения взаиморасчетов по разным направлениям деятельности. Измерениями регистра являются:
Ресурсом регистра выступает ссылка на сам Договор. Благодаря этой структуре мы можем назначить для одного и того же контрагента разные основные договоры для разных собственных юридических лиц, а также разделить основные договоры на покупку и на продажу.
Выясним причину, по которой кнопка Сделать основным не отображается, если открыть справочник по пути Справочники > Договоры. В общем списке отображаются договоры всех контрагентов и организаций без явного контекста. Поскольку программе для записи в регистр требуются конкретная организация, контрагент и вид взаиморасчетов, система скрывает команду назначения, чтобы избежать ошибок и неоднозначности.
Разберем основной и самый удобный порядок действий для пользователя:
Основной договор будет визуально выделен в списке жирным шрифтом.
Рассмотрим альтернативный вариант установки признака непосредственно при создании или редактировании договора:
ОсновныеДоговорыКонтрагента сформируется автоматически.Обратите внимание: если для контрагента создается самый первый договор по определенной организации, система назначает его основным автоматически.
Для пользователей с полными правами и администраторов доступно прямое управление записями регистра сведений:
Основные договоры контрагента.Проанализируем, как программа выполняет автоподстановку договора при создании документов («Поступление (акт, накладная)», «Реализация (акт, накладная)», платежные поручения и др.).
Система ищет соответствие строго по комбинации трех параметров: Организация шапки документа + Контрагент + Вид договора, соответствующий операции. Если для контрагента назначен основной договор по Организации №1, а документ оформляется от имени Организации №2 (по которой основной договор не задан), поле «Договор» в документе останется пустым.
Если вы разрабатываете внешнюю обработку, интеграцию или расширение конфигурации, учитывайте следующие особенности:
Контрагенты.ОсновнойДоговорКонтрагента.РегистрыСведений.ОсновныеДоговорыКонтрагента с отбором по организации, контрагенту и виду договора.РаботаСДоговорамиКонтрагентовБП.Посмотрим на пример запроса для получения основного договора:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеДоговоры.Договор КАК Договор
|ИЗ
| РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговоры
|ГДЕ
| ОсновныеДоговоры.Организация = &Организация
| И ОсновныеДоговоры.Контрагент = &Контрагент
| И ОсновныеДоговоры.ВидДоговора = &ВидДоговора";
Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ВидДоговора", ВидДоговора);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОсновнойДоговор = Выборка.Договор;
КонецЕсли;