Отворете
Близо

Добавяне на външна форма за печат към базата данни. Добавяне на външна форма за печат към базата данни Настройка на форми за печат за 1s 8.2

Тази статия ще ви разкаже подробно как начинаещ с малко познания за 1C 8 може да създаде печатна форма. Например, нека вземем една от най-често срещаните конфигурации 1C 8 - Счетоводство 2.0. Създаване на печатна форма 1C етапи на писане:

  • Създаване на външен файл с форма за печат;
  • Създаване на оформление на печатна форма;
  • Писане на програмен код за показване на отпечатани данни от формуляра на екрана;
  • Създаване на параметри за авторегистрация на печатна форма;
  • Свързване на външна печатна форма към основата 1C предприятия.

Създаване на печатна форма 1C. Формулиране на проблема

Ние сме задължителни в конфигурацията Счетоводство 2.0създаване на печатен формуляр за документ Получаване на стоки и услуги. В заглавката на отпечатания формуляр покажете следните данни:

  • организация;
  • контрагент;
  • Договор за контрагент;
  • Дата на получаване.

Покажете данните в табличния раздел като таблица Стокидокумент. Таблицата трябва да включва следните колони:

  • номенклатура;
  • количество;
  • Цена;
  • сума;
  • А също и цената на артикула за текуща дата (по вид цена от документа).

Файл за външна обработка

Да преминем към решаването на проблема. Първо, нека отворим 1C 8 в режим Конфигуратор. Именно в този режим се извършват всички разработки на платформата 1C 8. Сега трябва да създадем външен файл за обработка. За да направите това, щракнете върху менюто Файл -> Нов...или чрез иконата на нов файл.

В прозореца, който се отваря, изберете елемента Външна обработка.

Следващ в полето ИмеТрябва да въведете името на външната обработка. В нашия случай ще го наречем просто „PrintForm“; полето за синоним ще бъде попълнено автоматично. Моля, имайте предвид, че в полето Име,външна обработка, името трябва да се изписва без интервали и препинателни знаци.

Нека добавим външни атрибути за обработка LinkToObject и изберететип за него DocumentLink. Получаване на стоки и услуги. За да направите това, в дървото с метаданни за външна обработка на 1C изберете елемента Реквизитии натиснете бутона Добавете(бутон със зелен плюс). Прозорецът със свойства на атрибута ще се отвори от дясната страна на екрана, в полето Именека пишем - ReferenceToObject. INполе Типнатиснете бутона с три точки.

Нека разширим клона в дървото на типовете Връзка към документа, и намерете там елемента Получаване на стоки и услуги, поставете отметка в квадратчето до него и щракнете ДОБРЕ.

Нека запазим външния файл за обработка на твърдия диск, използвайки менюто Файл -> Запазване, пиктограма Запазване(синя дискета) или клавишна комбинация Ctrl+S. Нека наименуваме запаметения файл “PrintForm”.

Създаване на оформление на печатна форма

Нека започнем да създаваме оформление на формата за печат 1C. Оформлението служи като шаблон за извеждане на печатната форма, така че ако искате вашата печатна форма да изглежда добре, трябва да му обърнете внимание.

Нека добавим ново оформление в дървото на метаданни за външна обработка; няма да променим нищо в прозореца на дизайнера на оформление и щракнете върху бутона Готов.

В новото оформление, което се отваря, ще създадем няколко области, необходими за показване на отпечатания формуляр. Всички области на оформлението, от които се нуждаем, ще бъдат хоризонтални, така че за да създадете нова област, изберете необходимия брой линии на оформление и отидете в менюто Таблица -> Имена -> Присвояване на имеили използвайте клавишна комбинация Ctrl + Shift + N,след това въведете името на региона в полето. Когато създавате област за оформление, не се страхувайте да направите грешка с броя на редовете, които винаги можете да добавите или премахнете. За да изтриете линия на оформление на 1C, изберете желания ред и изберете елемента в контекстното меню Изтрий. За да добавите нов ред към оформлението, изберете произволен ред от оформлението и изберете елемента в контекстното меню Разширяване.

Добавяне на заглавка на оформлението

Първо, нека създадем зона Шапка, той ще покаже данните за заглавката на отпечатания формуляр. За тази област ще ни трябват седем реда на оформление. Нека ги изберем и, както писах по-горе, натиснете клавишната комбинация Ctrl + Shift + N, в полето Именапишете „Шапка“ и натиснете бутона Добре.

Нека запълним областта на оформлението с данните, от които се нуждаем. Обикновено нито един отпечатан формуляр не е пълен без заглавие, така че нека създадем такова и в заглавката на оформлението. Тъй като в заглавието, освен името на отпечатаната форма, ще изведем и номера на документа, от който е отпечатана, ще зададем като параметър текста на заглавието в оформлението. Параметърът на оформлението е специално определена клетка за оформление, в която могат да се извеждат различни данни с помощта на вградения език 1C 8. Заглавието трябва да се показва по цялата ширина на отпечатания формуляр, така че нека решим колко клетки за оформление ще са достатъчни, за да отпечатаме върху стандартна пейзажна ориентация на листа.

Обикновено са достатъчни тринадесет или четиринадесет клетки за оформление, изберете ги в първия ред на областта Шапкаи комбинирайте в една клетка ( Контекстно меню -> Обединяване). След това щракнете двукратно върху получената голяма клетка и напишете името на параметъра, в нашия случай „TitleText“. За да може въведеният текст да стане пълноценен параметър, щракнете с десния бутон върху клетката и изберете елемента в контекстното меню Имоти. На отметката Оформлениеда намерим полето Пълнежи изберете стойността Параметър. Параметрите в оформлението на 1C са обозначени със скоби „<>».

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

След заглавния текст ще го покажем в областта Шапкаинформация за организацията, контрагента, споразумението с контрагента и датата на получаване на стоките. Тъй като всички тези данни също са взети от документа, ние също ще ги формализираме с параметри. Освен това преди всеки параметър трябва да напишете обяснителен текст, така че потребителят да може лесно да разбере къде е организацията, къде е контрагентът и т.н. Всички тези действия са подобни на създаването на заглавие, така че няма да се спирам подробно на тях, просто ще дам картина на това, което трябва да се случи в крайна сметка.

