Записать в реквизит документа сам документ

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

Я
   uncknow

19.06.12 — 16:34

Задача:

Создан документ, еще не записан. Необходимо заполнить реквизит документа  ссылкой на сам документ.

Какие есть простые способы решить эту задачу?:

1. Не записывая документ.

2. Записывая документ.

=)

  

Партнерская программа EFSOL Oblako

   zak555

1 — 19.06.12 — 16:36

какой глубокий смысл в этом ?

   mikecool

2 — 19.06.12 — 16:36

хреновая задача, имхо

   Stim

3 — 19.06.12 — 16:36

«Необходимо заполнить реквизит документа  ссылкой на сам документ»

пятнично!

   mikecool

4 — 19.06.12 — 16:37

+2 ибо у него и так есть Ссылка

   DionisSergeevich

5 — 19.06.12 — 16:39

по ссылке получить объект и присвоить реквизиты самого документа и документа полученного по ссылке

   uncknow

6 — 19.06.12 — 16:43

Неужто такая простая задача всех в ступор завела? :))

Для обычного режима задача не стоит и выведенного яйца :)

   Fragster

7 — 19.06.12 — 16:44

(6) для необычного — всё так же

   DSSS

8 — 19.06.12 — 16:44

Присоединяюсь к (1)

   uncknow

9 — 19.06.12 — 16:45

(7) Документ.Реквизит = Объект.Ссылка   ?

   zak555

10 — 19.06.12 — 16:45

(9) нахрена ?

   uncknow

11 — 19.06.12 — 16:47

(1) Документ расчетов.

   Stim

12 — 19.06.12 — 16:48

(11) расскажи задачу полностью, мб отговорим тебя от такого поступка

   zak555

13 — 19.06.12 — 16:48

(11) ???

   Fragster

14 — 19.06.12 — 16:50

нормальная задача… если идет цепочка документов, которая начинается со счета, при этом всю цепочку можно выбрать по одному реквизиту

   uncknow

15 — 19.06.12 — 16:50

(12)(13) Да уже просто из принципа интересно.

(All) Сам Документ является документом расчетов.

   Smallrat

16 — 19.06.12 — 16:51

В модуле объекта

[/1C]

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

   Если ЭтотОбъект.ЭтоНовый() Тогда

       мСсылкаНового = ЭтотОбъект.ПолучитьСсылкуНового();

       Если НЕ ЗначениеЗаполнено(мСсылкаНового) Тогда

           мСсылкаНового = Документы[ЭтотОбъект.Метаданные().Имя].ПолучитьСсылку();

       КонецЕсли;

       Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ПолучитьСсылкуНового()) Тогда

           ЭтотОбъект.УстановитьСсылкуНового(мСсылкаНового);

       КонецЕсли;    

   КонецЕсли;

   
   Если НЕ ЗначениеЗаполнено(Договор) Тогда

       Если ЭтоНовый() Тогда

           СсылкаНаДокумент = мСсылкаНового;

       Иначе

           СсылкаНаДокумент = Ссылка;

       КонецЕсли;

   КонецЕсли;

КонецПроцедуры

[1C]

зачем такое нужно — ну вот в (14) написано

   zak555

17 — 19.06.12 — 16:51

(14) так у вновь создаваемого док есть реквизит на докОсновании, где ссылка заранее определена

   fisher

18 — 19.06.12 — 16:51

(9) Ну и плюс УстановитьСсылкуНового().

Хитрость только в доступе к объекту из модуля формы на сервере.

Сначала нужно распаковать объект из основного реквизита формы через РеквизитФормыВЗначение, сделать с объектом чего надо, а потом запаковать его обратно в реквизит (через ЗначениеВРеквизитФормы).

   Smallrat

19 — 19.06.12 — 16:52

упс

Если НЕ ЗначениеЗаполнено(Договор) Тогда

заменить на

Если НЕ ЗначениеЗаполнено(СсылкаНаДокумент ) Тогда

   Fragster

20 — 19.06.12 — 16:52

(17) а у самого первого? так можно сделать сквозной реквизит, по которой и первый документ будет выбираться

   uncknow

21 — 19.06.12 — 16:52

(16) Это Управляемое приложение

   Fragster

22 — 19.06.12 — 16:53

(20)+ если вводить 3-й документ на основании второго — то реквизит с первым документом будет свой, а одкОснование — свой

   uncknow

23 — 19.06.12 — 16:53

(18) Это решение я знаю :)

   fisher

24 — 19.06.12 — 16:54

(18) + Или делать назначение ссылки и присвоение её реквизиту в ПриЧтенииНаСервере(), когда объект еще напрямую доступен.

(23) А в чем проблема тогда?

   uncknow

25 — 19.06.12 — 16:56

(24) Да как-то не кошерно, хочется попроще :))

   fisher

26 — 19.06.12 — 16:58

(25) А в чем ты видишь принципиальную разницу с обычными формами? Там кашерно было, а тут некашерно?

   uncknow

27 — 19.06.12 — 17:00

В обычных формах можно сразу получить ссылку на вновь созданный объект, это если мне память не изменяет =)

   fisher

28 — 19.06.12 — 17:01

(27) Без записи и УстановитьСсылкуНового()? Изменяет.

   uncknow

29 — 19.06.12 — 17:04

(28)  Возможно старый совсем стал :)

   zak555

30 — 19.06.12 — 17:04

(20) зачем первому реквизит ?

   mistеr

31 — 19.06.12 — 17:04

(0)

1. Пока документ не записан, ссылки на него нет (в курсе?)

2. Если документ записан, ссылка в реквизите Ссылка (в курсе?).

   mistеr

32 — 19.06.12 — 17:05

(25) Не кошерно у вас спроектировано.

   fisher

33 — 19.06.12 — 17:06

(31) Пока документ не записан, ему можно явно назначить ссылку с которой он будет записан (в курсе?)

   uncknow

34 — 19.06.12 — 17:06

(31) Если бы не знал, тему бы не открывал :))

   uncknow

35 — 19.06.12 — 17:08

(33) Интересно, в процедуре ПередЗаписьюНаСервере получится сделать?

   mistеr

36 — 19.06.12 — 17:10

(34) Тогда задачу поставьте внятно.

(33) В курсе, что это меняет? Если бы это устраивало ТС, «тему бы не открывал».

   mistеr

37 — 19.06.12 — 17:13

(34) Вопрос в лоб: зачем документу копия уже имеющегося реквизита?

   uncknow

38 — 19.06.12 — 17:13

(36) Да куда уж внятнее :)

   uncknow

39 — 19.06.12 — 17:14

(37) В реквизите документа должна быть ссылка на сам документ

   fisher

40 — 19.06.12 — 17:14

(35) Вообще-то, в любой момент получится.

   uncknow

41 — 19.06.12 — 17:14

(17) А можно поподробнее?

   uncknow

42 — 19.06.12 — 17:15

(40) В любой момент придется гонять форму в объект и обратно. А ПриЗаписиНаСервере уже есть объект.

   mistеr

43 — 19.06.12 — 17:16

(39) «Так начальник сказал»?

   fisher

44 — 19.06.12 — 17:18

(42) ПриЗаписиНаСервере отлично подходит под «любой момент». И это не единственное событие, где есть объект.

Но все-таки ты расскажи, зачем тебе дублировать функционал системного поля «Ссылка»? Или в чем отличие?

   uncknow

45 — 19.06.12 — 17:22

(44)  Да чтож вы все к постановке задачи цепляетесь :))

Торговля, регистр сведений взаиморасчеты, документ расчетов.  Убыл, позже буду. Может кто что подробнее расскажет, так как за Управляемый Интерфейс взялся недавно. С Уважением… :)

   fisher

46 — 19.06.12 — 17:35

(45) Я цепляюсь, потому что хочу вернуть взорванные мозги на место (вот не могу сообразить нафига это надо, хоть ты тресни). Что рассказывать подробнее — непонятно. Уже вроде все вдоль и поперек проехали несколько раз.

   Smallrat

47 — 19.06.12 — 18:37

(46) вот например договора, которые вводятся на основании друг-друга (доп. соглашения). У договоров есть реквизит ОсновнойДоговор — который обозначает начало цепочки. При запросах часть данных берется из основного договора — соответственно, чтобы не мучаться, у основного договора реквизит ОсновнойДоговор заполнен им самим. Также очень просто выбирать всю цепочку разом — все документы, у которых ОсновнойДоговор = основному договору документа.

   Infsams654

48 — 19.06.12 — 19:12

(47) — с этим-то все понятно (При запросах … данных берется из уже записанных объектов), непонятно для чего нужен реквизит — ссылка незаписанного документа.

   Smallrat

49 — 19.06.12 — 19:19

(48) сложно сказать ) я знаю что бывает затык как поставить при записи ссылку на сам, еще не записанный, документ — подумал что у ТС проблемы с этим и притащил решение в (16).

   mistеr

50 — 19.06.12 — 19:52

(47) Чтобы не мучаться?

ГДЕ ОсновнойДоговор = &ОсновнойДоговор ИЛИ Ссылка = &ОсновнойДоговор

Это мучение?

   Smallrat

51 — 19.06.12 — 20:31

(50) есть еще интерактивные отборы в формах списка и т.д.

да и вообще, это логично же, что если есть реквизит, который означает принадлежность к цепочке, то у первого документа в цепочке признак принадлежности тоже должен быть заполнен, по краййней мере мне так думается.

   yukon

52 — 19.06.12 — 20:44

Управляемое/неуправляемое — да какая разница?

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

   СсылкаНового = Документы.Документ.ПолучитьСсылку(Новый УникальныйИдентификатор());

   УстановитьСсылкуНового(СсылкаНового);

   ДокументОснование = СсылкаНового;

КонецПроцедуры

   mistеr

53 — 19.06.12 — 21:26

(51) Логично, если *так* решил разработчик. От смысла «цепочки» зависит. В примере с договорами, *для меня* не логично, что основной договор является доп. соглашением к самому себе. :)

   chaplin-che

54 — 19.06.12 — 21:44

Да бред какой-то, если просто подумать логически «зачем нужна ссылка, которой в базе еще нет» она ни на что не влияет, нигде не учавствует. Если надо что-то доделать — доделываем в момент записи, когда ссылка уже есть.

   Defender aka LINN

55 — 19.06.12 — 21:59

(18) Для этого вообще-то ПередЗаписьюНаСервере есть

   experimentator76

56 — 19.06.12 — 22:29

(54) бывает что ссылка нужна УЖЕ, а сам объект в базу будет записан позже

вообще все записи надо делать один раз и в конце обработки

так надо…

   chaplin-che

57 — 21.06.12 — 20:01

(56) Не бывает такого, что объекту самому нужна ссылка о самом себе перед записью. Есть пример?

   EvgeniuXP

58 — 21.06.12 — 20:18

(0) копай ПолучитьУникальный UID, его же и записывай.

   EvgeniuXP

59 — 21.06.12 — 20:20

(57) но бывают случаи, когда нужно создать другой объект и ссылаясь на этот, который еще не записан.

UID вам в помощь.

   chaplin-che

60 — 21.06.12 — 20:33

(59) А если этот, основной будет не записан в итоге? Т.е. получается запись будет единовременной, согласны? А раз так, опять говорю, что ссылка не нужна логически, с этим не поспорить.

   Defender aka LINN

61 — 21.06.12 — 22:50

(57) Справочники «номенклатура» и «Контрагенты» в УТ

  

IamAlexy

62 — 21.06.12 — 23:01

(57) контрагенты в любой типовой..

реквизит «головной контрагент»

В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С,  а также узнаем, как программно открыть основную форму документа.

Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.

Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».

Создать документ 1С программно

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

Реквизиты документа в 1С 8.3

Для программного создания документов, я сделал обработку. У этой обработки , я разработал форму и создал команду управляемой формы, которую назвал  «Создать документ прихода», поместив её на форму обработки.

Форма обработки для создания документа

Для этой команды, я сделаю обработчики на клиенте и на сервере.

Создание обработчиков команды

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

&НаСервере
Процедура СоздатьДокументПриходаНаСервере()

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент();

КонецПроцедуры

&НаКлиенте
Процедура СоздатьДокументПрихода(Команда)
    СоздатьДокументПриходаНаСервере();
КонецПроцедуры

