Внешние формы Торг-12 и СФ для типовой бухии 7.7. Печать как выданных, так и полученных (ну, т.е. от поставщика) из документов поступления


Ничего особенного. Кладём формы в ExtForms\PrnForms, регистрируем для нужных документов, пользуемся при печати.
Если зарегистрировать формы для доков поступления (например, ПоступлениеМатериалов),- распечатаются как документы от поставщика.
СФ печатаются по 1137, 451 и 283 постановлениям в зависимости от даты.
Если положить в прнформс ещё и эту разработку http://avprog.ru/public/89294/, то можно и фио руководителей-гавбухов и проч реквизиты заполнять во входящих документах.
Может кому и пригодится.

Ничего особенного. Кладём формы в ExtForms\PrnForms, регистрируем для нужных документов, пользуемся при печати.
Если зарегистрировать формы для доков поступления (например, ПоступлениеМатериалов),- распечатаются как документы от поставщика.
СФ печатаются 1137, 451 и 283 в зависимости от даты.
Если прнформс ещё и эту разработку http://avprog.ru/public/89294/, то можно и фио руководителей-гавбухов и проч реквизиты заполнять во входящих документах.
Может кому и пригодится.

Однако, в доке ПоступлениеТоваров нет кнопки печать...
Добавим?
Для желающих, опишу последовательность действий, они не сложны, с копи-пастом, думаю, все справятся.
зы:Описываю что и где копировать из конфигурации, но можно копировать и отсюда.

1.Открываем форму дока, где есть кнопа Печать, например, ПоступлениеМатериалов.
2.Копируем кнопку Печать и слева от неё кнопу выбора печформы и вставляем в форму ПоступлениеТоваров.
3.Открываем модуль формы ПоступлениеМатериалов, вверху модкля копируем

Перем ТаблицаПечФорм;  // список печатных форм документа
Перем НомерТекущейФормы;

аналогично вставляем в начало модуля формы ПоступлениеТоваров

4.Идем вниз модуля формы ПоступлениеМатериалов, копируем

ТаблицаПечФорм  = СоздатьОбъект("ТаблицаЗначений");
ТаблицаПечФорм.НоваяКолонка("Название","Строка",,,,30);
ТаблицаПечФорм.НоваяКолонка("Файл","Строка",,,"Файл",10);
ТаблицаПечФорм.НоваяКолонка("Кнопка","Строка",,,,10);
ТаблицаПечФорм.НоваяКолонка("ФайлОписания","Строка");
 
вставляем в самый конец модуля формы ПоступлениеТоваров после строк

СписокВариантовОтраженияВозврата.ДобавитьЗначение(1, "в книге покупок");
СписокВариантовОтраженияВозврата.ДобавитьЗначение(0, "в книге продаж");

 5.Ищем в модуле формы ПоступлениеМатериалов 2 процедуры
//******************************************************************************
// ПоКнопкеПечать()
//
// Вызывается из формул элементов диалога:
//  Кнопка "кнПечать".
//
// Описание:
//  Определяется соответствующая печатная форма.
//  
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
 
 Если  ПустоеЗначение(НомерТекущейФормы) = 1  Тогда
  НомерТекущейФормы = 1;
  Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
 КонецЕсли;
 
 Если НомерТекущейФормы = 1  Тогда
  Печать();
  
 Иначе
  Параметры = СоздатьОбъект("СписокЗначений");
  Параметры.ДобавитьЗначение(Контекст, "Контекст");
  Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
  Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
  
  ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
 КонецЕсли;
 
КонецПроцедуры // ПоКнопкеПечать()

//******************************************************************************
// ПоКнопкеВыборПечатнойФормы()
//
// Вызывается из формул элементов диалога:
//  Кнопка "кнВыбПечать".
//
// Описание:
//  - открывает список для выбора способа печати.
//  - формирует таблицу по выбранному способу.
//
Процедура ПоКнопкеВыборПечатнойФормы()
 
    ВыбНомер = глВыборПечатнойФормы("Документ." + Вид(), ТаблицаПечФорм);
 Если ВыбНомер > 0 Тогда
  НомерТекущейФормы = ВыбНомер;
  Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
  ПоКнопкеПечать();
 КонецЕсли;

КонецПроцедуры // ПоКнопкеВыборПечатнойФормы()

копируем и вставляем в конце модуля ПоступлениеТоваров перед строкой

//******************************************************************************
Новый = 0;

Во вставленном тексте процедуру ПоКнопкеПечать заменить на этот текст, либо заккоментировать строки (т.е. поставить // в начале стоки) как показано ниже

//******************************************************************************
// ПоКнопкеПечать()
//
// Вызывается из формул элементов диалога:
//  Кнопка "кнПечать".
//
// Описание:
//  Определяется соответствующая печатная форма.
//  
Процедура ПоКнопкеПечать(СразуНаПринтер = 0,КолЭкз = 1)
 
 кСтрок=ТаблицаПечФорм.КоличествоСтрок();
 Если кСтрок>0 Тогда
  Если  ПустоеЗначение(НомерТекущейФормы) = 1  Тогда
   НомерТекущейФормы = 1;
   Форма.кнПечать.Заголовок(ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы, "Кнопка"));
  КонецЕсли;
  
//  Если НомерТекущейФормы = 1  Тогда
   //Печать();
   
//  Иначе
   Параметры = СоздатьОбъект("СписокЗначений");
   Параметры.ДобавитьЗначение(Контекст, "Контекст");
   Параметры.ДобавитьЗначение(СразуНаПринтер, "Устройство");
   Параметры.ДобавитьЗначение(КолЭкз, "КоличествоКопий");
   
   ОткрытьФорму("Отчет", Параметры, глКаталогПечФорм+ТаблицаПечФорм.ПолучитьЗначение(НомерТекущейФормы,"Файл"));
//  КонецЕсли;
 КонецЕсли;
 
КонецПроцедуры // ПоКнопкеПечать()

 6. Ищем в модуле формы ПоступлениеМатериалов конец процедуры поиском по "// ПриОткрытии",  строки

 // Заполним таблицу для выбора печатной формы
 НомерТекущейФормы = глУстановкаКнопкиПечать(Контекст, "Документ." + Вид(),ТаблицаПечФорм);

копируем и вставляем по аналогии в конец процедуры ПриОткрытии формы ПоступлениеТоваров

 

Собссно всё. Сохраняем, пользуемся, наслаждаемя.

Не забываем, что вы внесли изменения в конфигурацию при обновлении.

Но даже если забыли, это не критично, на данные не влияет, повторяем вышеописанные действия и всё.

В общем, при определенной сноровке, делов на 5 мин.

Всем Удачи!

Файлы обработки:

-