записать и провести в 1с в чем разница
Записать и провести в 1с в чем разница
8plus.ru — это отчеты и обработки 1С только версии 8 и только для типовых конфигураций!
Между документами в 1С и в жизни можно провести аналогию.
в 1C | в жизни |
Вы создали документ, заполнили некоторые поля и закрыли, не сохранив. | Взяли бланк документа, начали заполнять его, опустили в шредер. |
Вы создали документ, заполнили некоторые поля и сохранили. Документ записан. | Взяли бланк документа и заполнили его. Положили в папку. |
Вы открыли созданный ранее документ, стали вносить в него изменения. Документ открыт для редактирования и для остальных заблокирован. | Вы взяли документ из папки, взяли корректор, стали вносить в него изменения. Все ходят и спрашиваю: кто взял документ? |
Провели документ. | Подписали документ. Положили в папку. |
Сделали документ не проведенным (распровели) | Вы взяли подписанный документ из папки, аккуратно стерли печать и подпись. Положили в папку. |
Вы открыли проведенный документ, стали вносить в него изменения. | Вы взяли подписанный документ из папки, взяли корректор, стали вносить в него изменения. =) |
Пометили не проведенный документ на удаление. | Взяли не подписанный документ из папки, скомкали и бросили в корзину. |
Пометили проведенный документ на удаление. | Взяли подписанный документ из папки, скомкали и бросили в корзину. Спрашивается — зачем? |
Сняли с документа пометку на удаление. | Вытащили скомканный документ из корзины и разгладили его. |
Окончательно удалили помеченный на удаление документ. | Вытащили скомканный документ из корзины, разгладили его, опустили в шредер. |
Для тех, кому ближе суровый технический язык:
в 1С | в базе данных |
Вы создали документ, заполнили некоторые поля и закрыли, не сохранив. | Ничего не произошло. |
Вы создали документ, заполнили некоторые поля и сохранили. Документ записан. | В базу данных записан объект, который на учет никак не влияет. |
Вы открыли созданный ранее документ, стали вносить в него изменения. Документ открыт для редактирования и для остальных заблокирован. | Объект заблокирован в базе для изменения, открывшим его пользователем. |
Провели документ. | Документ сформировал движения по регистрам (изменил остатки), что самым прямы образом отразилось в учете. Кстати, все что ни делается в программе, все сводится к изменению регистров. |
Сделали документ не проведенным (распровели) | Движения по регистрам удалены. Он стал обычным объектом базы (просто записанным). |
Пометили не проведенный документ на удаление. | Объект в базе отмечен для дальнейшей попытки его окончательно удалить. |
Пометили проведенный документ на удаление. | Объект в базе отмечен для дальнейшей попытки его окончательно удалить. При этом его движения по регистрам удалены. Он снова не влияет на учет, как будто и не было его. |
Сняли с документа пометку на удаление. | С объекта в базе сняли пометку. Он стал обычным объектом базы (просто записанным). |
Окончательно удалили помеченный на удаление документ. | Объект исчез навсегда. |
Кстати, проведение документа в 8-ке может быть оперативным и неоперативным.
Чем отличается проведенный документ от записанного в 1С:УНФ
Новички в работе с 1С:Управление нашей фирмой часто задаются вопросом чем документ с зеленой галочкой отличается от такого же документа без галочки.
Мы составили простую и наглядную табличку и подробно объяснили что означает каждое действие с документом.
Вид в сервисе | Что сделали в 1С:УНФ | Что произошло в жизни (на примере заявки на доставку заказа из магазина) | Как это отразилось в базе данных 1С |
Окончательно удалили помеченный на удаление документ. | Вытащили скомканную заявку из корзины, разгладили ее и потом опустили ее в шредер (измельчитель бумаги) | Объект исчез навсегда |
Доверить процесс обслуживания следует специалистам, давно работающим на рынке автоматизации, которые несут гарантию за проданный товар, оказанные услуги. Например, нам 🙂
Окажем услуги с оплатой по факту, если результат вас устроит.
Без предоплаты.
Посмотрите другие полезные материалы по теме «УНФ»
У нас вот такие Тарифы по обслуживанию 1С:УНФ
Документы в 1С 8. Примеры работы средствами встроенного языка
В статье приводятся практические примеры работы с документами в языке 1С. Рассматриваются приемы работы с объектной моделью — создание, редактирование, удаление документов, а также типовые запросы для выборки документов по различным условиям. Для удобства пользуйтесь оглавлением.
Содержание
Немного о документах
Документы — краеугольный камень в построении большинства учетных систем средствами платформы 1С Предприятие. Они предназначены преимущественно для отражения совершенных хозяйственных операций, а также для последующего просмотра и редактирования.
Виды документов, которые создаются в конфигураторе на этапе проектирования прикладного решения, в основном соответствуют своим бумажным аналогам — приходным накладным, документам продажи или актам об оказании услуг, и др. Для каждой отрасли и вида учета набор таких документов и их реквизитный состав может отличаться.
Помимо записи о произошедшей хозяйственной операции, документы используются для фиксации изменений в учетных регистрах (т.н. проведение), а также позволяют сформировать печатные формы. Вообще, спектр применения документов в платформе 1С очень обширный, и позволяет реализовывать самые различные механизмы — биллинг, учет коммунальных платежей, сложные расчеты, учет ценных бумаг и активов, и многое другое.
Документы описываются в системе 1С двумя стандартными реквизитами — Номер и Дата. Использование номера не является обязательным — можно указать длину номера 0, и в этом случае платформа отключит механизм нумерации документов. В этом случае разработчик может сам предусмотреть реквизиты для формирования представления документа и для проверки уникальности. Но на практике чаще всего номер не отключается.
Документы в 1С 8.3
Реквизиты документа
Документы являются основным объектом метаданных в конфигурациях на 1С. Документ используется для отражения хозяйственных операций предприятия. Например, приход товара на склад, продажа товара, поступление денег в кассу и т.п. Можно сказать, что документ в 1С — это аналог бумажного документа, который используется на предприятии, однако могут быть и специфические виды документов, не имеющие бумажных аналогов.
В конфигурации документы расположены в узле Документы:
При создании нового документа открывается окно со свойствами документа, которые сгруппированы по закладкам:
Для каждого объекта метаданных Документ в базе данных будет создана своя таблица. В данной таблице будут колонки для хранения даты, номера, пометки удаления, признака проведения и некоторых других служебных реквизитов. Если на закладке Данные добавить реквизиты, то для каждого реквизита в таблице будет создана своя колонка:
Таблица базы данных:
Ссылка | Дата | Номер | Поставщик | Склад |
---|
В одной строке (записи) таблицы хранятся сведения об одном документе. Если в пользовательском режиме создать несколько документов, то таблица будет выглядеть следующим образом:
Ссылка | Дата | Номер | Поставщик | Склад |
---|---|---|---|---|
8eae102c-86d5-11eb-80a3-e0d55e4e2669 | 20.03.2021 20:00:04 | 000000001 | Алхимов | Основной |
8eae102d-86d5-11eb-80a3-e0d55e4e2669 | 20.03.2021 20:00:25 | 000000002 | ИП Иванов | Основной |
Табличная часть документа
Один документ может содержать в себе некоторый список однотипных данных. Например, в приходной накладной может быть 10 разных товаров. Для хранения таких данных предназначены табличные части.
Табличная часть описывается на закладке Данные. Указывается имя табличной части и реквизиты табличной части:
Документ может иметь множество табличных частей. Для каждой из них в базе данных будет создана своя таблица с колонками Ссылка, НомерСтроки и по одной колонке для каждого реквизита табличной части. Через поле Ссылка выполняется связь с основной таблицей документа. В таблице для табличной части в поле Ссылка будет храниться такой же идентификатор, как и в поле Ссылка основной таблицы документа.
Ссылка | НомерСтроки | Товар | Количество |
---|---|---|---|
8eae102c-86d5-11eb-80a3-e0d55e4e2669 | 1 | Смартфон | 2 |
8eae102c-86d5-11eb-80a3-e0d55e4e2669 | 2 | Клавиатура | 4 |
Формы документа
На закладке Формы для документа можно создать свои формы документа, списка или выбора:
Чтобы указать форму как основную ее нужно выбрать в специальных полях в верхней части закладки:
В этом случае при открытии формы документа будет использоваться созданная в конфигураторе форма. А для формы списка и формы выбора будут использоваться сгенерированные платформой формы.
Проведение документов
Запись документа — это процесс переноса значений реквизитов в таблицы базы данных.
Запись бывает трех видов:
Проведение документа — это запись документа в режиме проведения. Как правило при проведении документа формируются движения по регистрам. Также при проведении будет вызываться обработчик ОбработкаПроведения из модуля объекта. У документа есть реквизит Проведен, который равен Истина, если документ проведен и Ложь, если не проведен.
Движения документа — это набор записей регистра (накопления, бухгалтерии, расчета, сведений), который подчинен регистратору (документу).
Состав движений документа настраивается на закладке Движения. Там же можно разрешить или запретить проведение документа. Если проведение запрещено, то у документа не будет кнопки «Провести», при записи не будет вызываться обработка проведения в модуле объекта:
Для примера сформируем движения по регистру ОстаткиТоваров. Регистр имеет следующую структуру:
Тип изменения «Товар» — СправочникСсылка.Товары. Тип ресурса «Количество» — число, 15, 3. Аналогичные реквизиты есть у табличной части документа.
В модуле объекта документа нужно добавить процедуру ОбработкаПроведения и заполнить ее следующим образом:
Через коллекцию Движения можно обратиться к регистру. Сначала у него устанавливается признак Записывать = Истина, чтобы после выхода из обработки проведения движения были записаны в регистр. Затем в цикле перебирается табличная часть и для каждой строки добавляется новая запись в регистр ОстаткиТоваров.
В свойствах документа есть свойство Запись движений при проведении. Чтобы открыть свойства нужно в дереве метаданных в контекстном меню документа выбрать пункт «Свойства».
Если данное свойство равно Записывать выбранные, то после обработки проведения будут записаны только те наборы записей, у которых был установлен признак Записывать = Истина. Если Записывать модифицированные, то признак Записывать = Истина можно не устанавливать вручную. Любые измененные в обработке проведения наборы записей будут записаны. Платформа автоматически установит им признак Записывать = Истина при их изменении.
После записи документа свойство Записывать будет возвращено в исходное состояние, причем даже если запись документа не была завершена.
Если в обработке проведения установить параметр Отказ = Истина, то проведение не будет выполнено, движения не будут записаны в регистр и при проведении будет выдано исключение: «Не удалось провести «Приход товара 000000002 от 20.03.2021 20:00:25″!».
Отмена проведения документов
При записи документа в режиме отмены проведения выполняется удаление движений по регистрам. До непосредственного удаления движений вызывается обработчик ОбработкаУдаленияПроведения в модуле объекта документа. В данном обработчике можно прописать свой алгоритм действий при отмене приведения документа.
На закладке Движения можно настроить будут ли автоматически удалять движения при отмене проведения или нет. За это отвечает свойство УдалениеДвижений:
Свойство УдалениеДвижений может принимать три значения:
При создании нового документа в конфигураторе автоматически устанавливается Удалять автоматически при отмене проведения.
Если выбрано значение Не удалять автоматически, то в обработчике ОбработкаУдаленияПроведения нужно очистить движения программно:
Программирование в 1С для всех
В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С, а также узнаем, как программно открыть основную форму документа.
Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.
Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».
Создать документ 1С программно
В моей учебной конфигурации 1С имеется простенький документ с небольшим набором реквизитов, а также с одной табличной частью.
Для этой команды, я сделаю обработчики на клиенте и на сервере.
В серверном обработчике мы и напишем код, который и будет создавать документ..
В этом коде я обратился к менеджеру документа ПриходТовара (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.
Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.
Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.
В принципе, этого вполне достаточно, чтобы наш документ существовал. Но создав его при помощи функции СоздатьДокумент, мы не записали его непосредственно в базу. После выполнения кода выше, ни какого документа в базе не появится!
Записать документ 1С программно
Для того, чтобы документ 1С появился в базе, его необходимо записать. Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.
Все теперь документ появится в базе.
Мы его можем создать, и это будет абсолютно пустой документ, без всяких реквизитов и без заполненной табличной частью.
Для того, чтобы что-то в нем появилось, нам необходимо заполнить этот документ.
Заполнить документ 1С программно
У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.
Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.
Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.
Мы будем в цикле обходить эту таблицу значений, создавая в каждой итерации цикла новую строку табличной части документа и заполняя её данными.
В этом коде я обращаюсь к табличной части документа-объекта посредством точки (строка ДокПриход.СписокТоваров), получаю табличную часть этого объекта, и используя метод Добавить, создаю новую строку табличной части. А потом заполняю реквизиты табличной части документа данными из таблицы значений. Поскольку у нас названия реквизитов табличной части и таблицы значений совпадают, мы можем упростить код заполнения табличной части, используя метод ЗаполнитьЗначенияСвойств.
Всё! Мы можем смело создать документ, который будет заполнен.
Провести документ 1С программно
Все документы, которые мы создавали ранее были не проведены. Если мы хотим, чтобы документ был записан проведенным, то необходимо записывать его немного по-другому. Если раньше мы использовали метод Записать объекта документа без параметров, то теперь необходимо применять параметры этого метода. Данный метод имеет следующий синтаксис.
Записать( , )
Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:
Т.е. мы можем записать документ, провести документ и отменить проведение документа.
Во втором параметр РежимПроведения необходимо указывать системное перечисление РежимПроведениеДокумента, которое может принимать следующие значения:
Т.е. мы можем провести документ как в оперативном режиме, так и в неоперативном. Если этот параметр не указан, то документ проводится в неоперативном режиме.
Изменим запись нашего документа: пусть он проводится в оперативном режиме.
Теперь документ будет сразу проведен при создании.
Изменить документ 1С программно
Часто возникают задачи, когда нужно поменять уже созданный документ, или провести документ, который был только записан. Для этого необходимо из ссылки на документ получить его объект. Для примера, я опять создам «за кадром» новую обработку, на форме которой размещу ссылку на документ, поле с типом Склад и команду. При выполнение этой команды, будет меняться склад документа, а потом этот документ будет проводиться.
Как и в прошлый раз, я создам обработчик команды на сервере и на клиенте. И в серверном обработчике напишу код получения объекта из ссылки документа.
Мы получили объект документа, используя метод ссылки на документ ПолучитьОбъект. Имейте в виду, что этот метод можно использовать или на сервере, или клиенте в режиме толстого клиента. Переменная, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.
Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.
Открыть документ 1С программно
Научимся открывать документ 1С программно. Для этого мы доработаем предыдущую обработку: после изменения документа откроем основную форму этого объекта для просмотра и возможного редактирования. Для открытия формы документа, мы будем использовать метод ОткрытьФорму, в котором будем использовать параметр Ключ, где укажем ссылку на открываемый документ.
Если мы сейчас выполним этот код, то откроется форма документа, с уже измененным реквизитом Склад.
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
6 thoughts on “ Программная работа с документами в 1С ”
Одинаковые имена для реквизитов и элементов — это норма. Любую типовую открой и посмотри, как там сделано.
И о какой ошибке округления идет речь? Ты что здесь округлять собрался? В момент записи значения в поле Сумма округление производится автоматически в соответствие с заданной точностью в Конфигураторе.
По поводу книг. Читал книгу «Программировать в 1С за 11 шагов», книга написана очень понятным и доступным языком. Это первая книга, читая которую, я начал что-то понимать в 1С.
Ильяс, спасибо за статью. Что касается падежей — это не самое страшное. Плохо то, что сразу нарисовываются какие — то «умники», которых будут волновать округления и падежи. А вот если бы в статье о программной работе с документами учитывались округления, попытки, исключения — это была бы действительно статья типичного 1С — ника, которых полно и толку от которой — ноль. Не обращай на таких внимания. Основная масса, к сожалению, такая.
Падежи можно, конечно, и пропустить. Хотя, лучше все эти склонения и жиши перепроверить. Читающие оценят. Однако, ошибка в округлении — выдаёт безалаберность в прикладной области. Это важно. Автору — радуйтесь поддержке, но обращайте особое внимание на критику, она делает Вас лучше.
Ты где здесь ошибку в округлении нашел?
Ну и запятые проверь у себя в сообщении.