UV: programmatic creation and copying of documents using the constructions Form DataInValue, ValueInFormData. UV: programmatic creation and copying of documents using the constructions Form DataVValue, ValueVFormData Open fo


Programmatically opening forms in a managed 1C application is significantly different from opening them in a regular application. Let's look at the old method first. It consists of receiving a form and then opening it in normal or modal mode (when opened in modal mode, the form blocks the program).

GetForm() . Open()

This is the slowest method of opening forms. However, it allows you to programmatically process the form before opening it. To process the code you need to change a little:

Form = GetForm( "Document. Receipt of Goods and Services. Document Form") ;
//Here we perform actions with the form
Form. Open();

It should be taken into account that when the form is received, another event procedure will be executed WhenCreatedOnServer.

Let's look at other methods that allow you to open forms in a managed 1C application faster and more conveniently. Depending on the specific situation, different methods may be used.

1. How to open an object form in a managed application if there is a link to it.

In this case, everything is extremely simple.

RefLink = Directories. Nomenclature. FindByCode("000000001" ) ;
OpenValue(RefLink) ;

2. How to open the selection form and then get the selected value.

There is a function for this EnterValue(). The function has 3 parameters:

  • The variable into which the selected value will be written;
  • A hint that will be displayed in the selection window;
  • Description of the types of selected values. There may be several types, in which case you will be prompted to select a type before selecting a specific value.

As a result of executing the function, the default selection form for an object of the specified type will open.

Variable Value;
Array= new Array;
Array. Add(Type( "DirectoryLink.Nomenclature") ) ;
Array. Add(Type( "DirectoryLink. Counterparties") ) ;

TypeDescription= new TypeDescription(Array) ;

Res = EnterValue(Value, "Hint" , TypeDescription) ;

Previous methods only allowed you to open the default forms for objects (object form or selection form). If you need to open a custom form, you can use the function OpenForm().

This function has quite a few parameters. Let's look at some of them:

  • Form name— here you can select either one of the standard object shapes, for example, Selection Form or List Form. Or a specific form created by the developers.
  • Options— allows you to transfer it to the form in the form structures some parameters before opening it, thereby determining the output data. Parameters can be any data that can be passed from the client to the server. The parameters passed when opening the form can be processed in the procedure WhenCreatingOnServer() at the form being opened.
  • Form opening mode— has 3 options: independent, block the entire interface, block the owner form.

Let's look at how the function is used OpenForm() in various situations.

3. How to open the form of an existing object

Each form has one key attribute. It is highlighted in bold in the list of form details and is usually called An object in the forms of elements of reference books and documents. Other objects may have a different name. To open a form of an existing object, you need to pass a parameter to the form being opened Key with the value as a reference to an object.

&OnClient
Procedure Command1 (Command)
Parameter= new struct;
Parameter. Insert("Key" , FindC() ) ;
OpenForm(, Parameter) ;
End of Procedure

&On server
Function FindC();
Return Directories. Counterparties. FindByRequisites ("TIN", "745107734623")
EndFunction

4. How to open a new object form

A simple function will do here OpenForm() without any parameters.

&OnClient
Procedure Command1 (Command)
OpenForm( "Directory. Counterparties. Object Form") ;
End of Procedure

5. How to open a new object form and fill it out based on something

You need to pass a parameter Base, the value of which will be a reference to the filling base object. This will start the procedure ProcessFill().

&OnClient
Procedure Command1 (Command)
Parameter= new struct;
Parameter. Insert("Base", LinkToBuyerAccount) ;
OpenForm( "Document. Sales of Goods and Services. Object Form", Parameter) ;
End of Procedure

This example will create a document Sales of goods and services and filled out on the basis of an invoice for payment to the buyer, the link to which was transmitted.

6. How to open a form and set a selection on it

Selection on 1C forms can be simple or complex. Simple selection involves expressions like Organization = Horns and Hooves LLC. Complex selection involves other types of comparison, e.g. On the list. In this article we will consider the organization of simple selection, and a separate article will be devoted to complex selection.

To organize a simple selection, you need to pass a parameter with a key to the form being opened Selection, the value will be a structure in which the key is the name of the dynamic list field, and the value is the data being sought.

For example, let's open the directory list form GTD numbers and make a selection there by owner - directory element Nomenclature.

&OnClient
Procedure Command1 (Command)
Parameter= new struct;

