1с упп вставить в печатную форму счета скан печать
(13) так пройдись отладчиком по этой функции, да - там куча условий по которым выполняется УдалитьВсеОбластиФаксимиле(ОбластьМакета);,
в моем случае в СведенияОДокументе не было нужного псевдонима. (это конечно при условии, что в макете корректно область факсимиле оформлена).
(0)У меня всё работает как обычно, поле рисунок, в нём изображение печати на прозрачном фоне.
(14) Второй день блужу по коду . )
(15) выложи код модуля внешней обработки где происходит передача в печать и подпись ?
(16)Вы хотите использовать фотки которые в карточке организации прикрепить можно?
Если так, то сорри.. я так не делаю, некрасиво получается.. я сам добавляю на подвал макета поля рисунок и размещаю его именно там, где мне нужно.
(17)Так и я сделал . хотелось как в типовой печатной форме использовать галочку добавить рисунки. А так приходится использовать 2 внешних отчета , один без факсимиле, второй факсимиле.. Кстати кто знает как программно получить подпись руководителя ?
Я обычно вырезаю когда делаю ВПФ, так как в ВПФ макет уже свой, то в него тупо можно добавить необходимые подписи и печати..
(19) да я понял , я так сделал . но хочется чтобы можно было в одном макете и добавить и убрать печати , видимо не хватает какого-то параметра что ли в СтруктураПараметровПечати , хотя сверял с печатью макета из конфигурации данные те же самые передаются
И вот это делал - Не получается сделать флажок "Подпись и печать" во внешней печатной форме - со слов "Перед этим вызовом нужно определить ПараметрыПечати следующим образом:"?
(20)Сделай в одном макете.. даже в одной ВПФ, перед печатью показывай форму в которой будет вопрос выводить подпись и печать или нет..
И исходя из этого параметра выводи область подвала с рисунками или область подвала без рисунков..
(21) флажок есть в форме общей печати , но никакой реакции при включении,выключении не происходит . нет картинок
(22) хотелось бы разобраться именно как эта функция отрабатывает правильно .
ЗЫ так-то сделал 2 формы с печатью и без, напрямую тяну по фирме и руководителю картинки из двоичных данных.
(23)Поле рисунок полностью помещается в область печати? С этим вроде бывают проблемы я помню.
(27) Да, без проблем, когда я напрямую гружу подпись и печать . Терзают смутные сомнения, что используя метод ДополнитьДокументПодписьюИПечатью(ТабличныйДокумент, СведенияОДокументе, ОбъектыПечати, СтруктураПараметровПечати)
тоже заполняются, только не хватает какой-то переменной, которой в форме печати говорила бы, что есть такие реквизиты и их можно регулировать флажком "подпись и печать". потому что в отладчике не переходит по событию выбора значения флажка при выводе ВПФ и работает , когда из типовой формируешь
(28) Если взять УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью(ТабличныйДокумент, СведенияОДокументе, ОбъектыПечати, ПараметрыПечати) из конфы по печати счета и вывести резалт в обычный табличный документ (просто для проверки), то факсимилей не будет. Получается, что она работает в купе с общей формой и тем флажком на форме. Отдельно его заюзать не получится. Хотя в потрохах, есть на это заточки, и туда якобы даже можно передать адрес хранилищ, где лежат картинки этих факсимиле, однако в конце по коду, все равно все факсимиле кодом же и очищаются. Т.е. кастомизации там не получилось, или я не понял как ее подюзать.
(29) ага , просто вызывая УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью(ТабличныйДокумент, СведенияОДокументе, ОбъектыПечати, ПараметрыПечати) я так понял активируется флажок "Подпись и печать"
(31) а вот когда флажком уже в форме печати играешь , он в картинки с именами содержащими названия "факсимиле" добавляет или очищает .
(32) дык так и сделал , а не выходит каменный цветок . только названия картинок должны соответствовать названиям двоичных файлов картинок из подчиненного "Организациям" справочника ПрикрепленныефайлыОрганизаций. Иначе программа не знает в какую картинку подпись или печать вставлять
(33) Так ты сам получи двоичные данные в твоей ВПФ, и в макете в соответствующие рисунки картинку выведешь по твоим двоичным данным. Дальше они не должны очищаться.
(34) так и сделал , отключил при выводе в общую форму флажок , но хотелось бы разобраться в чем причина , и в дальнейшем пригодится делать ону форму и выводить печати интерактивно
(35) так причина в том и есть, что видимо разработчики не предполагали задействование ДополнитьДокументПодписьюИПечатью через ВПФ, как полноценный отдельный механизм. Нет туда адекватной прокидки без этой общей формы.
(36) ИМХО , что-то упускаем . "Общей форме печати" все равно откуда ее вызвали из типового документа или ВПФ , какой-то параметр при вызове впф не учитывается или неверно указывается и поэтому флажок не реагирует.
(37) Если бы это было так, тогда простой вызов этой функции рисовал бы тебе подписи :) Однако они очищаются.
(38) не факт , м.б. не передается ссылка на временное хранилище картинок , или какой-то параметр не указывается , который как раз и влияет на вывод и удаление картинок, х.з. тема интересная . но пока текучкой занят нет времени расковырять.
(39) >>не передается ссылка на временное хранилище картинок
Это не важно, они все равно очищаются в самом конце. По хорошему, там должна быть проверка на заполненность картинок и если они заполнены, их очищать не нужно. Тогда можно было бы напрямую дергать эту функцию и не знать себе проблем. Но сейчас там явная заточку и на форму, и на имена. Т.е. нет прокидки этого механизма наружу.
(40) Может и так , но всем не равнодушным по этой теме предлагаю докопаться до истины и дать рецепт что нужно сделать , чтобы в ВПФ флажок заработал как надо .
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.
Добавим в уже имеющую печатную форму печать и подпись.
1. Сделаем две команды, старую команду оставим без изменений и добавим новую с факсимиле.
В процедуре печать определяем какую команду выбрал пользователь и вызываем процедуру СформироватьПечатнуюФорму в нее передаем 2-й параметр "НаименованиеПФ"
В конце процедуры СформироватьПечатнуюФорму перед выводом подвала. Добавим условие, где будем проверять, что вызвали команду с факсимиле
Если вызвали команду с факсимиле выводим подпись и печать. Файлы с картинками возьмем из справочников ОрганизацииПрисоединенныеФайлы, ФизическиеЛицаПрисоединенныеФайлы .
В режиме предприятия добавляем файлы Печати и подписи. Печать добавляем в Присоединенные файлы Организации
2. Подпись добавляем в присоединенные файлы физического лица (подписанта)
3. Далее редактируем макет. В макете в область подвала нужно добавить две пустые картинки.
Выбираем любую картинку.
Переходим в свойство. И очищаем свойство"Картинка", свойство "Линия" меняем на "нет линии"
Получается пустая картинка. К ней будем обращаться по имени.
4. Убираем фон в картинке (сделаем фон картинки прозрачным)
Открываем картинку Photoshop . Выбираем инструмент "волшебный ластик" им нажимаем в фон. Фон по принципу заливки исчезает.
Для того чтобы сохранить картинку заходим в меню файл. Выбираем пункт "сохранить для Web"
Выбираем формат ping-24. Нажимаем кнопку сохранить.
1С:Комплексная автоматизация 2 (2.4.9.98)
Платформа 1С:Предприятие 8.3 (8.3.16.1148)
Специальные предложения
БСП версии 3.0.3. (8) А Вы под "стандартным механизмом БСП" что подразумеваете? Судя по документации БСП в подсистеме печати нет интерфейса для работы с факсимиле, за исключением переопределяемой процедуры ПриПолученииПодписейИПечатей, которая в Комплексной не вызывается. А если Вы про ФормированиеПечатныхФорм.ВывестиФаксимилеВТабличныйДокумент() в Комплексной, то там область табличного документа заменяется картинкой и она применима только при печати счета, т. к. области с подписями у всех макетов разные, а создавать и хранить картинку подвала для каждой печатной формы нецелесообразно. Я же храню отдельно картинку для печати и отдельно каждую подпись лиц, имеющих право подписи. Потом в табличный документ программно добавляю в нужные места нужные подписи. (13) Я имею ввиду то, что если вы добавите правильные области в макеты печатных форм, то после формирования печатной формы сверху появляется галочка - вывести подпись и печать. Интегрированные в конфигурацию печатные формы - да, так работает. Внешние печатные формы - нет, не работает. По крайней мере у меня не получилось. Вы не пробовали? (8) В типовой БП 3.0 используется для вывода общая форма "Печать документов", в которой для вывода факсимиле используется флажок "Подпись и печать". Правда, он появляется только при определенных в макете областей, имена которых начинаются (содержат) слово "Факсимиле".
Перед тем тем, как вернуть созданный из макета табличный документ в коллекцию печатных форм, надо заполнить эти области через вызов процедуры БСП УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью().
У меня в БП 3.0.81.25 почти все внешние печатные формы именно так оформлено. лет 6 назад такая задача от главбуха мне показалась моветоном, а, оказывается, на ИС куча поделок на этот счёт )
Просмотры 43322
Загрузки 0
Рейтинг 79
Создание 08.04.20 10:40
Обновление 21.01.21 16:58
№ Публикации 1217788
Тип файла Нет файла
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
12.12.2020 4562 Eugen-S 23
СКД: 5 советов, как сделать лучше
Несколько примеров решения задач с использованием разных подходов
27.10.2021 4481 Neti 19
Что за ? в коде, или Секретный оператор в 1С
Инкремент, модуль и прочая магия, которая скрыта под символом "?"
21.10.2021 8376 SeiOkami 41
Полезные примеры СКД, ч.2
Еще несколько примеров решения задач в СКД.
06.04.2021 10877 Neti 8
27.01.2016 85840 Serginio 116
Обзор полезных методов БСП 3.1.4
Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.
25.03.2021 41434 rayastar 51
Звуковое управление в 1С 8.3
В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.
16.03.2021 7230 velemir 33
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions
"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.
28.12.2020 8963 comol 31
Использование программных перечислений, ч.1: строковые константы Промо
Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?
10.12.2016 41158 unichkin 74
Базовые вещи БСП, которые облегчат жизнь программисту 1С
В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.
30.08.2020 20393 quazare 34
[Общий модуль] Динамическое формирование интерфейса
Версия 2.0.0.1 + добавил GitHub
28.08.2020 13076 rpgshnik 74
Форма выбора (подбор) в управляемых формах
Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.
08.05.2020 79505 user5300 19
Вспомогательные инструкции в коде 1С Промо
Помогаем редактору кода 1С помогать нам писать и анализировать код.
15.10.2018 36205 tormozit 106
Программная работа с настройками СКД
Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.
27.01.2020 66236 ids79 26
[СКД] Программное создание схемы компоновки данных
Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".
15.01.2020 43933 John_d 22
Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения
30.12.2019 35642 kuzyara 38
Оформление и рефакторинг сложных логических выражений Промо
В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.
20.09.2012 82911 tormozit 131
Сходство Джаро - Винклера. Нечеткое сравнение строк
В области информатики и статистики сходство Джаро - Винклера представляет собой меру схожести строк для измерения расстояния между двумя последовательностями символов. В публикации рассмотрены некоторые особенности алгоритма, и представлен вариант его реализации на языке 1С.
25.12.2019 8466 brooho 19
22.11.2019 12435 Sibars 19
Полезные процедуры и функции для программиста
Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.
07.10.2019 39863 HostHost 41
Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо
Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.
11.07.2007 54515 tormozit 51
Таблица значений. Нюансы
Обзор некоторых аспектов использования общеизвестного инструмента 1С.
01.10.2019 53346 Yashazz 56
[Шпаргалка] Программное создание элементов формы
Программное создание практически всех популярных элементов формы.
06.09.2019 103355 rpgshnik 75
Агрегатные функции СКД, о которых мало кто знает
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
05.09.2019 78183 ids79 56
Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо
Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки
10.09.2017 51286 tormozit 74
Регистры бухгалтерии. Общая информация
Общая информация о внутреннем устройстве регистров бухгалтерии.
05.09.2019 46880 YPermitin 25
Три костыля. Сказ про фокусы в коде
Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.
03.09.2019 30255 YPermitin 81
Иерархия без "В ИЕРАРХИИ"
22.08.2019 15106 ildarovich 24
Выгрузка документа по условию Промо
Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.
25.04.2019 18048 m-rv 3
Отслеживание выполнения фонового задания
Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.
17.08.2019 45373 ids79 22
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.
08.08.2019 153411 ids79 75
Фоновое выполнение кода в 1С - это просто
Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
02.08.2019 61143 avalakh 27
Как прикрутить ГУИД к регистру сведений Промо
. и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.
16.04.2019 23373 m-rv 18
Разбираемся с параметрами редактирования СКД
Связь по типу, Параметры выбора, Связи параметров выбора
31.07.2019 42114 json 17
СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты
Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.
26.07.2019 106338 ids79 17
Обработчики событий при записи объектов. Зачем и что за чем?
Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта. Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.
Статья отображает частное мнение автора по данному вопросу и не претендует на истину в последней инстанции. Поэтому если кто-то может предложить иные способы решения данной проблемы, можете писать их в комментах)
Видеоверсию данной статьи можете посмотреть тут: СчетНаОплатуПокупателюВнешний.e pf из предыдущей моей статьи. Добавим реквизит обработки: Комментарий, тип строка(100).
Добавим форму обработки, на которой разместим данный реквизит, разместим кнопку «Печать» и создадим команду формы «Печать»
Также у формы создадим параметр «ОбъектыНазначения» тип«Произвольный» (сделайте его ключевым)
Поясню, при открытии формы, в этот параметр будут записаны все объекты, для которых открывается данная печатная форма.
Теперь перейдем в модуль формы и создадим на сервере Функцию ПечатьСерверная .
&НаСервере
Функция ПечатьСерверная ()
КонецФункции
&НаКлиенте
Процедура Печать ( Команда )
В функции ПечатьСерверная , создадим переменную МассивДокументов , в которую запишем параметр ОбъектыНазаначения .
МассивДокументов = Параметры . ОбъектыНазначения ;
Получим объект обработки.
ЭтотОбъектОбработка = РеквизитФормыВЗначение ("Объект");
Теперь перейдем в модуль обработки. И внесем кое какие изменения в уже написанный код.
Первым шагом, в функции СведенияОВнешнейОбработке() , в вызове процедуре ДобавитьКоманду исправим четвертый параметр – Использование,на « ОткрытиеФормы ». Я не буду пояснять что значит данный параметр, кому непонятно можете посмотреть предыдущую статью (ссылка). Также я поменяю второй параметр, что бы удобнее было отличать формы.
ДобавитьКоманду ( Команды ,"Счет на оплату (внешняя печатная формас выводом формы)",
"СчетНаОплатуВнешний",
"ОткрытиеФормы",
Ложь,
"ПечатьMXL");
Теперь перейдем в процедуру Печать, сделаем функцией, и оставим только первый параметр МассивОбъектов
Функция Печать ( МассивОбъектов ) Экспорт
ПараметрыВывода . ДоступнаПечатьПоКомплектно = Истина ;
Если УправлениеПечатью . НужноПечататьМакет ( КоллекцияПечатныхФорм , "СчетНаОплатуВнешний") Тогда
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );
УправлениеПечатью . ВывестиТабличныйДокументВКоллекцию ( КоллекцияПечатныхФорм , "СчетНаОплатуВнешний", "Счет на оплату",
ПечатьСчетаНаОплату ( ТаблицаСведенийСчетНаОплату , ОбъектыПечати ),,"ПФ_MXL_СчетЗаказ");
КонецЕсли;
ОбщегоНазначенияБП . ЗаполнитьДополнительныеПараметрыПечати ( МассивОбъектов , КоллекцияПечатныхФорм , ОбъектыПечати , ПараметрыВывода );
КонецФункции
Смотрим на тело функции, тот код который там написан в нашем случае не применим. Поэтому мы вычистим ее, оставив только код, с помощью которого можно получить табличный документ это функция ПолучитьТаблицуСведенийСчетаНаОплатуи функция ПечатьСчетаНаОплату, функция ПечатьСчетаНаОплату возвращает табличный документ.
Должен получиться следующий код:
Функция Печать ( МассивОбъектов ) Экспорт
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );
ТабДок = ПечатьСчетаНаОплату ( ТаблицаСведенийСчетНаОплату , ОбъектыПечати );
Поскольку параметр объекты печати является списком значений,содержащим распечатываемые документ(справочники), то создадим данный список, и заполним его объектами из массива и возвратим табличный документ.
Функция Печать ( МассивОбъектов ) Экспорт
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );
ОбъектыПечати = Новый СписокЗначений ;
ОбъектыПечати . ЗагрузитьЗначения ( МассивОбъектов );
ТабДок = ПечатьСчетаНаОплату ( ТаблицаСведенийСчетНаОплату , ОбъектыПечати );
Возврат ТабДок ;
КонецФункции
Теперь изменим макет, добавив комментарий в подвал счета.
Осталось в функции ПечатьСчетаНаОплату у соответствующей области макета соответствующему параметру присвоить реквизит обработки Комментарий .
ОбластьМакета . Параметры . Комментарий = Комментарий ;
Обращаю ваше внимание, у других конфигураций и других объектов могу быть иные процедуры формирования табличного документа, чем те которые приведены в примере, в данной статья показан общий механизм.
Заканчиваем работу с модулем обработки и переходим в модуль формы. В функцию ПечатьСерверная()
В этой функции мы уже получили объект обработки, теперь вызовем экспортную функции объекта Печать() , которая возвращает табличный документ. В данную функцию мы передадим МассивОбъектов . Пусть функция ПечатьСерверная() возвращает табличный документ, который был создан функций Печать() .
&НаСервере
Функция ПечатьСерверная ()
МассивДокументов = Параметры . ОбъектыНазначения ;
ЭтотОбъектОбработка = РеквизитФормыВЗначение ("Объект");
ТабДок = ЭтотОбъектОбработка . Печать ( МассивДокументов );
Возврат ТабДок ;
КонецФункции
Вызовем функцию ПечатьСерверная на клиенте, и покажем сформированный табличный документ.
&НаКлиенте
Процедура Печать ( Команда )
ТабДок = ПечатьСерверная ();
ТабДок . Показать ();
КонецПроцедуры
Сохраняем печатную форму и добавляем в дополнительные отчеты и обработки конфигурации.
Перейдем в документ, выберем данную печатную форму.
Выйдет форма, в которой мы заполним поле комментарий.
Нажимаем печать и выходит табличный документ.
Возможно многих и устроит подобный вариант выхода печатной формы. Кто же хочет, что бы выходила типовая форма.
То изучайте вторую и третью часть этой статьи.
Второй метод. Использованиедополнительных сведений документа.
У всех конфигурации, разработанных при использованииБСП, почти у каждого документа есть интерфейсдополнительных сведений, в которые пользователь может вносить любую информацию(причем даже тогда, когда документ закрыт на редактирование). В эти сведения можно записывать дополнительнуюинформацию, которая требуется в печатной форме. Сейчас мы в демо конфигурации1С Бухгалтерия предприятия 3.0 Базовая создадим новое дополнительное сведение для документа СчетНаОплатуПокупателю , назовемего КомментарийДополнительный , тип Строка(100).
Для этого заходим в список счетов на оплату покупателю инажимаем кнопку дополнительные сведения
Откроется форма Дополнительных сведений, пока она пустая,т.к. нет ни каких сведений привязанных к данному документу.
Что бы создать их заходим в Все действия – Изменить составдополнительных сведений.
Откроется форма дополнительных сведений, в которой нажимаемна кнопку Создать , после появится форма нового дополнительного сведения.
Пишем наименование КомментарийДополнительный, тип значениявыбираем строка. И записываем новое дополнительное сведение.
Все оно создано, и появится в списке дополнительных сведений документа Счет наоплату покупателю. Запишем в него какой-нибудь комментарий, и сохраним.
Теперь нам осталось узнать под каким именем данноедополнительное сведение сохранилось в плане видов характеристик « Дополнительные реквизиты и сведения ».
Зайдем в него через меню «Все функции».
Название выделенное на рисунке и есть полное название вновьсозданного дополнительного сведения «КомментарийДополнительный (Счет на оплатупокупателю)» . Запомните его илисохраните куда-нибудь.
Все. Все необходимые приготовления мы сделали, теперьперейдем к написанию обработки, которая будет подставлять в комментарийзначение данного дополнительного сведенья.
Как и в предыдущей части, за основу мы будем брать обработкуиз моей предыдущей статьи.
Исправим в процедуре сведения СведенияОВнешнейОбработке() наименование параметра регистрации и представление команды, что бы можно былоотличить нашу новую обработку.
Функция СведенияОВнешнейОбработке () экспорт
ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации . Вставить ("Вид", "ПечатнаяФорма");
ПараметрыРегистрации . Вставить ("Назначение", ПолучитьНазначениеОбработки ());
ПараметрыРегистрации . Вставить ("Наименование", "Счет на оплату ВНЕШНИЙДОП СВЕДЕНИЯ");
ПараметрыРегистрации . Вставить ("Версия", "1.0");
ПараметрыРегистрации . Вставить ("Информация", "Счет на оплату (внешняяпечатная форма)");
ПараметрыРегистрации . Вставить ("БезопасныйРежим",Истина);
ДобавитьКоманду ( Команды ,"Счет на оплату (внешняя печатная формас исп. доп. сведений)",
"СчетНаОплатуВнешний",
"ВызовСерверногоМетода",
Ложь,
"ПечатьMXL");
ПараметрыРегистрации . Вставить ("Команды", Команды );
Возврат ПараметрыРегистрации ;
Теперь создадим функцию, которая получает по ссылке надокумент, и по ссылке на доп сведение значения. Кто не знает, поясню, чтозначения доп сведений в БСП хранятся в регистре сведений «ДополнительныеСведения»
Где в измерении Объект хранится ссылка на документ, визмерении Свойство – ссылка на план видов характеристик Дополнительные сведенияи реквизиты, а в ресурсе Значение – значение данного сведения для данногодокумента.
Посмотрите на состав регистра в нашем случае.
Поэтому создадим функцию в которую будем передавать массивдокументов и массив дополнительных сведений, а возвращать она будетсоответствующую выгрузку запроса.
Функция ПолучитьДопСведения ( Знач МассивДокументов , Знач МассивДопСведений )
Запрос = Новый Запрос ;
Запрос . Текст color: black;">
| ДополнительныеСведения.Объект КАК Документ,
| ДополнительныеСведения.Свойство КАК ДопСведение,
| ДополнительныеСведения.Значение
|ИЗ
| РегистрСведений.ДополнительныеСведения КАКДополнительныеСведения
|ГДЕ
| ДополнительныеСведения.Объект В(&Объект)
| И ДополнительныеСведения.СвойствоВ(&Свойство)" ;
Запрос . УстановитьПараметр ("Объект", МассивДокументов );
Запрос . УстановитьПараметр ("Свойство", МассивДопСведений );
Возврат запрос . Выполнить (). Выгрузить ();
Теперь, перейдем в процедуру печать . В этой процедуре впервых строках кода нам нужно создать массив доп сведений, и получить результатвыполнения вышеприведенной функции.
МассивДопСведений = Новый Массив ;
МассивДопСведений . Добавить ( ПланыВидовХарактеристик . ДополнительныеРеквизитыИСведения . НайтиПоНаименованию ("КомментарийДополнительный (Счет наоплату покупателю)
ТаблицаДопСвойств = ПолучитьДопСведения ( МассивОбъектов , МассивДопСведений );
Поскольку у нас только одно свойство, то и элемент массивабудет один. Если в задаче будет стоять использование нескольких свойств, тонужно соответственно несколько элементов массива. В сам элемент массива записываем ссылку наплан видов характеристик «Дополнительные реквизиты и сведения» , которую мы ищемпо названию, на которое я акцентировал внимание раньше.
Следующим шагом необходимо таблицу значений ТаблицаДопСвойств передать в функцию ПечатьСчетаНаОплату , где мы будем извлекать значения, иподставлять в нужные параметры табличного документа. Добавим у данной функции новый параметр.
Функция ПечатьСчетаНаОплату ( СведенияСчетаНаОплату , ОбъектыПечати , ТаблицаДопСвойств , СПечатью = Ложь) Экспорт
Если УправлениеПечатью . НужноПечататьМакет ( КоллекцияПечатныхФорм , "СчетНаОплатуВнешний") Тогда
ТаблицаСведенийСчетНаОплату = ПолучитьТаблицуСведенийСчетаНаОплату ( МассивОбъектов );
УправлениеПечатью . ВывестиТабличныйДокументВКоллекцию ( КоллекцияПечатныхФорм , "СчетНаОплатуВнешний", "Счет на оплату",
ПечатьСчетаНаОплату ( ТаблицаСведенийСчетНаОплату , ОбъектыПечати , ТаблицаДопСвойств ),,"ПФ_MXL_СчетЗаказ");
КонецЕсли;
Теперь добавим в макет новый параметр «Комментарий»
Найдем в процедуре ПечатьСчетаНаОплату место, где выводитсясоответствующая область в табличный документ, тут все индивидуально и в каждомслучае нужен свой подход. В нашем случае это будет область ПодвалСчета . Найдем вкоде, где она получается и рядом с типовым вводом параметров будем дописыватьобработку.
ОбластьМакета = Макет . ПолучитьОбласть ("ПодвалСчета");
ОбластьМакета . Параметры . ФИОРуководителя = СведенияОДокументе . РуководительФИО ;
ОбластьМакета . Параметры . ФИОБухгалтера = СведенияОДокументе . ГлавныйБухгалтерФИО ;
//Получим значение допсвойство для данного документа внесем изменения в этот участок кода
//конецизменений
ЗаполнитьЗначенияСвойств ( ОбластьМакета . Параметры , СведенияОДокументе );
Первым делом нам необходимо извлечь из таблицы значений ТаблицаДопСвойств значение для распечатываемого документа и нужного дополнительного свойства. Дляэтого получим ссылку на доп. свойства используя наименование, которое мы ужезнаем.
//Получимзначение доп свойства для данного документа
ДопСведение = ПланыВидовХарактеристик . ДополнительныеРеквизитыИСведения . НайтиПоНаименованию ("КомментарийДополнительный (Счет наоплату покупателю)");
//
После этого создаем структуру с полями Документ иДопСведение, в которую вставим ссылку на наш документ и ссылку на найденноедополнительное сведение.
НоваяСтруктура = Новый Структура ;
НоваяСтруктура . Вставить ("Документ", СведенияОДокументе . Документ );
НоваяСтруктура . Вставить ("ДопСведение", ДопСведение );
Ищем в таблице значений ТаблицаДопСвойств строки по данномуотбору.
МассивЗначения = ТаблицаДопСвойств . НайтиСтроки ( НоваяСтруктура );
Проверим, есть ли в полученном массиве записи, и если естьто возьмем первый элемент массива, который будет являться строкой таблицы значений, и получим содержимоеколонки «Значение». Запишем этосодержимое в параметр.
Если МассивЗначения . Количество () <> 0 тогда
ЗначениеДопСведения = МассивЗначения [0]. Значение ;
ОбластьМакета . Параметры . Комментарий = ЗначениеДопСведения ;
КонецЕсли;
Осталось сохранить обработку, добавить ее в дополнительныепечатные формы и посмотреть как выйдет наш счет.
Данным способом можно решить большинство задач где необходимо ввести дополнительные параметры во внешнюю печатную форму. Но если он вас чем-то не устраивает, остается третий способ интерактивным вызовом формы ПечатьДокументов и передачей в нее параметров. Он приведен в комментариях к моей предыдущей статье.
Часто в организациях просят встроить логотип и печать с подписью прямо в счёт на оплату покупателю. От этого счёт выглядит более солидно и представительно. Факсимильная печать на счёте не запрещается нормативными актами и потому многие пользуются этой возможностью.
Сегодня я расскажу как сделать подобную настройку для 1С:Бухгалтерии 8.3 (редакция 3.0) самостоятельно, без помощи программиста.
Обратите внимание на изменение в версии БП 3.0.64.34. О нём здесь.
Настраиваем печать, подпись и логотип
Итак, заходим в раздел "Главное" и выбираем пункт "Организации":
Открываем карточку нашей организации и раскрываем пункт "Логотип и печать":
Нажимаем ссылку "Загрузить логотип".
Сразу после этого нас попросят указать картинку, которую мы хотим использовать в качестве нашего логотипа. Файл с такой картинкой нужно подготовить заранее (заказать у дизайнера) или найти что-нибудь подходящее в интернете.
Я для наших экспериментов взял логотип фирмы 1С:
Вообще же подойдёт любая картинка в форматах (png, jpg, bmp).
Логотип подставился в поле и отобразился на форме, отлично!
Займёмся изготовлением факсимильной печати и подписей. Для этого нажмём на пункт "Инструкция 'Как создать факсимильную подпись и печать'":
Распечатаем и выполним инструкции, указанные на распечатанном листке:
После этого в нашем распоряжении окажется 3 картинки в одном из форматов (png, jpg, bmp) с печатью и подписями, в моём случае они выглядит так:
Загрузим их по соответствующим ссылкам в карточке организации:
Видим, что картинки с печатью и подписями подставились и отобразились на форме. Нажмём кнопку "Записать и закрыть" в карточке организации:
Обратите внимание на изменение в версии БП 3.0.64.34. О нём здесь.
Наконец, заходим в какой-нибудь счёт на оплату покупателю и нажимаем кнопку "Печать"->"Счёт на оплату (с печатью и подписями)":
Появилась печатная форма счёта с логотипом, печатью и подписями:
Если картинки с печатью и подписями слишком малы, отсканируйте листок заново с более высоким разрешением.
Мы молодцы, на этом вроде бы всё
Но что если мы хотим, чтобы печать залезала на подпись?
Не всем это нужно и видимо поэтому 1С по умолчанию сделала вариант с отдельным расположением подписи и печати.
Для тех, кому нужно их совместить инструкция ниже.
Совмещаем печать и подпись руководителя
Для этого заходим в любой счет и формируем обычную печатную форму (без печати и подписей):
Получится вот так:
Далее распечатываем этот счёт, ставим на нём печать и подписи с нужным нам расположением.
Затем отрезаем по жирной линии внизу (перед подписями и печатью) и нижнюю часть сканируем и сохраняем в виде картинки на рабочий стол.
У меня получилось вот так (печать и подпись выдуманы):
Снова заходим в карточку организации, раздел "Логотип и печать".
Здесь удаляем картинки с подписями руководителя и бухгалтера, а вместо старой картинки печати загружаем только что сделанную большую картинку, совмещающую в себе печать и подписи:
Нажимаем кнопку "Записать и закрыть" в карточке организации, а затем формируем печатную форму любого счёта вместе с печатью и подписями:
В открывшейся печатной форме из пункта "Ещё" выбираем команду "Изменить макет. ":
Далее очень внимательно, так как если неправильно изменить макет (что-нибудь удалить из него), то печатная форма вообще перестанет работать и придётся восстанавливать её согласно вот этой инструкции (ссылка).
В открывшемся макете перейдите почти в самый низ (примерно 90-е строчки) и выделите невидимый квадрат ниже надписи руководитель:
Наша задача состоит в том, чтобы перетащить этот квадрат чуть выше (определяется экспериментально), чем надпись руководитель и растянуть его на всю ширину печатной формы, вот так:
Произошло именно то, чего мы и добивались - печать залезла на подпись.
Мы снова молодцы
Кстати, подписывайтесь на новые уроки.
Изменение в версии БП 3.0.64.34
Теперь, настроив подпись и печать в организации, мы всё-равно должны выбирать в счёте пункт "Счет на оплату", а уже в самой печатной форме ставить галку "Подпись и печать":
Поставить её нужно один раз. Её значение сохраняется между вызовами печатной формы.
Дополнение от читателя сайта. Если форма счета была отредактирована - поле
с галкой не появится - надо вернуться к стандартной форме.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Читайте также: