+7(499)-938-42-58 Москва
+7(800)-333-37-98 Горячая линия

Что значит провести документ в 1с.

Справочник 1С — Документы

Что значит провести документ в 1с.

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

Типичными примерами видов документов являются такие документы, как «Платежное поручение», «Счет», «Приходная накладная», «Расходная накладная», «Накладная на внутреннее перемещение», «Приходный кассовый ордер» и так далее. Каждый вид документа предназначен для отражения своего типа событий.

Это определяет его структуру и свойства, которые описываются в конфигурации.

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

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

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

Состав документов

Если коротко, то у документа есть экранные формы, причем они могут быть в форме диалога, списка или выбора, в зависимости от применения в программе. Именно эти формы видит пользователь на экране. Также у документа обычно есть одна или несколько форм для печати — макетов.

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

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

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

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

Атрибуты документов (основные реквизиты)

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

Как правило, в шапке содержатся реквизиты, которые являются общими для всего документа. У любого вида документа существуют реквизиты, которые создаются автоматически — это «Дата» и «Номер». Например, в счете на оплату в заголовочную часть помещаются установочные данные документа — номер и дата, а также сведения о плательщике и получателе платежа.

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

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

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

// Получить пустую ссылку типа документ, например РеализацияТоваровУслуг

ПустаяСсылка = Документы.РеализацияТоваровУслуг.ПустаяСсылка();
Если ПустаяСсылка.Пустая() Тогда
   Сообщить(«Ссылка пустая.»);
КонецЕсли;

// Создать новый документ, указать принадлежность к организации, установить дату, номер и записать
// На примере РеализацияТоваровУслуг

НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.УстановитьНовыйНомер();
НовыйДок.Дата = ТекущаяДата();
НовыйДок.Организация = ОрганизацияПоУмолчанию;
НовыйДок.Записать();

// Создать новый документ на основании другого объекта СсылкаНаДокумент

НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.Заполнить(СсылкаНаДокумент.Ссылка);
НовыйДок.Записать();

// Скопировать существующий документ

КопияДокумента = СсылкаНаДокумент.Скопировать();
КопияДокумента.Записать();

// Провести документ

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

// Изменить и записать документ по ссылке

Источник: http://mifodiy.com/spravochnik-1s-dokumenty/

Документы 1С – Общее описание

Что значит провести документ в 1с.

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

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

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

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

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

В этом случае просто происходит фиксирование какой-то информации в виде электронного документа.

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

Рассмотрим ключевое свойство “Дата”. В версии 7.7 оно называлось “ДатаДок”, в версии же 8 оно стало называться просто “Дата”. Это очень важное свойство документа.

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

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

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

Вот именно поэтому наличие даты в документе так важно. Также необходимо отметить, в свойстве “Дата” содержится не только дата, но и время документа с точностью до секунды.

Очень часто такой идентификации документа на временной оси оказывается недостаточно.
Представим ситуацию, когда на склад поступает 100 единиц товара 1-го числа месяца. Далее 2-го числа этого же месяца в 23:59:59 происходит его продажа, в количестве 80 единиц. Документ проводится без проблем, потому как товара хватает. Допустим, что также 2-го числа в 23:59:59 этот же товар еще кто-то тоже продает в количестве 50 единиц. Этот документ также проведется без проблем, потому как на время 23:59:59 этот товар есть. Хотя фактически у нас, по итогу проведения второго документа образуется отрицательный остаток в 30 единиц товара.

Чтобы таких ситуаций не возникало к дате и времени прибавляется еще и позиция документа, а именно его ссылка. Эта идентификация документа по дате и времени + ссылка называется момент времени. И при проведении второго документа система выдаст сообщение о нехватке 30 единиц товара и не позволит провести документ.

Как же получить момент времени? А получается он методом “МоментВремени”, принадлежащий классу “ДокументОбъект”. При этом возвращается тип данных “МоментВремени”.

Этот тип данных необходимо передавать в запросы, получающие остаток товара, в качестве параметра.

Пример получения момента времени:

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

Установка времени документа

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