Фигурата показва как параметрите на оформлението се различават от обикновения текст.

Добавяне на заглавка на таблица с оформление

Последното нещо, което трябва да създадем в тази област на оформлението, е заглавката на таблицата, в която ще се показват данните от табличната част Стоки. Колоните, необходими за таблицата, са описани в раздела „Изявление на проблема“. Също така ще създадем заглавка на таблица, като използваме комбинация от клетки и писане на текст (имена на колони). Изберете границите на заглавката на таблицата с помощта на инструмента Кадър, който се намира в панела за форматиране на оформлението.

Добавяне на таблица към оформление

Нека създадем друга област в оформлението - Данни. В него ще се покаже таблицата с данни на табличната част Стоки.За тази област се нуждаем само от един ред оформление. За да покажем всички редове на табличната част в печатна форма, ще попълним и покажем тази област необходимия брой пъти. Колони в района Даннитрябва да съвпада с колоните на заглавката на таблицата, така че попълването й няма да е трудно. Разликата е само в района Данниимаме нужда от параметри, не само от текст. Също така имайте предвид, че по подразбиране числовите параметри са форматирани отдясно, а текстовите параметри са форматирани отляво. За да изберете колони, също трябва да използвате инструмента Кадър.

Добавяне на долен колонтитул към оформление

Последната област на оформление, от която се нуждаем, е Мазе. Той ще покаже общи суми по количество и сума. Създаването е подобно на създаването на област Данни, но освен това резултатите трябва да бъдат подчертани с удебелен шрифт.

Крайният резултат трябва да бъде оформление, което изглежда така:

Създаване на печатна форма 1C. Програмиране

Нека започнем с програмирането - това е най-важният етап от създаването на печатна форма. Първо, нека отидем на обектния модул за външна форма за печат, тук ще програмираме. За да направите това, щракнете върху основния прозорец за външна обработка Действия -> Отваряне на обектен модул.

Трябва да създадете функция за експортиране в обектния модул на формуляр за външен печат Тюлен().

Функция Print() Export EndFunction

Моля, обърнете внимание, че тази функция е необходима за външни формуляри за печат в конфигурации, използващи обикновено приложение. Всички последващи програмни кодове, необходими за показване на отпечатания формуляр, ще бъдат написани в тази функция.

Инициализиране на основни променливи

Нека създадем променлива TabDoc, който ще съдържа документ с електронна таблица - това е точно печатната форма, в която ще покажем попълнените области на оформлението.

TabDoc = нов табличен документ;

Към променлива ОформлениеЩе получим оформлението на печатния формуляр, което създадохме. За целта използваме вградената функция GetLayout(<ИмяМакета>).

Оформление = GetLayout("Оформление");

Ще преобразуваме всички области на оформлението в променливи. За целта използваме метода на оформление GetArea(<ИмяОбласти>) .

HeaderArea = Layout.GetArea("Header"); AreaData = Layout.GetArea("Данни"); AreaFooter = Layout.GetArea("Долен колонтитул");

Извеждане на заглавката на отпечатан формуляр в документ с електронна таблица

Всички необходими променливи се инициализират. Нека започнем да попълваме и показваме областите на оформлението в документ с електронна таблица. Първо, нека попълним заглавието на формуляра за печат; за това трябва да предадем параметъра Текст на заглавието, който създадохме в оформлението, текстът, от който се нуждаем. За да попълните стойностите на параметрите за областта на оформлението, има специална колекция, наречена - Настроики.От което през „.“ можете да получите всеки параметър. В заглавния текст ще прехвърлим текста: “Печатна форма”, както и номера на документа.

Header Area.Parameters.TitleText = "Формуляр за печат"+LinkToObject.Number;

Ще попълним останалите параметри на заглавката по подобен начин; ще получим всички необходими стойности за тях от детайлите Обектна справка, който съдържа връзка към документа за печат.

HeaderArea.Parameters.Organization = LinkToObject.Organization; HeaderArea.Parameters.Account = LinkToObject.Account; HeaderArea.Parameters.ReceiptDate = ObjectLink.Date; Header Area.Parameters.Counterparty Agreement = LinkToObject.Counterparty Agreement;

Всички параметри на заглавката са попълнени, ще ги покажем в документа с електронна таблица, който създадохме, за това използваме метода Изход (<Область>) .

TabDoc.Output(HeaderArea);

Писане на заявка за печатен хендикап

Нека започнем да запълваме и изчертаваме областта Данни. Създаването на 1C печатен формуляр също включва писане на заявка за получаване на таблични данни Стокии цени Номенклатуриза текущата дата, която ще използваме Заявка. Езикът за заявки 1C 8 е подобен на SQL или по-скоро практически копира възможностите на неговия оператор SELECT, но цялата заявка е написана на руски език. Следователно, ако сте поне бегло запознати с SQL, тогава лесно ще разберете езика на заявките 1C 8.

В тази печатна форма заявката ще бъде доста проста и мнозина ще кажат, че би било възможно да се направи без нея, но познаването на езика на заявките и способността да се използва компетентно е едно от основните умения на 1C програмист. Заявките ви позволяват да получавате сложни извадки от данни, като използвате по-малко ресурси, а текстът на заявката е много по-лесен за разбиране от програмния код, написан без използване на заявка (или с минимална употреба). В допълнение, 1C 8 има много добър дизайнер на заявки, който ви позволява интерактивно да събирате заявка от необходимите таблици.

Нека създадем променлива, която ще съдържа заявката.

Заявка = Нова заявка;

Ще съставим текста на заявката с помощта на конструктора на заявки. Като начало нека напишем:

Request.Text = "";

Поставете курсора на мишката между кавичките и натиснете десния бутон на мишката. В контекстното меню, което се отваря, изберете елемента Конструктор на заявки,това ще ни помогне много при създаването на 1C печатна форма. След това ще се отвори прозорецът на дизайнера на заявки; той съдържа много раздели, но за нашата заявка ще ни трябват само четири: „Таблици и полета“, „Връзки“, „Условия“, „Съединения / псевдоними“.

