2

Как вывести печатную форму, из другого документа ?!

#1С 8.3#1С Зарплата и кадры

Доброе утро ! Есть Документ ЗарплатаКВыплате кнопка [Печать] -> Форма Т-53

Юзеры хотят видеть эту же пачатную форму в документе ВедомостьВКассе !

Попробовал, но не разобрался ( Поэтому прошу помощи ! Как вывести Форму Т-53, из другого документа ?

И было бы неплохо как то зарегистрировать эту форму для кнопки Печать, документа Ведомость в кассе; Подскажите куда копать !?

 1574 3
ДобавленоVitaly1C8556 дней назад
Последняя активность552 дня назад


Добавить комментарий

Кирилл написал:556 дней назад0

Простого способа нет, в любом случае придется программировать.

Если между документами ЗарплатаКВыплате и ВедомостьВКассе есть связь, и печатать надо по данным ЗарплатаКВыплате, тогда проще всего скопировать тексты модулей или иницировать процедуры из документа зарплаты

Ответить

Vitaly1C8 написал:552 дня назад0

Разобрался … оказалось не так уж и сложно, как показалось с первого взгляда ! “"На всякий случай опишу последовательность …

  1. Добавляем макет Т53 из ЗарплатаКВыплате в документ ВедомостьВКассу

  2. Открываем Макет, меняем переменную <ФизЛицо> на <ФИО>

  3. Открываем модуль документа ВедомостьВКассу, дополняем Функцию ПолучитьСтруктуруПечатныхФорм()

    // Возвращает доступные варианты печати документа
    //
    // Вовращаемое значение:
    //  Структура, каждая строка которой соответствует одному из вариантов печати
    //  
    Функция ПолучитьСтруктуруПечатныхФорм() Экспорт
    
        // ...      
    
        СтруктуруПечатныхФорм.Вставить("Т53ФИОСокращенно",   "Форма Т-53 (ФИО сокращенно)");
        СтруктуруПечатныхФорм.Вставить("Т53ФИОПолностью", "Форма Т-53 (ФИО полностью)");
    
        Возврат СтруктуруПечатныхФорм;
    
    КонецФункции // ПолучитьСтруктуруПечатныхФорм()
    
  4. дополняем функцию Печать()

    Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт

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

        // Функция формирует табличный документ с печатной формой "Т-53".
        //
        // Возвращаемое значение:
        //   Табличный документ - печатная форма
        //
        Функция ПечатьТ53(ФИОСокращенно = Истина) Экспорт
    
            // ФИОСокращенно  = истина;
    
            ТабДокумент = Новый ТабличныйДокумент;
            ТабДокумент.ПолеСлева = 0;
            ТабДокумент.ПолеСправа = 0;
            ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗарплатаКВыплатеОрганизаций_Т53";
    
            Макет      = ПолучитьМакет("Т53");    // В.Ч.
    
            // получаем данные для печати
            ВыборкаДляШапки  = СформироватьЗапросДляПечати().Выбрать();
            ВыборкаРаботники = СформироватьЗапросДляПечатиСтрок(ФИОСокращенно).Выбрать();    // В.Ч.
            // ВыборкаРаботники = СформироватьЗапросДляПечатиСтрокПВ(ДокументОбъект).Выбрать();
    
            // подсчитываем количество страниц документа - для корректного разбиения на страницы
            ВсегоСтрокДокумента = ВыборкаРаботники.Количество();
    
            ОбластьМакетаШапкаДокумента = Макет.ПолучитьОбласть("ШапкаДокумента");
            ОбластьМакетаШапка            = Макет.ПолучитьОбласть("Шапка");
            ОбластьМакетаСтрока      = Макет.ПолучитьОбласть("Строка");
            ОбластьМакетаИтогПоСтранице = Макет.ПолучитьОбласть("ИтогПоЛисту");
            ОбластьМакетаПодвал      = Макет.ПолучитьОбласть("Подвал");
            ОбластьМакетаПодвал.Параметры.РКО = "Расходный кассовый ордер № _______ от  ""___"" ___________ 20 ___ г.";
    
            // массив с двумя строками - для разбиения на страницы
            ВыводимыеОбласти = Новый Массив();
            ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
            ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице);
    
            // выводим данные о руководителях организации
            Пока ВыборкаДляШапки.Следующий() Цикл
    
                ОбластьМакетаШапкаДокумента.Параметры.Заполнить(ВыборкаДляШапки); // Шапка документа.
                ДокументОбъект = ДокументОснование;    // В.Ч.
                ОбластьМакетаШапкаДокумента.Параметры.ОтчетныйПериодС        = НачалоМесяца(ДокументОбъект.ПериодРегистрации);
                ОбластьМакетаШапкаДокумента.Параметры.ОтчетныйПериодПо      = ?(НЕ ЗначениеЗаполнено(ДокументОбъект.ПериодРегистрации), ДокументОбъект.ПериодРегистрации, КонецМесяца(ДокументОбъект.ПериодРегистрации));
                ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации    = СокрЛП(ОбластьМакетаШапкаДокумента.Параметры.НазваниеОрганизации);
    
                Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
    
                // СуммаДок = ДокументОбъект.Зарплата.Итог("Сумма") + ДокументОбъект.Зарплата.Итог("КомпенсацияЗаЗадержкуЗарплаты");
                СуммаДок = СуммаДокумента;    // В.Ч.
                Если СуммаДок <> 0 Тогда
                    ОбластьМакетаШапкаДокумента.Параметры.СуммаДок = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(СуммаДок, Валюта);
                    ОбластьМакетаШапкаДокумента.Параметры.СуммаДокРублей = Цел(СуммаДок);
                    ОбластьМакетаШапкаДокумента.Параметры.СуммаДокКопеек = (СуммаДок - Цел(СуммаДок)) * 100
                КонецЕсли;
    
                Если ВыборкаДляШапки.ВсегоДепонировано > 0 Тогда
                    ОбластьМакетаПодвал.Параметры.ВсегоДепонировано = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(ВыборкаДляШапки.ВсегоДепонировано, Валюта);
                Иначе 
                    ОбластьМакетаПодвал.Параметры.ВсегоДепонировано = "---";
                КонецЕсли;
                Если ВыборкаДляШапки.ВсегоВыплачено > 0 Тогда
                    ОбластьМакетаПодвал.Параметры.ВсегоВыплачено = ОбщегоНазначенияЗК.СформироватьСуммуПрописью(ВыборкаДляШапки.ВсегоВыплачено, Валюта);
                Иначе 
                    ОбластьМакетаПодвал.Параметры.ВсегоВыплачено = "---";
                КонецЕсли;
    
            КонецЦикла;
    
            ТабДокумент.Вывести(ОбластьМакетаШапкаДокумента);
            ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
            ТабДокумент.Вывести(ОбластьМакетаШапка);
    
            ВыведеноСтраниц = 1; ВыведеноСтрок = 0; ИтогоНаСтранице = 0;
            // выводим данные по строкам документа.
            Пока ВыборкаРаботники.Следующий() Цикл
    
                ОбластьМакетаСтрока.Параметры.Заполнить(ВыборкаРаботники);
    
                // Если ведомость еще открыта, то о депонировании говорить не стоит
                Если НЕ Проведен Тогда
                    ОбластьМакетаСтрока.Параметры.ЗаписьОДепонировании = "";
                КонецЕсли;
    
                // разбиение на страницы
                ВыведеноСтрок = ВыведеноСтрок + 1;
    
                // Проверим, уместится ли строка на странице или надо открывать новую страницу
                ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
                Если Не ВывестиПодвалЛиста и ВыведеноСтрок = ВсегоСтрокДокумента Тогда
                    ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
                    ВывестиПодвалЛиста = Не ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти);
                КонецЕсли;
                Если ВывестиПодвалЛиста Тогда
    
                    ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
                    ТабДокумент.Вывести(ОбластьМакетаИтогПоСтранице);
                    ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
                    ТабДокумент.Вывести(ОбластьМакетаШапка);
                    ВыведеноСтраниц = ВыведеноСтраниц + 1;
                    ИтогоНаСтранице = 0;
    
                КонецЕсли;
    
                ОбластьМакетаСтрока.Параметры.НомерСтроки = ВыведеноСтрок;
                ТабДокумент.Вывести(ОбластьМакетаСтрока);
                ИтогоНаСтранице = ИтогоНаСтранице + ВыборкаРаботники.Сумма;
    
            КонецЦикла;
    
            ОбластьМакетаИтогПоСтранице.Параметры.ИтогоНаСтранице = ИтогоНаСтранице;
            ОбластьМакетаПодвал.Параметры.КоличествоЛистов = ?(ВыведеноСтрок = 0,"",ВыведеноСтраниц + 1);
    
            ВыводимыеОбласти = Новый Массив();
            ВыводимыеОбласти.Добавить(ОбластьМакетаСтрока);
            ВыводимыеОбласти.Добавить(ОбластьМакетаИтогПоСтранице);
            ВыводимыеОбласти.Добавить(ОбластьМакетаПодвал);
            Для Сч = 1 По ОбластьМакетаСтрока.Параметры.Количество() Цикл
                ОбластьМакетаСтрока.Параметры.Установить(Сч - 1,""); 
            КонецЦикла;
            // ОбластьМакетаСтрока.Параметры.Физлицо = " " + Символы.ПС + " ";
            ОбластьМакетаСтрока.Параметры.ФИО = " " + Символы.ПС + " ";
            Пока ФормированиеПечатныхФорм.ПроверитьВыводТабличногоДокумента(ТабДокумент, ВыводимыеОбласти, Ложь) Цикл
                ТабДокумент.Вывести(ОбластьМакетаСтрока);
            КонецЦикла;
            ТабДокумент.Вывести(ОбластьМакетаИтогПоСтранице);
            ТабДокумент.Вывести(ОбластьМакетаПодвал);
    
            Возврат ТабДокумент;
    
        КонецФункции // ПечатьТ53()
    

