Документы в программе 1с. Документ может находится в трех состояниях

Назначение документов

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

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

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

Данные, вводимые в документ (реквизиты документа), обычно содержат информацию о происшедшем событии: например, в накладной - информацию о том, с какого склада, каких товаров и сколько отгружено; в приказе о приеме на работу - информацию о сотруднике, оклад, другие сведения. Кроме собственно записи, для документа весьма важным свойством является его проведение. При проведении документ может отразить зафиксированное им событие в механизмах, реализуемых компонентами. Например, если установлена компонента "Бухгалтерский учет", документ может записать бухгалтерскую операцию, отразив в виде проводок в бухгалтерском учете информацию, содержащуюся в документе.

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

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

Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица").

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

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

Некоторые документы могут проводиться . С точки зрения пользователя, "провести" документ означает "пустить его в дело". С точки зрения программиста, при проведении документа сработает модуль проведения документа (процедура ОбработкаПроведения ). Именно там определяются все действия, выполняемые при проведении документа. Например, при проведении документа "Приказ о приеме на работу" сработает модуль этого документа, который в справочник Сотрудники добавит нового сотрудника.

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

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

Термин "шапка" - достаточно условный и может относиться не только к реквизитам документа, которые физически находятся в верхней части бумажного бланка документа. Поэтому, в наиболее общем случае, реквизитом заголовочной части будет считаться любой реквизит, который встречается в документе только один раз. Табличная часть документа представляет собой список однотипных строк с информацией. Например, в уже упоминавшемся счете на оплату табличная часть - это перечень товаров или услуг, подлежащих оплате. Помимо наименований, табличная часть документа может содержать также разнообразную дополнительную информацию - стоимость товаров или услуг, количество, объем, вес и многое другое. В большинстве случаев табличная часть используется для формирования общей суммы документа. Структура документа в системе 1С:Предприятие 7.7 может содержать только одну табличную часть.

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

Журналы документов

Все документы хранятся в журналах . Журнал документов -- это электронный аналог обычной бумажной папки. На экране журнал выглядит как таблица, строки которой являются документами. Например, вы можете создать журнал Приказы кадровые , который будет включать документы "Приказ о приеме на работу", "Приказ об увольнении", "Кадровое перемещение". С этим журналом будет работать пользователь-кадровик. Или можно создать отдельный журнал для банковских документов, куда войдут документы "Платежное поручение" и др.

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

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

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

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

У журнала документов есть экранная форма, где можно настраивать отображаемые колонки. Можно создавать дополнительные колонки, которые будут отображать информацию из документов. Например, в журнале ПриказыКадровые удобно сразу видеть, к какому сотруднику относится каждый документ, для этого создается Графа журнала Сотрудник

Сравнение документов с другими объектами

Объект

Сходства

Различия

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

Основы программирования

ДокПрием = СоздатьОбъект ("Документ.ПриемНаРаботу");
ДокУвольн = СоздатьОбъект ("Документ.ПриказОбУвольнении");

Создание, сохранение и проведение документа

ДокПрием.Новый ();
ДокПрием.ФИО = "Иванов Иван Иванович";
ДокПрием.Оклад = 5000;
ДокПрием.Записать ();

//программное проведение документа
ДокПрием.Провести ();

Поиск документа

ДокПрием.НайтиДокумент (Док);
ДокПрием.НайтиПоНомеру (123)

Удаление документа

ДокПрием.Удалить (0); //пометка на удаление
ДокПрием.Удалить (1); //непосредственное удаление

//можно проверить, помечен ли документ на удаление
//функция возвращает 1 - если помечен, 0 - если нет

Пометка = ДокПрием.ПометкаУдаления ();

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

ДокПрием.ВыбратьДокументы (дата1, дата2); //можно задать период выборки
Пока ДокПрием.ПолучитьДокумент ()=1 Цикл
......<действия с текущим документом>
КонецЦикла;

Табличная часть документа
Перебор строк, добавление и удаление строк табличной части документа..

//перебор строк табличной части
Док.ВыбратьСтроки ();
Пока Док.ПолучитьСтроку ()=1 Цикл
...
КонецЦикла ;

//добавление строки
Док.НоваяСтрока ();
Док.РеквизитТаблЧасти = Значение;

//удаление строки
Док.УдалитьСтроку ();

Экранные формы

Форма журнала документов

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

Интервал журнала

