Представьте: вы только что обновили конфигурацию, а все кастомные формы исчезли, конечно, если вас обслуживает специализировнная организация например jih-online.ru, то все это они предусмотря, а вот если приходящий мастер или вбруг вы решили сами "покопаться", то проблема очень реальна! Знакомо? Я не раз видела, как пользователи, желая добавить пару строк в стандартный отчёт, лезут прямо в ядро. И потом плачут, когда после обновления всё пропадает. Но есть способ обойти эту ловушку - создать внешнюю печатную форму.
Зачем вообще городить огород? Потому что 1С - это не блокнот. Это система, где каждое изменение в конфигурации может вызвать цепную реакцию. А внешние обработки - как стерильные инструменты хирурга: они работают с данными, не вмешиваясь в анатомию системы. И да, это спасает при обновлениях. Всегда.
Сегодня разберём на примере формы Т-61 - той самой «записки-расчёта» при увольнении. Да, той, что вызывает столько споров в бухгалтериях. Мы сделаем её внешней, подключим к документу «Увольнение из организации» и оставим конфигурацию в покое. Чисто, безопасно, по-взрослому.
Зачем нужны внешние обработки
Давайте честно: многие считают внешние обработки пережитком прошлого. Мол, «зачем городить, если можно править в конфигурации?». Но это как ремонтировать двигатель, не выключая зажигание. Риск есть, а профит - сомнительный.
Внешняя обработка - это отдельный файл, который живёт параллельно с конфигурацией. Он не встраивается в неё, а просто знает, как с ней общаться. Представьте, что у вас есть робот-ассистент: он не встраивается в ваш дом, но может включить свет, если знает, где выключатель. Так и здесь.
Если завтра выйдет обновление 1С - ваша форма останется на месте. Никаких конфликтов, никаких «а где мои изменения?». Это не просто удобно - это стратегически правильно. Особенно если вы работаете в среде, где обновления идут регулярно, а ответственность - на вас.
Шаг первый: создаём обработку - как родить нового робота
Открываем 1С в режиме Конфигуратора. Не в «1С:Предприятии» - там вы не сможете создать внешнюю обработку. Это как пытаться построить дом, не имея чертежей.
Жмём Ctrl+N или идём в меню «Файл → Новый». В появившемся окне выбираем «Внешняя обработка». Да, это не «документ» и не «справочник» - это отдельный тип объекта, как приложение в телефоне. Назовём её, например, «УвольнениеТ61». Синоним можно оставить по умолчанию - он появится в интерфейсе у пользователей.
Теперь добавим один важный реквизит: СсылкаНаОбъект. Его тип - ДокументСсылка.УвольнениеИзОрганизаций. Это как сказать: «Этот робот работает только с увольнениями». Больше никаких ошибок, когда форма открывается не там, где надо.
Форма обработки: визитная карточка вашего инструмента
Теперь идём в ветку «Формы» и жмём «Добавить». Тип формы - «Форма обработки», и обязательно ставим галочку «Назначить формой основной». Это как сделать приложение главным на рабочем столе.
На вкладке «Поля формы» находим наш реквизит СсылкаНаОбъект и ставим ему галочку «На форме». Без этого пользователь не сможет передать документ в обработку. Представьте, что вы дали человеку ключ, но не сказали, от какой двери.
Теперь - самое интересное. Жмём правой кнопкой по кнопке «Выполнить» и выбираем «При нажатии». Здесь пишем код, который запустит печать. Но сначала нужно подготовить данные.
Готовим данные: валюта, ссылки и тихая магия
Перед тем как рисовать таблицу, нужно понять, что мы будем в неё пихать. В форме Т-61 есть расчёты - значит, нужна валюта. Добавим две переменные:
- ВалютаРегламентированногоУчета - та, что в бухгалтерии
- ВалютаУправленческогоУчёта - та, что в отчётах для руководства
Почему две? Потому что в 1С они могут отличаться. Например, в бухгалтерии всё в рублях, а в управленческом учёте - в долларах. И если вы не укажете, какую валюту брать, форма может выдать не то, что нужно.
Эти переменные мы заполним из настроек конфигурации. Это как задать системе вопрос: «А какая у нас основная валюта?». И она ответит. Никакой магии - просто запрос.
Макет: где рождается красота
Теперь идём в «Макеты» и жмём «Добавить». Назовём макет «Т_61», тип - «Табличный документ». Это как холст для картины. Теперь будем его заполнять.
Форма Т-61 - регламентированная. Значит, каждый пиксель на своём месте. Мы не можем просто «сделать красиво» - нужно точно повторить бланк. Шрифт, размер, отступы, рамки. Всё.
В макете мы создаём таблицу с нужным количеством строк и столбцов. Заполняем статику: названия граф, номер формы, пояснения. А динамические поля - зарплата, компенсации, дата увольнения - оставляем как ячейки с метками. Позже их заменит настоящий код.
Код в модуле объекта: когда магия становится реальностью
Теперь - самое вкусное. Жмём «Действия» → «Открыть модуль объекта». Здесь мы напишем, как данные из документа попадут в макет.
Сначала получаем ссылку на документ:
Документ = СсылкаНаОбъект.ПолучитьОбъект();
Затем - заполняем макет. Например, фамилию работника:
Макет.Ячейка(“Фамилия”).Текст = Документ.Сотрудник.Фамилия;
А теперь - расчёты. Берём начисления, удержания, считаем итог:
ИтогНачислено = 0;
Для Каждого СтрокаТаблицы Из Документ.Начисления Цикл
ИтогНачислено = ИтогНачислено + СтрокаТаблицы.Сумма;
КонецЦикла;
И так - по каждой графе. Всё, что есть в документе, мы транслируем в макет. Как переводчик на переговорах.
Пример таблицы с данными для формы Т-61
| Наименование показателя | Сумма, ₽ | Комментарий |
|---|---|---|
| Оклад за отработанное время | 45 000,00 | Рассчитано пропорционально дням |
| Компенсация за неиспользованный отпуск | 28 500,00 | 28 дней × средний дневной заработок |
| Выходное пособие | 60 000,00 | По соглашению сторон |
| Итого к выплате | 133 500,00 | После удержания НДФЛ |
Финальный штрих: подключаем и тестируем
Осталось подключить обработку к документу. Это делается через «Настройку интерфейса» или вручную - добавлением кнопки в форму документа. Кнопка вызывает внешнюю обработку и передаёт ей ссылку на текущий документ.
Тестируем: открываем увольнение, жмём кнопку - и видим нашу форму. Всё на месте, суммы правильные, шапка как в бланке. И, самое главное - при обновлении конфигурации она не исчезнет.
«Лучше потратить час на правильное решение, чем день на исправление ошибки» - не помню, кто сказал. Но это про 1С.
Внешние формы - это не волшебство. Это дисциплина. И уважение к системе. И к себе. Потому что вы - не просто пользователь. Вы архитектор процессов.
Строительная бригада №22198