Почему при выборе третьего субконто расчетов не открывается список документов в 1С:Бухгалтерия 3.0?

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

При ручном редактировании проводок на счетах учета расчетов с контрагентами (например, 60.02, 62.02, 76.05) пользователи могут столкнуться с ситуацией, когда при попытке заполнить третье субконто Документы расчетов с контрагентами программа не позволяет выбрать нужный тип первичного документа (например, Списание с расчетного счета, Поступление (акт, накладная) или Реализация (акт, накладная)). Вместо окна выбора типа или универсального списка документов открывается пустая или ограниченная форма выбора объекта Документ расчетов с контрагентом (ручной учет).

Разберем архитектуру механизма подбора расчетных документов в конфигурации «Бухгалтерия предприятия 3.0», выясним корень проблемы и рассмотрим пошаговое исправление этой ошибки.

Архитектурная роль формы выбора «ДокументРасчетовСКонтрагентом» в БП 3.0

В типовой конфигурации «Бухгалтерия предприятия» третье субконто счетов расчетов связано с планом видов характеристик ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами. Данный вид субконто имеет составной тип данных, включающий десятки различных документов конфигурации.

При интерактивном выборе значения субконто в табличной части вызывается типовая процедура общего модуля ОбщегоНазначенияБПКлиент.НачалоВыбораЗначенияСубконто. Проанализируем фрагмент этого кода:


Процедура НачалоВыбораЗначенияСубконто(Форма, Элемент, СтандартнаяОбработка, СписокПараметров) Экспорт
    ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СписокПараметров.СчетУчета);
    ПараметрыВыбора = Новый Структура();

    Для Индекс = 1 По ДанныеСчета.КоличествоСубконто Цикл
        Если ДанныеСчета["ВидСубконто" + Индекс] = ПредопределенноеЗначение(
            "ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами") 
            И ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"] = Элемент.ОграничениеТипа Тогда

            СтандартнаяОбработка = Ложь;
            СтруктураПараметров = Новый Структура;
            // Заполнение параметров отбора: Организация, Контрагент, ДоговорКонтрагента, СчетУчета...
            СтруктураПараметров.Вставить("ТипыДокументов", Элемент.ОграничениеТипа);
            
            ПараметрыФормы = Новый Структура("ПараметрыОбъекта", СтруктураПараметров);
            ОткрытьФорму("Документ.ДокументРасчетовСКонтрагентом.ФормаВыбора", ПараметрыФормы, Элемент);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

На первый взгляд кажется странным, что система открывает форму выбора конкретного метаданного Документ.ДокументРасчетовСКонтрагентом. Однако это штатный механизм БП 3.0. Данный объект выполняет две функции:

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

Причина ошибки: влияние расширений конфигурации

Если при вызове указанного кода вместо универсальной формы подбора открывается стандартный пустой список документов одного типа, причиной является наличие в информационной базе активного расширения конфигурации (cfe), в которое был добавлен объект Документ.ДокументРасчетовСКонтрагентом.

Рассмотрим, как возникает этот конфликт:

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

Пошаговое решение проблемы

Для восстановления корректной работы выбора расчетных документов выполним следующие действия:

  1. Перейдем в режим Конфигуратор.
  2. Откроем меню Конфигурация → Расширения конфигурации.
  3. Проверим установленные расширения и найдем то, в структуре которого заимствован объект Документ.ДокументРасчетовСКонтрагентом.
  4. Если функционал расширения не требует доработки именно этого документа, просто удалим объект ДокументРасчетовСКонтрагентом из состава метаданных расширения.
  5. Если расширение действительно модифицирует данный документ, необходимо заимствовать в расширение и его типовую форму ФормаВыбора, чтобы не терять логику универсального подбора.
  6. Обновим конфигурацию базы данных и перезапустим сеанс в режиме «1С:Предприятие».

Особенности отладки при вызове ОткрытьФорму

При анализе подобных сбоев важно помнить, что пошаговая отладка по клавише F11 в строке с методом ОткрытьФорму не выполняет прямой переход в исполняемый модуль открываемой формы, так как открытие окна обрабатывается платформой асинхронно.

Чтобы проанализировать поведение формы:

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

Важное примечание: при ручном формировании проводок на счетах расчетов документом Операция движения по специализированным регистрам взаиморасчетов и подсистемы НДС не формируются. Поэтому для корректировки расчетов на счетах 60, 62 и 76 рекомендуется по возможности использовать типовой документ Корректировка долга.

← На главную