При оперативном проведении есть следующий нюанс. Если его дата равна текущей, время будет принимать значение текущего времени. Если бы документ проводился неоперативно, то только в момент его ввода присваивалась текущая отметка времени, а дальше она оставалась бы неизменной. Если же документ вводится не текущим числом, то первоначально присваивается нулевая отметка времени, а при записи присваивается самая последняя отметка за этот день. То есть система ищет последний введенный документ за этот день смотрит его время, увеличивает его на секунду и присваивает его нашему документу. Если создать документ на дату, в которой не вводился ни один документ данного вида (например поступление товаров), но были введены документы другого вида (например списание товаров), то система возьмет самую последнюю дату документа другого вида, прибавит к ней секунду и присвоит нашему документу. Если же создать документ с датой, в которой не вводился ни один документ, ни одного вида, то платформа присвоит ему время 12:00:00. И еще ситуация. Представим себе, что у нас в базе есть документ с отметкой времени 23:59:59 и если прибавить еще одну секунду это уже будут следующие сутки. Поэтому система оставляет такое же время, то есть 23:59:59. Описанная выше система установки времени документа является лишь значением устанавливаемым по умолчанию. Но есть возможность переопределить такое поведение. Откроем в конфигураторе форму документа и обратимся к ее свойствам. В свойствах мы увидим поле “АвтоВремя”. Если мы в этом свойстве ничего не меняем, то формирование времени документа происходит так как это было описано выше. Но можно указать время: текущее или в начало дня, всегда первым, всегда последним и не использовать.

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

Возможность проведения

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

То есть непроведенный документ это некий черновик, а при проведение он вступает в силу и соответственно регистрирует какое-то событие.

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

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

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

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

Документ может находится в трех состояниях:

  • Не помечен на удаление и не проведен;
  • Не помечен на удаление и проведен;
  • Помечен на удаление и не проведен.

Как уже отмечалось ранее, разработчик может самостоятельно добавлять необходимые реквизиты, а также табличные части. Каждая табличная часть имеет один стандартный реквизит – “НомерСтроки”.

Хранение документов в информационной базе

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

Нумерация документов

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

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

Префикс устанавливается в модуле объекта документа, в процедуре “ПриУстановкеНовогоНомера”.

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс) // Вставить содержимое обработчика. КонецПроцедуры

Также на вкладке “Нумерация” мы можем задать периодичность документа.

Возможные значения:

  • Непериодический;
  • В пределах года;
  • В пределах квартала;
  • В пределах месяца;

  • В пределах дня.

Обычно выбирают значение “в пределах года”, это означает, что в новом году нумерация документов начнется сначала.

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

Его необходимо указывать в поле “Нумератор”.

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

Немного о проведении документов. Для системы означает, что документ проведен если булевский флаг “Проведен” у документа установлен в “Истина”.

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

То есть он может формировать движения по регистрам, основываясь на которые формируются отчеты.

Когда происходит интерактивное или программное проведение срабатывается выполнение процедуры “ОбработкаПроведения()”, которая находится в модуле объекта документа.

Процедура ОбработкаПроведения(Отказ, РежимПроведения) // Вставить содержимое обработчика. КонецПроцедуры

Данная процедура имеет два параметра: отказ и режим. Если выставить параметру отказ значение “Истина”, то проведение не будет выполнено.

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

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

То, в какие регистры документ будет делать движения задается на вкладке “Движения”.

Пример процедуры обработки проведения

Процедура ОбработкаПроведения(Отказ, РежимПроведения) //__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения // будут утеряны!!! // регистр ТоварыНаСкладе Приход Движения.ТоварыНаСкладе.Записывать = Истина; Для Каждого ТекСтрокаТовары Из Товары Цикл Движение = Движения.ТоварыНаСкладе.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Товар = ТекСтрокаТовары.Товар; Движение.Количество = ТекСтрокаТовары.Количество; КонецЦикла; //__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры

Права доступа на документы

В системе 1С существуют различные виды доступа. Это анализ интерактивных действий и анализ программных действий.

Что такое интерактивные действия? Это действия совершаемые непосредственно пользователем: нажатие кнопок, галок и т. д. Программные же действия совершаются каким-либо алгоритмом, о их совершении пользователь может и не догадываться.

Права доступа к документу настраиваются на закладке “Права”. Здесь мы видим несколько разделов, это раздел где отображаются роли, раздел непосредственно прав, и раздел “Ограничения доступа к данным” (его мы не будем рассматривать, он необходим при использовании так называемого механизма RLS).

Раздел “Роли” отображает все роли заведенные в информационной базе, для которых в разделе “Права” мы как раз и устанавливаем права доступа.

