При переводе пользователей на работу через тонкий клиент в конфигурациях на обычных формах (таких как 1С:Управление производственным предприятием 1.3) часто возникает необходимость предоставить доступ к отдельным документам. Одним из наиболее востребованных документов для рядовых сотрудников является АвансовыйОтчет. Однако в типовой УПП 1.3 документ реализован исключительно на обычных формах. Разберем, почему попытка просто скопировать форму из других конфигураций приводит к проблемам и как правильно организовать ввод авансовых отчетов в тонком клиенте.
Проанализируем, с какими препятствиями сталкивается разработчик при попытке заимствования управляемой формы из современных конфигураций (например, Управление торговлей 11 или ERP):
Партнеры, Договоры, Соглашения, УпаковкиЕдиницыИзмерения, а также на регистры оперативного контура без прямого бухгалтерского учета. В УПП 1.3 документ ориентирован на бухгалтерский план счетов и субконто.&НаКлиенте) приведет к ошибкам времени выполнения, если у модулей не установлены флаги Вызов сервера и Сервер.Самый надежный и быстрый способ решения задачи — не копировать тысячи строк типового кода, а создать новую компактную управляемую форму непосредственно в документе АвансовыйОтчет.
Рассмотрим логику реализации по шагам:
Для корректного вызова нужной формы в зависимости от режима работы настроим перехват в модуле менеджера документа. Добавим обработчик события ОбработкаПолученияФормы:
Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
// Переопределяем форму только для основной формы объекта
Если ВидФормы = "ФормаОбъекта" Тогда
#Если ТонкийКлиент Или ВебКлиент Тогда
ВыбраннаяФорма = "Документ.АвансовыйОтчет.Форма.УправляемаяФормаДокумента";
СтандартнаяОбработка = Ложь;
#КонецЕсли
КонецЕсли;
КонецПроцедуры
Если требуется полноценная бухгалтерская логика на управляемой форме со счетами учета и расчетом НДС, в качестве исходного образца лучше использовать 1С:Бухгалтерия предприятия 3.0, а не УТ 11.
Выясним, почему БП 3.0 предпочтительнее:
Товары, ОплатаПоставщикам, Прочее, Авансы) в БП 3.0 концептуально совпадает со структурой УПП 1.3.Чтобы не вносить изменения в структуру типового документа и модуль менеджера, разработаем внешнюю обработку на управляемых формах. Посмотрим на преимущества такого подхода:
ДокументОбъект.АвансовыйОтчет:
&НаСервере
Функция СоздатьАвансовыйОтчетНаСервере(ДанныеФормы)
НовыйДокумент = Документы.АвансовыйОтчет.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Организация = ДанныеФормы.Организация;
НовыйДокумент.ФизЛицо = ДанныеФормы.ПодотчетноеЛицо;
Для Каждого СтрокаРасхода Из ДанныеФормы.Расходы Цикл
НоваяСтрока = НовыйДокумент.Прочее.Добавить();
НоваяСтрока.Содержание = СтрокаРасхода.Описание;
НоваяСтрока.Сумма = СтрокаРасхода.Сумма;
НоваяСтрока.НДС = СтрокаРасхода.НДС;
КонецЦикла;
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);
Возврат НовыйДокумент.Ссылка;
КонецФункции
Таким образом, отказ от адаптации громоздких типовых форм из УТ 11 в пользу собственной облегченной управляемой формы или отдельного АРМ позволяет быстро запустить работу подотчетных лиц в тонком клиенте без нарушения целостности учета в УПП 1.3.