Как создать внешнюю печатную форму «Счет клиента» в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как создать внешнюю печатную форму «Счет клиента» в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35508
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        пример создания внешней печатной формы счет клиента

      • #35509
        bot_avaOdin — Одинэсник
        Участник

          Сергей, привет!

          Вот пример создания внешней печатной формы «Счет клиента» под управляемое приложение 1С, с нуля, без использования шаблонов, с регистрацией в системе и базовой структурой. Я дам тебе полный каркас обработки с основными моментами, чтобы ты мог быстро адаптировать под свои нужды.

          ### 1. Создаем внешнюю обработку (например, «СчетКлиентаВнешний.epf»)

          ### 2. В модуле обработки создаем экспортную функцию регистрации:

          Функция СведенияОВнешнейОбработке() Экспорт
              ПараметрыРегистрации = Новый Структура;
          
              // Вид обработки - печатная форма
              ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
          
              // Назначение - для какого объекта будет доступна печатная форма
              ПараметрыРегистрации.Вставить("Назначение", Новый Массив({"Документ.ЗаказКлиента"}));
          
              // Наименование печатной формы в списке
              ПараметрыРегистрации.Вставить("Наименование", "Счет клиента (внешний)");
          
              // Версия обработки
              ПараметрыРегистрации.Вставить("Версия", "1.0");
          
              // Краткая информация
              ПараметрыРегистрации.Вставить("Информация", "Внешняя печатная форма Счет клиента");
          
              // Безопасный режим (лучше Истина)
              ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
          
              // Команды - добавим команду печати
              ТаблицаКоманд = Новый ТаблицаЗначений;
              ТаблицаКоманд.Колонки.Добавить("Представление");
              ТаблицаКоманд.Колонки.Добавить("Идентификатор");
              ТаблицаКоманд.Колонки.Добавить("Использование");
              ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение");
              ТаблицаКоманд.Колонки.Добавить("Модификатор");
          
              НоваяКоманда = ТаблицаКоманд.Добавить();
              НоваяКоманда.Представление = "Печать счета клиента";
              НоваяКоманда.Идентификатор = "ПечатьСчета";
              НоваяКоманда.Использование = "ВызовКлиентскогоМетода"; // вызов процедуры Печать на клиенте
              НоваяКоманда.ПоказыватьОповещение = Истина;
              НоваяКоманда.Модификатор = "";
          
              ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
          
              Возврат ПараметрыРегистрации;
          КонецФункции
          

          ### 3. Создаем форму обработки (управляемая форма)

          — Добавляем реквизит формы типа «Ссылка» на объект «Документ.ЗаказКлиента» — назовем его `СсылкаНаОбъект`.
          — Добавляем кнопку «Печать» с командой «Печать».

          ### 4. В модуле формы пишем процедуру печати:

          &НаКлиенте
          Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
              // Открываем форму с параметрами для печати
              ПараметрыОткрытия = Новый Структура("ИсточникДанных, ПараметрыИсточника");
              ПараметрыОткрытия.ИсточникДанных = ВыполняемаяКоманда.ДополнительнаяОбработкаСсылка;
              ПараметрыОткрытия.ПараметрыИсточника = Новый Структура("ИдентификаторКоманды, ОбъектыНазначения");
              ПараметрыОткрытия.ПараметрыИсточника.ИдентификаторКоманды = ИдентификаторКоманды;
              ПараметрыОткрытия.ПараметрыИсточника.ОбъектыНазначения = МассивОбъектов;
          
              ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия);
          КонецПроцедуры
          

          ### 5. В модуле объекта обработки (модуль обработки) создаем экспортную функцию формирования табличного документа:

          Функция ПечатьСчетКлиента(МассивОбъектов) Экспорт
              ТабДок = Новый ТабличныйДокумент;
              ТабДок.ВывестиСтроку("Счет клиента");
              ТабДок.ВывестиСтроку("Документ: " + МассивОбъектов[0].Номер + " от " + Формат(МассивОбъектов[0].Дата, "ДФ=dd.MM.yyyy"));
              ТабДок.ВывестиСтроку("");
              ТабДок.ВывестиСтроку("Покупатель: " + МассивОбъектов[0].Контрагент.Наименование);
              ТабДок.ВывестиСтроку("Сумма: " + Формат(МассивОбъектов[0].СуммаДокумента, "ЧГ=2"));
              // Здесь можно добавить вывод табличной части, реквизитов и т.д.
          
              Возврат ТабДок;
          КонецФункции
          

          ### 6. В модуле формы добавляем вызов печати из объекта:

          &НаСервере
          Функция Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
              ТабДок = ПечатьСчетКлиента(МассивОбъектов);
              УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
                  КоллекцияПечатныхФорм,
                  "СчетКлиента",
                  "Счет клиента",
                  ТабДок
              );
              Возврат ТабДок;
          КонецФункции

          ### 7. В модуле формы добавляем кнопку «Печать» с обработчиком:

          &НаКлиенте
          Процедура ПечатьНаКлиенте(Команда)
              МассивОбъектов = Новый Массив;
              МассивОбъектов.Добавить(СсылкаНаОбъект);
              ТабДок = РеквизитФормыВЗначение("Объект").ПечатьСчетКлиента(МассивОбъектов);
              ТабДок.Показать("Счет клиента");
          КонецПроцедуры
          

          ### Итог:

          — Внешняя печатная форма зарегистрирована и доступна в списке дополнительных печатных форм для документа «Заказ клиента».
          — При вызове печати открывается стандартная форма БСП «ПечатьДокументов» с вашим табличным документом.
          — Можно отлаживать форму, открывая обработку напрямую и передавая ссылку на документ.

          Если хочешь, могу скинуть готовый пример обработки, но этот каркас — основа для создания внешних печатных форм в 1С под управляемое приложение.

          Если нужно, могу помочь с конкретным кодом под твою конфигурацию.

          Удачи!

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С