В этом коде я обратился к менеджеру документа ПриходТовара  (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();

Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.

Свойство автонумерация документа

В принципе, этого вполне достаточно, чтобы наш документ существовал. Но создав его при помощи функции СоздатьДокумент, мы не записали его непосредственно в базу. После выполнения кода выше, ни какого документа в базе не появится!

Записать документ 1С программно

Для того, чтобы документ 1С появился в базе, его необходимо записать.  Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Записать();

Все теперь документ появится в базе.

Мы его можем создать, и это будет абсолютно пустой документ, без всяких реквизитов и без заполненной табличной частью.

Создание пустого документа

Для того, чтобы что-то в нем появилось, нам необходимо заполнить этот документ.

Заполнить документ 1С программно

У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.

Создание реквизита управляемой формы

Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = "#Документ создан автоматически обработкой"
ДокПриход.Записать();

Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.

Таблица значений на управляемой формеМы будем в цикле обходить эту таблицу значений, создавая в каждой итерации цикла новую строку табличной части документа и заполняя её данными.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = "#Документ создан автоматически обработкой";
Для Каждого стрТЗ Из ТЗ Цикл
    НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить();
    НовСтрТЧДокумента.Номенклатура = стрТЗ.Номенклатура;
    НовСтрТЧДокумента.Количество   = стрТЗ.Количество;
    НовСтрТЧДокумента.Цена         = стрТЗ.Цена;
    НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;
ДокПриход.Записать();

В этом коде я обращаюсь к табличной части документа-объекта посредством точки (строка ДокПриход.СписокТоваров), получаю табличную часть этого объекта, и используя метод Добавить, создаю новую строку табличной части. А потом заполняю реквизиты табличной части документа данными из таблицы значений. Поскольку у нас названия реквизитов табличной части и таблицы значений совпадают, мы можем упростить код заполнения табличной части, используя метод ЗаполнитьЗначенияСвойств.

Для Каждого стрТЗ Из ТЗ Цикл
    НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтрТЧДокумента,стрТЗ);
    НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;


Всё! Мы можем смело создать документ, который будет заполнен.

Создание и заполнение документа 1С

Создание и заполнение документа 1С

Провести документ 1С программно

Все документы, которые мы создавали ранее были не проведены. Если мы хотим, чтобы документ был записан проведенным, то необходимо записывать его немного по-другому. Если раньше мы использовали метод Записать объекта документа без параметров, то теперь необходимо применять параметры этого метода. Данный метод имеет следующий синтаксис.

Записать(<РежимЗаписи>,<РежимПроведения>)

Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:

РежимЗаписиДокумента.Запись
РежимЗаписиДокумента.Проведение
РежимЗаписиДокумента.ОтменаПроведения

Т.е. мы можем записать документ, провести документ и отменить проведение документа.

Во втором параметр РежимПроведения необходимо указывать системное перечисление РежимПроведениеДокумента, которое может принимать следующие значения:

РежимПроведенияДокумента.Неоперативный
РежимПроведенияДокумента.Оперативный

Т.е. мы можем провести документ как в оперативном режиме, так и в неоперативном. Если этот параметр не указан, то документ проводится в неоперативном режиме.

Изменим запись нашего документа: пусть он проводится в оперативном режиме.

ДокПриход.Записать(РежимЗаписиДокумента.Проведение,
                   РежимПроведенияДокумента.Оперативный);

Теперь документ будет сразу проведен при создании.

Изменить документ 1С программно

Часто возникают задачи, когда нужно поменять уже созданный документ, или провести документ, который был только записан. Для этого необходимо из ссылки на документ получить его объект. Для примера, я опять создам «за кадром» новую обработку, на форме которой размещу ссылку на документ, поле с типом Склад и команду. При выполнение этой команды, будет меняться склад документа, а потом этот документ будет проводиться.

Обработка изменения документа

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

&НаСервере
Процедура ИзменитьДокументНаСервере()

    ДокОбъект = ДокументПрихода.ПолучитьОбъект();

КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДокумент(Команда)
    ИзменитьДокументНаСервере();
КонецПроцедуры

Мы получили объект документа, используя метод ссылки на документ ПолучитьОбъект. Имейте в виду, что этот метод можно использовать или на сервере, или клиенте в режиме толстого клиента.  Переменная, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.

ДокОбъект = ДокументПрихода.ПолучитьОбъект();
ДокОбъект.Склад = Склад;
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение,
                   РежимПроведенияДокумента.Неоперативный);


Открыть документ 1С программно

Научимся открывать документ 1С программно. Для этого мы доработаем предыдущую обработку: после изменения документа откроем основную форму этого объекта для просмотра и возможного редактирования. Для открытия формы документа, мы будем использовать метод  ОткрытьФорму, в котором будем использовать параметр Ключ, где укажем ссылку на открываемый документ.

&НаСервере
Процедура ИзменитьДокументНаСервере()
    ДокОбъект = ДокументПрихода.ПолучитьОбъект();
    ДокОбъект.Склад = Склад;
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение,
                       РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДокумент(Команда)
    ИзменитьДокументНаСервере();
    ПараметрыОткрытия = Новый Структура("Ключ",ДокументПрихода);
    ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта",
                 ПараметрыОткрытия,,,,,,
                 РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры

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

Обработка изменения документа

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

5.1 Герб (Государственный герб Российской Федерации, герб субъекта Российской Федерации, герб (геральдический знак) муниципального образования) воспроизводится на бланках документов в соответствии с Федеральным конституционным законом от 25 декабря 2000 г. N 2-ФКЗ «О Государственном гербе Российской Федерации», законодательными и иными нормативными правовыми актами субъектов Российской Федерации и нормативными актами органов местного самоуправления.

Изображение герба (Государственного герба Российской Федерации, герба субъекта Российской Федерации, герба (геральдического знака) муниципального образования) помещается посередине верхнего поля бланка документа над реквизитами организации — автора документа на расстоянии 10 мм от верхнего края листа.

5.2 Эмблема организации, разработанная и утвержденная в установленном порядке, размещается в соответствии с нормативными правовыми актами на бланках: документов федеральных органов государственной власти (за исключением случаев, предусматривающих использование изображения Государственного герба Российской Федерации), территориальных органов федеральных органов государственной власти, государственных и негосударственных организаций. Изображение эмблемы помещается посередине верхнего поля бланка документа над реквизитами организации — автора документа, на расстоянии 10 мм от верхнего края листа.

5.3 Товарный знак (знак обслуживания), зарегистрированный в установленном законодательством порядке, воспроизводится на бланках организаций в соответствии с уставом (положением об организации). Изображение товарного знака (знака обслуживания) помещается посередине верхнего поля бланка документа над реквизитами организации — автора документа или слева на уровне наименования организации — автора документа (допускается захватывать часть левого поля).

Наряду с товарным знаком (знаком обслуживания) на бланках документов может указываться коммерческое обозначение юридического лица.

5.4 Код формы документа проставляется на унифицированных формах документов в соответствии с Общероссийским классификатором управленческой документации (ОКУД) или локальным классификатором, располагается в правом верхнем углу рабочего поля документа, состоит из слов «Форма по» (наименование классификатора) и цифрового кода.

Пример

5.5 Наименование организации — автора документа на бланке документа должно соответствовать наименованию юридического лица, закрепленному в его учредительных документах (уставе или положении). Под наименованием организации в скобках указывается сокращенное наименование организации, если оно предусмотрено уставом (положением).

Над наименованием организации — автора документа указывается полное или сокращенное наименование вышестоящей организации (при ее наличии).

5.6 Наименование структурного подразделения — автора документа (в том числе филиала, отделения, представительства, коллегиального, совещательного или иного органа) используется в бланках писем и бланках конкретных видов документов соответствующих подразделений (органов) в соответствии с локальными нормативными актами и указывается под наименованием организации.

5.7 Наименование должности лица — автора документа используется в бланках должностных лиц и располагается под наименованием организации или наименованием территории (края, области, автономной области и др.), если документ издает руководитель органа власти субъекта Российской Федерации, муниципального образования. Наименование должности лица — автора документа указывается в соответствии с наименованием, приведенным в распорядительном документе о назначении на должность.

5.8 Справочные данные об организации указываются в бланках писем и включают: почтовый адрес организации (дополнительно может указываться адрес места нахождения юридического лица, если он не совпадает с почтовым адресом); номер телефона, факса, адрес электронной почты, сетевой адрес.

В состав справочных данных, за исключением бланков документов органов государственной власти, органов местного самоуправления, включаются: код организации по Общероссийскому классификатору предприятий и организаций (ОКПО), основной государственный регистрационный номер организации (ОГРН) и идентификационный номер налогоплательщика/код причины постановки на налоговый учет (ИНН/КПП).

5.9 Наименование вида документа указывается на всех документах, за исключением деловых (служебных) писем, располагается под реквизитами автора документа (наименованием организации, наименованием структурного подразделения, наименованием должности) (см. рис. В.6).

5.10 Дата документа соответствует дате подписания (утверждения) документа или дате события, зафиксированного в документе. Документы, изданные двумя или более организациями, должны иметь одну (единую) дату.

Дата документа записывается в последовательности — день месяца, месяц, год — одним из двух способов:

арабскими цифрами, разделенными точкой: 05.06.2016;

словесно-цифровым способом, например: 5 июня 2016 г.

5.11 Регистрационный номер документа — цифровой или буквенно-цифровой идентификатор документа, состоящий из порядкового номера документа, который, по усмотрению организации, может дополняться цифровыми или буквенными кодами (индексами) в соответствии с используемыми классификаторами (индексом дела по номенклатуре дел, кодом корреспондента, кодом должностного лица и др.).

На документе, составленном совместно двумя и более организациями, проставляются регистрационные номера документа, присвоенные каждой из организаций. Регистрационные номера отделяются друг от друга косой чертой и проставляются в порядке указания авторов в заголовочной части или преамбуле документа.

5.12 Ссылка на регистрационный номер и дату поступившего документа включает регистрационный номер и дату входящего инициативного документа, на который дается ответ.

5.13 Место составления (издания) документа указывается во всех документах, кроме деловых (служебных) писем, а также докладных, служебных записок и других внутренних информационно-справочных документов.

Место составления (издания) документа не указывается в том случае, если в наименовании организации присутствует указание на место ее нахождения. Место составления (издания) документа указывается в соответствии с принятым административно-территориальным делением.

5.14 Гриф ограничения доступа к документу проставляется в правом верхнем углу первого листа документа (проекта документа, сопроводительного письма к документу) на границе верхнего поля при наличии в документе информации, доступ к которой ограничен в соответствии с законодательством Российской Федерации.

Виды используемых в организации грифов ограничения доступа должны соответствовать законодательным и иным нормативным правовым актам Российской Федерации и должны быть закреплены в локальных нормативных актах. В состав грифа ограничения доступа к документу входит ограничительная надпись («Для служебного пользования», «Конфиденциально», «Коммерческая тайна» или др.), которая может дополняться номером экземпляра документа и другими сведениями в соответствии с законодательством Российской Федерации.

Пример

Коммерческая тайна

Экз. N 2

5.15 Адресат используется при оформлении деловых (служебных) писем, внутренних информационно-справочных документов (докладных, служебных записок и др.).

Адресатом документа может быть организация, структурное подразделение организации, должностное или физическое лицо.

Реквизит «адресат» проставляется в верхней правой части документа (на бланке с угловым расположением реквизитов) или справа под реквизитами бланка (при продольном расположении реквизитов бланка). Строки реквизита «адресат» выравниваются по левому краю или центруются относительно самой длинной строки.

При адресовании документа руководителю (заместителю руководителя) организации указывается в дательном падеже наименование должности руководителя (заместителя руководителя), включающее наименование организации, фамилию, инициалы должностного лица.

Пример

Руководителю Федерального

архивного агентства

Фамилия И.О.

При адресовании письма в организацию указывается ее полное или сокращенное наименование в именительном падеже.

Пример

Федеральное архивное

агентство

или

Росархив

При адресовании документа в структурное подразделение организации в реквизите «адресат» указывается в именительном падеже наименование организации, ниже — наименование структурного подразделения.

Пример

Федеральное архивное

агентство

Отдел государственной

службы, кадров и наград

При адресовании письма руководителю структурного подразделения указывается в именительном падеже наименование организации, ниже — в дательном падеже наименование должности руководителя, включающее наименование структурного подразделения, фамилию, инициалы.

Пример

АО «Профиль»

Руководителю договорно-

правового отдела

Фамилия И.О.

Перед фамилией должностного лица допускается употреблять сокращение «г-ну» (господину), если адресат мужчина, или «г-же» (госпоже), если адресат женщина.

Пример

г-ну Фамилия И.О.

или

г-же Фамилия И.О.

При рассылке документа группе организаций одного типа или в структурные подразделения одной организации адресат указывается обобщенно.

Пример

Руководителям дочерних

обществ АО «Профиль»

или

Руководителям управлений

Росархива

При рассылке документа не всем организациям или структурным подразделениям под реквизитом «Адресат» в скобках указывается: «(по списку)».

Пример