Selection= new Structure;
Selection. Insert("Owner", LinkToNomenclature) ;

Parameter. Insert("Selection", Selection) ;

OpenForm( "Directory.GTD Numbers.List Form", Parameter) ;
End of Procedure

7. How to open the information register entry form

To do this, you will need the information register entry key.

Record Key— these are the values ​​of all measurements and the period (if the register is periodic). That is, a record key is the parameters by which a record can be uniquely identified.

The opening algorithm is as follows:

  1. We enter the record key data with the necessary values ​​into the structure.
  2. We place the resulting structure in an array.
  3. We create a record key from the array.
  4. We pass a parameter to the form that opens Key with the record key from step 3 as the value.

&OnClient
Procedure Command1 (Command)
Parameter= new struct;

KeyParameters= new Structure;
Key parameters. Insert("Nomenclature", LinkToNomenclature) ;
Key parameters. Insert("PriceType", LinkToPriceType) ;
Key parameters. Insert("Period", Date) ;

KeyArray = New Array;
KeyArray. Add(KeyParameters) ;

EntryKey = New( "Information RegisterRecord Key.PricesNomenclature", KeyArray) ;

Parameter. Insert("Key", RecordKey) ;

OpenForm( "Register of Information. Prices of Nomenclature. Record Form", Parameter) ;
End of Procedure

Question: Get the form "On the Server"


There is the following problem: you need to transfer the form to the server. So I understand that you need to obtain the structure on the client and transfer it to the server. Help me edit the following code
Code 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 CreateDocument Notification(Array of Selected Rows) ; CreateDocument End of Procedure & On Server Procedure CreateDocument Notify(PatientsArrayIdentifiers, NotNotify = False) New Document = Documents. st_Notification. () ; DocumentForm = New Document. GetForm( "Never notify"

; Otherwise New Document. Text = "Notified(s)" ;

Code 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 EndIf ; CreateDocument New document. Date = StartDay(CurrentDate()); CreateDocument For Each Row Identifier From) ; New Document = DocumentForm. An object; New document. NotNotify = NotNotify; If Not Notify Then New Document. Text = "Never mind telling fortunes"; "Never notify" Otherwise New Document. Text =

"Meaning(s)"


;
EndIf ;
New document. Date = StartDay(CurrentDate());

; For Each Row Identifier

PatientsArrayIdentifiers Cycle NewRow = New Document. Patients. Add() ; New line . Patient = Notifications. Find ByIdentifier(StringIdentifier) ​​. Patient; EndCycle ;


DocumentForm. Open();
End of Procedure
Question: v7: Open the form (“doesn’t work!”)!

I am writing, OpenForm("Document.Reservation_Trimming", Context);
but does not open this document, if anyone knows, please help!

I tried different options and this document exists.

() So, so... does that mean you lied at 0? Misled the community? Distracted from important matters? Forced someone to install the long-forgotten 1C 7.7, and someone even set up a SQL server to test the work in different versions of the database? And all this just because you couldn’t press Ctrl+C / Ctrl+V correctly?!

;

Question: External printed form "Payment order" for the document "Receipt to current account" (BP 3.0)

Good afternoon, good people!!!
Help the teapot!
() So, so... does that mean you lied at 0? Misled the community? Distracted from important matters? Forced someone to install the long-forgotten 1C 7.7, and someone even set up a SQL server to test the work in different versions of the database? And all this just because you couldn’t press Ctrl+C / Ctrl+V correctly?!

In 1C 8.3 Accounting needed to print payment orders for documents “Receipt to current account” through an external printed form, since it is not available in 1C itself

It is impossible to connect additional processing from a file.
It may not be suitable for this version of the program.
(ExternalProcessing.Account.ObjectModule(74,28)): Variable is not defined (SmallCompanyServerManagement)

How can this be fixed?.
artsh said:

Good afternoon, good people!!!


There is a form available only for 8.2, when connected to 8.3 it gives:
Click to expand...
It's not a matter of 8.2 or 8.3! Configuration information is important.
You are trying to open processing intended for UNF in BP (2.0 or 3.0???)!
2. Files are sent to three PCs (different channels for receiving files and different decoding systems).
3. There is a processing that receives the necessary data from the received files and loads them into the file information security system.
4. Processing is launched via a regular scheduler.
Task:
1. Transfer this entire process to a server platform.
2. Organize the download of files through a scheduled task.
Problem(s):
1. Routine tasks are performed by server procedures, and loading and processing files are mainly client procedures.
2. ...?
Question:
How can I scan a directory on another PC from a routine task and download the files found?