За нашата заявка ще ни трябват две таблици: таблична част Стокидокумент Получаване на стоки и услугии моментна снимка на последната информация към текущата дата на регистъра Цени на артикулите.

От лявата страна на прозореца на дизайнера намираме колоната База данни. Той съдържа дърво на всички обекти с метаданни, нека намерим тези, от които се нуждаем. За да направите това, нека отворим темата Документацияи намерете документа Получаване на стоки и услуги, нека го отворим и намерим табличната част Стоки, го плъзнете в колоната на дизайнера на заявки Маси. Можете да плъзгате по три начина: чрез плъзгане, чрез двукратно щракване върху таблицата или като я изберете и щракнете върху бутона „>“. Да отворим темата Информационни регистрии намерете маса там PricesNomenclature.ShortcutLatest, също го плъзнете в колоната Маси. Тези две таблици са достатъчни за нашата заявка.

Нека изберем полетата, от които се нуждаем, от получените таблици. За да направите това, в колоната Масинека отворим масата и намерете полетата: Номенклатура, Сума, Цена, Количествои ги плъзнете в третата колона на конструктора - Полета. Нека разширим таблицата , да намерим полето Ценаи също го плъзнете към Полета.

Структурата на таблиците и полетата на нашата заявка е готова, сега нека да преминем към условията. Имаме нужда от табличните данни Стокине са взети от всички разписки, а само от тази, която отпечатваме. За да направим това, ще наложим условие на масата Получаване на СтокиУслугиСтоки. Нека отидем в раздела „Условия“ на дизайнера на заявки. В колона Полетатаблиците, които избрахме по-рано, са разположени, за условието ще ни трябва поле Връзкаот масата Получаване на стоки и услуги Стоки,Нека го плъзнете в прозореца Условия.

В заявките 1C можете да използвате параметри, те са необходими за прехвърляне на данни към заявката. Например, ако искаме да ограничим избора на документи до конкретен документ, тогава можем да използваме параметър, за да предадем връзка към този документ към заявката и да използваме този параметър в условието. Точно това ще направим в нашето искане.

След прозореца Условиядобавихме поле Връзка, самият дизайнер на заявки ще създаде параметър със същото име и ще го постави след знака „=“. Този параметър може да бъде преименуван, ако желаете. В текста на заявката параметрите са маркирани със знака „&“, но в този случай това не е необходимо, тъй като се предполага, че втората част на условието съдържа параметър, просто трябва да запомните това. Как да предадете стойност на параметър на заявка на 1C ще бъде обсъдено по-долу.

Тъй като в заявката използваме не пълна таблица с цените на продуктите, а виртуална (част от последната в случая), трябва да зададем условията за формиране на тази виртуална таблица, в нашия случай това е крайна дата и условие за вида на цените (цени, които имат строго определен вид цена е тази, посочена в касовия бон, който отпечатваме).

За да попълните параметрите на виртуалната таблица, отидете в раздела Таблици и полетаконструктор на заявка, в колоната Масиизберете таблицата ЦениНоменклатураРязанеПоследнии натиснете бутона Опции за виртуална маса, разположен на върха. В прозореца, който се отваря, в полето Периодтрябва да зададете параметър, към който да преминава датата, на която ще бъде направено намалението на цената. В нашия случай това ще бъде текущата дата (т.е. днес), така че ще наречем параметъра „&CurrentDate“. В полето условия ще напишем условията за типа цена, ще го подадем и в параметъра, който ще наречем “&TypePrice”. Полученото условие ще изглежда така (където TypePrice- регистрирано измерване Цени на артикулите):

PriceType = &PriceType

Параметрите на виртуалната таблица са попълнени, щракнете върху бутона Добре.

Сега, след като ограничихме избора само до документа, от който се нуждаем, нека създадем връзки между таблиците на заявките. Ако това не е направено, тогава цените от таблицата PricesNomenclatureSliceLast няма да бъдат свързани с артикула от касовата бележка. Да отидем на раздела Връзкидизайнер на заявки. Нека създадем връзка в полето Номенклатурамежду нашите две маси. За да направите това, натиснете бутона Добавете, в полето маса 1изберете маса Получаване на СтокиУслугиСтоки, а в полето Таблица 2 - PricesNomenclatureSliceLast. В условията за комуникация изберете полетата Номенклатураот двете маси.

Трябва също да се отбележи, че при избора на заявка трябва да получим всички редове от раздела Стокии цени само ако са налични към текущата дата за типа цена на документа. По този начин табличните данни Стокиса задължителни, но данните за ценова разбивка не са налични. Следователно в релациите между тези таблици е необходимо да се използва т.нар. LEFT JOIN, а лявата (или задължителната) таблица ще бъде Получаване на СтокиУслугиСтокии десния (или незадължителен) PriceNomenclatureSliceLast. За да работи лявото свързване на таблици със заявки, както описах по-горе, трябва да поставите отметка в квадратчето всичкослед полето Маса 1.


Заявката е почти готова, остава само да поработим малко върху полевите псевдоними. Да отидем на отметката Съюзи/Псевдонимии задайте псевдоним за полето Цени Номенклатура Срез Последни.Цена. Псевдонимът ще бъде - PriceAsToday, то е необходимо, за да съвпадат имената на полетата за избор на заявка и имената на параметрите в оформлението на отпечатания формуляр.

Работата в дизайнера на заявки вече е завършена, щракнете върху OK. След като прозорецът на дизайнера се затвори, ще видите, че редът с текста на заявката е попълнен и изглежда така:

Request.Text = "Изберете | Получаване на стоки СервиксProducts.Nomenclature, | Получаване на стокисервикспродукти.Amount, | Получаване на стокисърсиспродукти. GoodsServices.Goods AS Receipt ProductsServicesProducts |. ЛЕВА ВРЪЗКА RegisterInformation.PricesNomenclature.SliceLast (| &CurrentDate, PriceType = &PriceType) AS PricesNomenclatureSliceLast ON Получаване на GoodsServicesProducts.Nomenclature |

Изпълнение на заявката

Нека предадем необходимите параметри на заявката; за това ще използваме метода на заявката SetParameter(<ИмяПараметра>,<Значение>). За да получите текущата дата, използвайте вградената функция Текущата дата (), той връща датата и часа на компютъра.

