Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/355: Рейтинг темы: голосов - 355, средняя оценка - 4.84
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
1

Создание внешней печатной формы 1с 8.2

01.11.2011, 15:31. Просмотров 65163. Ответов 10
Метки нет (Все метки)

Ммм собственно совсем "малыш" в вопросе 1с, только начал изучать, попробовал воспользоваться тут поиском, то что искал не нашел, собственно, дали следующее задание:

В конфигурации «Зарплата и Управление персоналом»(ред 2.5) в справочнике «Сотрудники» можно распечатать трудовой договор по нажатию одноименной кнопки. Макет трудового договора и процедура печать используется в справочнике и соответственно в модуле данного объекта. Клиенты часто просят переделать трудовой договор под их образец. В таком случае мы не изменяем объекты конфигурации: встроенные печатные формы. Делаем внешний отчет. Как это выглядит: По нажатию кнопки «печать» открывается стандартный список печатных форм И еще одна строчка с названием новой печатной формы. Ваша задача изучить как можно в список печатных форм добавлять новую печатную форму. Процедура печати и сам макет должны быть описаны как вешний отчет, т.е в отдельном файле, к-й вызывается при выборе названия вашей печатной формы.

Итак, необходимо создать внешнюю печатную форму трудового договора. Сам макет, вид трудового договора не меняем.

>> Что ж я пытался сделать....
1. Покапался в справочнике указанном(ч\з конфигуратор), там Форма "ФормаЭлемента" самая "похожая" на ту что как я понял нужно "подредактировать" добавив новую печатную форму, но все содержимое заблокированно для редактирования(Объект поставщика не редактируется) и доступно только для чтения (может я неправильно конфиг установил или вообще не там копаю(?)..
2. Пошел через платформу искать гдеб чего сделать, нашел следущее "Сервис - Дополнительные Отчеты и Обработки - Дополнительные внешние печатные формы" (я так понимаю вроде это ближе к заданию(?)), открылось окошко, нажал (+) вылезло окошко "Регистрация внешней печатной формы" собственно заполнил "Наименование" ДопПечФорма >> в табличной части сего окна именованой как "Принадлежность печатной формы" нажал (+) и выбрал вкладку "Справочники" далее пункт "Сотрудники" (ОК) , после чего вылезла табличка с колонками (№, Представление объекта (заполнено: Справочник "Сотрудники"), Отбор (пусто), Файл печатной формы(пусто), Заменяемая печатная форма (пусто), Параметры обработки (не заполнялось, стоит <Задать параметры>).

Вопрос правильно ли я копаю и как правильно делать? после сих манипуляций в формеЭлемента во вкладке "печать - ..." не появилось моего элемента "ДопПечФорма", я так понимаю оттого что не указан файл печатной формы? Где его создавать? подскажите пожалуйста мб где почитать по этому поводу можно или вы знаете? или направьте пожалуйста в правильном русле, если меня не туда занесло...
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2011, 15:31
Ответы с готовыми решениями:

Создание внешней печатной формы
Здравствуйте. Получила первое задание по 1С создание внешней печатной формы. Инструкцию по...

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

Создание внешней печатной формы
Создаю внешнюю печатную форму. Поле ввода - Индентификатор &quot;Док&quot; тип &quot;Документ&quot; Кнопка Печать ...

Закрытие формы документа из внешней печатной формы
Нужно после печати документа, закрыть его форму. Управляемое приложение. Никак не могу понять прошу...

Разработка внешней печатной формы
Есть документ, для которого необходимо сформировать печатную форму. примерно такой: Номенклатура ...

10
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
01.11.2011, 16:29 2
прочесть не осилил
во внешней обработке добавляется реквизит "СсылкаНаОбъект" Тип в твоем случае будет СправочникСсылка
Добавляется макет, можно скопировать с типового
в модуле обработки пишется экспортная функция печати
Функция Печать() Экспорт
дорисовываешь где нужно СсылкаНаОбъект и всё работает.
На создание внешней печатной формы уходит максимум пол часа
1
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
01.11.2011, 18:24  [ТС] 3
Хотел написать что нифига не получилось, пока писал, нашел ошибку, все заработало, может я сделал неправильно, но получил что хотел таким образом(вдруг кому пригодиться):
1. Макет скопировал, назвал: МойМакет
2. В процедуру добавил (Общие модули - СотрудникиОрганизацииДополнительный)***:
1C
1
2
3
4
Процедура ДополнитьСтруктуруПечатныхФорм(СтруктураПечатныхФорм, ВидДоговора) Экспорт 
        СтруктураПечатныхФорм.Вставить("Печать", "Трудовой договор");
        СтруктураПечатныхФорм.Вставить("РегламентированныйОтпуск", "Справка по отпуску");
***СтруктураПечатныхФорм.Вставить("МойМакет", "Мой Макет");
3. В функцию добавил (Общие модули - СотрудникиОрганизацииПереопределяемый)*** (имя макета сменил с "Макет" на "МойМакет", остальное копи-паст)

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ЭтотОбъект) Экспорт
    *** ИначеЕсли ИмяМакета = "МойМакет" Тогда
    ТабДокумент = Новый ТабличныйДокумент;
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТрудовойДоговор_Печать";
        
        // получаем данные для печати
        Выборка = ЭтотОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
        
        // получаем макет
        Макет = ЭтотОбъект.ПолучитьМакет("МойМакет");
        
        // выводим данные 
        Если Выборка.Следующий() Тогда
            Макет.Параметры.Заполнить(Выборка);
            Макет.Параметры.ИспытательныйСрокСтрокой = ?(НЕ ЗначениеЗаполнено(Выборка.ИспытательныйСрок),"             месяцев", "" + Выборка.ИспытательныйСрок + " месяца(ев)" );
            Макет.Параметры.РежимРаботы = "" + Выборка.ВидГрафика + "; " + Выборка.ДлительностьРабочейНедели + " - часовая рабочая неделя";
            Макет.Параметры.ФормаОплаты = "Форма оплаты: " + Выборка.ВидРасчета + "; Оклад (тариф) = " + Выборка.ТарифнаяСтавка + " ("+Выборка.ВалютаТарифнойСтавки+")";  
            Макет.Параметры.ПолноеНазваниеОрганизации = СокрЛП(Макет.Параметры.ПолноеНазваниеОрганизации);
            Макет.Параметры.ДокументКемВыдан = СокрЛП(Макет.Параметры.ДокументКемВыдан);
            
            ВыборкаПерсональныхНадбавок = Выборка.ПерсональныеНадбавки.Выбрать();
            Если ВыборкаПерсональныхНадбавок.Количество()>0 Тогда
                СтрокаНадбавки = "Персональные надбавки: ";
                Пока ВыборкаПерсональныхНадбавок.Следующий() Цикл
                    СтрокаНадбавки = СтрокаНадбавки + ВыборкаПерсональныхНадбавок.Надбавка + "- " + ВыборкаПерсональныхНадбавок.Показатель1 + "; ";
                КонецЦикла;
                Макет.Параметры.Надбавки = СтрокаНадбавки;
            КонецЕсли;
        КонецЕсли;
 
        // выводим готовый документ
        ТабДокумент.Вывести(Макет);
        
        Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Мой макет");
fimbulwinter, спасибо, ты мне помог, уж не знаю насколько я правильно тебя понял, но благодаря тебе я сделал!
0
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
05.11.2011, 17:04  [ТС] 4
Так вот все таки возвращаясь к вопросу правильного выполнения задания, не совсем получается.
1. Создал внешнюю печатную форму
2. Скопировал макет во внешнюю обработку
3. добавил внешюю обработку печати через "СЕРВИС"
4. выдает ошибку:
PHP
1
2
Не удалось сформировать внешнюю печатную форму!
Поле объекта не обнаружено (СсылкаНаОбъект)
Я наверное неправильно понял\написал модуль обработки, куда смотреть подскажите пожалуйста?
0
05.11.2011, 17:04
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
07.11.2011, 04:34  [ТС] 5
С ссылкой разобралдся, другая беда теперь... :\ :

PHP
1
2
Не удалось сформировать внешнюю печатную форму!
Недостаточно фактических параметров
Добавлено через 18 минут
Модуль формы:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Функция Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, ЭтотОбъект) Экспорт
    
    // Получить экземпляр документа на печать
    Если ИмяМакета = "ВнОбр" Тогда
    ТабДокумент = Новый ТабличныйДокумент;
        ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ТрудовойДоговор_Печать";
        
        // получаем данные для печати
        Выборка = ЭтотОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
        
        // получаем макет
        Макет = ЭтотОбъект.ПолучитьМакет("ВнОбр");
        
        // выводим данные 
        Если Выборка.Следующий() Тогда
            Макет.Параметры.Заполнить(Выборка);
            Макет.Параметры.ИспытательныйСрокСтрокой = ?(НЕ ЗначениеЗаполнено(Выборка.ИспытательныйСрок),"             месяцев", "" + Выборка.ИспытательныйСрок + " месяца(ев)" );
            Макет.Параметры.РежимРаботы = "" + Выборка.ВидГрафика + "; " + Выборка.ДлительностьРабочейНедели + " - часовая рабочая неделя";
            Макет.Параметры.ФормаОплаты = "Форма оплаты: " + Выборка.ВидРасчета + "; Оклад (тариф) = " + Выборка.ТарифнаяСтавка + " ("+Выборка.ВалютаТарифнойСтавки+")";  
            Макет.Параметры.ПолноеНазваниеОрганизации = СокрЛП(Макет.Параметры.ПолноеНазваниеОрганизации);
            Макет.Параметры.ДокументКемВыдан = СокрЛП(Макет.Параметры.ДокументКемВыдан);
            
            ВыборкаПерсональныхНадбавок = Выборка.ПерсональныеНадбавки.Выбрать();
            Если ВыборкаПерсональныхНадбавок.Количество()>0 Тогда
                СтрокаНадбавки = "Персональные надбавки: ";
                Пока ВыборкаПерсональныхНадбавок.Следующий() Цикл
                    СтрокаНадбавки = СтрокаНадбавки + ВыборкаПерсональныхНадбавок.Надбавка + "- " + ВыборкаПерсональныхНадбавок.Показатель1 + "; ";
                КонецЦикла;
                Макет.Параметры.Надбавки = СтрокаНадбавки;
            КонецЕсли;
        КонецЕсли;
        // выводим готовый документ
        ТабДокумент.Вывести(Макет);
        
        Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Вн обр");
    
    Иначе
        СотрудникиОрганизацийДополнительный.ПечатьДополнительныхПечатныхФорм(ИмяМакета, КоличествоЭкземпляров, НаПринтер, ЭтотОбъект);
        
    КонецЕсли;
    