;

The answer has already been written to you.

Question: Server "Database not found"


Something strange happened today. One of the bases stopped opening. An error is thrown that "database not found". On the 1C server it is, and in sql too. But it doesn't open.
I made a copy of it on the SQL server, then connected it in 1C server - and everything worked fine. But what happened to the “old” base?? How can you clarify where the legs of such an error come from?

;

Draco said:

Well, check which server and ports were registered as a connection to the database and on the same cluster see whether there are there or not and the same ports on the cluster or not

In 1C 8.3 Accounting needed to print payment orders for documents “Receipt to current account” through an external printed form, since it is not available in 1C itself

I'll go ask Google to decipher it

Question: UPP 1.3 In the Calculation upon dismissal, “Earnings” is less than in the Pay Slip. HELP


UPP 1.3 In the document “Calculation upon dismissal” in printed form T-61 in the column “Earnings” the amount is less than “Accrued” in the printed form of “Payment slip” in the document “Calculation of salaries for employees of the Organization”.

More. Amounts for documents “Payment for holidays and weekends” are included in the Payslip, but not in T-61 upon dismissal.

Tell me a set of correct shamanic actions so that it falls into place.

;() nothing will happen with updates... errors in this form are some of the oldest and no one is going to fix them


;

Message from rung15

Who did I write this to?

Message from GreenkA

The list button gives you these “three dots” that you have missing. This will not be displayed automatically for you, because the type of the “id_Instance” attribute is String. If there was a directory, there would be no need to change anything in the properties, and the “Auto” mark would be enough.

Message from rung15

You can start over many times, but the result will be the same if you don’t understand what the problem is. Maybe it's worth re-reading something? This topic, this book, google it...

Answers to questions from the file

Read
Directory.Books.Copies <ИмяТаблицы>.<ИмяПоля>, from here




.

If FindString.Quantity() >

Compilation Directives

&AtClient
&AtServer (&AtServer)

Form module

Command module

General module
&On the Client, &On the Server.

Question: Creation of a diploma project "Electronic Library"


Hello. I am writing with a dipole at 1s. Digital library. So the essence of the problem: I would like that in the tabular part of the directory “Students”-1, after selecting a certain book in the attribute “Book_Title”-2, in the attribute “id_Instance”-3 a list of available copies appears to choose from. I marked the symbols in the pictures with numbers next to the quotes. Of course, it would be nice if the status would change when a copy reaches a student, but this is a secondary issue. Help me please. Another question: Why, after referring to a field, can I only add the standard “Name” attribute to the current field? Thank you for your attention. (Please also recommend books for teapots that could help with my topic, please.)

;

Message from rung15

I don’t know why, but the list only appears when you press the F4 button, and when you press the arrow, nothing happens, and the ellipsis has disappeared somewhere

Who did I write this to?

Message from GreenkA

Don't forget to enable the "List Button" in the properties of the form element "id_Instance".

The list button gives you these “three dots” that you have missing. This will not be displayed automatically for you, because the type of the “id_Instance” attribute is String. If there was a directory, there would be no need to change anything in the properties, and the “Auto” mark would be enough.

Message from rung15

This is what I achieved in 6 hours and over 8 recreated configurations

You can start over many times, but the result will be the same if you don’t understand what the problem is. Maybe it's worth re-reading something? This topic, this book, google it...

Answers to questions from the file


StandardProcessing = False; - (What is this for, as I understand it, if the book is not filled so that processing that displays a list of copies is not performed.)
Disabling standard form element event processing so that our event description works.
An example for your configuration: there is a form element associated with the Book_Name attribute (type ReferenceLink.Books). Standard processing of the StartSelection() event of this element will lead to the opening of the Book directory Selection Form. If we want to pass additional parameters there, for example set a selection, open another form, we disable standard processing and write what we want to do for this event.

&On a Server Without Context (What is the difference between a server with and without a context, and why this particular one was chosen)
Read about directives in 1C. A lot, but useful.