Нека изпълним заявка, за да получим извадка с данните, от които се нуждаем. За да направите това, първо използвайте метода на заявка Изпълни(), а след това метода Избирам().

Изберете = Query.Run().Select();

Попълване на печатната таблица на формуляра

В резултат на това във променливата пробаще съдържа селекция от резултати от заявка, можете да навигирате в него с помощта на метода Следващия(), а за да преминете през цялото нещо, имате нужда от цикъл Чао. Дизайнът ще бъде както следва:

Докато Select.Next() Loop EndLoop;

Именно в този цикъл ще запълним и покажем областта на оформлението Данни. Но първо, нека инициализираме две променливи от числов тип. В тях ще съберем сумите по количество и суми, които трябва да изведем в района Мазе.

Обща сума = 0; TotalQuantity = 0;

Вътре в цикъла ще запълним областта Данниданни от текущия елемент за избор в променливи Обща сумаИ Общо количестводобавете сумарни и количествени стойности и накрая покажете областта в документ с електронна таблица, като използвате вече познатия ни метод Изход(). Тъй като имената на полетата на нашата заявка напълно съвпадат с имената на параметрите на областта Данни, тогава за запълване ще използваме вградената процедура FillPropertyValues(<Приемник>, <Источник>), който копира стойностите на свойствата<Источника>към имоти<Приемника>.

Докато Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); EndCycle;

Извеждане на долния колонтитул на отпечатан формуляр в документ с електронна таблица

Остава да попълните и покажете последната област на оформлението - Мазе. Вече сме подготвили данните за попълване, попълването и тегленето се извършват по същата схема.

AreaFooter.Parameters.TotalQuantity = Общо количество; AreaFooter.Parameters.TotalSum = Обща сума; TabDoc.Output(AreaFooter);

Документът с електронната таблица е напълно попълнен; остава само да се покаже на екрана, така че потребителят да може да види отпечатания формуляр и да го отпечата, ако е необходимо. Но в типичните конфигурации на 1C 8, процедурите на специални модули са отговорни за изхода на външни печатни форми. Следователно е достатъчно да се върнете от функцията Тюлен()попълнен документ с електронна таблица.

Върнете TabDoc;

На този етап етапът на програмиране е завършен и създаването на 1c печатната форма е почти завършено. Пълен текст на функцията Тюлен()Няма да го давам тук, можете да го разгледате във файла с формуляр за печат, който можете да изтеглите в долната част на статията.

Създаване на печатна форма 1C. Опции за автоматична регистрация

При свързване на външен формуляр за печат към базата данни системата не определя автоматично за кой документ или справочник е предназначен формулярът за печат; трябва да го изберете ръчно. И ако друг човек е написал печатния формуляр и вие имате задачата само да го свържете, тогава изборът може да стане двусмислен. За да се избегнат подобни проблеми, във всички външни печатни форми е необходимо да се създаде оформление с параметри за автоматична регистрация. Ако е създаден и правилно форматиран, системата автоматично определя за кой документ или справочник е предназначен отпечатаният формуляр.

Извършва се по следния начин:

  • При външна обработка създаваме ново оформление. Ние го наричаме „Settings_Auto-Registration“ (важно е да не правите грешка!).
  • В първата клетка на оформлението пишем Документация.(или Справочници.) и името на документа, към който трябва да свържете отпечатания формуляр.

Свързване на външна печатна форма към основата

  • Стартирайте 1C 8 в режим Компания;
  • Отидете в менюто Услуга -> Допълнителни отчети и обработка -> Допълнителни външни печатни форми;
  • Щракнете върху бутона Добавете;
  • В прозореца, който се отваря, щракнете върху иконата Замяна на файл за външна обработка;
  • Ако сте създали параметри за автоматична регистрация, ние се съгласяваме да ги използваме;
  • Ако не сте създали параметри за автоматична регистрация, тогава в табличната част Аксесоар за печатни формидобавете необходимия документ или справочник;
  • Натисни бутона ДОБРЕ.

След това външната форма за печат ще бъде достъпна в менюто Тюлендокумент Получаване на стоки и услуги.Създаването на печатната форма 1C вече може да се счита за завършено.

Животът продължава, законодателството се променя, програмистът пуска актуализации на конфигурацията и ние отново имаме избор: да инсталираме актуализацията сами или отново да се обадим на програмиста, за да „инсталира нова версия“...

Нека се запознаем с механизма за смяна на печатни форми без промяна на конфигурацията.


В практиката на всеки счетоводител, използващ 1C, някога е имало нужда да промени конфигурацията за себе си: някои коригираха точността на цената или сумата във фактурата, някои вмъкнаха лого и коригираха външния вид на фактурата. Всичко би било наред, но с течение на времето се натрупват много такива промени и когато дойде моментът за актуализиране на версията, възниква дилема: или да загубите всички направени промени, или да се обадите на програмист, който да прехвърли всички промени в новата версия (на курс срещу допълнително заплащане). Как да бъдем? За да опростят по някакъв начин актуализирането на конфигурациите, разработчиците създадоха нов механизъм: „Външна обработка, печатни формуляри, обработка за попълване на таблични части“. Днес ще разгледаме само част от този механизъм – печатни форми.


Всеки предмет се учи най-добре чрез пример. Нека си поставим следната задача: да добавим към конфигурацията възможност за печат на фактура (документ “Продажба на стоки и услуги”) с логото на нашата компания. Освен това е необходимо в заглавната част на документа да има надписи "доставчик"И "купувач"са подчертани с удебелен шрифт и накрая е необходимо в долната част на документа да има място за подпис на охранителната служба, разрешила пратката.


Нека въведем две допълнителни условия:

  • Новият печатен формуляр трябва да замени стария формуляр "Фактура"
  • Конфигурацията не може да бъде променена, тъй като искаме да използваме автоматично актуализиране на конфигурацията в бъдеще

Е, каква е задачата? Изглежда твърде сложно? Е, колкото по-сложно е, толкова по-интересно е и толкова повече искате да го решите. След това се захващайте за работа.