В журнале документов можно установить интервал. Тогда он будет показывать только те документы, у которых дата попадает в этот интервал. Для установки интервала предусмотрена специальная кнопка на панели инструментов журнала. Кроме того, интервал можно установить программно методом УстановитьИнтервал

Графы журнала
В конфигураторе можно настраивать графы журнала (колонки). Например, в приведенной выше форме графа Сотрудник отображает ФИО сотрудника, для которого был сделан документ


Отбор, закладки отбора

В журнале документов можно программно или вручную установить отбор, тогда журнал будет показывать только нужные пользователю документы. Для установки отбора вручную предназначена специальная кнопка на панели инструментов журнала. Отбор можно установить по общим графам документов, а также по виду документов. Нельзя установить отбор по двум критериям одновременно. Отбор возможен только в ОБЩИХ журналах! Для упрощения процедуры отбора могут быть использованы закладки. Для этого используется метод ЗакладкиОтбора.

Предопределенные процедуры
Такие процедуры вызываются системой 1С при наступлении определенных событий в форме журнала документов. Фактически это обработчики событий.

Предопределенная процедура

Описание

ПриУстановкеОтбора() Срабатывает при установке отбора кнопкой на панели инструментов или выбором закладки отбора. Здесь можно проверить права доступа или сделать что-нибудь еще.
ПриУстановкеИнтервала() Предопределенная процедура при установке интервала журнала.
ПриВыбореСтроки(ФлагОбработки) Срабатывает при двойном щелчке на документе или при нажатии ENTER. Режим обработки выбора строки предопределенной процедурой ПриВыбореСтроки включается при помощи метода Форма.ОбработкаВыбораСтроки(1).

Сортировка
ВНИМАНИЕ. Сортировка в журнале документов по произвольной графе невозможна!

Поиск документа в журнале
Кнопка "Поиск по номеру" (см. панель инструментов формы журнала документов) + набор первых символов.

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

Для пользователя содержимое документа представляется в экранной форме документа:


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

Предопределенные процедуры.

Для обслуживания работы действий с документами в системе 1С имеется большое количество предопределенных процедур. Однако, прежде чем приступить к описанию последних, сделаю важное пояснение. Документ как объект конфигурации содержит ДВА РАЗНЫХ программных модуля.

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

Предопределенные процедуры, принадлежащие модулю документа:

Предопределенная процедура

Описание

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

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

Процедура ОбработкаУдаленияПроведения()

Если ВыбратьСтроки() = 1 Тогда // Обратите внимание

Пока ПолучитьСтроку() = 1 Цикл

Сумма = 0; // Сумма - реквизит документа ***

КонецЦикла;

КонецЕсли;

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

*** Пример доступности контекста документа в модуле документа

АрхивироватьДокумент() Вызывается при смене расчетного периода журнала расчетов "вперед". Требуется описывать, если документ порождает записи журнала расчетов.

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

Предопределенная процедура

Описание

ВводНового(ПризнакКопирования, ОбъектКопирования)

Вызывается при создании интерактивном создании нового документа пользователем. Процедура обычно содержит предустановки значений некоторых реквизитов при создании нового документа или операторы управления видом экранной формы. ПризнакКопирования - имя переменной, которую система установит в "0", если введен просто новый документ, и в "1", если документ скопирован (через F9, например). При этом в Переменную ОбъектКопирования будет передан объект, с которого скопировали. Копирование не следует путать с вводом на основании.

Процедура ВводНового(Копирование)

Если ИмяПользователя() <> "Бухгалтер" Тогда

Предупреждение("Вам не позволено создавать этот документ!");

СтатусВозврата(0); Возврат; //Новый документ не будет создан

КонецЕсли;

Если Копирование = 1 Тогда

Возврат;

КонецЕсли;

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

ВводНаОсновании(Основание)

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

СуммаДоплаты=Основание.СуммаСверху; //Свой реквизит принимает значение реквизита документа-основания.

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

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

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

Процедура ПриВводеСтроки()
.......СтатусВозврата(0);
КонецПроцедуры