Read
Specifically for your questions: this is the text of the request that refers to the table Directory.Books.Copies(Instances tabular part), the table name in the query can be changed; here it is defined as BooksInstances. Therefore, we define all the resulting fields as<ИмяТаблицы>.<ИмяПоля>, from here
BooksInstances.id_Instance. "BooksInstances.Link = &Link" - selecting records in a request for a specific element in the Books directory, which we later set as a parameter - "Request.SetParameter("Link", Book);".

Books_Studentid_InstanceWhenChangedOnServer(CurrentLine.Book_Title, CurrentLine.id_Instance); (This is a type of forwarding to the procedure below)
It is a question or a statement? Like yes)

FindRow = CurrentBook.Instances.FindLines(New Structure("id_Instance", id_Instance)); (I don’t understand anything here at all, and why we need a structure especially)
Do you know how to use the syntax assistant? Call ctrl+f1, if at this time you place the cursor on something incomprehensible, it will immediately try to find information about it, with descriptions and examples.
Description of the FindRows() method: searches for rows in the tabular section that match the specified search condition.
The search conditions are specified in parentheses in the form of a structure, where at the beginning “id_Instance” is the structure key, the name of the search column, then the structure value is id_Instance (without quotes). We passed this value when calling the procedure Books_Studentid_InstanceWhenChangedOnServer(Book, id_Instance).

If FindString.Quantity() > 0 Then () (If we select some string from the instances, do we make it false?)
False - how is that? In this line, we check whether the rows in the table section are found according to the specified search parameters, so that there are no errors when trying to obtain a value by index.

Compilation Directives


Each procedure and function of a form module, command module, and common module of a managed application is preceded by a compilation directive that specifies the execution environment for that procedure. The directive is preceded by the "&" character. Valid directives:

&AtClient- defines a client procedure (function);
&AtServer (&AtServer)- defines a server procedure (function);
&OnServerNoContext (&AtServerNoContext)- defines a server procedure (function) executed on the server outside the context of the form. Variables cannot be out of context. In such methods, the form context (including form data) is not available. Only calls to other out-of-context methods are valid. Calling these methods does not transfer form data to and from the server. The use of out-of-context methods allows you to significantly reduce the amount of data transferred when calling a server procedure from a client application environment;
&OnClientAtServerNoContext (&AtClientAtServerNoContext)- defines a procedure (function) executed in a form module on the client and on the server, which does not have access to the form context, form data, variables, but has access to the procedures and functions of common modules - server, non-global, and server and client at the same time. The procedure (function) itself is available for client, server contextual and non-contextual procedures and functions of the form module. It is allowed to call server methods of common modules from server-side non-context methods of the form;
&AtClientAtServer (&AtClientAtServer)- defines a procedure (function) executed in a command module, executed on the client and on the server, having access to the procedures and functions of common modules - server, non-global and server and client at the same time, not having access to variables. The procedure (function) itself is available to client server procedures and command module functions.
The client procedure (function) is executed in the client application environment. In such a procedure, the client context of the form and calls to any module procedures are available.

A server procedure (function) is executed in the server application environment. In such a procedure, the form data is available, the form's server context is available, and calls to the server and server-side out-of-context procedures of the module are available. When calling such a procedure, the form data will be transferred from the client to the server and back (at the end of the call).

A server procedure (function) executed outside the form context (out-of-context) is executed in the server application environment. In such a procedure (function), the form context (including form data) is not available. Only calls to other out-of-context procedures (functions) are valid. When these procedures (functions) are called, form data is not transferred to the server and back. The use of out-of-context procedures (functions) allows you to significantly reduce the amount of data transferred when calling a server procedure (function) from the client application environment.

The absence of a compilation directive before a procedure (function) means that the default directive is used. The default directive is &OnServer. It is not allowed to use several compilation directives before one procedure (function). It is not allowed to have procedures (functions) of the same name that differ only in compilation directives.

A managed form module allows the use of preprocessor instructions. It is recommended to use preprocessor instructions only inside procedures (functions). To understand the result when preprocessor instructions “cross” procedure (function) boundaries, it should be taken into account that the processing of preprocessor instructions is performed before the processing of compilation directives.

In the command module, the predefined handler procedure ProcessCommand must be preceded by the &OnClient directive, since the command is executed in the client application.