Стартираме нашата база данни в режим на конфигуратор. Отворете конфигурацията, като изберете командата в главното меню „Конфигурация > Отваряне на конфигурация“. Няма да променим самата конфигурация при никакви обстоятелства. Ще го използваме като прототип. Ние ще свършим основната работа тук, но ще редактираме външна обработка. Създаваме външна обработка с команда в главното меню „Файл > Нов“. Избор на вида на документа "Външна обработка". За първата обработка нека зададем име „Маркова фактура“


важно! Името на обработката не трябва да съдържа интервали, точно както имената на променливите.


Сега нека направим малко "плагиатство". Нека копираме оформлението "Фактура"от документ "Продажби на стоки и услуги". За да направим това, ще го намерим в клона "документация"конфигурационно дърво. Разширете тази нишка, като щракнете върху иконата «+» и да намерим оформлението, от което се нуждаем "Фактура"(това е в темата "Оформления"). За да копирате този обект, трябва да изберете това оформление в дървото и да изпълните командата „Редактиране > Копиране“(същото действие се случва с комбинацията CTRL+C). Сега нека преминем към обработката, която създадохме, изберете етикет в дървото "Оформления"и в главното меню изберете елемента - „Редактиране > Поставяне“ (CTRL+V). Резултатът трябва да изглежда като фигура 1.


Сега щракнете двукратно, за да отворите оформлението.

Какво е "оформление"

Нека кажем няколко думи за целта на оформлението.

Оформление- съхранение "изграждащи блокове", области, от които като тухли се изгражда табличен документ, който сме свикнали да наричаме печатна форма. Областите се дефинират с помощта на хоризонтални и вертикални участъци или техните пресечни точки. Нашето оформление има само хоризонтални секции: „Заглавка“, „Доставчик“, „Купувач“, „Заглавка на таблица“, „Ред“ (вижте фиг. 2). Една област е набор от клетки. Както в MS Excel, клетките могат да се обединяват, цветовете на текста и фона, шрифтовете и т.н. Всички настройки на клетката могат да се видят и променят в прозореца със свойства на клетката. Можете да отворите прозореца с настройки, като щракнете с десния бутон върху клетката и изберете елемента от контекстното меню "Имоти"(същият резултат се постига с клавишната комбинация Alt+Enter).


Една клетка може да съдържа един от трите типа стойности:

  1. текст– стойност от този тип ще бъде отпечатана в същата форма;
  2. параметър– клетка от този тип съдържа името на променлива, чиято стойност ще бъде отпечатана.
  3. проба– клетките от този тип са комбинация от първата и втората опция. Клетката може да съдържа текст и променливи. За да може една програма да различи текст от променлива, променливите трябва да бъдат оградени в квадратни скоби: „Днес е [Дата]“.

важно!Редакторът на таблици показва стойностите на клетките от втория и третия тип в триъгълни скоби. На фигура 2 има клетка с текст "Купувач"- изглежда като текст и вдясно от клетката "Представяне на купувача"- параметър.

Защо разказвам всичко това? Сега знаете в кои клетки можете лесно да промените съдържанието и в кои е нежелателно да променяте нищо, тъй като ще трябва да направите промени в алгоритъма за печат.

Нека сега се върнем към нашата задача. Ние създадохме обработката, копирахме оформлението и сме готови да го променим, за да ни подхожда. Първо, нека го разгледаме по-отблизо.

Какво е включено в оформлението за печат

Структурата на оформлението на всички документи е много сходна. След като внимателно разгледахме един документ, можем да разберем други. Първи раздел "Заглавие". Когато се покаже този раздел, ще се генерира заглавка на документа, състояща се от вида, датата и номера на документа. Следват секции "Доставчик" и "Купувач", в които програмата ще изведе информация съответно за доставчика и купувача. Следва по-интересен раздел "Допълнителна информация", които разработчиците използват за показване на друга информация в документа, например информация за договора с неговия номер и дата. Особеността на този раздел е, че може да се показва многократно и всеки път може да съдържа различна информация. Какво точно да се отпечата и кога е описано в алгоритъма за печат.

Това завършва заглавката на документа. Заглавката обикновено е последвана от табличен раздел. Интересното е, че оформлението описва две опции за показване на табличната част: „Заглавка на таблица“, "Низ" и "Места на заглавна таблица"И "StringPlace". В зависимост от това дали колоната ви е попълнена или не "Мест"в документа ще се използва първата или втората опция за показване на табличната част на документа. Любопитният читател вероятно вече се е запитал: защо в секцията за извеждане на заглавката "Цена"И "Сума"са поставени в триъгълни скоби, сякаш са променливи? Точно така – това са променливи, в които в зависимост от настройките на документа ще се показва надписът "Цена", "Цена с ДДС"или "Цена без ДДС"и аналогично за сумата.

Е, по-долу в оформлението има секции, с помощта на които се показват резултатите от документа и подписа.

Редактиране на оформлението

Би било хубаво да поставите логото над информацията за доставчика и купувача. Предлагам да редактирате областта на оформлението "Заглавие". Необходимо е да се намали размерът на клетката, съдържаща съдържанието "TitleText". Тази клетка се състои от няколко обединени клетки. Променяме размера, както следва:

  1. Нека внимателно да копираме съдържанието на обединената клетка "TitleText"(за да направите това, трябва да изберете клетката и да използвате командата „Редактиране > Копиране“ или клавишна комбинация CTRL+C)
  2. След като изберете тази клетка, изберете елемента в главното меню "Таблица - Обединяване", което ще доведе до обратния ефект - обединената клетка ще бъде разделена на много оригинални клетки
  3. Сега нека изберем по-малък брой клетки - вместо клетка 2 от колона, ще започнем обединяването от колона 6, завършвайки с колона 32 - и щракнете върху бутона отново "Сливане"
  4. Екип „Редактиране > Поставяне“ (CTRL+V)вмъкнете съдържанието на предишната обединена клетка в новата обединена клетка
  5. Просто изчистваме освободените клетки в колони 2 – 5 (избираме ги и натискаме клавиша Delete)

Сега можете да вмъкнете снимка с лого в свободното пространство. За да направите това, изберете елемента от менюто „Таблица > Картини > Картина...”. Намерете файла с нашето лого на диска и щракнете върху „ Добре" Сега нека преместим изображението в свободното пространство. Резултатът трябва да изглежда като на фигура 3.