Руководителям дочерних

обществ АО «Профиль»

(по списку)

В одном документе не должно быть более четырех адресатов. Слово «Копия» перед вторым, третьим, четвертым адресатами не указывается. При большем количестве адресатов составляется список (лист, указатель) рассылки документа, на каждом документе указывается один адресат или адресат оформляется обобщенно.

В состав реквизита «Адресат» может входить почтовый адрес. Элементы почтового адреса указываются в последовательности, установленной Правилами оказания услуг почтовой связи, утвержденными приказом Министерства связи и массовых коммуникаций Российской Федерации от 31 июля 2014 г. N 234.

Пример

Всероссийский научно-

исследовательский институт

документоведения и архивного дела

Профсоюзная ул., д. 82,

Москва, 117393

Почтовый адрес может не указываться в документах, направляемых в высшие органы власти, вышестоящие организации, подведомственные организации и постоянным корреспондентам (за исключением направления писем указанным адресатам в конвертах с прозрачными окнами).

При адресовании документа физическому лицу указываются: фамилия, инициалы, почтовый адрес.

Пример

Фамилия И.О.

ул. Садовая, д. 5, кв. 12,

г. Люберцы, Московская обл.,

301264

При отправке письма по электронной почте или по факсимильной связи (без досылки по почте) почтовый адрес не указывается. При необходимости может быть указан электронный адрес (номер телефона/факса).

Пример

Всероссийский научно-

исследовательский институт

документоведения и архивного дела

mail@vniidad.ru

5.16 Гриф утверждения проставляется на документе в случае его утверждения должностным лицом, распорядительным документом (постановлением, решением, приказом, распоряжением) или решением коллегиального органа.

Гриф утверждения размещается в правом верхнем углу первого листа документа. Строки реквизита выравниваются по левому краю или центруются относительно самой длинной строки.

При утверждении документа должностным лицом гриф утверждения состоит из слова УТВЕРЖДАЮ, наименования должности лица, утверждающего документ, его подписи, инициалов, фамилии и даты утверждения.

Пример

УТВЕРЖДАЮ

Руководитель Федерального

архивного агентства

Подпись

Дата

И.О. Фамилия

При утверждении документа распорядительным документом гриф утверждения состоит из слова УТВЕРЖДЕН (УТВЕРЖДЕНА, УТВЕРЖДЕНЫ или УТВЕРЖДЕНО), согласованного с наименованием вида утверждаемого документа, наименования распорядительного документа в творительном падеже, его даты, номера.

Пример

(Регламент)

УТВЕРЖДЕН

приказом АО «Профиль»

от 5 апреля 2016 г. N 82

или

(Правила)

УТВЕРЖДЕНЫ

приказом АО «Профиль»

от 6 апреля 2016 г. N 83

При утверждении документа коллегиальным органом, решения которого фиксируются в протоколе, в грифе утверждения указываются наименование органа, решением которого утвержден документ, дата и номер протокола (в скобках).

Пример

(Положение)

УТВЕРЖДЕНО

Советом директоров

АО «Профиль»

(протокол от 12.12.2016 N 12)

5.17 Заголовок к тексту — краткое содержание документа. Заголовок к тексту формулируется с предлогом «О» («Об») и отвечает на вопрос «о чем?»):

приказ (о чем?) о создании аттестационной комиссии;

приказ (о чем?) об утверждении штатного расписания;

письмо (о чем?) о предоставлении информации.

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

Заголовок к тексту может не составляться, если текст документа не превышает 4 — 5 строк.

5.18. Текст документа составляется на русском языке как государственном языке Российской Федерации. В органах государственной власти, органах местного самоуправления, государственных учреждениях республик наряду с государственным языком Российской Федерации могут употребляться государственные языки республик. В деятельности государственных органов, организаций, предприятий и учреждений Российской Федерации используются государственный язык Российской Федерации, государственные языки республик и иные языки народов Российской Федерации.

(в ред. Изменения N 1, утв. Приказом Росстандарта от 14.05.2018 N 244-ст)

(см. текст в предыдущей редакции)

В тексте документа, подготовленном на основании законодательных или иных нормативных правовых актов, ранее изданных распорядительных документов, указываются их реквизиты:

— наименование вида документа, наименование организации — автора документа, дата документа, регистрационный номер документа, заголовок к тексту;

— наименование организации или должностного лица, утвердившего документ, дата утверждения документа.

Текст документа может содержать разделы, подразделы, пункты, подпункты, нумеруемые арабскими цифрами. Уровней рубрикации текста не должно быть более четырех.

В приказах текст излагается от первого лица единственного числа («приказываю»).

В документах коллегиальных и совещательных органов текст излагается от третьего лица единственного числа («коллегия… постановляет», «собрание… решило»).

Текст протокола излагается от третьего лица множественного числа («слушали», «выступили», «постановили», «решили»).

В документах, устанавливающих права и обязанности организаций, их структурных подразделений (положение, инструкция), а также содержащих описание ситуаций, анализ фактов или выводы (акт, справка), используется форма изложения текста от третьего лица единственного или множественного числа («отдел осуществляет функции…», «в состав управления входят…», «комиссия провела проверку…»).

В совместных документах текст излагается от первого лица множественного числа («приказываем», «решили»).

В деловых (служебных) письмах используются формы изложения:

— от первого лица множественного числа («просим направить…», «представляем на рассмотрение…»);

— от третьего лица единственного числа («министерство не возражает…», «общество считает возможным…»);

— от первого лица единственного числа («считаю необходимым…», «предлагаю рассмотреть…»), если письмо оформлено на должностном бланке.

В текстах документов употребляются только общепринятые аббревиатуры и графические сокращения.

При употреблении в тексте фамилий лиц инициалы указываются после фамилии.

В деловых (служебных) письмах могут использоваться:

— вступительное обращение:

Уважаемый господин Председатель!

Уважаемый господин Губернатор!

Уважаемый господин Прохоров!

Уважаемая госпожа Захарова!

Уважаемый Николай Петрович!

Уважаемая Ольга Николаевна!

Уважаемые господа!

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

— заключительная этикетная фраза:

С уважением, …

(Измененная редакция, Изм. N 1).

5.19 Отметка о приложении содержит сведения о документе (документах), прилагаемом к основному документу (в сопроводительных письмах, претензиях, актах, справках и других информационно-справочных документах) или о том, что документ является приложением к основному документу (в документах — приложениях к распорядительным документам, положениям, правилам, инструкциям, договорам, планам, отчетам и др. документам).

В сопроводительных письмах и других информационно-справочных документах отметка о приложении оформляется под текстом от границы левого поля следующим образом:

— если приложение названо в тексте:

Приложение:

на 2 л. в 1 экз.

— если приложение не названо в тексте или если приложений несколько, указывают названия документов-приложений, количество листов и экземпляров каждого приложения:

Приложение:

1. Положение об Управлении регионального кредитования на 5 л. в 1 экз.

2. Справка о кадровом составе Управления регионального кредитования на 2 л. в 1 экз.

— если приложение (приложения) сброшюровано:

Приложение:

отчет о НИР в 2 экз.

— если документ, являющийся приложением, имеет приложения с самостоятельной нумерацией страниц:

Приложение:

письмо Росархива от 05.06.2015 N 02-6/172 и приложения к нему, всего на 5 л.

— если приложением является обособленный электронный носитель (компакт-диск, usb-флеш-накопитель и др.):

При этом на вкладыше (конверте), в который помещается носитель, указываются наименования документов, записанных на носитель, имена файлов.

В распорядительных документах (постановлениях, решениях, приказах, распоряжениях), договорах, положениях, правилах, инструкциях и других документах отметка о приложении оформляется следующим образом:

— в тексте документа при первом упоминании документа-приложения в скобках указывается: … (приложение) или … (приложение 1); перед номером приложения допускается ставить знак номера: … (приложение N 2);

— на первом листе документа-приложения в правом верхнем углу указывается:

Пример

Приложение N 2

к приказу АО «Профиль»

от 15.08.2015 N 112

Строки реквизита выравниваются по левому краю или центруются относительно самой длинной строки.

Если приложением к распорядительному документу является нормативный правовой акт или иной документ, утверждаемый данным распорядительным документом, на первом листе приложения проставляется отметка о приложении (без ссылки на распорядительный документ) и гриф утверждения, в котором указываются данные распорядительного документа, которым утвержден документ-приложение.

Пример

Приложение 1

УТВЕРЖДЕНО

приказом АО «Профиль»

от 18.05.2015 N 67

5.20 Гриф согласования документа проставляется на документах, согласованных органами власти, организациями, должностными лицами. Гриф согласования в зависимости от вида документа и особенностей его оформления может проставляться:

— на первом листе документа (если документ имеет титульный лист — на титульном листе) в левом верхнем углу на уровне грифа утверждения или под наименованием документа ближе к нижнему полю);

— на последнем листе документа под текстом;

— на листе согласования, являющемся неотъемлемой частью документа.

Гриф согласования состоит из слова СОГЛАСОВАНО, должности лица, которым согласован документ (включая наименование организации), его собственноручной подписи, инициалов, фамилии, даты согласования.

Пример

СОГЛАСОВАНО

Директор ВНИИДАД

(подпись)

Дата

И.О. Фамилия

Если согласование осуществляется коллегиальным органом, в грифе согласования указывают сведения об органе, согласовавшем документ, дате и номере протокола, в котором зафиксировано решение о согласовании. Если согласование осуществляется письмом, указывают: вид документа, организацию — автора документа, дату и номер письма.

Пример 1

СОГЛАСОВАНО

Советом директоров

АО «Профиль»

(протокол от _________ N ____)

Пример 2

СОГЛАСОВАНО

письмом Росархива

от _________ N ____

5.21 Виза свидетельствует о согласии или несогласии должностного лица (работника) с содержанием проекта документа. Визой оформляется внутреннее согласование документа. Виза включает должность лица, визирующего документ, подпись, расшифровку подписи (инициалы, фамилию) и дату визирования.

Пример

Руководитель юридического отдела

Подпись

Дата

И.О. Фамилия

При наличии замечаний к документу визу оформляют следующим образом:

Пример

Замечания прилагаются.

Руководитель юридического отдела

Подпись

Дата

И.О. Фамилия

В организациях, применяющих системы электронного документооборота, согласование может проводиться в электронной форме согласно ГОСТ Р ИСО 15489-1.

В документах, подлинники которых хранятся в организации, визы проставляют на последнем листе документа под подписью, на обороте последнего листа подлинника документа или на листе согласования (визирования), прилагаемом к документу.

В исходящих документах визы проставляются на экземплярах документов, помещаемых в дело.

По усмотрению организации может применяться полистное визирование документа и его приложений.

5.22 Подпись включает: наименование должности лица, подписывающего документ, его собственноручную подпись, расшифровку подписи (инициалы, фамилия).

Пример

Генеральный директор

Подпись

И.О. Фамилия

Если документ оформлен не на бланке, в наименование должности включается наименование организации. Допускается центровать наименование должности лица, подписавшего документ, относительно самой длинной строки.

Пример

Генеральный директор

АО «Профиль»

Подпись

И.О. Фамилия

При оформлении документа на бланке должностного лица должность этого лица в подписи не указывается.

Пример

При подписании документа несколькими должностными лицами, занимающими разное положение, их подписи располагаются одна под другой в последовательности, соответствующей иерархии занимаемых должностей.

Пример

Директор института

Подпись

И.О. Фамилия

Главный бухгалтер

Подпись

И.О. Фамилия

При подписании документа несколькими лицами равных должностей их подписи располагаются на одном уровне.

Пример

Заместитель директора по финансовым вопросам

Заместитель директора по административным вопросам

Подпись

И.О. Фамилия

Подпись

И.О. Фамилия

В документах, составленных комиссией, в подписи указывается статус лица в составе комиссии.

Пример

Председатель комиссии

Подпись

И.О. Фамилия

Члены комиссии

Подпись

Подпись

Подпись

И.О. Фамилия

И.О. Фамилия

И.О. Фамилия

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

Пример

И.о. генерального директора

Подпись

И.О. Фамилия

или

Исполняющий обязанности генерального директора

Подпись

И.О. Фамилия

При подписании документа лицом, имеющим право подписи в случае временного отсутствия руководителя, исправления в наименование должности и расшифровку фамилии уже подготовленного и согласованного проекта документа вносятся от руки или с использованием соответствующих штампов. Не допускается ставить косую черту, надпись «за» перед наименованием должности лица в подписи, если документ подписывает иное должностное лицо.

5.23 Отметка об электронной подписи используется при визуализации электронного документа, подписанного электронной подписью, с соблюдением следующих требований:

а) место размещения отметки об электронной подписи должно соответствовать месту размещения собственноручной подписи в аналогичном документе на бумажном носителе;

б) элементы отметки об электронной подписи должны быть видимыми и читаемыми при отображении документа в натуральном размере;

в) элементы отметки об электронной подписи не должны перекрываться или накладываться друг на друга;

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

Отметка об электронной подписи в соответствии с законодательством Российской Федерации включает фразу «Документ подписан электронной подписью», номер сертификата ключа электронной подписи, фамилию, имя, отчество владельца сертификата, срок действия сертификата ключа электронной подписи. Отметка об электронной подписи может включать изображение герба, эмблемы органа власти (организации), товарного знака (знака обслуживания) организации в соответствии с действующим законодательством.

Пример

┌─────────────────────────────────────────────────────────────────────────┐

│ ┌──────────────────────────────────────────┐ │

│ │ ДОКУМЕНТ ПОДПИСАН │ │

│ │ ЭЛЕКТРОННОЙ ПОДПИСЬЮ │ │

│ Наименование│ │ │

│ должности │ Сертификат 1а111ааа000000000011 │ Н.Н. Николаев │

│ │ Владелец Николаев Николай Николаевич │ │

│ │ Действителен с 01.12.2012 по 01.12.2017 │ │

│ └──────────────────────────────────────────┘ │

└─────────────────────────────────────────────────────────────────────────┘

5.24 Печать заверяет подлинность подписи должностного лица на документах, удостоверяющих права лиц, фиксирующих факты, связанные с финансовыми средствами, а также на иных документах, предусматривающих заверение подписи печатью в соответствии с законодательством Российской Федерации.

Документы заверяют печатью организации. Печать проставляется, не захватывая собственноручной подписи лица, подписавшего документ, или в месте, обозначенном «МП» («Место печати»).

5.25 Отметка об исполнителе включает фамилию, имя и отчество исполнителя, номер его телефона. Отметка об исполнителе может дополняться наименованием должности, структурного подразделения и электронным адресом исполнителя.

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

Пример

Забелин Иван Андреевич, Контрольное управление, ведущий специалист

+7(495) 924-45-67, Zabelin@gov.ru

Отметка об исполнителе может оформляться как нижний колонтитул и печататься шрифтом меньшего размера.

5.26 Отметка о заверении копии оформляется для подтверждения соответствия копии документа (выписки из документа) подлиннику документа. Отметка о заверении копии проставляется под реквизитом «подпись» и включает: слово «Верно»; наименование должности лица, заверившего копию; его собственноручную подпись; расшифровку подписи (инициалы, фамилию); дату заверения копии (выписки из документа).

Пример

Верно

Инспектор службы кадров

Дата

Подпись

И.О. Фамилия

Если копия выдается для представления в другую организацию, отметка о заверении копии дополняется надписью о месте хранения документа, с которого была изготовлена копия («Подлинник документа находится в (наименование организации) в деле N … за … год») и заверяется печатью организации.

Для проставления отметки о заверении копии может использоваться штамп.

5.27 Отметка о поступлении документа служит для подтверждения факта поступления документа в организацию и включает дату поступления и входящий регистрационный номер документа. При необходимости отметка о поступлении может дополняться указанием времени поступления в часах и минутах и способа доставки документа.

Отметка о поступлении документа может проставляться с помощью штампа.

5.28 Резолюция содержит указание по исполнению документа. Резолюция оформляется на свободном месте рабочего поля документа, на бланке резолюции или вносится непосредственно в систему электронного документооборота.

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

Пример

Фамилия И.О.

Прошу подготовить предложения к 10.11.2016.

Подпись

Дата

5.29 Отметка о контроле свидетельствует о постановке документа на контроль, проставляется штампом «Контроль» на верхнем поле документа.

5.30 Отметка о направлении документа в дело определяет место хранения документа после завершения работы с ним и включает: слова «В дело», индекс дела по номенклатуре дел, в которое помещается документ на хранение, с указанием года, должности лица, оформившего отметку, подписи, даты.

Пример

В дело N 01-18 за 2016 г.

Зав. отделом корпоративных проектов

Подпись

Дата

Отметка о направлении документа в дело может дополняться краткими сведениями о характере исполнения документа.

Для понимания особенностей записи и проведения документа в форме следует, прежде всего, разделять особенности записи самого объекта (ДокументОбъект) и особенности работы расширения формы. Расширение формы документа действует, если основной реквизит формы имеет тип ДокументОбъект. Оно обеспечивает специфическую функциональность формы при редактировании и записи документа. Задача расширения заключается в реализации удобного для пользователя поведения формы. Но собственно запись и проведение документа выполняет, разумеется, объект, являющийся реквизитом формы. Расширение документа обрабатывает различные команды пользователя, выполняет предварительные проверки и другие сервисные действия, а затем вызывает запись объекта. Запись объекта выполняется так же, как и если бы она вызывалась средствами встроенного языка. То есть с точки зрения объекта запись в форме и запись средствами языка ничем не различаются. Таким образом, расширение обеспечивает некоторую сервисную функциональность, обращаясь в конечном итоге к функциональности объекта. Следует учитывать, что расширение формы действует, только если используются механизмы формы и не действует, если выполняется обращение непосредственно к объекту. Например, если вызвать метод Записать() у объекта ДокументОбъект, то никакие действия расширения формы не будут выполняться. Чтобы они выполнялись нужно вызывать метод ЗаписатьВФорме().

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

Установка даты документа
При открытии формы нового документа, если дата документа не установлена (равна значению типа Дата по умолчанию), то документу устанавливается рабочая дата. Следует заметить, что используется именно рабочая дата, а не текущая (если не установлено использование текущей даты в качестве рабочей). Это дает возможность пользователю настроить рабочую дату так, чтобы новые документы вводились определенной датой. При этом в качестве даты устанавливается начало дня (дата без времени), даже если в качестве рабочей даты выступает текущая дата. Но если свойство АвтоВремя имеет значение НеИспользовать, и рабочая дата равна текущей, то устанавливается текущая дата, вместе со временем. Таким образом, для варианта АвтоВремя = НеИспользовать при открытии берется рабочая дата (если она отличается от текущей) или текущая дата вместе со временем, а для остальных вариантов установка времени откладывается на момент записи документа.

При записи нового документа в форме если свойство АвтоВремя имеет значение отличное от НеИспользовать, и не используется оперативное проведение, и время документа пустое (0:00:00), то выполняется автоматическая установка времени на основании значения свойства АвтоВремя. Действие расширения формы в этом случае аналогично вызову метода УстановитьВремя() с вариантом выбранном в свойстве АвтоВремя и с использованием журналов документа.

Расширение формы так же предоставляет команды для установки времени документа в начало дня, конец дня, перед предыдущим и за последующим документом.

Установка режима записи
При нажатии кнопки «ОК», если для документа в метаданных разрешено проведение, документ записывается в режиме проведения.

Кроме того, расширение формы предоставляет две отдельные команды для записи с проведением и записи с отменой проведения.

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

Установка режима оперативного проведения
При записи документа в форме, расширение формы выполняет установку режима проведения (оперативное или неоперативное проведение). Установка выполняется по следующему алгоритму.

Вначале если свойство ИспользоватьРежимПроведения имеет значение Авто выполняется первичный подбор режима проведения из вариантов Оперативный, Неоперативный и Запрашивать.

Если у пользователя нет права на неоперативное проведение – используется оперативное проведение.

Если документ не проведен – используется оперативное проведение.

Если дата документа равна текущей, а время меньше или равно текущему, то используется режим Запрашивать. Здесь и далее в этой статье сравнение даты имеется в виду без учета времени, а сравнение времени описывается отдельно.

Если дата документа меньше текущей, то используется неоперативное проведение.

Если дата документа равна текущей и время больше текущего – используется оперативное проведение.

Дальнейшие действия системы определяются уже исходя из трех вариантов (Оперативный, Неоперативный и Запрашивать) установленных непосредственно в свойстве ИспользоватьРежимПроведения или на основании описанного алгоритма для варианта Авто.

Если дата документа меньше текущей, используется оперативный режим и у пользователя есть права на неоперативное проведение, то пользователю предлагается использовать неоперативный режим. Если пользователь отказывается, то запись документа отменяется.

Если дата документа меньше текущей, используется оперативный режим и у пользователя нет права на неоперативное проведение, то запись документа отменяется.

Если дата документа меньше текущей и используется режим Запрашивать, то в зависимости от наличия прав на неоперативное проведение или выбирается неоперативный режим (без запроса пользователя), или запись документа отменяется.

Если дата документа больше текущей и используется оперативный режим, то запись документа отменяется. Штатное поведение расширения формы не разрешает проведение документа завтрашней датой, даже если у пользователя есть права на неоперативное проведение. Это объясняется тем, что после появления документов проведенных завтрашней датой текущие остатки регистров используемых проводимыми оперативно документами перестают соответствовать реальным остаткам и механизм оперативного проведения для всех пользователей перестает работать адекватно.

Далее если используется режим Запрашивать, то пользователю выдается диалог с выбором режима проведения.

Полученный таким образом режим проведения (Оперативный или Неоперативный) используется при выполнении записи документа.

Проверка прав
При открытии формы документа, если документ проведен, а у пользователя нет права «Интерактивное изменение проведенных», то расширение переводит форму в режим ТолькоПросмотр.

При записи документа в форме выполняется проверка прав на интерактивное проведение и интерактивную отмену проведения в соответствии с текущим режимом записи.

Считывание движений
При открытии формы документа, если есть табличные поля, связанные с движениями (наборами записей) объекта редактируемого в форме, то эти движения считываются из базы данных и соответственно отображаются в табличных полях.

В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С, а также узнаем, как программно открыть основную форму документа.

Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.

Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».

Создать документ 1С программно

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

Для программного создания документов, я сделал обработку. У этой обработки , я разработал форму и создал команду управляемой формы, которую назвал «Создать документ прихода», поместив её на форму обработки.

Для этой команды, я сделаю обработчики на клиенте и на сервере.

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