Form module
Compilation directives are available in the form module − &On the Client, &On the Server, &On the Server Without Context, &On the Client On the Server Without Context.
Command module
Compilation directives are available in the command module − &OnClient, &OnServer, &OnClientOnServer.
General module
Compilation directives are available in the general module − &On the Client, &On the Server.

Question: Working with an external component with a 1C server...


Good afternoon,

There is an external component written in C++, whose task is to obtain information from an external database and return the query result in the form of a Table of Values ​​in 1C.
To generate a table of values ​​at the current moment, the IDispatch* pBackConnection interface is used, received as a parameter in the Init() function. Next, I simply use 1C functions to create a table of values, fill it and return it to the second parameter in CallAsFunc(...).
Problems began with the transition to 1C thin clients. On the server side, the external component does not really start. You can run it on the client side, but it all looks like crutches and falls out of the general “client-server” logic in 1C. For example, the client does not understand what a value table is, problems with “global” variables, sessions, etc.
NativeAPI is even more limited in this regard.
Dancing with a tambourine led to the fact that I was able to launch an external component under the 1C server, BUT the work continues until an attempt is made to call Invoke on pBackConnection. The 64-bit version of the 8.2 server tries to do something until it timeouts, the 32-bit version (VK is naturally also 32-bit) just falls off immediately.
I assume that the 1C server does not support this operating mode.
Accordingly, questions arise: is this temporary or does the 1C logic boil down to canceling this work scheme? If it is impossible to create internal 1C structures (a table of values) in this way, is there, in principle, a description of what a table of values ​​is at the system level in order to try to create it in C++, fill it, and then simply slip it into 1C as a return parameter? I would like to at least get a direction in which direction to dig.

Thank you.

;

You write one thing and mean another.
In the 1C environment, declaring variables that will be visible in different sessions is not impossible now, and there was no such possibility before. Another session is a physically different process.
A session is a session connecting to a database, i.e. user session. Or are you putting something of your own into this concept?

Within one session it was possible, and it is now possible, to declare variables in the session module that will live and be visible within the session from different places... actually, there are 4 of them.
- Session module;
- Regular application module;
- Managed application module;
- External connection module.

Well, of course, you need to remember the context. The server context is not directly accessible on the client side and vice versa.

In fact, the 1C architecture provides that data exchange will go:
- by means of parameters/returns of procedures/functions;
- by means of the so-called session parameters (cannot be objects, but actually visible in the palette).

A table on the form... is it connected to some object table (processing, for example)? or not. If yes, then it is available on the server (&OnServer) and edit there....

And yet, yes, the Value Table is not available in the UV on the client side. Well, that’s what 1C decided.

Come on! It works with Excel, it works with FSO and a bunch of other things, but it doesn’t work here. Catch the error and analyze....

Attempt
...
your actions
...
Exception
str = ErrorDescription();
EndAttempt;

With modern hardware capabilities, this is not an argument at all.

Purely your personal opinion. Has nothing to do with reality. Not in any way. I repeat once again, 1C works great with COM. Both with in-proc and out-proc.

Please provide the code you use to download and contact VK.

By the way, VK... in your case, is it COM or Native API?
If COM, then you register it as... via regsvr32... how then do you “resolve” the issue of bit depth?

Question: COMObject("Excel.Application"). On the client and on the server


Greetings.

I ran into a problem:
I created a processing that launches Excel, reads the file, fills it and writes it.
Everything works great on the client.
I created a routine task that runs this on the server at a certain time.
When executed on the server, an error appears stating that MS Excel could not access the file. At the same time, it is known for certain that com. the Excel object was not even created (it is not in the task manager processes).
It is noteworthy that if you start processing by the client from the machine where the 1C server is installed, then everything is done.

Excel = New COMObject("Excel.Application"); Book = Excel.WorkBooks.Open("D:\Dst\Order.xls");

I feel that the point here is that when working from a client, Excel is launched under a user in a real session, and in the case of a server, under a user, albeit with full rights, but without a running session.

Windows Server 2008 R2 Standard server. Service Pack 1
How to get around this?

;

In case someone needs it
We execute the command "mmc comexp.msc /32", which does the same as DCOMCONFIG, but allows you to see 32-bit components.

Because Questions often arise regarding the programmatic creation/copying/processing of 1C:Enterprise objects in the “Managed Forms” mode, so I decided to compile in this publication examples of solving such problems, with comments on each action. At first, everything seems quite confusing, but if you break it down step by step and delve into it a little, then everything should fall into place.