ПриНачалеРедактированияСтроки() Обрабатывает начало изменения существующей (!) строки (когда пользователь ручками вводит или изменяет значения реквизитов табличной части). Исходя из примера, описанного выше для процедуры ПриВводеСтроки(), догадайтесь, как можно запретить редактирование стоки?
ПриРедактированииНовойСтроки() Похожая на предыдущую, но с тем отличием, что вызывается только при редактировании ВНОВЬ созданной строки.
ПриОкончанииРедактированияСтроки (ФлагНовойСтроки) ФлагНовойСтроки - имя переменной, в которую будет записана 1, если окончен ввод НОВОЙ строки, соответственно - 0, если закончено редактирование ИМЕВШЕЙСЯ. Процедура вызывается, когда пользователь "дезактивирует" строку мышкой, нажатием Enter, или Esc (кроме случая, когда отказываются от редактирования новой строки).
ПриУдаленииСтроки() Действие, которое будет обработано данной процедурой, очевидно исходя из имени процедуры. Что еще добавить?
ПриИзмененииПорядкаСтрок (ФлагДействия) ФлагДействия - имя переменной, которая станет "-1", если строка поднимается вверх, станет "1" при перемещении строки вниз, и станет "0", если изменяются номера строк, например, при сортировке. А что при этом сделать - это уже ваша фантазия (моей не хватает:).

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

Печатные формы документа

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

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

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

Маленькая хитрость: если вы создали свою печатную форму для какого-либо документа, или "заточили" типовую, рекомендую сохранить её в отдельном файле печатной формы (*.mxl) тогда при переходе с релиза на релиз вам не будет нужды переделывать таблицы документа, достаточно будет в операторе ИсходнаяТаблица() процедуры печати вставить ссылку на внешний файл.

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

Новый документ в системе 1С можно ввести различными методами:
Интерактивно - этот способ можно реализовать по-разному.

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

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

3. При третьем варианте новый документ создается на основании существующего документа другого вида. В такой ситуации вместо процедуры ВводНового() будет вызвана процедура ВводНаОсновании(). В ней нужно описать, какие реквизиты нового документа будут заполнены значениями из документа-основания. Естественно, что заполняемые реквизиты нового документа должны иметь тот же тип, что и соответствующие реквизиты-источники. Пример заполнения расходной накладной на основании счета:

Процедура ВводНаОсновании(ДокОсн)

РасчетныйСчет = ДокОсн.РасчетныйСчет;
МестоХранения = глЗначениеПоУмолчанию("ОсновнойСклад");
Контрагент = ДокОсн.Контрагент;
Договор = ДокОсн.Договор;
ВариантРасчетаНалогов = ДокОсн.ВариантРасчетаНалогов;

ДокОсн.ВыбратьСтроки();
Пока ДокОсн.ПолучитьСтроку() = 1 Цикл

НоваяСтрока();
Товар = ДокОсн.Товар;
Количество = ДокОсн.Количество;
Цена = ДокОсн.Цена;
Сумма = ДокОсн.Сумма;
НДС = ДокОсн.НДС;
Всего = ДокОсн.Всего;

КонецЦикла;

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

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

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

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

ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл

СФ.НоваяСтрока();
// Реквизит "Товар" док-та СчетФактура имеет неопределенный тип
СФ.НазначитьТип("Товар", "Справочник.Номенклатура");
СФ.Товар=Товар;
Если ПустоеЗначение(Товар.СтранаПроисхождения) = 0 Тогда

// а это обращение к реквизитам справочника "Номенклатура"
СФ.СтранаПроисхождения = Товар.СтранаПроисхождения;

Иначе

СФ.СтранаПроисхождения = "Россия";

КонецЕсли;

СФ.Количество=Количество;
СФ.Цена=Цена;
СФ.Сумма=Сумма;
СФ.НДС=НДС;
СФ.Всего=Сумма+НДС;

// Здесь накладная становится основанием счета-фактуры через специальный реквизит
СФ.ДокументОснование = ТекущийДокумент();

КонецЦикла;
СФ.Записать();
СФ.Провести(0, "Программно");

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

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

Оператор Провести() в приведенном выше примере выполнит проведение документа. При проведении будет вызвана предопределенная процедура ОбработкаПроведения(). Вторым реквизитом передается в обработку проведения значение ("Программно"), по которому процедура ОбработкаПроведения() узнает о программном выполнении проведения. Это может быть простая строка или число, её задача - только обозначить факт программного проведения.

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

Если Док.Проведен() > 0 Тогда

Сообщить("Документ № " + Док.НомерДок + " проведен");
…………… // Какие-то действия, которые нужно сделать с проведенным документом

КонецЕсли;

О создании операций и проводок при проведении документов читай раздел Операции и проводки главы Бухгалтерия.