Сега нека подчертаем стойностите в клетките с удебелен шрифт "Доставчик"И "Купувач"(фиг. 4). За да направите това, намерете параметъра в свойствата на клетката "Шрифт"и задайте стила на получер.



И накрая, остава да добавите подписа на службата за сигурност. Ще публикуваме тази информация в раздела "Подписи". За да получите място за подписи, трябва да разширите секцията. Изберете ред 37, щракнете с десния бутон върху него и изберете "Разширяване"и така нататък два пъти. В един от добавените редове ще поставим място за подпис на службата за сигурност. В резултат на това всичко трябва да изглежда като на фигура 5.



важно!В типична конфигурация се използват два езика: руски и украински. Оформлението съхранява представянето на текста и на двата езика (дизайнът на клетката е общ). За да въведете украинската версия на надписа, който добавихме, трябва да отидете в свойствата на клетката и в полето "Текст"Натисни бутона "Търсене". Ще се отвори прозорец за въвеждане на текстови представяния на различни езици (фиг. 6).

Как да осигурим печат

И така, оформлението е готово. Сега е моментът да поработим върху алгоритъма за отпечатването му.

За да можем безболезнено да интегрираме това оформление в конфигурацията и да го използваме, обработката, която създадохме, трябва да отговаря на следните условия:

  1. Трябва да създадете подпори в обработката "Връзка към обект"с тип "AnyLink"
  2. Трябва да създадете процедура в модула за обработка „Печат() Експортиране“без параметри и не забравяйте да посочите ключовата дума " Експортиране"

Първата точка е необходима, за да може алгоритъмът за печат да знае откъде да вземе данните за печат, а втората е самият алгоритъм за печат. Нека изпълним тези условия.

В панела на прозореца изберете прозореца за редактиране на нашата обработка (на фигура 7). Ще се отвори прозорец с дърво от обекти за нашата обработка. Избор на клон "Реквизити"и натиснете бутона "Добави",. Ще се отвори прозорецът със свойства на атрибута. Да въведем името - "Връзка към обект"и посочете вида "AnyLink". Сега можем да преминем към текста на печатния модул. Няма да го пишем от нулата; вместо това ще го копираме от документа "Продажби на стоки и услуги".



За да направите това, намерете в конфигурационното дърво сред документите "Продажби на стоки и услуги", щракнете с десния бутон върху него и изберете „Отворен обектен модул“(вижте Фигура 8).



Това ще отвори модула за документи. Имаме нужда от първата функция "Печат на документ". Текстът му трябва да бъде избран и копиран. Много е удобно да маркирате текста на функция, когато е свита, но трябва да маркирате и реда под нея, в противен случай рискувате да копирате само заглавието.

Вижте на Фигура 9, подчертахме заглавието и реда под него. След това го копирайте в клипборда. Главно меню „Редактиране > Копиране“ (или CTRL+C).



Запомнихме текста в клипборда, сега нека отново да преминем към нашата обработка „Маркова фактура“. Кликнете върху бутона „Действия > Отваряне на обектен модул“(фиг. 10).



Поставете копирания текст: „Редактиране > Поставяне“ (или CTRL+V).

Сега е необходимо леко да редактирате копирания текст, тъй като той е написан за отпечатване на документ от самия документ и ние го събираме от външна обработка. За да направите това ви трябва:

  1. Преименувайте функцията на „Печат“
  2. Сменете "Този обект"На "Връзка към обект"
  3. Сменете "Този обект"На "Връзка към обект"
  4. Сменете „Банкова сметка на организацията“На „Връзка към банкова сметка на Object.Organization“
  5. Сменете „Продукти. Резюме“На "LinkToObject.Products.Total"

За тези действия можете да използвате елемента от главното меню „Редактиране > Замяна“.

След това трябва да проверите синтаксиса. За това има магическа комбинация: CTRL+F7. В резултат на това трябва да се появи следното съобщение: „Няма открити синтактични грешки!“

Е, с това свършихме цялата черна работа. Сега можем да запазим резултатите от нашата работа във файл, например "BrandedInvoice.epf". За да направите това, трябва да активирате прозореца за тази обработка и да го запишете, като използвате главното меню на програмата „Файл > Запиши като...“. Име на файл за обработка – "BrandedInvoice.epf"(ще се предлага по подразбиране). Можете да го запазите временно на вашия работен плот, за да можете да го намерите по-бързо по-късно.

важно!Както видяхте, не направихме никакви промени в нашата конфигурация. За всички действия, описани по-горе, дори не е необходимо да го премахвате от поддръжката (тоест да разрешите възможността за промяна).

Свързване на външна обработка към конфигурацията

Сега можем да свържем обработката с нашата фактура. За да направите това, стартирайте в режим. Отидете в менюто "Обслужване", където има три точки, свързани с механизма “Външна обработка, печат на формуляри, обработка за попълване на таблични части”. В нашия случай се нуждаем само от артикула "Външни печатни форми"(виж Фиг. 11).



Това ще отвори директорията "Външна обработка", с избор по вид "печатни форми". Той ще съхранява списък на всички външни печатни формуляри, като посочва за кои документи са и в какви случаи трябва да бъдат показани.



важно!Самата обработка ще се съхранява в базата данни заедно с други данни, тоест след като запазим обработката в базата данни, няма да имаме нужда от външен файл.

Трябва да създадем нов елемент в директорията. Кликнете Поставете. Сега нека да разгледаме съдържанието на елемента. В името включваме смислено кратко описание на същността на тази форма, напр. "Фирмена фактура". Като всяка друга директория, тя също има код. Нека го оставим по подразбиране. Атрибутът тип е попълнен по подразбиране и не може да се редактира – "Формуляр за печат". И последният елемент от заглавката е коментар. Тук, както обикновено, има повече подробности за предназначението на печатната форма. В допълнение към заглавката, елементите на тази директория имат две отметки. Вторият съдържа информация за ограничаване на правата за достъп до тази обработка. Тази тема е извън обхвата на тази статия (ще говорим за тази и други настройки на правата за достъп без промяна на конфигурацията в някой от предстоящите броеве).

