Вид движения перед записью

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

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

Если посмотреть свойства документа через палитру свойств, то можно увидеть два важных свойства: «Удаление движений» и «Запись движений при проведении», причем второе НЕ вынесено на закладку «Движения» окна редактирования документа.

1. Удаление движений.

Если свойство «Удаление движений» уставновлено в «Удалять автоматически», то ПЕРЕД началом проведения программа очищает все движения по регистрам. Фактически это означает запись пустого набора записей регистра с видом записи — замещение. А значит, программа выполняет код из процедур «ПередЗаписью» и «ПриЗаписи» модуля набора записей регистров.

Если для какого-либо регистра определена подписка на событие «При записи», то выполняется код из связанной процедуры.

2. Процедура «ОбработкаПроведения» модуля документа.

Обратим внимание: в начале обработки проведения у всех движений флаг модифицированности Ложь (значение возвращает метод Движения.Регистр.Модифицированность() ).

При работе с набором записей регистра (например, Движения.Регистр.Очистить() , Движения.Регистр.Добавить() и т.д.) флаг модифицированности становится Истина.

После записи движения в базу Движения.Регистр.Записать() модифицированность снова ложь.

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

3. Подписки на событие «При проведении» документа

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

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

Если регистры записываются с помощь метода Записать () , то выполняются все связанные процедуры.

4. Запись движений.

Вспомним про свойство «Запись движений при проведении» из настроек документа.

Если оно равно «Записывать модифицированные», то в базу будут записаны все движения документа, у которых флаг «Модифицированность» Истина.

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

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

И в конце р ассмотрим несколько примеров:

Пусть свойство документа «Запись движений при проведении» равно «Записывать модифицированные», а «Удаление движений» — «Не удалять автоматически».

При такой процедуре проведения документ при каждом перепроведении будет добавлять запись в регистр, записи будут множиться. Т.к. строка //*** добавляет записи в регистр, признак Модифицированности снимается.

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

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

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

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

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

Если в процессе проведения документа движения по регистрам формируются не с помощью коллекции Движения, принадлежащей внутреннему объекту , а другими способами (вручную в форме набора записей или как в примере 2 и т.д.), то на этапе 4 эти записи будут замещены. Чтобы избежать замещения в типовых базах, для документа «ОперацияБух» свойство документа «Проведение» устанавливается в «Запретить».

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

— выбрать вариант записи движений «Записывать выбранные» и убедиться, что Движения.Регистр.Записывать = Ложь

— выбрать вариант записи движений «Записывать модифицированные» и контролировать признак Модифицированности для набора записей этого регистра.

Нужно понимать, что объект, полученный по ссылке (назовем его «ОбъектДок»), и внутренний объект («ЭтотОбъект»), созданный в памяти в момент проведения, это два разных экземляра объектов.

Читать еще:  Перечень документов для аренды земли у администрации

Соответственно и коллекции движений у них будут разные. У «ОбъектаДок» коллекция движений будет включать только записанный в базу набор записей регистра, а у «ЭтогоОбъекта» — как записанные, так и добавленные и незаписанные записи. По окончании проведения (этап 4) в базу будут записаны наборы записей «ЭтогоОбъекта», причем с признаком Замещать = Истина.

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

Документы в 1С 8.3 (8.2)

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

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

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

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

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

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

Данные

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

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

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

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

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

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

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

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

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

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

Ввод на основании

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

Прочее

На вкладке Прочее можно найти очень важное свойство документа 1С (Режим блокировки):

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

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

Небольшое обзорное видео про документы в 1С для программистов:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Читайте также:

  1. I. Историко-культурная интерпретация исторического документа
  2. III. Количества осей движения.
  3. III.2 Скорости движения пассажирских поездов
  4. III.3 Скорости движения грузовых поездов
  5. Motor Maid: пионеры женского Байк-движения
  6. NB! Если в течение 1 часа у первородящих отсутствует динамика продвижения головки по родовым путям, то течение родов следует признать неудовлетворительным.
  7. Абревіатури та графічні скорочення у документах
  8. Анализ движения ОС
  9. Анализ движения рабочей силы
  10. Анализ остатков и движения денежной наличности.
  11. Анализ состава, структуры и движения нематериальных активов.
  12. Анализ численности, структуры и движения кадров

И копирование?

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

В версии 8.0 при вызове стандартной команды ввода на основании выполняется создание нового объекта и вызов в модуле этого объекта обработчика события «Обработка заполнения».

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

Надо помнить, что событие «Обработка заполнения» возникает не только при вводе на основании. Это событие будет возникать и при вызове метода объекта Заполнить().