В этом коде я обратился к менеджеру документа ПриходТовара (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.

Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.

В принципе, этого вполне достаточно, чтобы наш документ существовал. Но создав его при помощи функции СоздатьДокумент, мы не записали его непосредственно в базу. После выполнения кода выше, ни какого документа в базе не появится!

Записать документ 1С программно

Для того, чтобы документ 1С появился в базе, его необходимо записать. Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.

Все теперь документ появится в базе.

Мы его можем создать, и это будет абсолютно пустой документ, без всяких реквизитов и без заполненной табличной частью.

Для того, чтобы что-то в нем появилось, нам необходимо заполнить этот документ.

Заполнить документ 1С программно

У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.

Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.

Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.

Мы будем в цикле обходить эту таблицу значений, создавая в каждой итерации цикла новую строку табличной части документа и заполняя её данными.

В этом коде я обращаюсь к табличной части документа-объекта посредством точки (строка ДокПриход.СписокТоваров), получаю табличную часть этого объекта, и используя метод Добавить, создаю новую строку табличной части. А потом заполняю реквизиты табличной части документа данными из таблицы значений. Поскольку у нас названия реквизитов табличной части и таблицы значений совпадают, мы можем упростить код заполнения табличной части, используя метод ЗаполнитьЗначенияСвойств.

Всё! Мы можем смело создать документ, который будет заполнен.

Провести документ 1С программно

Все документы, которые мы создавали ранее были не проведены. Если мы хотим, чтобы документ был записан проведенным, то необходимо записывать его немного по-другому. Если раньше мы использовали метод Записать объекта документа без параметров, то теперь необходимо применять параметры этого метода. Данный метод имеет следующий синтаксис.

Записать( , )

Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:

Т.е. мы можем записать документ, провести документ и отменить проведение документа.

Во втором параметр РежимПроведения необходимо указывать системное перечисление РежимПроведениеДокумента, которое может принимать следующие значения:

Т.е. мы можем провести документ как в оперативном режиме, так и в неоперативном. Если этот параметр не указан, то документ проводится в неоперативном режиме.

Изменим запись нашего документа: пусть он проводится в оперативном режиме.

Теперь документ будет сразу проведен при создании.

Изменить документ 1С программно

Часто возникают задачи, когда нужно поменять уже созданный документ, или провести документ, который был только записан. Для этого необходимо из ссылки на документ получить его объект. Для примера, я опять создам «за кадром» новую обработку, на форме которой размещу ссылку на документ, поле с типом Склад и команду. При выполнение этой команды, будет меняться склад документа, а потом этот документ будет проводиться.

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

Мы получили объект документа, используя метод ссылки на документ ПолучитьОбъект. Имейте в виду, что этот метод можно использовать или на сервере, или клиенте в режиме толстого клиента. Переменная, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.

Открыть документ 1С программно

Научимся открывать документ 1С программно. Для этого мы доработаем предыдущую обработку: после изменения документа откроем основную форму этого объекта для просмотра и возможного редактирования. Для открытия формы документа, мы будем использовать метод ОткрытьФорму, в котором будем использовать параметр Ключ, где укажем ссылку на открываемый документ.

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

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

События при записи и проведении документа

Последовательность событий при записи нового документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при проведении документа из формы документа (провести и закрыть)

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при отмене проведения документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Обработчики событий

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью .

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь .
  • РежимЗаписи , тип РежимЗаписиДокумента . В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения , тип РежимПроведенияДокумента . В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

  • Отказ , тип Булево . Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись документа выполнена не будет. Значение по умолчанию: Ложь .

Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

  • Отказ , тип Булево . Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина , то запись произведена не будет. Значение по умолчанию: Ложь .
  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый документ.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

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

  • ТекущийОбъект , тип ДокументОбъект.ИмяДокумента . Записываемый объект.
  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Расширение управляемой формы для документа. Возникает на сервере после записи объекта и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.

  • ПараметрыЗаписи , тип Структура . Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения . Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере .

Документ в 1С 8.3: настройка, проведение и формирование

Документы – это объекты конфигурации и метаданных в системе учета 1С:Предприятие 8.3. Они используются для хранения данных о событиях и операциях, которые происходили на предприятии. Это могут быть, например: документы на отгрузку, платежные поручения, выписки, приказы о приеме на работу и тому подобные. В данной статье будут рассматриваться формы этих документов, как они вводятся, формируются, а так же их параметры и изменения.

1С:Документооборот. Антикризисный комплект для удаленной работы за 10 000 р.

Антикризисный комплект – набор сервисов для организации удаленной работы на 180 дней. Включает:

  • программу «1С:Документооборот КОРП» со встроенными функциями, которые нужны для удаленной работы сотрудников.
  • сервер 1С:Предприятия (x86-64);
  • 1С:Сервер взаимодействия;
  • клиентскую лицензию на 100 подключений.

Структура документа в 1С

Продуманная система документооборота в 1С автоматические каждому новому документу присвоит порядковый номер, время и дату создания документа. Для того чтобы не позволить пользователям запутаться, в системе у каждого документа может быть только свой уникальный номер, без повторений.

Дата документа, то есть время – одна из ключевых характеристик в документах 1С. Благодаря этому можно легко узнать хронологический порядок создания документов и проследить всю цепочку по какому-то процессу.

В 1С:Бухгалтерия используются три вида документов: исходящие, входящие и внутренние. Для каждого документа прилагаются реквизиты, которые пользователь системы должен заполнить подробной информацией. Например, в документе типа «Заказ Поставщику» в обязательном порядке должно быть отражено наименования товара, склада, поставщика, а так же указан контрагент по операции и вид хозяйственной операции в системе.

Всем документам такого типа присущи эти характеристики, что позволяет соблюдать принципы ведения бухгалтерского учета. Каждый документ обязательно содержит свой набор информации. Она может быть однотипна по своей структуре, но различаться по количеству.

В большинстве случаев в документах 1С присутствует табличная часть, для удобства прописи однотипных данных. В качестве такие данных могут выступать, например: перечень отгружаемых или приобретаемых товаров, их количество и цены.

Дополнительные сведения документа

Для удобства работы в 1С пользователь может в любой документ добавлять дополнительные сведения. Для того чтобы сохранить порядок в документации, функциями добавления дополнительных сведений обладает только ограниченный круг пользователей с полными правами в системе. Как добавляются дополнительные сведения рассмотрим на примере документа «Заказ поставщику». Для этого сначала заполним настройки и далее заходим в пункт меню «Администрирование-Общие настройки».

В этом окне выберем вкладку «Дополнительные реквизиты и сведения» и поставим галочку в поле, которое так же называется. Затем переходим в меню «Администрирование-Формы-Дополнительные сведения».

В списке документов, открывшемся перед нами, мы можем задать дополнительные сведения. Например, для документа «Поступление (акты, накладные)» мы решили ввести дополнительные пункты. Находим нужный документ, выделяем его и кликаем на кнопку «Создать».

Откроется таблица, где создаются дополнительные сведения. Заполняем всё как необходимо. Укажем наименование дополнительного сведения и его тип значения. Тип значения для удобства может содержать различные варианты: договор, число, валюта, дата, договор и т. д.

Затем последуем на вкладку «Значения» и жмем на кнопку «Создать». Во всплывающем окне заполняем нужные пункты сведений.

Дополнительные сведения, которые создали, будут отображены в списке.

Жмем «Записать и закрыть». С этого момента в документах типа «Поступление (акты, накладные)» появляется возможность присоединить менеджера по закупкам, который занимается этим заказ.

Для проверки, что все отлично работает перейдем в «Покупки-Покупки-Поступление (акты, накладные)». Мы увидим список документов поступления. В верху списка находим значок «Дополнительные сведения», который появится после того, как создали и настроили дополнительные сведения.

Проведение документов в 1С

Важной особенностью документа является то, что возможна его запись и проведение. Если документ просто записывается, то он никак не влияет на учет других данных. Чтобы каждый документ влиял на общий учет предприятия и вносил изменения в общую картину, он имеет свойство проведения.

В каждом документе в верхней части есть кнопки типа «Провести и закрыть» или «Записать и закрыть». Например, документ «Заказ Поставщику» должен вносить изменения в состояние расчетов, текущих остатков на складе готовой продукции и заказов, так как у него есть свойство проведения. Для того, чтобы все работало как надо необходимо, чтобы у документа был статус «проведен».

Формы документов в 1С

Чтобы пользователю было удобно работать с системой, легко просматривать и изменять данные в документах, программа имеет несколько форм для одного и того же документа. 1С умеет генерировать все необходимые для документа формы. Разработчикам предоставляется возможность конфигурировать самостоятельно формы для документов, которые им необходимы. Увидеть все формы документа можно в конфигураторе системы. Для этого нужно зайти в него и в окне конфигурации выбрать интересующий объект. В раскрытой ветке документа будут отображены все формы документа.

Если необходимо просмотреть весь список документов или только определенный тип в 1С существует «Форма списка». В этих списках можно легко отобрать нужные документы, быстро изменить их или произвести поиск данных.

Макеты документов в 1С

Все документы в 1С сопровождаются макетами, которые будут содержать информацию внесенную в документ. Эти макеты используются для создания формы документа пригодной к печати

Макеты можно использовать не только для печати, но и чтобы просмотреть дополнительную информацию, которая имеет отношение к выбранному типу документа.

В них подробно отражена вся хозяйственная деятельность предприятия, связанная с налоговым учетом, покупками, продажами и другими операциями. Все документы в совокупности представляют собой единый учет компании.

Как перепровести документы в 1С Бухгалтерия 8.3?

Подробная инструкция «Как перепровести документы в 1С Бухгалтерия 8.3?».

Содержание:

В программе “1С:Бухгалтерия предприятия” сохранить документы можно несколькими способами. Все они находятся в карточке документа, это кнопки “Записать”, “Провести” и “Провести и закрыть”:

Рассмотрим, чем они отличаются.

  • Записать — документ сохраняется в базе, но не делает проводок.
  • Провести — документ будет сохранен и проведен, то есть будут сформированы проводки. Это влияет на деятельность организации.
  • Провести и закрыть — здесь работают те же правила, что и для кнопки “Провести”, но карточка документа при этом закроется.

Для правильного учета документы должны проводиться в том порядке, в котором они создавались. Но на практике часто этот порядок нарушается. Бывает, документы забывают провести, проводят не по порядку, либо проводят по несколько раз. Поэтому бывает необходимо выполнить групповое проведение документов для восстановления порядка. В инструкции рассмотрим, какие для этого есть способы.

1. Настройка проведения документов

Вначале разберем, какие есть настройки проведения документов. Откроем меню “Администрирование”, далее в подразделе “Настройки программы” выберем пункт “Проведение документов”:

Здесь есть настройки, которые влияют на проведение.

1. Когда выполнять расчеты. Можно выбрать вариант “При закрытии месяца” — тогда документы будут сохраняться быстрее, а все расчеты будут сделаны в конце месяца. При выборе другого варианта расчеты будут выполняться при каждом проведении документов.

2. Проверять проведение документов при формировании отчетов — при установленном флажке для некоторых отчетов перед формированием могут перепроводится документы. Например, для отчета “Оборотно-сальдовая ведомость”.

2. Как перепровести все документы в 1С Бухгалтерия 8.3

2.1 При закрытии месяца

Программа при закрытии месяца сама предлагает провести документы, если порядок нарушен. К закрытию месяца можно перейти из раздела “Операции”:

Нажмем на ссылку “Перепроведение документов”.

Если перепроведение требуется, то будет показано, сколько документов было изменено. Затем надо выбрать, как действовать: перепровести несколько месяцев, только текущий месяц или ничего не делать. После выбора способа начнется процесс:

В результате окно примет вид:

2.2 Без закрытия месяца

Документы можно перепровести и без закрытия месяца. Откроем меню “Операции”, далее в подразделе “Сервис” выберем пункт “Групповое перепроведение документов”:

Указываем период, организацию и нажимаем “Выполнить”. В результате запустится перепроведение всех документов. Если организацию не указать, то процесс будет выполнен для всех организаций. При установке флажка “Останавливать выполнение при ошибке” программа прекратит перепроведение, если будет найдена ошибка в каком-либо документе.

3. Как перепровести документы определенного типа

Бывают ситуации, когда нам нужно провести не все документы, а только некоторые. Для этого зайдем в меню “Все функции”:

Затем в разделе “Стандартные” выберем пункт “Проведение документов”:

Рассмотрим, как тут работать.

1. Сначала нажимаем на ссылку “Период”:

Вводим период и нажимаем “Выбрать”:

2. Далее нужно выбрать один или несколько документов для перепроведения в разделе “Доступные документы”. Например, найдем документ “Списание с расчетного счета”. Переносим его в раздел “Выбранные документы” по кнопке “Добавить”:

3. Определим, какие дополнительные флажки нам нужны. Можно изменять уже проведенные документы или провести непроведенные. Установим оба флажка:

Нажимаем “Провести”. Выйдет сообщение с результатами:

Этот способ подойдет, если нам нужно провести несколько документов разных типов. Если нужно провести документы одного типа, то есть более простой способ, он описан ниже.

4. Как провести документы из списка

Откроем список документов “Реализация (акты, накладные”). Здесь мы можем быстро перепровести документы за два шага:

1. Выделяем документы, которые хотим провести:

a) можно выделить все документы по комбинации клавиш Ctrl + A;

b) можно выделить несколько документов подряд. Встаем курсором на документ, зажимаем клавишу Shift и нажимаем на любой документ выше или ниже. В результате будут выделены документы:

c) можно выделить документы выборочно. Для этого встаем курсором на документ, зажимаем клавишу Ctrl и не отпуская клавишу встаем курсором поочередно на другие нужные документы в списке:

2. После выделения документов нажимаем на любом выделенном документе правой кнопкой мыши и выбираем пункт “Провести”:

В правом нижнем углу начнется перепроведение выбранных документов:

Этим способом можно перепровести любые документы в 1С Бухгалтерия 8.3.

Вы можете работать в 1С Бухгалтерия в облаке — 1С ФРЕШ. Попробуйте 14 дней и оцените сами.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

/// Как выбрать и упорядочить документы за период
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере()
 
    // найдём все документы поступления еды за 2014 год
    // упорядочив их по возрастанию даты
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Ссылка
        |ИЗ
        |   Документ.ПоступлениеЕды КАК ПоступлениеЕды
        |ГДЕ
        |   Дата МЕЖДУ &НачДата И &КонДата
        |УПОРЯДОЧИТЬ ПО
        |   Дата ВОЗР";
 
    Запрос.УстановитьПараметр("НачДата", '20140101');
    Запрос.УстановитьПараметр("КонДата", '20141231');
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДокументов = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДокументов.Следующий() Цикл
        Сообщить(ВыборкаДокументов.Ссылка);
    КонецЦикла;
 
КонецПроцедуры
 
/// Как найти документ по номеру в 1с 8.3, 8.2
 