When switching from “regular forms” to “managed forms” you need to understand that now we have a client-server option program operation.

This means that while we could previously programmatically directly change objects in “regular forms” and see the result of our actions on the screen, in “managed forms” the object on the server and the object on the client (visible to the user) are separated. The functions and procedures that can be performed on the server and on the client are also partially separated. For example, on the server, mainly complex calculations and functions related to changes in the database are performed, and on the client, simple calculations and usability functions are performed.

EXAMPLES:

Below I will give an example of how to create/copy/modify documents. This example is thoroughly analyzed and will allow you to understand the client-server architecture of work and extend this knowledge to other 1C objects (directories, reports...).

The task was this: there is a directory of nomenclature in which dishes (catering) are included. Each dish has its own calculation (product composition). Calculations are stored in a periodic information register. The element form contains a dynamic list with calculations belonging to the open dish (it could be any other data table). It was necessary to add two buttons “Create cost estimate” (new) and “Copy cost estimate” (active from the list).

To do this, I created the appropriate commands and placed them on the form.

1. "Create cost estimate."

&On the Client Procedure CreateCalculation(Command) // Create an object/document form on the client mForm = GetForm("Document.Calculation.ObjectForm");

// We pass the object (data) of the open form to the variable. Form Data = mForm.Object;

// perform simple operationsForm Data.Dish = Object.Link;.

FormData.Date = CurrentDate();

// Open the completed form of the object (show it to the user) mForm.Open(); End of Procedure

The procedure is as follows: We create a form of the object we need on the client and immediately open it (OpenForm...). Next, as before, we pass the Open Form Object to the Form Data variable.

Because the task is to copy a document that already exists in the database (the old calculation that the user selected in the dynamic list), then actions with the DB data can only be performed on the server. Thus, we obtain the necessary parameters from the item form (in my case, the old calculation) and pass these parameters through the Structure to the server procedure without context along with the Form Data variable: CopyDocumentObjectOnServer(FormData, DataStructure).

&OnServerWithoutContext Procedure CopyDocumentObjectOnServer(FormData, DataStructure) // We get a regular object on the server using form data // used with an indication of the type if the document is changed (&OnServerWithoutContext) //Doc = FormDataValue(FormData, Type("DocumentObject.Calculation"));

// The above line is not used, because we are copying an existing object Doc = DataStructure.Calculation.Copy();

// We work with the object (various manipulations) // call export procedures from the object module Doc.RecalculatePrices(); // fill in its details Doc.Date = CurrentDate();// Pass back to the Form Data variable the already modified object (document) ValueInFormData(Doc, FormData); End of Procedure

Already on the server, using the FormDataVValue() function, we transform FormData into the document object that is familiar to us from “ordinary forms” and work with it using server procedures. We copy data from another document, launch export procedures from the object module, and fill in other details. Function FormDataValue()

requires specifying the correspondence (type of the resulting object): Type("DocumentObject.Calculation").

At the same time, the Form Data changed on the server will not end up in our created and opened form at the very beginning, so we perform the procedure

CopyFormData(FormData, Form.Object)
Structure of the Sun 1 – core, 2 – zone of radiative equilibrium, 3 – convective zone, 4 – photosphere, 5 – chromosphere, 6 – corona, 7 – spots,...

1. Every infectious diseases hospital or infectious diseases department, or multidisciplinary hospitals must have an emergency department where it is necessary...

ORTHOEPIC DICTIONARIES (see orthoepy) are dictionaries in which the vocabulary of the modern Russian literary language is presented with...

A mirror is a mysterious object that has always inspired a certain fear in people. There are many books, fairy tales and stories in which people...
1980 is the year of which animal? This question is especially of concern to those who were born in the indicated year and are passionate about horoscopes. Due...
Most of you have already heard about the great Mahamantra Mahamrityunjaya Mantra. It is widely known and widespread. No less famous is...
Why do you dream if you are not lucky enough to walk through a cemetery? The dream book is sure: you are afraid of death, or you crave rest and peace. Try...
In May 2017, LEGO introduces its new series of minifigures, Season 17 (LEGO Minifigures Season 17). The new series was shown for the first time...
Hello, friends! I remember that as a child we really loved to eat delicious sweet dates. But they were not in our diet so often and did not become...