Читать еще:  Роскомнадзор - обращения граждан и юридических лиц

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

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

Аналогичным образом выполняется копирование. При копировании вызывается обработчик события объекта «При копировании», в котором можно дополнить стандартное заполнение данных выполняемое системой при копировании объекта. Этот обработчик вызывается, как при интерактивном копировании, так и при вызове метода Скопировать().

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

Примеры обработки ввода одних объектов на основании других можно посмотреть в разделах «Ввод на основании» на странице 493 и «Объекты, введенные на основании» на странице 497.

Существует два способа, которыми можно это сделать.

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

630

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

ДокументОбъект = Документы.ПриходнаяНакладная.

Движения = ДокументОбъект.Движения.ОстаткиМатериалов; Движения.Прочитать();

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

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

В 7.7 были общие реквизиты. В версии 8.0 их нет?

Да. Было принято решение в версии 8.0 отказаться от общих реквизитов документов. Вместе с этим в версии 8.0 нет и общего журнала документов.

Теперь, если у всех документов нужно иметь аналогичные реквизиты, например, «Автор» и «Редактор», эти реквизиты следует создать вручную у каждого документа.

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

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

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

В версии 8.0 для реализации такой возможности следует использовать методы формы (а не списка значений, как это было в 7.7): ВыбратьИзСписка()и ВыбратьИзМеню().

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

Пример вызова: Выбор = ВыбратьИзСпиека(СписокЗначений, ЭлементФормы, НачальноеЗначение);

Таблица (табличный документ)

В 7.7 была процедура НоваяСтраница(). А что в 8.0?

Для того, чтобы в версии 8.0 вставить в табличный документ разделитель страниц, следует использовать метод объекта ТабличныйДокумент

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

Как сохранить табличный документ в формате Excel? У меня ничего не получается.

В версии 8.0 для сохранения табличного документа в формате, отличающемся от его исходного формата, следует использовать пункт меню Файл| Сохранить копию.

Команда меню Файл| Сохранить как. позволяет сохранять табличный документ только в «родном» формате.

Вопросы при переходе с версии 7.7

Запрос

Дата добавления: 2014-11-16 ; Просмотров: 924 ; Нарушение авторских прав? ;

Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

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

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

Читать еще:  Документы для оформления дачи в году

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

Рис. 5.12. Начало настройки движений документа

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

· Проведение. Может принимать значения Разрешить и Запретить. Определяет возможность проведения документа.

· Оперативное проведение. Так же принимает значения Разрешить и Запретить. Оперативное проведение — это проведение документа в режиме реального времени. При оперативном проведении документ получает оперативную отметку времени, которая либо соответствует текущему системному времени, либо превышает его — в том случае, если другой документ получил оперативную отметку времени, равную текущему системному времени. В итоге, документы, проведенные в оперативном режиме, выстраиваются в логически верную последовательность, соответствующую последовательности их ввода. При оперативном проведении документов производится контроль различных параметров реального времени. Например, если документ, проводимый оперативно, должен списывать какие-либо материалы, можно осуществить контроль фактического наличия материалов. Если дата документа отличается от текущей, документ может быть проведен в неоперативном режиме.

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

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

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

В окне конструктора мы можем выбрать регистр, по которому следует сформировать движение (в нашем случае — это единственный регистр ОстаткиМатериалов. Параметр Тип движения регистра может принимать одно из двух значений: Приход или Расход. В нашем случае здесь нужно оставить значение по умолчанию — то есть — Приход.

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

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

Автоматическое заполнение производится, во-первых, с учетом типов, во-вторых, с учетом названий. На рис. 5.14 вы можете видеть окно конструктора движений после выбора в поле Табличная часть табличной части Материалы и нажатия на кнопку Заполнить выражения.

Рис. 5.14. Результаты автоматического заполнения выражений

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

Выделим поле ЦентрОтветственности. Ему соответствует реквизит документа ОтветственныйСотрудник. Для того, чтобы подставить реквизит в поле, достаточно сделать по нему двойной щелчок. На рис. 5.15 вы можете видеть результат заполнения поля ЦентрОтветственности.

Рис. 5.15. Заполнение поля ЦентрОтветственности

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

Сейчас работа с конструктором движений завершена, нажмем на кнопку ОК. Будет сформирована процедура, которая сработает при проведении документа, рис. 5.16.

Рис. 5.16. Процедура ОбработкаПроведения, сформированная автоматически

Ниже приведен текст процедуры:

Процедура ОбработкаПроведения(Отказ, Режим)

// Данный фрагмент построен конструктором.

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

Для Каждого ТекСтрокаМатериалы Из Материалы Цикл

Ссылка на основную публикацию
Adblock
detector