Транзакции

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

СписаниеМатериалов = СоздатьОбъект("Документ.ТребованиеНакладаная");
НачатьТранзакцию();
Для Ном = 1 По 100 Цикл

СписаниеМатериалов.Новый();
…………………
// Заполнение реквизитов
СписаниеМатериалов.Записать();
СписаниеМатериалов.Провести();

КонецЦикла;
ЗафиксироватьТранзакцию();

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

Установка периодического реквизита справочника при проведении документа

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

Процедура ОбработкаПроведения()

УстановитьРеквизитСправочника (Сотрудник, "Оклад", НовыйОклад, ДатаДок);

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

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

Номер документа и нумераторы


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

При интерактивном или программном создании нового документа ему автоматически присваивается новый уникальный номер. Его можно получить или установить какой-нибудь другой с помощью атрибута НомерДок:


Док.Новый();
Сообщить("Документу был автоматически присвоен № " + Док.НомерДок);
Док.НомерДок = "000013";
Сообщить("Установлен новый № " + "000013");

Префикс номера

Если вы используете распределенную базу или желаете, чтобы документы обозначали пользователя, который их создал, полезно пользоваться префиксами - одним или двумя символами, которые подставляются перед собственно номером документа, но при этом "входят" в номер. Не забывайте, что префикс должен быть строковым ("Сч-" или "01", или "1-"), а в свойствах документа должен быть установлен строковый тип номера.

Док = СоздатьОбъект("Документ.Счет");

Док.ПрефиксНомера (ПрефДок + "-");
Док.Новый();

Этот метод изменяет префикс по умолчанию, или возвращает текущее значение префикса, если использовать метод без параметра. А вот другая возможность:

Док = СоздатьОбъект("Документ.Счет");
ПрефДок = Лев(ИмяПользователя(),2);
Док.Новый();
Док.УстановитьНовыйНомер (ПрефДок + "-"); // такая нумерация работает очень корректно

В отличие от предыдущего этот метод устанавливает (а точнее переустанавливает введенный по умолчанию при исполнении метода Новый()) новый номер с указанным префиксом.

Что такое нумератор?

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

Периодичность . Этот реквизит устанавливает 2 важные характеристики нумератора: пределы контроля уникальности номеров документов и период повторяемости номеров. Если включен признак контроля уникальности номеров (см. ниже), "Периодичность" устанавливает, в каких пределах осуществлять этот контроль. Например, если установлено "В пределах дня", то уникальность номеров документов будет контролироваться в пределах суток: на следующие сутки номера документов могут повторяться. При включенной автоматической нумерации система будет присваивать очередной порядковый номер каждому новому документу. После завершения периода, установленного в реквизите "Периодичность", нумерация документов начнется с 1.

Длина . Устанавливает максимальную длину номера документа. Не размахивайтесь без нужды, "длинный" номер снижает производительность работы.

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

Контроль уникальности . Если эта опция включена, то при вводе нового документа его номер проверяется на уникальность в пределах, установленных в реквизите "Периодичность".

Дата, время и позиция документа

Дата документа

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

Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.Новый();
Если Док.ДатаДок = "01.01.02" Тогда
..........Сообщить("С Новым Годом!");
КонецЕсли;

Время документа

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

Часы = 0;
Минуты = 0;
Секунды = 0;
Док.ПолучитьВремя(Часы, Минуты, Секунды); // Прочтем время
Если Часы > 21 Тогда