&НаСервере
Процедура КакНайтиДокументПоНомеруНаСервере()
 
    // найдём поступление еды № ВМБП-000005 за 2014 год
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Ссылка
        |ИЗ
        |   Документ.ПоступлениеЕды КАК ПоступлениеЕды
        |ГДЕ
        |   Дата МЕЖДУ &НачДата И &КонДата И
        |   Номер = &ВыбНомер";
 
    Запрос.УстановитьПараметр("НачДата", '20140101');
    Запрос.УстановитьПараметр("КонДата", '20141231');
    Запрос.УстановитьПараметр("ВыбНомер", "ВМБП-000005");
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДокументов = РезультатЗапроса.Выбрать();
 
    Если ВыборкаДокументов.Следующий() Тогда
        Сообщить(ВыборкаДокументов.Ссылка);        
    Иначе
        Сообщить("Документ с таким номером не существует!");
    КонецЕсли;
 
КонецПроцедуры
 
/// Как найти документы по реквизиту в 1с 8.3, 8.2
 
&НаСервере
Процедура КакНайтиДокументПоРеквизитуНаСервере()
 
    // найдём все документы поступления еды
    // от поставщика ООО "Поле"
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Ссылка,
        |   Поставщик
        |ИЗ
        |   Документ.ПоступлениеЕды КАК ПоступлениеЕды
        |ГДЕ
        |   Поставщик = &ВыбПоставщик
        |УПОРЯДОЧИТЬ ПО
        |   Дата ВОЗР";
 
    Запрос.УстановитьПараметр(
        "ВыбПоставщик",
        Справочники.Поставщики.НайтиПоНаименованию("ООО ""Поле""")
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДокументов = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДокументов.Следующий() Цикл        
        Сообщить(
            Строка(ВыборкаДокументов.Ссылка) + " " + 
            ВыборкаДокументов.Поставщик
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как выбрать все документы, которые не проведены и
/// не помечены на удаление в 1с 8.3, 8.2
 
&НаСервере
Процедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере()
 
    // найдём не проведенные и не помеченные на удаление
    // документы поступления еды
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Ссылка,
        |   Проведен,
        |   ПометкаУдаления        
        |ИЗ
        |   Документ.ПоступлениеЕды КАК ПоступлениеЕды
        |ГДЕ
        |   Проведен = ЛОЖЬ И
        |   ПометкаУдаления = ЛОЖЬ
        |УПОРЯДОЧИТЬ ПО
        |   Дата ВОЗР";
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДокументов = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДокументов.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДокументов.Ссылка) + " " + 
            ВыборкаДокументов.Проведен + " " +
            ВыборкаДокументов.ПометкаУдаления
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как найти подчиненные документы в 1с 8.3, 8.2
 
&НаСервере
Процедура КакНайтиПодчиненныеДокументыНаСервере()
 
    // Рассмотрим работу с подчиненными (связанными) документами
    // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный.
 
    // Документ СчетФактураПолученный вводится на основании документа
    // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной
    // по отношению к поступлению.
 
    // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном
    // документе через табличную часть ДокументыОснования.
    // Почему через табличную часть? Потому что один документ может зависеть
    // (быть подчиненным) сразу от нескольких родителей (оснований).
 
    // Пример №1.
    // У нас есть ссылка на поступление товаров и услуг. Требуется найти
    // счёт-фактуры, которые были введены на основании этого поступления.
    // В дереве подчиненности эти фактуры будут подчинены (зависимы) от
    // документа поступления.
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Ссылка
        |ИЗ
        |    Документ.СчетФактураПолученный.ДокументыОснования КАК
        |    СчетФактураПолученныйДокументыОснования
        |ГДЕ
        |    СчетФактураПолученныйДокументыОснования.ДокументОснование =
        |    &ВыбПоступление";
 
    Запрос.УстановитьПараметр("ВыбПоступление", 
        Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("0000-000004", '20160101')
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка;
        Сообщить(ПодчиненнаяФактура);
    КонецЦикла;
 
    // Пример №2.
    // У нас есть ссылка на счет-фактуру полученную. Требуется найти,
    // документы, на основании которых она была введена (родителей).
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ДокументОснование
        |ИЗ
        |    Документ.СчетФактураПолученный.ДокументыОснования КАК
        |    СчетФактураПолученныйДокументыОснования
        |ГДЕ
        |    СчетФактураПолученныйДокументыОснования.Ссылка =
        |    &ВыбСчетФактура";
 
    Запрос.УстановитьПараметр("ВыбСчетФактура",
        Документы.СчетФактураПолученный.НайтиПоНомеру("0000-000007", '20160101')
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование;
        Сообщить(РодительФактуры);
    КонецЦикла;
 
КонецПроцедуры
 
///  Как перебрать (перечислить) строки табличной части документа в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере()
 
    // У документа ПоступлениеЕды есть табличная часть 'Еда'.
    // У этой табличной части есть колонки: Номенклатура, Количество,
    // Сумма.
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000002", '20141231');    
 
    // перечислим строки табличной части этого документа
 
    // при помощи объектной техники
 
    Для Каждого Строка Из ПоступлениеСсылка.Еда Цикл
        Сообщить(
            Строка.Номенклатура.Наименование + " " +
            Строка.Количество + " шт. " + 
            Строка.Сумма + " руб."
        );
    КонецЦикла;
 
    // при помощи запроса    
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ПоступлениеЕдыЕда.Номенклатура,
        |   ПоступлениеЕдыЕда.Количество,
        |   ПоступлениеЕдыЕда.Сумма
        |ИЗ
        |   Документ.ПоступлениеЕды.Еда КАК ПоступлениеЕдыЕда
        |ГДЕ
        |   ПоступлениеЕдыЕда.Ссылка = &ВыбПоступление";
 
    Запрос.УстановитьПараметр("ВыбПоступление", ПоступлениеСсылка);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
 
        Сообщить(
            ВыборкаДетальныеЗаписи.Номенклатура.Наименование + " " +
            ВыборкаДетальныеЗаписи.Количество + " шт. " + 
            ВыборкаДетальныеЗаписи.Сумма + " руб."
        );
 
    КонецЦикла;
 
КонецПроцедуры
 
&НаСервере
Процедура СозданиеИИзменениеДокументовНаСервере()
 
    /// Как создать новый документ в 1с 8.3, 8.2
 
    // создадим новый документ поступление еды
    Поступление = Документы.ПоступлениеЕды.СоздатьДокумент();
    // заполним шапку документа
    Поступление.Дата = ТекущаяДата();
    Поступление.Поставщик = 
        Справочники.Поставщики.НайтиПоНаименованию(
            "ООО ""Кузбас"""
        );
    Поступление.Склад =
        Справочники.Склады.НайтиПоНаименованию(
            "Основной"
        );
    // заполним табличную часть Еда
    НоваяСтрока = Поступление.Еда.Добавить();
    НоваяСтрока.Номенклатура =
        Справочники.Еда.НайтиПоНаименованию(
            "Банан"
        );
    НоваяСтрока.Количество = 10;
    НоваяСтрока.Сумма = 550;
 
    /// Как записать документ в 1с 8.3, 8.2
 
    Поступление.Записать(РежимЗаписиДокумента.Запись);
 
    /// Как провести документ в 1с 8.3, 8.2
 
    Поступление.Записать(РежимЗаписиДокумента.Проведение);
 
    /// Как отменить проведение документа в 1с 8.3, 8.2
 
    Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения);
 
    /// Как внести изменения в документ по ссылке в 1с 8.3, 8.2
 
    // зачастую у нас есть только ссылка на документ
    // и чтобы по ней получить сам объект документа
    // для изменения нужно вызывать метод ПолучитьОбъект
 
    // найдём документ продажа еды под номером ВМБП-000001
    // для лаконичности примера воспользуемся не запросом,
    // а объектной техникой
 
    СсылкаНаПродажу = Документы.ПродажаЕды.НайтиПоНомеру(
        "ВМБП-000001",
        '20141231' // поиск среди документов 2014 года
     );
    // нам вернули не сам документ, а ссылку (указатель) на него
 
    // проверим - нашёлся ли вообще документ    
    Если СсылкаНаПродажу.Пустая() Тогда
        Сообщить("Документ не найден.");
    Иначе
        // получим сам документ по ссылке
        Продажа = СсылкаНаПродажу.ПолучитьОбъект();
        // вот его уже можно изменять и записывать
        Продажа.Клиент = 
            Справочники.Клиенты.НайтиПоНаименованию(
                "Пётр"
            );
        Продажа.Записать();
    КонецЕсли;
 
    /// Как получить пустую ссылку типа документ в 1с 8.3, 8.2
 
    ПустаяСсылка = Документы.ПродажаЕды.ПустаяСсылка();
    Если ПустаяСсылка.Пустая() Тогда
        Сообщить("Ссылка действительно пустая.");
    КонецЕсли;
 
    /// Как скопировать существующий документ в 1с 8.3, 8.2
 
    // скопируем найденный документ на продажу и запишем
    // как новый документ от сегодняшнего числа
 
    КопияПродажи = СсылкаНаПродажу.Скопировать();
    КопияПродажи.Дата = ТекущаяДата();
    КопияПродажи.Комментарий = "Копия документа " + 
        Строка(СсылкаНаПродажу);
    // запишем и проведём документ
    КопияПродажи.Записать(РежимЗаписиДокумента.Проведение);
 
    /// Как заблокировать документ перед изменениями 
    /// в 1с 8.3, 8.2
 
    // выполним блокировку документа
    // от изменения другими режимами или пользователями
 
    Продажа = СсылкаНаПродажу.ПолучитьОбъект();
    Если Не Продажа.Заблокирован() Тогда
        Продажа.Заблокировать();
        // тут идёт какой-то долгий алгоритм
        // в результате которого мы меняем
        // заблокированный элемент
        Продажа.Комментарий = "Документ изменён.";
        Продажа.Записать();
        // и только потом освобождаем его
        // для других режимов и пользователей
        Продажа.Разблокировать();
    КонецЕсли;
 
    /// Как создать новый документ на основании другого объекта
    /// в 1с 8.3, 8.2
 
    // создадим документ продажа на основании поступления
    // скопировав из поступления табличную часть
 
    // в модуле документа ПродажаЕды я определил процедуру
    // ОбработкаЗаполнения, которая обрабатывает ситуации
    // когда мы заполняем один элемент на основании
    // данных другого (см. в базе для скачивания)
 
    ПродажаНаОсновании = Документы.ПродажаЕды.СоздатьДокумент();
    ПродажаНаОсновании.Дата = ТекущаяДата();
    ПродажаНаОсновании.Комментарий =
        "Документ введён на основании " + Строка(Поступление.Ссылка);
    ПродажаНаОсновании.Заполнить(Поступление.Ссылка);
    ПродажаНаОсновании.Записать(РежимЗаписиДокумента.Проведение);
 
    /// Как пометить на удаление документ в 1с 8.3, 8.2
 
    ПродажаНаОсновании.УстановитьПометкуУдаления(Истина);
    // метод Записать вызывать не нужно
 
КонецПроцедуры
 
/// Как найти и изменить программно движения документа
/// по регистрам в 1с 8.3, 8.2
 
&НаСервере
Процедура КакНайтиИИзменитьДвиженияДокументаНаСервере()
 
    // предположим у нас есть ссылка на проведенный
    // документ поступления еды № ВМБП-000002
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000002", '20141231');
 
    // мы знаем, что этот документ делает записи по
    // двум регистрам:
    // - регистр накопления "ЗапасЕды"
    // - регистр бухгалтерии "Хозрасчетный"
 
    // наша задача: найти записи по регистру "ЗапасЕды"
    // изменить их (например, удвоим количество)
    // и записать вместо старых
 
    // используем объектную технику получения движений,
    // ведь мы будем их изменять
 
    Поступление = ПоступлениеСсылка.ПолучитьОбъект();
 
    // получим набор записей этого документа в регистр ЗапасыЕды
    НаборЗаписей = Поступление.Движения.ЗапасыЕды;
 
    // прочитаем записи из базы данных
    НаборЗаписей.Прочитать();
 
    Для Каждого Запись Из НаборЗаписей Цикл
 
        // выведем старые значения
        Сообщить(
            Строка(Запись.ВидДвижения) + " " +
            Запись.Еда + " " + Запись.Количество
        );
 
        // изменим запись, удвоив количество
        Запись.Количество = Запись.Количество * 2;
 
    КонецЦикла;
 
    // добавим новую запись
    НоваяЗапись = НаборЗаписей.ДобавитьПриход();    
    НоваяЗапись.Склад = 
        Справочники.Склады.НайтиПоНаименованию("Основной");
    НоваяЗапись.Еда = 
        Справочники.Еда.НайтиПоНаименованию("Банан");
    НоваяЗапись.Количество = 3;
    НоваяЗапись.Период = ТекущаяДата();
 
    // разом запишем набор записей
    НаборЗаписей.Записать(
        Истина // удалим старые движения и запишем вместо них новые
    );
 
    // теперь движения документа № ВМБП-000002 отличаются от тех,
    // что были записаны документом при проведении
    // чтобы вернуть их к начальному виду - нужно
    // перепровести документ
 
КонецПроцедуры
 
/// Как прочитать движения документа по регистрам запросом
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПрочитатьДвиженияДокументаЗапросомНаСервере()
 
    // этот приём используется, если не требуется изменять
    // найденные записи    
 
    // предположим у нас есть ссылка на проведенный
    // документ поступления еды № ВМБП-000002
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000002", '20141231');
 
    // мы знаем, что этот документ делает записи по
    // двум регистрам:
    // - регистр накопления "ЗапасЕды"
    // - регистр бухгалтерии "Хозрасчетный"
 
    // прочитаем записи по регистру "ЗапасЕды" запросом
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЗапасыЕды.НомерСтроки,
        |   ЗапасыЕды.ВидДвижения,
        |   ЗапасыЕды.Еда,
        |   ЗапасыЕды.Количество
        |ИЗ
        |   РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды
        |ГДЕ
        |   ЗапасыЕды.Регистратор = &ВыбРегистратор
        |
        |УПОРЯДОЧИТЬ ПО
        |   ЗапасыЕды.НомерСтроки";
 
    Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            "#" + ВыборкаДетальныеЗаписи.НомерСтроки +
            " " + ВыборкаДетальныеЗаписи.ВидДвижения +
            " " + ВыборкаДетальныеЗаписи.Еда + 
            " " + ВыборкаДетальныеЗаписи.Количество
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как изменить проведенный документ, не меняя его
/// движений (проводок) в 1с 8.3, 8.2
 
&НаСервере
Процедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере()
 
    // бывает так, что есть проведенный документ
    // в уже закрытом периоде и нужно изменить
    // некоторое поле документа, но так чтобы
    // не поменялись проводки документа
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000005", '20141231');
 
    // Изменим количество в табличной части этого документа
    // на 1, но чтобы проводки (движения) остались прежними
 
    Поступление = ПоступлениеСсылка.ПолучитьОбъект();
 
    Для Каждого Строка Из Поступление.Еда Цикл
        Строка.Количество = 1;
    КонецЦикла;
 
    // если сейчас просто записать документ
    // изменятся его проводки, ведь он уже проведён
 
    // но если установить флаг Загрузка
    Поступление.ОбменДанными.Загрузка = Истина;    
 
    // то можно записать проведенный документ
    // без повторного проведения
 
    Поступление.Записать();
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПолучитьПродажуПоНомеру(Номер, Интервал)
 
    Возврат Документы.ПродажаЕды.НайтиПоНомеру(
        Номер, Интервал
    );
 
КонецФункции
 
/// Как открыть форму существующего документа 
/// по ссылке в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуСуществующегоДокумента(Команда)
 
    СсылкаНаДокумент = ПолучитьПродажуПоНомеру("ВМБП-000006", '20141231');
 
    ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент);
 
    ОткрытьФорму(
        "Документ.ПродажаЕды.ФормаОбъекта", // имя формы
        ПараметрыФормы // параметры для формы
    );
 
КонецПроцедуры
 
/// Как открыть форму выбора документа и
/// отследить её закрытие в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуВыбораДокумента(Команда)
 
    ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораДокумента",
        ЭтотОбъект);
 
    ОткрытьФорму(
        "Документ.ПродажаЕды.ФормаВыбора",,,,,,ОповещениеОЗакрытии        
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВыбораДокумента(Результат, Параметры) Экспорт
 
    Если Результат <> Неопределено Тогда
        Сообщить("Был выбран документ " + Результат);
    КонецЕсли;
 
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция НайтиПоставщикаПоИмени(Имя)
 
    Возврат Справочники.Поставщики.НайтиПоНаименованию(
        Имя
    );
 
КонецФункции
 
/// Как открыть форму списка (журнал) документов и
/// с отбором по реквизиту в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуСпискаДокументовСОтбором(Команда)
 
    // откроем список поступлений, оставив
    // только те, что от поставщика ООО "Поле"
 
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Поставщик",
        НайтиПоставщикаПоИмени("ООО ""Поле"""));
 
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
 
    ОткрытьФорму(
        "Документ.ПоступлениеЕды.ФормаСписка",
        ПараметрыФормы
    );
 