Нека разгледаме по-отблизо първия раздел.

Разделът съдържа четири колони. Обектно представяне– вида на документа, за който бихме искали да използваме нашата форма за печат,

Избор– условие, при което този печатен формуляр трябва да бъде наличен. Например преработихме печатната форма на фактурата и я преведохме на английски. И ние искаме за клиенти от папката "европейски"вместо стандартен печатен формуляр "Фактура"Беше отпечатан нов формуляр на английски език. За да направите това, можете да използвате колоната "Избор". Пример за такъв избор е показан на фигура 13.



Но в нашата задача не са необходими селекции.

Файл с формуляр за печат– показва файла, от който да се вземе оформлението и процедурата за печат. В тази клетка трябва да изберете файла, който запазихме на работния плот.

Сменяема печатна форма– ако искаме създадената от нас печатна бланка да замени някоя от стандартните за този документ, то трябва да посочим коя да бъде заменена. Ако няма какво да изберете, ще се появи допълнителен печатен формуляр.

В нашия случай трябва „Маркова фактура“е отпечатана вместо обичайната фактура. За да направите това, изберете в това поле "Фактура".

Сега нека запазим този елемент. И отворете всяка фактура.

Трябва да изглежда както е показано на фигура 14.



Е, това приключва задачата, която си поставихме в началото на статията. Вярваме, че успяхме да илюстрираме възможностите, които използването на външния механизъм за обработка отваря за потребителя.

За да консолидирате уменията си, можете да опитате самостоятелно да добавите към конфигурацията допълнителен печатен формуляр „Към склада“ за документа „Получаване на стоки и услуги“, който би повторил обичайната фактура, но без цени и суми, и също така съдържат полета за въвеждане на приетото количество.

Нека да разгледаме писането на най-простата печатна форма 1s 8.1 - 8.2използвайки пример за конфигурация Счетоводство на предприятието 2.0. Да речем, че трябва да напишете външен печатен формуляр за документ: покажете основните данни на документа, както и от табличната част Стоки: номенклатура, цена, количество и сума.

Можете да изтеглите получения пример от .

В конфигуратора 1C предприятия 8създаване на външна обработка ( Файл->Нов->Външна обработка), задайте името, създайте необходимите подробности за външния печатен формуляр Обектна справкас тип DocumentLink Продажби на стоки и услуги.

Създаване на оформление на печатна форма

Добавяне на нов оформление, оставете типа оформление документ с електронна таблица. Създаваме три области на оформлението: Заглавие, данниИ Мазе. Това може да стане, като изберете необходимия брой редове и щракнете върху менюто Таблица->Имена->Присвояване на име (Ctrl+Shift+N).

След това започваме да поставяме текст и параметри в областите. Ще го поставим в заглавката наименование на печатния формуляр, номер на документаИ организация, а също така начертайте границите на заглавката на таблицата и напишете имената на колоните. Когато създавате параметър в свойствата на клетката, в раздела Оформление трябва да зададете свойството Пълнежпо смисъл Параметър.

В района Даннинека създадем параметри за показване на редове в табличния раздел( Номенклатура, ценаи др.), и в района Мазеза суми по количество и сума.

Програмиране

Да преминем към обектния модул за печатна форма Действия->Отваряне на обектен модул.

Нека създадем там функция за експортиране, която е задължителна за печатни формуляри. Тюлен().

Функция Печат () Експортиране EndFunction

Във функцията ще създадем променлива за документ с електронна таблица, в който ще бъде изведен отпечатаният формуляр, получаваме оформлениеИ зони на оформление.

TabDoc = нов табличен документ; Layout = GetLayout("Layout"); HeaderArea = Layout.GetArea("Header"); AreaData = Layout.GetArea("Данни"); AreaFooter = Layout.GetArea("Долен колонтитул");

Да попълним параметрите шапкии го доведе до документ с електронна таблица.

HeaderArea.Parameters.HeaderText = +LinkToObject.Number; HeaderArea.Parameters.Organization = LinkToObject.Organization; TabDoc.Output(HeaderArea);

За да получите редове от таблицата Стокиизползваме заявката.

Заявка = нова Заявка; Request.SetParameter("Връзка", ObjectLink); Query.Text = "ИЗБЕРЕТЕ | Продажби на стоки и услуги Номенклатура на стоките. | Продажби на стоки и услуги Стоки,. | Продажби на стоки и услуги Стоки,. | Продажби на стоки и услуги Стоки| ОТ | Документ. Продажба на стоки и услуги. Стоки КАК да се продават стоки и услуги|КЪДЕ | Продажби на стоки и услуги Стоки = &Връзка.;

Предаваме подробностите към параметъра на заявката Обектна справка, да се посочи в условието КЪДЕТО, че се нуждаем от данни само от документа, от който извличаме печатната форма. За да получим примерна заявка, първо я изпълняваме и след това избираме редовете.

Изберете = Query.Run().Select();