Предупреждение("Хватит работать по ночам!
|Документ будет помещен в конец дня");
Док.АвтоВремяКонецДня(); // документ запишется на 10 сек позже последнего

ИначеЕсли Часы < 8 Тогда

Предупреждение("Никто не оценит!
|Документ будет записан в начало дня");
Док.АвтоВремяНачалоДня();// документ запишется на 10 сек раньше первого

ИначеЕсли Вопрос("Записать документ с текущим временем?", 4) = 7 Тогда // ответ "Нет"

ВвестиЧисло(ЧасУст, "Укажите час, с которым будет записан данный документ",2,0);
Док.УстановитьВремя(ЧасУст, Минуты, Секунды); // запишется с этим временем

Иначе

Док.АвтоВремяТекущее(); // документ запишется с текущим временем

КонецЕсли;

Позиция документа

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

ПозДокумента = Док.ПолучитьПозицию(); // только чтение!

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

Точка актуальности (ТА)

Этот страшный зверь - точка актуальности

Точка актуальности (ТА) - это "текущий" момент времени в хронологии документов, на который регистры оперативного учета содержат текущие значения своих ресурсов. Это значит, что когда вы обращаетесь к регистрам, информация из них выдается именно на момент, куда установлена точка актуальности. Если вам нужны итоги на другой момент, должен запускаться временный расчет. ТА помогает системе определить текущее наличие средств, соответствующее, например, реальному количеству товаров на складе. Все документа, проведенные до ТА, считаются уже произошедшими хозяйственными операциями, если документ проведен после ТА, он не будет учтен при определении остатков регистра. Такая ситуация редка, т.к. документы оперативного учета после проведении автоматически устанавливают ТА на время своего проведения (режим управления ТА при проведении документов настраивается на закладке Оперативный учет окна Параметры меню Сервис режима 1С: Предприятие).

Программное управление ТА

Предопределенная процедура

Описание

ПолучитьТА() Возвращает строку, содержащую дату и время ТА. Примерный вид результата этой функции: 09.04.02 08:30:12 Отдельно дату или время ТА можно с помощью функций ПолучитьДатуТА() и ПолучитьВремяТА()
ПолучитьПозициюТА() Позиция ТА имеет такое же представление, как и позиция документа (см. выше). Посмотреть ее можно с помощью данной функции.
ПолучитьДокументТА() Можно получить документ, который стоит на точке актуальности. Функция возвратит ссылку на этот документ:ПослДок = ПолучитьДокументТА();Сообщить("Последний документ имеет номер " + ПослДок.НомерДок);
УстановитьТАна(Полож) Устанавливает ТА на начало даты или перед документом. Полож - переменная типа "Дата" или ссылка на документ. Метод можно использовать только в монопольном режиме.
УстановитьТАпо(Полож) Метод похож на предыдущий, только устанавливает ТА на конец даты или после документа.
АвтоВремяПослеТА() Метод документа изменяет предыдущую (в том числе и пользовательскую) установку автоматического времени нового документа так, чтобы он записывался со временем после ТА.
ПроводитьПослеТА(ФлагНеПров, ФлагПров) Метод модуля формы документа изменяет предыдущую (в том числе и пользовательскую) установку проведения и перепроведения документа относительно ТА. Если флаги имеют значение "-1", документ будет проводиться (или перепроводиться) всегда задним числом (до ТА). Флаг с единицей установит режим проведения (перепроведения) в реальном потоке времени (т.е. после ТА). Для флага ФлагНеПров имеется дополнительное нулевое значение. В этом случае при проведении режима будет выбирать пользователь.
ИтогиАктуальны() Метод предопределенной процедуры ОбработкаПроведения() модуля документа определяет актуальность итогов на момент проведения документа. Если метод возвратил значение "1", можно обращаться к текущим итогам с помощью методов объекта "Регистр" или с помощью запроса без указания конечной границы. Если метод возвратил "0", то необходимо запускать временный расчет регистра.

Последовательности

Последовательности документов - специальный механизм системы 1С, который позволяет поддерживать правильность итогов и данных проводок документов. Если документы при проведении использует данные бухгалтерских итогов или итогов регистров, то в случае, если задним числом каким-то образом меняются итоги, необходимо автоматически перепроводить все документы, которые использовали измененные итоги. Вот надзором за этим делом и занимаются Последовательности. При описании последовательности в конфигураторе, описывается, какие изменения регистров или бухгалтерских итогов по счетам будут влиять на последовательность, и какие документы входят в эту последовательность (это могут быть документы разного вида). Граница последовательности (ГП) - позиция последнего проведенного с "правильными" итогами документа. Если какие-то итоги изменяются задним числом, граница последовательности отодвигается назад на последний документ, при проведении которого использовались последние "нетронутые" итоги, а все документы, проведенные на основе изменившихся данных итогов, окажутся после границы последовательности. Восстановление последовательности - значит перепроведение всех документов, начиная от границы последовательности, заканчивая точкой актуальности или рабочей датой. Для восстановления последовательности в пользовательском режиме необходимо вызвать пункт Проведение документов… меню Операции.

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

Последовательность.УчетТоваров.ПринадлежитПоследовательности(ТекДокумент);
Здесь "УчетТоваров" - имя последовательности, заданной в конфигурации.

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

Метод

Описание

ПринадлежитПоследовательности(Докум) Определяет, принадлежит ли документ (или вид документа) данной последовательности. Возвращает "1", если принадлежит, "0" - если нет.
ПолучитьАтрибут(Имя) Получить значение последовательности по строке с именем последовательности. Обычно применяется для передачи контекста данной последовательности в переменную.
ПолучитьПозицию(),
ПолучитьДокумент()
Схожие между собой методы, первый возвращает строковую позицию границы последовательности (ГП), а второй - ссылку на документ, на котором стоит граница последовательности.
ПолучитьДату(),
ПолучитьВремя(Ч,М,С)
Тоже подобные методы, первый возвращает дату, а второй - время границы последовательности (ГП), причем часы, минуты, секунды записываются в разные переменные.
Сравнить(Докум) Очень удобный метод для определения положения документа (или даты) относительно ГП. В параметр Докум можно записать дату, документ или позицию документа. Возвращает "-1", если ГП раньше, "0" - если равны, и "1", если ГП позже.
Установить(Положение) Принудительно устанавливает ГП в позицию, указанную переменной Положение. В эту переменную можно передавать документ, дату или позицию документа. Осторожнее со сдвигом "вперед", документы до новой точки автоматически не перепроводятся.
ВыбратьПоПоследовательности(ДатаНач, ДатаКон, Имя) Открывает выборку документов с ДатаНач по ДатаКон, принадлежащих указанной Последовательности. В качестве дат так же можно использовать документы или их позиции.

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

// получим границу последовательности
ПозицияНач = СформироватьПозициюДокумента (Последовательность.ОсновнаяПоследовательность.ПолучитьПозицию(), 1);
Док = СоздатьОбъект("Документ");

// отберем док-ты посл-ти "ОсновнаяПоследовательность"
Док.ВыбратьПоПоследовательности(ПозицияНач, ПолучитьПозициюТА(), "ОсновнаяПоследовательность");
Пока Док.ПолучитьДокумент() = 1 Цикл

Док.Провести(); // перепроводим документы
Сообщить("Восстановление последовательности "+Док);

КонецЦикла;

Быстрая пошаговая демонстрация разработки приложения на платформе 1С:Предприятие 8.2.

Для выполнения примера вам понадобится платформа 1С:Предприятие 8.2. На нашем сайте вы можете скачать . Данная демонстрация подготовлена с использованием именно такой версии!

Простая система кадрового учета

26. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на ветку Документы и щелкнув правой кнопкой мыши выберите Добавить). Задайте имя документа ПриемНаРаботу. Перейдите на закладку Данные.

27. Добавьте реквизит "ФИО", укажите ему тип значения Строка и длина 100 символов.

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

Кстати, у любого документа уже есть два заранее заданных реквизита "Номер" и "Дата".

Далее нужно создать таким же образом, как и реквизит "ФИО", остальные реквизиты и укажите для каждого из них правильный тип:
реквизит Должность - тип "СправочникСсылка.Должности"
реквизит Оклад - тип Число, длина 10, точность 2
реквизит ДатаПриема - тип Дата

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

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

Что конкретно произойдет при проведении документа, определяется программистом 1С. При проведении выполнится предопределенная процедура ОбработкаПроведения(). Именно в этой процедуре программист пишет программный код на языке 1С, которыйи совершает все изменения в системе. Сейчас нам нужно добраться до процедуры ОбработкаПроведения(). Она хранится в "Модуле объекта".

Для открытия модуля объекта перейдите на закладку "Прочее" и нажмите кнопку "Модуль объекта". Другой способ перейти в модуль объекта – выбрать в дереве конфигурации документ ПриемНаРаботу и кликнув правой кнопкой мышки выбрать "Открыть модуль объекта".

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

28. На панели инструментов найдите пиктограмму "Процедуры и функции" и нажав на нее выберете "ОбработкаПроведения".

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

СпрСотр = Справочники.Сотрудники.СоздатьЭлемент();
СпрСотр.Наименование = ФИО;
СпрСотр.Должность = Должность;
СпрСотр.Оклад = Оклад;
СпрСотр.ДатаПриема = ДатаПриема;
СпрСотр.Записать();

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

Кстати, часто начинающие специалисты 1С забывают вызвать Записать() . Если вы не вызовете метод Записать(), то все ваши изменения не сохранятся в базе.

Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой нет, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда , но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.

Также обратите внимание как оформляются комментарии.

// это комментарий

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

29. Закройте окно модуля и сохраните конфигурацию.

Теперь можно попробовать принять нового сотрудника по всей форме.

30. Запустите 1С в режиме 1С:Предприятие. В панели навигации выберете "Прием на работу". Перед нами откроется список документов "Прием на работу" и это список пока пустой.

31. Создайте новый документ. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически после его записи, дата документа - сегодняшнее число.

Введите все данные: ФИО сотрудника, укажите ему должность, оклад и дату приема на работу.

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

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

Теперь организуем правильное увольнение сотрудников с помощью кадрового приказа.

32. Создайте в Конфигураторе новый документ "Увольнение". Укажите, что он содержит реквизиты "Сотрудник" тип "СправочникСсылка.Сотрудники" и "ДатаУвольнения" тип Дата.

33. Напишите следующий текст в модуле документа в процедуре ОбработкаПроведения():

СпрСотр=Сотрудник.ПолучитьОбъект();
СпрСотр.ДатаУвольнения=ДатаУвольнения;
СпрСотр.Записать();

Рассмотрим записанный программный код более подробно.

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

34. Создадим журнал "КадровыеДокументы". Для этого установите курсор на ветку "Журналы документов" в дереве конфигурации и щелкните "Добавить". Задайте имя журнала.

На закладке "Данные" укажите регистрируемые документы: "ПриемНаРаботу" и "Увольнение".

Создадим новые графы:

  • Сотрудник – для документа "ПриемНаРаботу" это реквизит "ФИО", а для документа "Увольнение" - это реквизит "Сотрудник";
  • ДатаПриемаУвольнения – для документа "ПриемНаРаботу" это реквизит "ДатаПриема", а для документа "Увольнение" - это реквизит "ДатаУвольнения".

35. Сохраните конфигурацию и запустите ее в режиме 1С:Предприятия. Проверьте работу документа "Увольнение", а затем откройте журнал "Кадровые документы". В результате он будет выглядеть примерно так:

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

Для сравнения скажу, что написание такого же прикладного решения в другой среде или на другом языке программирования (Visual Basic или Delphi) займет в три или даже в пять раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся гораздно быстрее.

поступлениеТовара = Документы.ПоступлениеТовара; перечень = поступлениеТовара.Выбрать("20080101", "20081231"); пока перечень.Следующий() цикл Сообщить("Поступление товара № " + перечень.Номер + " от " + перечень.Дата); конецЦикла;

Результат:

Поступление товара № 1 от 20.05.2008 16:41:16
Поступление товара № 2 от 20.05.2008 16:41:44
Поступление товара № 3 от 20.05.2008 16:42:26

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

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

ПоступлениеТовара = Документы.ПоступлениеТовара; перечень = поступлениеТовара.Выбрать("20080101", "20081231"); пока перечень.Следующий() цикл объектДокумента = перечень.ПолучитьОбъект(); пров = объектДокумента.Проведен; Сообщить("Поступление товара № " + перечень.Номер + " от " + перечень.Дата + ". Проведен: " + пров); конецЦикла;

Результат:

Поступление товара № 1 от 20.05.2008 16:41:16. Проведен: истина
Поступление товара № 2 от 20.05.2008 16:41:44. Проведен: истина
Поступление товара № 3 от 20.05.2008 16:42:26. Проведен: истина

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

ПоступлениеТовара = Документы.ПоступлениеТовара; докСсылка = поступлениеТовара.НайтиПоНомеру("1", "20080520"); пров = докСсылка.Проведен; Сообщить("Документ ""Поступление товара"" №1 от 20.05.2008 проведен: " + пров);

Результат:

Документ "Поступление товара" №1 от 20.05.2008 проведен: истина

Как открыть на экране форму списка документов в 1с 8?

ПоступлениеТовара = Документы.ПоступлениеТовара; список = поступлениеТовара.ПолучитьФормуСписка(); список.Открыть();

Как определить какие реквизиты имеются в табличной части документа в 1с 8?

ПоступлениеТовара = Метаданные.Документы.ПоступлениеТовара; реквизиты = поступлениеТовара.ТабличныеЧасти.Товары.Реквизиты; для каждого наим из реквизиты цикл Сообщить("Имя реквизита " + наим.Имя + "; тип реквизита " + наим.Тип); конецЦикла;

Результат:

Имя реквизита Наименование; тип реквизита Справочник ссылка: Номенклатура
Имя реквизита Количество; тип реквизита Число
Имя реквизита Цена; тип реквизита Число
Имя реквизита Сумма; тип реквизита Число

Ведения учета в 1С – это последовательный ввод документов 1С, отражающих хозяйственную деятельность компании. То есть — покупки, продажи и прочее.

Таким образом один из ключевых столпов, на которых работает 1С – это документы 1С.

Давайте рассмотрим в этом уроке — что такое документы 1С и принципы работы с ними.

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

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

Таким образом:

  • Есть вид учета: денежных средств, товаров и прочего.
  • Информация из справочников определяет разрез вида учета: касса, счет в банке, товар.
  • Документы 1С [каждый] определяют движение количества и/или суммы по разрезу в учете: касса +1000 рублей, счет -1000 рублей, товар +10 штук.

Зачем нужны Документы 1С

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

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

Сейчас на каждый чих придумана такая своя бумажка. Называется она [в целом] [первичный] документ учета. А в частности – конкретные называния документов: приходная накладная [на товары], счет-фактура, кассовый ордер.

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

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

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

Где расположены Документы 1С

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

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

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

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

Как выглядят Документы 1С

Перед тем, как начать работать с конкретным документом №33 от 1 октября, Вы открываете список документов.

Список бывает двух видов:

  • Простой список документов 1С конкретного вида (на сленге часто называют ДокументСписок), например «Список приходных накладных»
  • Журнал документов 1С – это отдельный Объект 1С, который позволяет создать сплошной список разных видов документов, например «Список складских документов».

1) Документы 1С имеют признаки, которые позволяют отличать один документ 1С от другого. Основные признаки документов 1С, на основании которых организуется список, это:

  • Дата документа
  • Номер документа
  • Проведен по регистрам.