КонецФункции
0
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
07.11.2011, 19:14 6
обработку в студию
0
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
07.11.2011, 19:25  [ТС] 7
Вот, в архиве, появилась мысля где может быть косяк, но не факт, проверю, если не отпишу что поправил все, значит, непрвильно мыслил...
0
Вложения
Тип файла: rar VnObr.rar (9.0 Кб, 808 просмотров)
fimbulwinter
308 / 308 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
07.11.2011, 20:51 8
1. Реквизит СсылкаНаОбъект имеет тип Строка, должен быть СправочникСсылка (об этом писал ранее).
2. Функция Печать не должна иметь параметры => Функция Печать() Экспорт
3.
1C
1
2
// получаем данные для печати
        Выборка = ЭтотОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
заменить на
1C
1
2
// получаем данные для печати
        Выборка = СсылкаНаОбъект.СформироватьЗапросДляПечатиТрудовогоДоговора().Выбрать();
4. код:
1C
1
2
3
4
5
6
7
8
9
// выводим готовый документ
        ТабДокумент.Вывести(Макет);
        
        Возврат УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, "Вн обр");
    
    Иначе
        СотрудникиОрганизацийДополнительный.ПечатьДополнительныхПечатныхФорм(ИмяМакета, КоличествоЭкземпляров, НаПринтер, ЭтотОбъект);
        
    КонецЕсли;
скорее всего необходимо заменить на
1C
1
Возврат ТабДокумент;
ЗуПа у меня нет, всего лишь делал предположения
1
Dethmontt
Модератор
Эксперт 1С
2745 / 2502 / 443
Регистрация: 10.03.2011
Сообщений: 9,120
Записей в блоге: 1
Завершенные тесты: 1
07.11.2011, 22:53 9
ВнОбр.rar
Пробуй, если будут вопросы пиши, постараюсь ответить!
1
Arbitaly
0 / 0 / 0
Регистрация: 01.11.2011
Сообщений: 8
08.11.2011, 04:31  [ТС] 10
Странно, точно помню делал Ссылку на справочник(мб в момент какой то "редакции" скосячил чего), сейчас попробую.
1. Если убрать параметры, то :
{ВнешняяОбработка.ВнОбр.МодульОбъекта(4,7)}: Переменная не определена (ИмяМакета)
Если <<?>>ИмяМакета = "ВнОбр" Тогда (Проверка: Толстый клиент (обычное приложение))
2. ЭтотОбъект я додумался поменять на СсылкаНаОбъект (странно в реквезите стоит тип СправочникСсылка)

Добавлено через 13 минут
3. Попробовал заменить последнюю часть >>
Не удалось сформировать внешнюю печатную форму!
Недостаточно фактических параметров
Добавлено через 14 минут
Dethmontt, все работает, спасибо вам обоим за помощь!


Dethmontt, 1. Форма, с командой на печать обязательная часть? (вроде не заметил вывод на печать в такой форме, или как раз эта команда используется в справочнике "Сотрудники" в режиме "1С:Предприятие"?
2. Макет Параметры_Авторегистрации? Удалил, работает без него, это было "для себя"?(чтобы мне не путаться
3. Скажи пожалуйста из-за какой части кода была ошибка "Недостаточно фактических параметров" и почему ругался на то, когда удалял параметры в Функция Печать (Которые_тут) Экспорт; ? Еще раз СПАСИБО!!!
0
Dethmontt
Модератор
Эксперт 1С
2745 / 2502 / 443
Регистрация: 10.03.2011
Сообщений: 9,120
Записей в блоге: 1
Завершенные тесты: 1
08.11.2011, 10:16 11
1. Форма сделана для отладки!
2. Параметры_Авторегистрации - для того чтобы не выбирать для чего предназначена печатная форма (автоопределение - Справочникик.сотрудникиОрганизации)
3. Функция печать вызывается из Объекта без передачи в нее параметров поэтому ты не можешь написать в нее входящие параметры!
1
08.11.2011, 10:16
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2011, 10:16

Редактирование внешней печатной формы в 1С V7.7
День добрый всем спецам! Прошу помощи! Нужно чтобы во внешней печатной форме в столбце &quot;ТМЦ&quot; (в...

1с 8.2 БГУ изменение внешней печатной формы
Подскажите пожалуйста новичку в 1с. Мне нужно в БГУ изменить вид РКО и ПКО для документов НД_РКО...

Дополнительная форма для внешней печатной формы
Создала внешнюю печатную форму для документа. Но перед выводом данного отчета мне нужно у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.