Возможные виды прав доступа:

  • чтение (программно), просмотр (интерактивно);
  • добавление (программно), интерактивное добавление (интерактивно);
  • изменение (программно), редактирование (интерактивно);
  • удаление (программно), интерактивное удаление (интерактивно);
  • проведение (программно), интерактивное проведение (интерактивно);
  • отмена проведения (программно), интерактивная отмена проведения (интерактивно);

Интерактивный вид доступа содержит еще такие права как: интерактивная пометка на удаление, интерактивное снятие пометки на удаление, интерактивное удаление помеченных, интерактивное проведение неоперативное, интерактивное изменение проведенных, ввод по строке.

Табличная часть документа

Табличные части документа задаются на вкладке “Данные” и являются ничем иным как коллекций, элементами которой являются строки табличной части. Поэтому обход ее элементов возможен как циклом, так и прямым обращением по индексу (нумерация начинается с нуля).

Заключение

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

Вы еще не читали? Вам это будет интересно…

Источник: http://1c-programist.ru/stati/dokumenty-1s-obschee-opisanie.html

Документы

Что значит провести документ в 1с.

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

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

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

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

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

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

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

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

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

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

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

Конструктор движений

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

Формы документа

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

Форма списка

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

Форма документа

Для просмотра и изменения данных отдельных документов используется форма документа. Как правило, она представляет данные в удобном для восприятия и редактирования виде:

Форма выбора

Кроме этих двух форм для документа поддерживается форма выбора конкретных документов из списка.

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

Макеты документа

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

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

Источник: https://v8.1c.ru/platforma/dokumenty/

Схема проведения документов в типовых конфигурациях УТ 11, ERP 2 и КА 2

Что значит провести документ в 1с.
Skip to content

В этой статье мы разберем схему проведения документа по регистрам в типовых конфигурациях УТ 11, КА 2 и ERP 2.

Для чего это нужно?

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

Что конкретно будем рассматривать

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

В результате Вы будете знать ответы на вопросы:

  • Где находятся алгоритмы формирования движений?
  • Как изменить типовое проведение документа?
  • Как адаптировать документ для движений по собственному регистру?

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

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

Укрупненно проведение документа происходит в два этапа, первый этап – подготовка и запись данных, второй этап – контроль отрицательных остатков.

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

Дополнительно о методиках контроля остатков можно прочитать в другой нашей статье: https://курсы-по-1с.рф/articles/2017-02-12-two-methods-for-inventory-check/

Театр начинается с вешалки, а проведение документа – с процедуры ОбработкаПроведения() модуля объекта. Порядок действий в обработке проведения документа можно представить в виде следующей схемы:

Рисунок 1. Схема действий обработки проведения документа

Рассмотрим детально каждую точку алгоритма проведения на примере документа «Реализация товаров и услуг».

ПроведениеСервер.ИнициализироватьДополнительныеСвойстваДляПроведения(Ссылка, ДополнительныеСвойства, РежимПроведения);

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

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

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

В вызываемой процедуре инициализируются общие для всех документов структуры (ДляПроведения и ТаблицыДляДвижений), используемые при проведении документов.
Рисунок 2. Дополнительные свойства после инициализации

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

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

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

Документы.РеализацияТоваровУслуг.ИнициализироватьДанныеДокумента(Ссылка, ДополнительныеСвойства);

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

Рисунок 3. Таблицы движений регистров в структуре дополнительных свойств

Обратите внимание, что ключи структуры названы по шаблону Таблица[Вт][ИмяРегистраДляДвижения], где Вт – признак временной таблицы, а ИмяРегистраДляДвижения – наименование регистра, куда будут записаны движения из таблицы значений.

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

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

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

Запрос = Новый Запрос;ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка);

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

ТекстыЗапроса = Новый СписокЗначений;ТекстЗапросаТаблицаЗаказыКлиентов(Запрос, ТекстыЗапроса, Регистры);ТекстЗапросаТаблицаСвободныеОстатки(Запрос, ТекстыЗапроса, Регистры);ТекстЗапросаТаблицаОбеспечениеЗаказов(Запрос, ТекстыЗапроса, Регистры);ТекстЗапросаТаблицаТоварыКОтгрузке(Запрос, ТекстыЗапроса, Регистры);…

Создается список значений ТекстыЗапроса, который будет содержать тексты запроса. Для каждого регистра, по которому требуется сформировать движения, вызывается процедура ТекстЗапросаТаблица[ИмяРегистраДляДвижения], где ИмяРегистраДляДвижения – наименование регистра, для которого формируется таблица движений. Текст запроса добавляется в список значений ТекстыЗапроса.