Ответить

Кирилл написал:552 дня назад0

Вроде не сложно, но выглядит СТРАШНО :)

Ответить

Добавить комментарий

Задать вопрос!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Как зарегистрировать внешнюю печатную форму в 1С 8.3?

Народ, я не очень знаком с программой 1С 8.3 и с программированием на управляемы...

Печать табличной части документа 1С

Помогите решить проблему. Через контекстное меню табличной части документа польз...

Выводить разные данные в печатную форму

Всем добрый день! Возникла задача создавать приложения к договорам ()в форме эл...

v8.3: Как программно сформировать внешнюю печатную форму документа

Имеется обработка в которой есть реквизит Объект.ПрихНакл, в которой хранится сс...

Ссылка на документ в форму обработки внешней печатной формы.

Добрый день. Помогите новичку. Была задача написать для ERP внешнюю печатную фор...

Новое

"Наряд на хозтранспорт и спецтехнику" Путевые листы

Здравствуйте, Форумчане, прошу вашего совета. В организации такая ситуация: ест...

Создание обработки

Помогите с задачей. Суть такова - нужно создать внешнею обработку которая будет ...

Заполнение раздела 3 Расчет налоговой базы Книги доходов и расходов

Добрый день! Меня зовут Наталья. Про заполнение Кудир в КА очень все хорошо пишу...

Розница 2.2.4 пропал "отчёт ДС по платёжным картам"?

Здравствуйте, возникла проблема после обновления конфигурации до 2.2.4.33 пропал...

Перенаправления значений

1С:Предприятие 8.2 (8.2.19.130) Зарплата и Управление Персоналом, редакция 2.5 (...