След това в цикъла попълваме параметрите на областта Данниза всеки ред от примерния документ и ги покажете в документ с електронна таблица. Ние също изчисляваме общите стойности в цикъла количестваИ суми. Няма да попълваме всеки параметър поотделно, а ще използваме процедурата Попълнете PropertyValues((<Приемник>, <Источник>) от глобален контекст, той копира стойностите на свойствата <Источника> към имоти <Приемника> . Съвпадението се извършва чрез имена на свойства. Можете да прочетете повече за това в асистент за синтаксис 1C Enterprise 8.

Обща сума = 0; TotalQuantity = 0; Докато Selection.Next() Loop FillPropertyValues(AreaData.Parameters,Selection); TotalSum = TotalSum + Sample.Sum; TotalQuantity = TotalQuantity + Sample.Quantity; TabDoc.Output(AreaData); Краен цикъл;

Попълнете и покажете областта Мазе.

AreaFooter.Parameters.TotalQuantity = Общо количество; AreaFooter.Parameters.TotalSum = Обща сума; TabDoc.Output(AreaFooter);

Връщане на попълнения документ с електронна таблица от функцията Тюлен().

върнете TabDoc;

Ако използвате една от стандартните конфигурации, след връщане на документа с електронна таблица 1Cще покаже отпечатания формуляр на екрана. Можете също да използвате метода на документ с електронна таблица за изход. Покажи().

5. Свързване на печатен формуляр към документ

IN стандартни конфигурации 1C 8Има директория за регистриране на външни печатни формуляри Външна обработка. За да се свържете, отидете в менюто в корпоративния режим Услуга->Допълнителни отчети и обработка->Допълнителни външни печатни форми.

Добавете нов елемент от директория, заредете отпечатания формуляр от диска и изберете типа документ.

Сега в документа Продажба на стоки и услугиЩе се появи нов печат.

Автоматична регистрация на печатен формуляр

За да сте сигурни, че когато свързвате форма за печат, не е необходимо да избирате типа документ ръчно, можете да конфигурирате автоматична регистрация. За да направите това, добавете ново оформление и го извикайте Настройки_Автоматична регистрация(това е единственият начин) и в първата му клетка записваме Документация.<Наименование документа> (или Справочници.<Наименование справочника> ).

Сега, когато свързваме форма за печат, ще бъдем помолени да използваме параметри за автоматична регистрация.

Както е известно - без лист хартия ти...нито един сериозен бизнес не може без. И когато кажем, че 1C има някакъв вид електронни документи, веднага възниква въпросът как да ги отпечатаме на хартиен носител.

Процесът на отпечатване на електронен документ 1C се нарича печатна форма 1C.

Всеки документ може да има няколко отпечатани формуляра 1C. Например документът Продажби на стоки и услуги (т.е. продажба) се отпечатва в печатни форми 1C: TORG-12, Фактура, Товарителен лист, Сертификат за извършени услуги и т.н.

Същността на печатната форма 1C е шаблон (като документ на Excel), в който са посочени променливи. По време на процеса на печат текстът от електронния документ се замества с променливи. Шаблонът обикновено се съхранява в конфигурацията.

Проблемът с промяната на стандартен печатен формуляр 1C е, че обикновено не е препоръчително да променяте стандартната конфигурация, в противен случай ще бъде по-трудно да се актуализира. Поради това започнаха да се преоткриват различни методи за използване на външни 1C печатни форми.

Външна форма за печат 1C е шаблон за печат, който се съхранява по някакъв начин отделно от самата конфигурация.

Всичко това обаче е теория. Как да създадете свой собствен печатен формуляр? Или още по-добре, как да направите промени в съществуващ?

Как се отпечатва 1C документ

За да отпечатате всеки 1C документ (който може да бъде отпечатан), трябва да щракнете върху бутона Печат в документа. 1C ще предложи да изберете 1C печатен формуляр за този документ от списъка.

Вляво от бутона Печат обикновено има бутон за бърз достъп до последната избрана форма за печат 1C.

Резултатът от печат изглежда така. За да го отпечатате на принтер, трябва да поставите курсора във формата за печат 1C, да натиснете Ctrl+P или бутона на принтера на панела с бутони или в менюто Файл/Печат.

Настройките за печат (полета, ориентация на листа и т.н.) се намират в менюто File/Page Setup. Можете също така да конфигурирате потребителските настройки за печат директно на принтера.

Откъде идва тази печатна форма?

Къде се намира печатният формуляр 1C?

Да отидем на конфигуратора. Намерете необходимия документ в прозореца за конфигуриране. Нека разширим неговия клон Layouts. Именно те се превръщат в печатната форма 1C при отпечатване.

Това обаче няма да е достатъчно - предложиха ни да изберем много повече опции при печат. Факт е, че много оформления на печатни формуляри 1C са скрити на друго място.

Нека се върнем в горната част на прозореца за конфигуриране на 1C. Нека отворим клона General и след това клона General Layouts. Това е мястото, където се намират повечето оформления. Това важи особено за държавно регулираните печатни формуляри 1C - TORG 12, Фактура и др.

Между другото, не е трудно да забележите, че ще видите няколко оформления на TORG12 или Invoice. Защо? Лесно е за обяснение. Законите и изискванията се променят периодично. Но не можем просто да променим същото оформление - и ако трябва да отпечатаме документа от дата, която е по-ранна от датата на промяната. Затова се правят няколко оформления и в зависимост от датата на документа се използва правилният.

Но това не е всичко! Има и външни разпределения. Къде се съхраняват?

Нека се върнем в режим 1C Enterprise. През потребителското меню с администраторски права Операции/Директории изберете Външна директория за обработка.

Редовете на тази директория, които имат формата Печатна форма, добавят опции за печат на документа, посочен в таблицата Собственост на печатната форма (на снимката това е Продажба на стоки и услуги).

За да работи това, трябва да направите външна обработка, която има процедура Print() в своя обектен модул с етикет Export, който организира процеса на печат.
Но ние изпреварваме себе си. Нека първо да разгледаме как е организирано оформлението на формата за печат 1C.

Оформление на печатна форма 1C

Оформлението на формата за печат 1C изглежда така.

Както можете да видите, той е разделен на блокове. Блоковете могат да бъдат хоризонтални (име вляво) или вертикални (име в горната част).

Самото оформление, такова каквото е, не се отпечатва. Отпечатват се отделни блокове. Програмистът в процедурата за обработка на печат определя реда на блоковете и броя на повторенията на всеки блок. Резултатът е отпечатан формуляр.

За да зададете област, изберете няколко реда (или няколко колони) и от менюто изберете Таблица/Имена/Задаване на име. За премахване има и командата Remove name.

Името е необходимо, за да може зоната да бъде достъпна от програмния код. Името може да бъде присвоено не само на редове или колони, но и просто на няколко клетки. За да направите това, изберете клетките и изберете същото меню.

По подразбиране обаче имената на персонализираните клетки не се показват. За да ги видите, изберете елемент от менюто Таблица/Имена/Показване на именувани клетки.

И така, днес научихме, че 1C печатна форма се формира с помощта на оформление. Оформлението се състои от блокове – умело наречени области.

Типични (често използвани) блокове за печатни форми:

  • Header – показва се заглавието на документа
  • Ред – показва се един ред от таблицата, този блок се повтаря толкова пъти, колкото редовете трябва да бъдат отпечатани
  • Долен колонтитул – показва се краят на документа.

Сега трябва да се справим с