Вот и ответ на вопрос: «Где находятся алгоритмы формирования движений?».

Именно в процедуре ТекстЗапросаТаблица[ИмяРегистраДляДвижения] содержится текст запроса, на основании которого будут сформированы движения документа в конкретный регистр учетной системы.

ПроведениеСервер.ИнициализироватьТаблицыДляДвижений(Запрос, ТекстыЗапроса, ДополнительныеСвойства.

ТаблицыДляДвижений, Истина);

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

ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);

Будущие движения сформированы и уже хранятся в структуре ДополнительныеСвойства, теперь требуется подготовить регистры к записи.

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

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

ЗаказыСервер.ОтразитьЗаказыКлиентов(ДополнительныеСвойства, Движения, Отказ);ЗапасыСервер.ОтразитьСвободныеОстатки(ДополнительныеСвойства, Движения, Отказ);ЗапасыСервер.ОтразитьОбеспечениеЗаказов(ДополнительныеСвойства, Движения, Отказ);ЗаказыСервер.

ОтразитьТоварыКОтгрузке(ДополнительныеСвойства, Движения, Отказ);…

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

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

ТаблицаЗаказыКлиентов = ДополнительныеСвойства.ТаблицыДляДвижений.ТаблицаЗаказыКлиентов;…ДвиженияЗаказыКлиентов.Загрузить(ТаблицаЗаказыКлиентов);

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

ПроведениеСервер.ЗаписатьНаборыЗаписей(ЭтотОбъект);

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

Объект.Движения.Записать();

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

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

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

ПроведениеСервер.ВыполнитьКонтрольРезультатовПроведения(ЭтотОбъект, Отказ);

В случае выявления несоответствий флаг Отказ будет возведен в «Истину» и проведение документа будет завершено с соответствующим диагностическим сообщением.

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

ПроведениеСервер.ОчиститьДополнительныеСвойстваДляПроведения(ДополнительныеСвойства);

Завершающий этап обработки проведения документа.

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

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

Документы.СчетФактураВыданный.АктуализироватьСчетФактуру(ЭтотОбъект, Истина, ТребуетсяСчетФактура());РегистрыСведений.ТребуетсяОформлениеСчетаФактуры.ОтразитьНеобходимостьОформленияСчетаФактуры(ДополнительныеСвойства, Отказ);

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

В статье рассмотрена схема проведения документа по регистрам учета в типовых конфигурациях УТ 11, КА 2 и ERP 2. Подведем краткие итоги:

Как понять алгоритм формирования движений в определенный регистр?

Алгоритм формирования движений содержится в тексте запроса, который расположен в функции ТекстЗапросаТаблица[ИмяРегистраДляДвижения] модуля менеджера объекта.

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

Требуется разработать свой текст запроса и поместить его вместо существующего в функцию ТекстЗапросаТаблица[ИмяРегистраДляДвижения] модуля менеджера объекта.

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

Как добавить формирование движений в свой новый регистр?

Требуется разработать текст запроса, формирующий движения, и поместить его в новую, нами созданную, функцию ТекстЗапросаТаблица[ИмяСвоегоНовогоРегистра] модуля менеджера объекта.

В модуле объекта добавить вызов процедуры Отразить[ИмяСвоегоНовогоРегистра] в обработке проведения документа. Текст процедуры формируется по аналогии с типовыми процедурами.
Как провести документ только по одному регистру?

Рассмотрим эмпирическую задачу: нам требуется провести документ реализации только по одному регистру накопления, например, «Свободные остатки». Достаточно создать внешнюю обработку и разместить в ней следующий программный код:

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

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://.com/kursypo1c.

Если Вы еще не вступили в нее – сделайте это сейчас, и в блоке ниже (на этой странице) появятся ссылки на скачивание материалов.

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

Источник: https://xn----1-bedvffifm4g.xn--p1ai/ut11-articles/2017-09-07-documents-posting-scheme/

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

Что значит провести документ в 1с.

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

1. Настройка проведения документов
2. Как перепровести все документы в 1С Бухгалтерия 8.3
     2.1 При закрытии месяца
     2.2 Без закрытия месяца
3. Как перепровести документы определенного типа
4. Как провести документы из списка

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

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

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

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

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

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

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

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

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

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

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

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

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.