КонецПроцедуры
 
/// Как открыть форму только что созданного, но ещё
/// не записанного документа в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда)
 
    // получаем форму нового документа
    ФормаНовогоДокумента = ПолучитьФорму(
        "Документ.ПоступлениеЕды.ФормаОбъекта",,, Истина); 
 
    // делаем копию её данных (так как напрямую их менять
    // нельзя)
    КопияДанныхФормы = ФормаНовогоДокумента.Объект;
 
    // заполняем эти данные на сервере
    ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы);    
 
    // копируем заполненные данные в исходную форму
    КопироватьДанныеФормы(КопияДанныхФормы,
        ФормаНовогоДокумента.Объект);
 
    // показываем форму нового заполненного
    // документа пользователю
    ФормаНовогоДокумента.Открыть();
 
КонецПроцедуры
 
&НаСервере
Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы)
 
    // преобразуем данные формы в документ
    Поступление = ДанныеФормыВЗначение(ДанныеФормы,
        Тип("ДокументОбъект.ПоступлениеЕды"));
 
    // заполним только табличную часть
    НоваяСтрока = Поступление.Еда.Добавить();
    НоваяСтрока.Номенклатура =
        Справочники.Еда.НайтиПоНаименованию(
            "Банан"
        );
    НоваяСтрока.Количество = 10;
    НоваяСтрока.Сумма = 550;
 
    // преобразуем документа обратно в данные формы
    ЗначениеВДанныеФормы(Поступление, ДанныеФормы);
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Ага, понял. Попробую — отпишусь

Добавлено через 13 часов 30 минут
смотрите, что получилось

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
Если ИзвлечениеИзПроизводства.Пустая() тогда
        ДокументИзвлечение = Документы.ИзвлечениеТоваровИзПроизводства.СоздатьДокумент();
    Иначе
        ДокументИзвлечение = ИзвлечениеИзПроизводства.Ссылка.ПолучитьОбъект();
        ДокументИзвлечение.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    КонецЕсли;
    
    ДокументИзвлечение.Заполнить(ЗаказНаряд);
    
    ДокументИзвлечение.Дата = Дата - 1;
    ДокументИзвлечение.УстановитьНовыйНомер();
    
    ДокументИзвлечение.СкладКомпании = СкладКомпании;
    ДокументИзвлечение.Цех = ЗаказНаряд.Цех;
    
    //Александр Савенко. заполняю значения Отпустил, Получил
    
    ЗаписьВРегистр = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    СвойствоПроверен = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Проверен").Ссылка;
    ЗаписьВРегистр.Отбор.Объект.Установить(ДокументИзвлечение);
    ЗаписьВРегистр.Отбор.Свойство.Установить(СвойствоПроверен);
    ЗаписьВРегистр.Прочитать();
    ЗаписьВРегистр.Очистить();
    НоваяЗапись = ЗаписьВРегистр.Добавить();
    НоваяЗапись.Объект = ДокументИзвлечение;
    НоваяЗапись.Свойство = СвойствоПроверен;
    НоваяЗапись.Отпустил = Справочники.Сотрудники.НайтиПоКоду("ПТ00001152");
    НоваяЗапись.Получил = Справочники.Сотрудники.НайтиПоКоду("ПТ00000090");

при этом ругается на
{ВнешняяОбработка.ВнутренняяРеализацияТоваров.Форм а.БыстраяПродажа.Форма(710)}: Поле объекта не обнаружено (Отпустил)
НоваяЗапись.Отпустил = Справочники.Сотрудники.НайтиПоКоду(«ПТ00001152»);

1C
1
НоваяЗапись.Отпустил  //действильно нет такого значения

Добавлено через 7 минут
при этом

1C
1
2
НоваяЗапись.Объект = ДокументИзвлечение;    //  Неопределено
//хотя ДокументИзвлечение вычисляется, как ДокументОбъект.ИзвлечениеТоваровИзПроизводства

Добавлено через 2 часа 4 минуты
разобрался, в чем причина. изначально документ нужно было записать, а затем впихивать в него какие то реквизиты. а я пытался впихнуть в неизвестно что.

В статье приводятся практические примеры работы с документами в языке 1С. Рассматриваются приемы работы с объектной моделью – создание, редактирование, удаление документов, а также типовые запросы для выборки документов по различным условиям. Для удобства пользуйтесь оглавлением.

Содержание

Немного о документах

Документы – краеугольный камень в построении большинства учетных систем средствами платформы 1С Предприятие. Они предназначены преимущественно для отражения совершенных хозяйственных операций, а также для последующего просмотра и редактирования.

Виды документов, которые создаются в конфигураторе на этапе проектирования прикладного решения, в основном соответствуют своим бумажным аналогам – приходным накладным, документам продажи или актам об оказании услуг, и др. Для каждой отрасли и вида учета набор таких документов и их реквизитный состав может отличаться.

Помимо записи о произошедшей хозяйственной операции, документы используются для фиксации изменений в учетных регистрах (т.н. проведение), а также позволяют сформировать печатные формы. Вообще, спектр применения документов в платформе 1С очень обширный, и позволяет реализовывать самые различные механизмы – биллинг, учет коммунальных платежей, сложные расчеты, учет ценных бумаг и активов, и многое другое.

Документы описываются в системе 1С двумя стандартными реквизитами – Номер и Дата. Использование номера не является обязательным – можно указать длину номера 0, и в этом случае платформа отключит механизм нумерации документов. В этом случае разработчик может сам предусмотреть реквизиты для формирования представления документа и для проверки уникальности. Но на практике чаще всего номер не отключается.

Как выбрать и отсортировать документы за период в 1С 8

        // Получим список всех заказов за 2021 год и отсортируем их по возрастанию даты
	Запрос = Новый Запрос("ВЫБРАТЬ
	|	Заказ.Ссылка КАК Ссылка,
	|	ПРЕДСТАВЛЕНИЕ(Заказ.Ссылка) КАК ПредставлениеДокумента
	|ИЗ
	|	Документ.Заказ КАК Заказ
	|ГДЕ
	|	Заказ.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
	|
	|УПОРЯДОЧИТЬ ПО
	|	Заказ.Дата");
	
	Запрос.УстановитьПараметр("ДатаНачала", '20210101');
	// Указать дату без уточнения времени недостаточно,
	// т.к. тогда не попадут документы за последний день периода
	Запрос.УстановитьПараметр("ДатаОкончания", '20211231235959');
	
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Сообщить("Нет документов за указанный период");
		Возврат;
	КонецЕсли;
	
	Выборка = РезультатЗапроса.Выбрать();
	Пока Выборка.Следующий() Цикл
		// Для вывода информации на экран достаточно использовать представление.
		Сообщить(Выборка.ПредставлениеДокумента);
	КонецЦикла;

Как найти документ по номеру в 1с 8.3

Следует учитывать, что у документа должен быть не нулевой код. В случае указания интервала больше года, в результат запроса могут попасть несколько документов с одинаковым номером за разные периоды. Следует либо указывать интервалы в пределах одного календарного года, либо задать документу сплошную непериодическую нумерацию.

// найдём заказ № УТ-000001 за 2021 год

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	Заказ.Ссылка КАК Ссылка,
|	ПРЕДСТАВЛЕНИЕ(Заказ.Ссылка) КАК ПредставлениеДокумента
|ИЗ
|   Документ.Заказ КАК Заказ
|ГДЕ
|   Дата МЕЖДУ &ДатаНачала И &ДатаОкончания И
|   Номер = &НомерДляПоиска";

Запрос.УстановитьПараметр("ДатаНачала", '20210101');
Запрос.УстановитьПараметр("ДатаОкончания", '20211231235959');
Запрос.УстановитьПараметр("НомерДляПоиска", "УТ-000001");

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДокументов = РезультатЗапроса.Выбрать();

Если ВыборкаДокументов.Следующий() Тогда
	Сообщить(ВыборкаДокументов.ПредставлениеДокумента);        
Иначе
	Сообщить("Документ с таким номером отсутствует!");
КонецЕсли;

Как найти документы по реквизиту в 1с 8

// Найдем все заказы от покупателя "Частное лицо"
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	Заказ.Ссылка КАК Ссылка,
|	ПРЕДСТАВЛЕНИЕ(Заказ.Ссылка) КАК ПредставлениеДокумента
|ИЗ
|   Документ.Заказ КАК Заказ
|ГДЕ
|   Покупатель = &Покупатель";

// В примере Частное лицо - предопределенный элемент справочника Контрагеты
Запрос.УстановитьПараметр("Покупатель", Справочники.Контрагенты.ЧастноеЛицо);

РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
	Сообщить("Нет документов за указанный период");
	Возврат;
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Выборка.ПредставлениеДокумента);
КонецЦикла;