По умолчанию документ не проведен. Это значит он не виден в отчетах. Чтобы документ был виден в отчете — его нужно провести.

Чтобы провести документы 1С — нужно нажать или кнопку ОК (расшифровывается как Записать и Провести), или кнопку Провести (в меню по правой кнопке мыши в списке документов или кнопка в панели вверху окна документа).

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

2) К ним конечно же добавляются вторичные, но не менее важные учетные признаки:

  • Организация
  • Контрагент (т.е. клиент)
  • Сумма и валюта (т.е. рубли, доллары) документа.

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

При двойном щелчке мышкой на конкретном документе – открывается форма (т.е. окно) самого документа. Она делится на «шапку» (обычно основные перечисленные выше поля) и закладки с табличными частями (таблицами).

У основной массы [видов] документов есть табличные части. Это значит, что мы обычно оформляем накладную не на один товар – товаров много. Поэтому для их внесения нужна таблица.

Документы 1С отличают один от другого – датой и номером. Это его главные уникальные поля. Номера 1С присваивает автоматически.

Усложнение 1. Часто номера документов должны быть с «префиксом» по организации, т.е. не «001», а «ОА0001» и «БВ001». Префикс тогда указывается в справочнике организаций – для одной ОА, для другой БВ.

Усложнение 2. Бывает, что у разных документов должна идти сплошная уникальная нумерация подряд. Для этих случаев есть объект 1С – Нумератор. Он расположен внутри ветки конфигурации Документы, в самом верху.

Усложнение 3. Последовательности. Мы рассмотрим в уроке «Дата 1С».

Поле Номер, обычно по-умолчанию закрыты от редактирования пользователем. Изменить можно вот таким способом (конечно если это разрешено правами).

Документы 1С — настройка и разработка

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

Документы 1С — основные особенности по закладкам конфигуратора:

Документы в 1С 8.2 и 8.3 — объект метаданных, с помощью которого в 1С фиксируются хозяйственные операции предприятия.

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

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

Рассмотрим основные настройки и свойства документов.

Настройка и свойства документов в 1C 8.3 и 8.2

Рассмотрим самые интересные вкладки с точки зрения разработчика.

Данные

Одна из основные вкладок документа:

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

Получите 267 видеоуроков по 1С бесплатно:

Движения документа

Самая важная вкладка, на которой определяется состав регистров, по которым будет делать движения документ:

Рассмотрим подробно свойства документа на этой странице:

Проведение — разрешить или запретить. Определяет, будут ли движения по данному документу.

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

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

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

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



Понравилась статья? Поделиться с друзьями: