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

Подписаться
Вступай в сообщество «passport13.com»!
ВКонтакте:

Ведения учета в 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С – это главное условие корректного учета всех денежных средств, товаров и услуг. Существует несколько способов провести документ в 1С. Это сделать можно при открытии списка документов. На рисунке показано, как в Расходных кассовых ордерах провести нужный документ или отменить проведение. Первая колонка показывает, проведен ли документ. Если на «пиктограмме» присутствует зеленая галочка, значит документ проведен. Для примера, у нас в списке один документ не проведен. Выбрав нужный расходный кассовый ордер правой кнопкой мыши, можно выбрать в меню «Провести» или «Отменить проведение».Как провести и распровести документ 1с

Провести документ в 1С Предприятие 8.2 можно и другими методами. Зайдя в нужный документ, вверху окна мы увидим кнопки с зеленой и красной стрелочкой. Первая отвечает за проведение, а вторая – за ее отмену. Также, провести и закрыть документ можно через кнопку «ОК».

Существует способ группового проведения документов в 1С. Для этого нужно воспользоваться групповой обработкой справочников и документов (Сервис – Универсальные обработки – Групповая обработка справочников и документов).

В групповой обработке нужно выбрать тип объекта «Документы», добавить нужные документы (например, «Поступление товаров и услуг»). Также, следует в «Настройках» поставить галочку напротив «Разрешить изменение реквизитов объектов», и при необходимости, внизу добавить критерии отбора. Например, можно найти все проведенные документы «Поступление товаров и услуг», и через обработку отменить им проведение. Жмем на кнопку «Отобрать».

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

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

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

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

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

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

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

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

Данные

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

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

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

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

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

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

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

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

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

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

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

Поводом для написания данной статьи послужила дискуссия на форуме Общий модуль: клиент и сервер о необходимости разработчика доработать типовую УТ 11.1 так, чтоб в момент проведения документа "Заказ клиента" выводилось диалоговое окно с вопросами для обновления информации на форме для изменения логики проведения документа. При попытке разобраться в необходимости такой меры на первое место встал методологический вопрос: почему нельзя провести подобное в клиент-серверном выполнении? А на самом деле нужно было задать вопрос: зачем нужно подобное уточнение в момент проведения документа. Конечно данная вещь запрещена средствами платформы 1С 8.3 и более ранних версий 8.2 где есть поддержка клиент-серверного режима работы. С сервера нельзя вызвать клиентскую процедуру.
В данной статье я решил использовать опыт разработки практически с "нуля" одной нетиповой торговой конфигурации, где ставилась задача обеспечить максимальную производительность при записи, проведении и отмены проведения документов.
При разработке собственных мелких конфигураций или при необходимости оптимизации таких громоздких как УТ 11.1, которая даже на мощных компьютерах при полностью включенном функционале начинает подтормаживать на любых действиях, не только при записи и проведении "массовых" документов: заказов клиентов, реализации товаров и услуг и прочих. Особенно это неприятно при выполнении регламентных операций по восстановлению последовательностей. Конечно, по данной теме есть множество статей, суть которых заключается (особенно это касается клиент-серверных вариантов) в переносе вычислительной нагрузки даже не на сервер приложений, а на SQL сервер, путем не только получения на нем данных из базы 1С, но и проведения там путем запросов математических вычислений с передачей готового результата (при необходимости) за один раз на сервер приложений для записи движений документа "одним пакетом". Ну или, в случае отказа от проведения, передачи некоторой информации на компьютер клиента для обновления информации в форме документа.
Конечно, это все очень важно и нужно, но есть еще одно узкое "бутылочное горло" это подход к самой методологии проведения документов. При сложных случаях во всей цепочке проведения необходимо знать: кто же в данный момент проводит документ человек или компьютер? Поясню на конкретном примере. Допустим есть маленькая конфигурация с несколькими документами и регистрами сведений и накопления. Из нашего примера это даже не маленький аналог УТ 11.1, а скорее очень упрощенная Розница. А вот функционал этой маленькой "розницы" не примитивное пробивание чеков и подготовка отчетов о розничных продажах, а более мощный. В крупных, территориально распределенных организациях бывают так называемые "номенклатурные войны" среди менеджеров: кто раньше всех успел оформить заказ клиента тот заработал больше. Имея номенклатуру в несколько сотен тысяч единиц в реале массово продается несколько десятков. Наподобие советского дефицита "товары повышенного спроса", которые к тому же нужно особым образом резервировать и по сложной логистической структуре доставлять до адресата - конечного покупателя. А есть товар, которого везде буквально завались и он никому не нужен:) А если для подобной системы требуется еще и получение сложной специализированной отчетности, то создание подобной системы учета "с нуля" оправданы.
Так как же добиться быстрого проведения документов? Нужны ли всегда все проверки при использовании файлового или клиент-серверного режима?
Предметная область конфигурации была следующей. Как уже упоминалось выше часть товара "повышенного спроса" приходится в реальном времени резервировать и анализировать свободные остатки. Остановимся на одном документе "Заказ покупателя". В подобной торговой конфигурации он имеет сложный алгоритм резервирования, заполнения и отображения предварительных результатов. Данные для такого документа не один раз приходится получать перед окончательным использованием из различных источников. Там присутствует первоначальная обработка в табличной части некоторой информации с пересылкой на сервер приложений, далее запрос данных на сервере базы данных SQL, дальнейший первоначальный расчет уже в другом запросе, затем возврат результата на сервер приложений, выгрузка в таблицы значений и далее опять обработка кодом в циклах (не все можно получить одним запросом).
А если подобная база должна работать в файловом режиме на 2-3 маломощных компьютерах? Как ускорить восстановление посделовательности и обмен данными?
Исходя из того, что при программной обработке и проведении документов нужно минимум проверок, а в большинстве случаев они должны вообще отсутствовать (как при обмене данными) мы выбрали два режима функционирования:
1. Документ проводился от руки человека (тут срабатывали интерактивные обработчики формы документа при котором максимум проверок по всевозможным вариантам);
2. Программное проведение (восстановление последовательности, обмен данными, внешнее подключение к базе, при котором программно можно все).
В первом случае, события управляемой формы ПередЗаписью(<Отказ>, <ПараметрыЗаписи>) и ПриЗаписи (Отказ) срабатывают только интерактивно (иначе кнопку провести "нажала рука пользователя"). И поскольку при "ручном" нажатии на кнопку можно не только провести (записать без проведения, можно отменить проведение, пометить на удаление), тут срабатывает куча системных обработчиков событий формы, объекта документа (еще не забудем про подписки на события, куда собственно и встраиваем функционал). В таком режиме на клиентской стороне можно использовать возможность задания вопросов пользователю до начала транзакции записи, обращаясь периодически на сервер для забора данных с целью "кто не успел, тот опоздал" проводить анализ данных и, главное что-то записывать в регистры. Дальше возвращаемся на клиент и снова можем задать вопрос, обновить форму и.т.д.
Самое главное, чтоб документ на сервере в момент проведения в процедуре ОбработкаПроведения() , "знал" кто его проводит человек или компьютер (конечно это сильно упрощенно, до этого момента вся серверная часть должна быть подготовлена обработчиками формы либо программными обработчиками второго режима. Обратимся к описанию обработчиков формы (использованы материалы статей :
Модуль формы ПередЗаписью(Отказ, ПараметрыЗаписи)
Выполняется на клиенте!
Этот обработчик следует использовать, если необходимо организовать диалог с пользователем перед тем, как записать объект. Запросить дополнительную информацию, предупредить о чём-либо, дать возможность отказаться и т.п.
Второй параметр этого обработчика «ПараметрыЗаписи» имеет тип «Структура». У документов эти параметры заполняются системой предопределенными параметрами РежимЗаписи, РежимПроведения. Можно добавить свои.
Эти параметры передаются между событиями формы ПередЗаписьюНаСервере, ПриЗаписиНаСервере, ПослеЗаписиНаСервере, где их можно благополучно использовать. Например, при записи регистра сведений, надо сделать запись в другой регистр сведений старое значение ресурса. Можно передать старое значение в эти самые параметры и уже в ПриЗаписиНаСервере сделать запись в другой регистр.
Создадим тестовый пример. В тестовой конфигурации 8.3 будет один документ "заказ покупателя"

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

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

← Вернуться

×
Вступай в сообщество «passport13.com»!
ВКонтакте:
Я уже подписан на сообщество «passport13.com»