Как выбрать все не проведенные документы, которые не помечены на удаление в 1с 8

Начинающие разработчики часто ошибочно пишут, используя передачу параметра с типом Булево.

|ГДЕ
|   Заказ.Проведен = &Проведен"

Запрос.УстановитьПараметр("Проведен", Истина);

Этот код будет корректным с точки зрения синтаксиса и платформы, но это признак недостаточного знания языка запросов и умения составлять текст запросов. В данном случае правильнее просто написать

|ГДЕ
|   Не Заказ.Проведен"
// найдём не проведенные и не помеченные на удаление документы заказов

Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	Заказ.Ссылка КАК Ссылка,
|	ПРЕДСТАВЛЕНИЕ(Заказ.Ссылка) КАК ПредставлениеДокумента
|ИЗ
|	Документ.Заказ КАК Заказ
|ГДЕ
|	НЕ Заказ.Проведен
|	И НЕ Заказ.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
|	Заказ.Дата";

РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
	Сообщить("Нет документов за указанный период");
	Возврат;
КонецЕсли;

Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить(Выборка.ПредставлениеДокумента);
КонецЦикла;

Как обойти (перебрать) все строки табличной части документа в 1С 8

// Переберем все строки документа Заказ с номером УТ-000001
// У документа заказ есть табличная часть Спецификация с колонками
// Товар, Количество, Сумма
НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001", '20210101');

Если ЗначениеЗаполнено(НайденныйЗаказ) Тогда
	Для Каждого СтрокаСпецификации Из НайденныйЗаказ.Спецификация Цикл
		Сообщить(СтрШаблон("Товар % 1, количество %2 шт, сумма %3 руб.",
		СтрокаСпецификации.Товар,
		СтрокаСпецификации.Количество,
		СтрокаСпецификации.Сумма));
	КонецЦикла;
КонецЕсли;

Создание и редактирование документов в языке 1С 8

Как создать новый документ в 1С программно

// Создадим новый документ Заказ средствами языка 1С

Заказ = Документы.Заказ.СоздатьДокумент();
Заказ.Дата = ТекущаяДата();

//Далее заполним реквизиты шапки
//Здесь - вместо пустой ссылки можно передать реквизит формы, переменную и т.д.
ВыбранныйПокупатель = Справочники.Контрагенты.ПустаяСсылка();
Заказ.Покупатель = ВыбранныйПокупатель;

//Далее - заполняется табличная часть.
СтрокаТЧ = Заказ.Спецификация.Добавить();
СтрокаТЧ.Товар = Товар;
СтрокаТЧ.Количество = 10;
СтрокаТЧ.Сумма = 100;

Как записать документ в 1С 8

У всех документов в языке 1С есть метод Записать, у которого есть два необязательных параметра: РежимЗаписи и РежимПроведения. РежимПроведения имеет смысл только если мы явным образом вызываем проведение документа.

Вызов метода без параметров равносилен вызову с режимом “Запись”

	Заказ.Записать();
	Заказ.Записать(РежимЗаписиДокумента.Запись);

Как провести документ средствами языка 1С 8

Следует иметь в виду, что если у документа свойство Проведение установлено в значение “Запретить”, попытка записать документ с режимом записи “Проведение” приведет к ошибке.

	Заказ.Записать(РежимЗаписиДокумента.Проведение);

Как отменить проведение документа в 1С 8

	Заказ.Записать(РежимЗаписиДокумента.ОтменаПроведения);

Как внести изменения в документ по ссылке в 1с 8

Если нам нужно отредактировать документ, который уже записан в базу данных, чаще всего мы имеем в распоряжении ссылку на этот объект, полученную тем или иным образом. Например, ссылка может содержаться в значении реквизита формы, в переменной, или в текущих данных строки, если мы находимся в списке документов, и выделяем мышкой конкретную строку.
Ссылка позволяет считывать свойства документа, а для редактирования нужен сам объект. Для этого следует использовать метод ПолучитьОбъект().

//Найдем ссылку на заказ, используя объектную модель представления данных
НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001");

// вот так можно проверить, что документ не найден в системе
Если НайденныйЗаказ.Пустая() Тогда
	Сообщить("Документ отсутствует в базе");
Иначе
	//Получаем документ по ссылке
	ОбъектЗаказ = НайденныйЗаказ.ПолучитьОбъект();
	ОбъектЗаказ.Комментарий = "Мы нашли и отредактировали существующий документ";
	ОбъектЗаказ.Записать();
КонецЕсли;

Как получить пустую ссылку на документ в 1С 8

ПустаяСсылка = Документы.Заказ.ПустаяСсылка();

Как программно заблокировать документ перед изменениями в 1С 8

//Установим блокировку документа от изменения
ЗаказОбъект = НайденныйЗаказ.ПолучитьОбъект();
Попытка
	//Заблокируем по ссылке
	ЗаблокироватьДанныеДляРедактирования(НайденныйЗаказ);
Исключение
	Сообщить("Документ уже заблокирован!";
	Возврат;
КонецПопытки;

ЗаказОбъект.Комментарий = "Произвели какие-то длительные действия по изменению документа";
ЗаказОбъект.Записать();

//а разблокируем при помощи метода объекта
ЗаказОбъект.Разблокировать();

Как средствами языка 1С ввести документ на основании другого

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

НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001");
СчетНаОсновании = Документы.Счет.СоздатьДокумент();
//Вот здесь вызывается процедура ОбработкаЗаполнения
СчетНаОсновании.Заполнить(НайденныйЗаказ);
СчетНаОсновании.Комментарий = "Документ введен программно на основании " + НайденныйЗаказ;
СчетНаОсновании.Записать();

Работа с движениями документа средствами языка 1С

Как прочитать движения документа запросом

// Прочитаем движения документа по регистру ЗаказыКлиентов при помощи запроса
НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001");

Запрос = Новый Запрос("ВЫБРАТЬ
|	ЗаказыКлиентов.НомерСтроки КАК НомерСтроки,
|	ЗаказыКлиентов.ВидДвижения КАК ВидДвижения,
|	ЗаказыКлиентов.Товар КАК Товар
|	ЗаказыКлиентов.Количество КАК Количество
|ИЗ
|	РегистрНакопления.ЗаказыКлиентов КАК ЗаказыКлиентов
|ГДЕ
|	ЗаказыКлиентов.Регистратор = &НайденныйЗаказ");
Запрос.УстановитьПараметр("НайденныйЗаказ", НайденныйЗаказ);

Результат = Запрос.Выполнить();
// Преимущество запросов в том, что можно получать
// не все движения, а с учетом отборов, или только по некоторым полям
Если Не Результат.Пустой() Тогда
	Выборка = Результат.Выбрать();
	Пока Выборка.Следующий() Цикл
		Сообщить(
		"№ " + Выборка.НомерСтроки +
		"ВидДвижения" + Выборка.ВидДвижения +
		"Товар " + Выборка.Товар +
		"Количество " + Выборка.Количество
		);
	КонецЦикла;
КонецЕсли;

Чтение и редактирование движений документа в 1С с использованием объектной модели

// Найдем и изменим движения документа по регистрам программно

НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001");

// В нашем примере заказ делает движения по двум регистрам:
// регистр накопления - резервы товаров
// регистр накопления - заказы клиентов

// для редактирования движений документа используем объектный подход
// и коллекцию Движения, предварительно получив документ.

ДвиженияДокумента = НайденныйЗаказ.ПолучитьОбъект().Движения;

// в коллекции хранятся наборы записей документа в регистры
// поместим набор записей в переменную
НаборЗаписей = ДвиженияДокумента.ЗаказыКлиентов;

// Прочитаем записи из набора данных
// Если этого не сделать, то при записи набор данных заменится только новым содержимым
НаборЗаписей.Прочитать();

Для Каждого Запись Из НаборЗаписей Цикл
 
    // выведем старые значения
    Сообщить(Строка(Запись.ВидДвижения) + " " + Запись.Товар + " " + Запись.Количество);
	
	// отредактируем запись, например укажем вид движения Расход
	Запись.ВидДвижения = ВидДвиженияНакопления.Расход;
	
КонецЦикла;

//Добавим новую запись в набор
ЗаписьПриход = НаборЗаписей.ДобавитьПриход();
ЗаписьПриход.Товар = Справочники.Товары.НайтиПоНаименованию("Авторучка");
ЗаписьПриход.Количество = 5;
ЗаписьПриход.Период = НайденныйЗаказ.Дата;

// Удалим старые движения и вместо них запишем новые.
НаборЗаписей.Записать(Истина);

// Движения документа Заказ № УТ-000001 теперь отличаются
// от сформированных при проведении.
// Чтобы вернуть исходные движения, документ нужно перепровести

Как отредактировать проведенный документ, не меняя движений

Ситуация, обратная рассмотренной выше – нужно изменить документ, не трогая движения. Такая необходимость иногда возникает, если отчетный период закрыт, движения документов должны быть гарантировано неизменными, но в сами документы необходимо внести изменения.

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

Работа с формами документов средствами языка 1С 8

Открыть форму документа по ссылке

// Найдем заказ по номеру с учетом года
НайденныйЗаказ = Документы.Заказ.НайтиПоНомеру("УТ-000001",'20211231');

ПараметрыФормы = Новый Структура("Ключ", НайденныйЗаказ);

//Можно открыть форму объект по умолчанию
ОткрытьФорму(
"Документ.Заказ.ФормаОбъекта", // имя формы
ПараметрыФормы // параметры для формы
);
// Либо указать конкретную форму документа
ОткрытьФорму("Документ.Заказ.Форма.ФормаДокумента", ПараметрыФормы);

Открыть форму списка документов с отбором по реквизиту

// откроем список заказов, оставив
// только те, что от покупателя ЧастноеЛицо

ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Покупатель", Справочники.Контрагенты.ЧастноеЛицо); 
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);

ОткрытьФорму("Документ.Заказ.ФормаСписка", ПараметрыФормы);

Открыть форму выбора документа и отследить событие закрытия формы

В клиентском модуле, откуда мы хотим вызвать открытие формы выбора, пишем следующий код:

// Чтобы отследить закрытие формы выбора, нам понадобится обработка оповещения
// Это отдельная экспортная процедура в том модуле, откуда мы вызываем открытие формы
ОповещениеОЗакрытии = Новый ОписаниеОповещения("ОбработкаВыбораДокумента",
        ЭтотОбъект);
 
ОткрытьФорму("Документ.Заказ.ФормаВыбора",,,,,,ОповещениеОЗакрытии);

И добавляем отдельную процедуру для обработки:

&НаКлиенте
Процедура ОбработкаВыбораДокумента(Результат, Параметры) Экспорт
 
    Если Результат <> Неопределено Тогда
        Сообщить("Был выбран документ " + Результат);
    КонецЕсли;
 
КонецПроцедуры

Как открыть форму нового документа, созданного программно

Бывают ситуации, когда нужно создать документ, заполнить его данными, но не записывая, показать пользователю. Например, для проверки и дальнейшего редактирования. Это можно сделать при помощи следующего кода:

&НаКлиенте
Процедура ОткрытьФормуНового(Команда)
	
	ФормаНовогоДокумента = ПолучитьФорму("Документ.Счет.ФормаОбъекта");
	//Копируем объект, т.к. напрямую данные формы менять нельзя
	ДанныеФормы = ФормаНовогоДокумента.Объект;
	//Полученный экземпляр заполняем на сервере
	ЗаполнитьНовыйДокументНаСервере(ДанныеФормы);
	
	// Заполненные данные нужно скопировать в исходную форму
	КопироватьДанныеФормы(ДанныеФормы, ФормаНовогоДокумента.Объект);
	
	// покажем форму нового документа пользователю
	ФормаНовогоДокумента.Открыть();
	
КонецПроцедуры


&НаСервере
Процедура ЗаполнитьНовыйДокументНаСервере(ДанныеФормы)
	
Счет = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.Счет"));
Счет.Дата = НачалоМесяца(ТекущаяДата());
Счет.Комментарий = "Документ создан программно, открываем без записи";

//Преобразуем объект обратно в данные формы
ЗначениеВДанныеФормы(Счет, ДанныеФормы);

КонецПроцедуры

Понравилась статья? Поделить с друзьями:
  • Записать реквизит при проведении документа
  • Запись дополнительных реквизитов документа
  • Запись реквизитов документа при проведении
  • Заполнение платежных реквизитов по услугам
  • Заполнить реквизиты для оплаты в сбербанке