При ручном редактировании проводок на счетах учета расчетов с контрагентами (например, 60.02, 62.02, 76.05) пользователи могут столкнуться с ситуацией, когда при попытке заполнить третье субконто Документы расчетов с контрагентами программа не позволяет выбрать нужный тип первичного документа (например, Списание с расчетного счета, Поступление (акт, накладная) или Реализация (акт, накладная)). Вместо окна выбора типа или универсального списка документов открывается пустая или ограниченная форма выбора объекта Документ расчетов с контрагентом (ручной учет).
Разберем архитектуру механизма подбора расчетных документов в конфигурации «Бухгалтерия предприятия 3.0», выясним корень проблемы и рассмотрим пошаговое исправление этой ошибки.
В типовой конфигурации «Бухгалтерия предприятия» третье субконто счетов расчетов связано с планом видов характеристик ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами. Данный вид субконто имеет составной тип данных, включающий десятки различных документов конфигурации.
При интерактивном выборе значения субконто в табличной части вызывается типовая процедура общего модуля ОбщегоНазначенияБПКлиент.НачалоВыбораЗначенияСубконто. Проанализируем фрагмент этого кода:
Процедура НачалоВыбораЗначенияСубконто(Форма, Элемент, СтандартнаяОбработка, СписокПараметров) Экспорт
ДанныеСчета = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СписокПараметров.СчетУчета);
ПараметрыВыбора = Новый Структура();
Для Индекс = 1 По ДанныеСчета.КоличествоСубконто Цикл
Если ДанныеСчета["ВидСубконто" + Индекс] = ПредопределенноеЗначение(
"ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.ДокументыРасчетовСКонтрагентами")
И ДанныеСчета["ВидСубконто" + Индекс + "ТипЗначения"] = Элемент.ОграничениеТипа Тогда
СтандартнаяОбработка = Ложь;
СтруктураПараметров = Новый Структура;
// Заполнение параметров отбора: Организация, Контрагент, ДоговорКонтрагента, СчетУчета...
СтруктураПараметров.Вставить("ТипыДокументов", Элемент.ОграничениеТипа);
ПараметрыФормы = Новый Структура("ПараметрыОбъекта", СтруктураПараметров);
ОткрытьФорму("Документ.ДокументРасчетовСКонтрагентом.ФормаВыбора", ПараметрыФормы, Элемент);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
На первый взгляд кажется странным, что система открывает форму выбора конкретного метаданного Документ.ДокументРасчетовСКонтрагентом. Однако это штатный механизм БП 3.0. Данный объект выполняет две функции:
Если при вызове указанного кода вместо универсальной формы подбора открывается стандартный пустой список документов одного типа, причиной является наличие в информационной базе активного расширения конфигурации (cfe), в которое был добавлен объект Документ.ДокументРасчетовСКонтрагентом.
Рассмотрим, как возникает этот конфликт:
ДокументРасчетовСКонтрагентом в расширение (например, для добавления реквизита или изменения прав), но не заимствует его основную форму ФормаВыбора.ОткрытьФорму("Документ.ДокументРасчетовСКонтрагентом.ФормаВыбора", ...) платформа 1С в первую очередь ищет форму в контексте расширения.Для восстановления корректной работы выбора расчетных документов выполним следующие действия:
Документ.ДокументРасчетовСКонтрагентом.ДокументРасчетовСКонтрагентом из состава метаданных расширения.ФормаВыбора, чтобы не терять логику универсального подбора.При анализе подобных сбоев важно помнить, что пошаговая отладка по клавише F11 в строке с методом ОткрытьФорму не выполняет прямой переход в исполняемый модуль открываемой формы, так как открытие окна обрабатывается платформой асинхронно.
Чтобы проанализировать поведение формы:
Документ.ДокументРасчетовСКонтрагентом.Форма.ФормаВыбора.ПриСозданииНаСервере и ПриОткрытии.Важное примечание: при ручном формировании проводок на счетах расчетов документом Операция движения по специализированным регистрам взаиморасчетов и подсистемы НДС не формируются. Поэтому для корректировки расчетов на счетах 60, 62 и 76 рекомендуется по возможности использовать типовой документ Корректировка долга.