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

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

  • автор:

Требования к проведению документов

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

2.1. Регистрация события в системе (т.е. отражение его в учете) выполняется с помощью проведения документа. Большинство документов должны проводиться (свойство Проведение установлено в значение Разрешить ).

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

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

2.2. Если жизненный цикл документа состоит из нескольких этапов, которые соответствуют этапам некоторого процесса, то для описания этих этапов у документа могут быть введены дополнительные статусы. Например, документ Заказ клиента может иметь статусы: Не согласован , К обеспечению , Закрыт ; документ Расходный кассовый ордер – сначала зарегистрирован в журнале регистрации кассовых ордеров ( КО-3 ), затем подписан главным бухгалтером (руководителем), передан в кассу, затем зарегистрирован в Кассовой книге, подписан главным бухгалтером (руководителем).

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

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

Примеры поведения документов с многоэтапным отражением в учете:

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

    2.3. Исключение из этого правила («большинство документов должны проводиться») составляют

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

    Такие документы не проводятся.

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

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

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

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

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

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

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

    5. Непроведенные и помеченные на удаление документы не должны иметь активных движений.

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

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

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

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

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

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

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

    Исключения из этого правила описаны в п. 7.1.2.

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

    Некоторые приемы для достижения такого поведения

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

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

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

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

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

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

    См. также

    • Имена объектов метаданных в конфигурациях
    • Порядок записи движений документов
    • Самодостаточность регистров

    Документы

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

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

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

    Документы

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

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

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

    Документы

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

    Документы

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

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

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

    Документы

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

    Документы

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

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

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

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

    Документы

    Форма списка

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

    Документы

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

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

    Документы

    Форма выбора

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

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

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

    Документы

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

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

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

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

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

    Создать документ 1С программно

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

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

    Для программного создания документов, я сделал обработку. У этой обработки , я разработал форму и создал команду управляемой формы, которую назвал «Создать документ прихода», поместив её на форму обработки.

    Форма обработки для создания документа

    Для этой команды, я сделаю обработчики на клиенте и на сервере.

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

    В серверном обработчике мы и напишем код, который и будет создавать документ..

    &НаСервере Процедура СоздатьДокументПриходаНаСервере() ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); КонецПроцедуры &НаКлиенте Процедура СоздатьДокументПрихода(Команда) СоздатьДокументПриходаНаСервере(); КонецПроцедуры 

    В этом коде я обратился к менеджеру документа ПриходТовара (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

    Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); ДокПриход.Дата = ТекущаяДата(); 

    Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.

    Свойство автонумерация документа

    В принципе, этого вполне достаточно, чтобы наш документ существовал. Но создав его при помощи функции СоздатьДокумент, мы не записали его непосредственно в базу. После выполнения кода выше, ни какого документа в базе не появится!

    Записать документ 1С программно

    Для того, чтобы документ 1С появился в базе, его необходимо записать. Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); ДокПриход.Дата = ТекущаяДата(); ДокПриход.Записать(); 

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

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

    Создание пустого документа

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

    Заполнить документ 1С программно

    У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.

    Создание реквизита управляемой формы

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

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); ДокПриход.Дата = ТекущаяДата(); ДокПриход.Склад = Склад; ДокПриход.Комментарий = "#Документ создан автоматически обработкой" ДокПриход.Записать(); 

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

    Таблица значений на управляемой форме

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

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); ДокПриход.Дата = ТекущаяДата(); ДокПриход.Склад = Склад; ДокПриход.Комментарий = "#Документ создан автоматически обработкой"; Для Каждого стрТЗ Из ТЗ Цикл НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить(); НовСтрТЧДокумента.Номенклатура = стрТЗ.Номенклатура; НовСтрТЧДокумента.Количество = стрТЗ.Количество; НовСтрТЧДокумента.Цена = стрТЗ.Цена; НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена; КонецЦикла; ДокПриход.Записать(); 

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

    Для Каждого стрТЗ Из ТЗ Цикл НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить(); ЗаполнитьЗначенияСвойств(НовСтрТЧДокумента,стрТЗ); НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена; КонецЦикла; 

    Всё! Мы можем смело создать документ, который будет заполнен.

    Создание и заполнение документа 1С

    Создание и заполнение документа 1С

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

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

    Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:

    РежимЗаписиДокумента.Запись РежимЗаписиДокумента.Проведение РежимЗаписиДокумента.ОтменаПроведения

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

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

    РежимПроведенияДокумента.Неоперативный РежимПроведенияДокумента.Оперативный

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

    Изменим запись нашего документа: пусть он проводится в оперативном режиме.

    ДокПриход.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Оперативный); 

    Теперь документ будет сразу проведен при создании.

    Изменить документ 1С программно

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

    Обработка изменения документа

    Как и в прошлый раз, я создам обработчик команды на сервере и на клиенте. И в серверном обработчике напишу код получения объекта из ссылки документа.

    &НаСервере Процедура ИзменитьДокументНаСервере() ДокОбъект = ДокументПрихода.ПолучитьОбъект(); КонецПроцедуры &НаКлиенте Процедура ИзменитьДокумент(Команда) ИзменитьДокументНаСервере(); КонецПроцедуры 

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

    Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.

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

    Открыть документ 1С программно

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

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

    Если мы сейчас выполним этот код, то откроется форма документа, с уже измененным реквизитом Склад.

    Обработка изменения документа

    Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

    Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

    1. Книга написана понятным и простым языком — для новичка.
    2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    3. Научитесь понимать архитектуру 1С;
    4. Станете писать код на языке 1С;
    5. Освоите основные приемы программирования;
    6. Закрепите полученные знания при помощи задачника;

    О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

    1. Очень доступный и понятный язык изложения
    2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
    3. Поймете идеологию управляемого приложения 1С
    4. Узнаете, как разрабатывать управляемое приложение;
    5. Научитесь разрабатывать управляемые формы 1С;
    6. Сможете работать с основными и нужными элементами управляемых форм
    7. Программирование под управляемым приложением станет понятным

    Промо-код на скидку в 15% — 48PVXHeYu

    Вступайте в мои группы:

    10 Replies to “Программная работа с документами в 1С”

    Евгений :

    Ошибки в падежах и склонениях. Типично для 1Совца.
    Судя по этой статье, здесь много что выкинуто за кулису и непонятно. Если и книжки так написаны, то зачем они нужны, тем более новичкам.
    Это классика: 99% «профессоров» пишут книжки для себя, хотя утверждают обратное. Молодец, написал сам себе памятку. Подсчёт суммы в первом варианте неправильный из-за округления.
    Всё названо одинаково и реквизиты и элементы….всё по 1Совски, чтобы вообще нихера не понять.
    До УЧИТЕЛЯ дорасти надо, хотя при капитализме каждый суслик мнит себя агрономом.

    Одинаковые имена для реквизитов и элементов — это норма. Любую типовую открой и посмотри, как там сделано.
    И о какой ошибке округления идет речь? Ты что здесь округлять собрался? В момент записи значения в поле Сумма округление производится автоматически в соответствие с заданной точностью в Конфигураторе.

    Владимир :

    По поводу книг. Читал книгу «Программировать в 1С за 11 шагов», книга написана очень понятным и доступным языком. Это первая книга, читая которую, я начал что-то понимать в 1С.

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

    Падежи можно, конечно, и пропустить. Хотя, лучше все эти склонения и жиши перепроверить. Читающие оценят. Однако, ошибка в округлении — выдаёт безалаберность в прикладной области. Это важно. Автору — радуйтесь поддержке, но обращайте особое внимание на критику, она делает Вас лучше.

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

    Как обработкой создать сразу много документов?чтобы данные табЧасти заполнялись например,из самописного регистра или табличногодок-та?на каждую строчку новый документ?

    Екатерина :
    Ильяс, спасибо за статью! Всё доступно и понятно!

    «Программировать в 1С за 11 шагов», прочел! Как пишут выше, что книга «ниочем и все убрано за кулису», все не так! Для меня книга как шпаргалка, и написана легче для понимания чем «ХрусталевРадченко», плюсом короткие видосы на канале — в общем и целом ресурс для начинающего хороший отличный. Ильяс, СПАСИБО ! очень помогает твой труд.

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

    Вступайте в мою группу помощник программиста.
    В ней мы обсуждаем программирование в 1С.

    Полный синтаксис (нажмите, чтобы раскрыть)

    Документы

    Описание:

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

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

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

    Оглавление (нажмите, чтобы раскрыть)

    • Как выбрать и упорядочить документы за период
    • Как найти документ по номеру
    • Как найти документы по реквизиту
    • Как выбрать все документы, которые не проведены и не помечены на удаление
    • Как найти подчиненные документы
    • Как перебрать (перечислить) строки табличной части документа
    • Как создать новый документ
    • Как записать документ
    • Как провести документ
    • Как отменить проведение документа
    • Как внести изменения в документ по ссылке
    • Как получить пустую ссылку типа документ
    • Как скопировать существующий документ
    • Как заблокировать документ перед изменениями
    • Как создать новый документ на основании другого объекта
    • Как пометить на удаление документ
    • Как найти и изменить программно движения документа по регистрам
    • Как прочитать движения документа по регистрам запросом
    • Как изменить проведенный документ, не меняя его движений (проводок)
    • Как открыть форму существующего документа по ссылке
    • Как открыть форму выбора документа и отследить её закрытие
    • Как открыть форму списка (журнал) документов и с отбором по реквизиту
    • Как открыть форму только что созданного, но ещё не записанного документа
    • Скачать и выполнить эти примеры на компьютере
    /// Как выбрать и упорядочить документы за период /// в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере() // найдём все документы поступления еды за 2014 год // упорядочив их по возрастанию даты Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить(ВыборкаДокументов.Ссылка); КонецЦикла; КонецПроцедуры /// Как найти документ по номеру в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоНомеруНаСервере() // найдём поступление еды № ВМБП-000005 за 2014 год Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата И | Номер = &ВыбНомер"; Запрос.УстановитьПараметр("НачДата", '20140101'); Запрос.УстановитьПараметр("КонДата", '20141231'); Запрос.УстановитьПараметр("ВыбНомер", "ВМБП-000005"); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Если ВыборкаДокументов.Следующий() Тогда Сообщить(ВыборкаДокументов.Ссылка); Иначе Сообщить("Документ с таким номером не существует!"); КонецЕсли; КонецПроцедуры /// Как найти документы по реквизиту в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиДокументПоРеквизитуНаСервере() // найдём все документы поступления еды // от поставщика ООО "Поле" Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Поставщик |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Поставщик = &ВыбПоставщик |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; Запрос.УстановитьПараметр( "ВыбПоставщик", Справочники.Поставщики.НайтиПоНаименованию("ООО ""Поле""") ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Поставщик ); КонецЦикла; КонецПроцедуры /// Как выбрать все документы, которые не проведены и /// не помечены на удаление в 1с 8.3, 8.2 &НаСервере Процедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере() // найдём не проведенные и не помеченные на удаление // документы поступления еды Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка, | Проведен, | ПометкаУдаления |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Проведен = ЛОЖЬ И | ПометкаУдаления = ЛОЖЬ |УПОРЯДОЧИТЬ ПО | Дата ВОЗР"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДокументов = РезультатЗапроса.Выбрать(); Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + " " + ВыборкаДокументов.Проведен + " " + ВыборкаДокументов.ПометкаУдаления ); КонецЦикла; КонецПроцедуры /// Как найти подчиненные документы в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиПодчиненныеДокументыНаСервере() // Рассмотрим работу с подчиненными (связанными) документами // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный. // Документ СчетФактураПолученный вводится на основании документа // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной // по отношению к поступлению. // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном // документе через табличную часть ДокументыОснования. // Почему через табличную часть? Потому что один документ может зависеть // (быть подчиненным) сразу от нескольких родителей (оснований). // Пример №1. // У нас есть ссылка на поступление товаров и услуг. Требуется найти // счёт-фактуры, которые были введены на основании этого поступления. // В дереве подчиненности эти фактуры будут подчинены (зависимы) от // документа поступления. Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Ссылка |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.ДокументОснование = | &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру("0000-000004", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка; Сообщить(ПодчиненнаяФактура); КонецЦикла; // Пример №2. // У нас есть ссылка на счет-фактуру полученную. Требуется найти, // документы, на основании которых она была введена (родителей). Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ДокументОснование |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.Ссылка = | &ВыбСчетФактура"; Запрос.УстановитьПараметр("ВыбСчетФактура", Документы.СчетФактураПолученный.НайтиПоНомеру("0000-000007", '20160101') ); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование; Сообщить(РодительФактуры); КонецЦикла; КонецПроцедуры /// Как перебрать (перечислить) строки табличной части документа в 1с 8.3, 8.2 &НаСервере Процедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере() // У документа ПоступлениеЕды есть табличная часть 'Еда'. // У этой табличной части есть колонки: Номенклатура, Количество, // Сумма. ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // перечислим строки табличной части этого документа // при помощи объектной техники Для Каждого Строка Из ПоступлениеСсылка.Еда Цикл Сообщить( Строка.Номенклатура.Наименование + " " + Строка.Количество + " шт. " + Строка.Сумма + " руб." ); КонецЦикла; // при помощи запроса Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеЕдыЕда.Номенклатура, | ПоступлениеЕдыЕда.Количество, | ПоступлениеЕдыЕда.Сумма |ИЗ | Документ.ПоступлениеЕды.Еда КАК ПоступлениеЕдыЕда |ГДЕ | ПоступлениеЕдыЕда.Ссылка = &ВыбПоступление"; Запрос.УстановитьПараметр("ВыбПоступление", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( ВыборкаДетальныеЗаписи.Номенклатура.Наименование + " " + ВыборкаДетальныеЗаписи.Количество + " шт. " + ВыборкаДетальныеЗаписи.Сумма + " руб." ); КонецЦикла; КонецПроцедуры &НаСервере Процедура СозданиеИИзменениеДокументовНаСервере() /// Как создать новый документ в 1с 8.3, 8.2 // создадим новый документ поступление еды Поступление = Документы.ПоступлениеЕды.СоздатьДокумент(); // заполним шапку документа Поступление.Дата = ТекущаяДата(); Поступление.Поставщик = Справочники.Поставщики.НайтиПоНаименованию( "ООО ""Кузбас""" ); Поступление.Склад = Справочники.Склады.НайтиПоНаименованию( "Основной" ); // заполним табличную часть Еда НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; /// Как записать документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Запись); /// Как провести документ в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.Проведение); /// Как отменить проведение документа в 1с 8.3, 8.2 Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения); /// Как внести изменения в документ по ссылке в 1с 8.3, 8.2 // зачастую у нас есть только ссылка на документ // и чтобы по ней получить сам объект документа // для изменения нужно вызывать метод ПолучитьОбъект // найдём документ продажа еды под номером ВМБП-000001 // для лаконичности примера воспользуемся не запросом, // а объектной техникой СсылкаНаПродажу = Документы.ПродажаЕды.НайтиПоНомеру( "ВМБП-000001", '20141231' // поиск среди документов 2014 года ); // нам вернули не сам документ, а ссылку (указатель) на него // проверим - нашёлся ли вообще документ Если СсылкаНаПродажу.Пустая() Тогда Сообщить("Документ не найден."); Иначе // получим сам документ по ссылке Продажа = СсылкаНаПродажу.ПолучитьОбъект(); // вот его уже можно изменять и записывать Продажа.Клиент = Справочники.Клиенты.НайтиПоНаименованию( "Пётр" ); Продажа.Записать(); КонецЕсли; /// Как получить пустую ссылку типа документ в 1с 8.3, 8.2 ПустаяСсылка = Документы.ПродажаЕды.ПустаяСсылка(); Если ПустаяСсылка.Пустая() Тогда Сообщить("Ссылка действительно пустая."); КонецЕсли; /// Как скопировать существующий документ в 1с 8.3, 8.2 // скопируем найденный документ на продажу и запишем // как новый документ от сегодняшнего числа КопияПродажи = СсылкаНаПродажу.Скопировать(); КопияПродажи.Дата = ТекущаяДата(); КопияПродажи.Комментарий = "Копия документа " + Строка(СсылкаНаПродажу); // запишем и проведём документ КопияПродажи.Записать(РежимЗаписиДокумента.Проведение); /// Как заблокировать документ перед изменениями /// в 1с 8.3, 8.2 // выполним блокировку документа // от изменения другими режимами или пользователями Продажа = СсылкаНаПродажу.ПолучитьОбъект(); Если Не Продажа.Заблокирован() Тогда Продажа.Заблокировать(); // тут идёт какой-то долгий алгоритм // в результате которого мы меняем // заблокированный элемент Продажа.Комментарий = "Документ изменён."; Продажа.Записать(); // и только потом освобождаем его // для других режимов и пользователей Продажа.Разблокировать(); КонецЕсли; /// Как создать новый документ на основании другого объекта /// в 1с 8.3, 8.2 // создадим документ продажа на основании поступления // скопировав из поступления табличную часть // в модуле документа ПродажаЕды я определил процедуру // ОбработкаЗаполнения, которая обрабатывает ситуации // когда мы заполняем один элемент на основании // данных другого (см. в базе для скачивания) ПродажаНаОсновании = Документы.ПродажаЕды.СоздатьДокумент(); ПродажаНаОсновании.Дата = ТекущаяДата(); ПродажаНаОсновании.Комментарий = "Документ введён на основании " + Строка(Поступление.Ссылка); ПродажаНаОсновании.Заполнить(Поступление.Ссылка); ПродажаНаОсновании.Записать(РежимЗаписиДокумента.Проведение); /// Как пометить на удаление документ в 1с 8.3, 8.2 ПродажаНаОсновании.УстановитьПометкуУдаления(Истина); // метод Записать вызывать не нужно КонецПроцедуры /// Как найти и изменить программно движения документа /// по регистрам в 1с 8.3, 8.2 &НаСервере Процедура КакНайтиИИзменитьДвиженияДокументаНаСервере() // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // наша задача: найти записи по регистру "ЗапасЕды" // изменить их (например, удвоим количество) // и записать вместо старых // используем объектную технику получения движений, // ведь мы будем их изменять Поступление = ПоступлениеСсылка.ПолучитьОбъект(); // получим набор записей этого документа в регистр ЗапасыЕды НаборЗаписей = Поступление.Движения.ЗапасыЕды; // прочитаем записи из базы данных НаборЗаписей.Прочитать(); Для Каждого Запись Из НаборЗаписей Цикл // выведем старые значения Сообщить( Строка(Запись.ВидДвижения) + " " + Запись.Еда + " " + Запись.Количество ); // изменим запись, удвоив количество Запись.Количество = Запись.Количество * 2; КонецЦикла; // добавим новую запись НоваяЗапись = НаборЗаписей.ДобавитьПриход(); НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию("Основной"); НоваяЗапись.Еда = Справочники.Еда.НайтиПоНаименованию("Банан"); НоваяЗапись.Количество = 3; НоваяЗапись.Период = ТекущаяДата(); // разом запишем набор записей НаборЗаписей.Записать( Истина // удалим старые движения и запишем вместо них новые ); // теперь движения документа № ВМБП-000002 отличаются от тех, // что были записаны документом при проведении // чтобы вернуть их к начальному виду - нужно // перепровести документ КонецПроцедуры /// Как прочитать движения документа по регистрам запросом /// в 1с 8.3, 8.2 &НаСервере Процедура КакПрочитатьДвиженияДокументаЗапросомНаСервере() // этот приём используется, если не требуется изменять // найденные записи // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002 ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000002", '20141231'); // мы знаем, что этот документ делает записи по // двум регистрам: // - регистр накопления "ЗапасЕды" // - регистр бухгалтерии "Хозрасчетный" // прочитаем записи по регистру "ЗапасЕды" запросом Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗапасыЕды.НомерСтроки, | ЗапасыЕды.ВидДвижения, | ЗапасыЕды.Еда, | ЗапасыЕды.Количество |ИЗ | РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды |ГДЕ | ЗапасыЕды.Регистратор = &ВыбРегистратор | |УПОРЯДОЧИТЬ ПО | ЗапасыЕды.НомерСтроки"; Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( "#" + ВыборкаДетальныеЗаписи.НомерСтроки + " " + ВыборкаДетальныеЗаписи.ВидДвижения + " " + ВыборкаДетальныеЗаписи.Еда + " " + ВыборкаДетальныеЗаписи.Количество ); КонецЦикла; КонецПроцедуры /// Как изменить проведенный документ, не меняя его /// движений (проводок) в 1с 8.3, 8.2 &НаСервере Процедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере() // бывает так, что есть проведенный документ // в уже закрытом периоде и нужно изменить // некоторое поле документа, но так чтобы // не поменялись проводки документа ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( "ВМБП-000005", '20141231'); // Изменим количество в табличной части этого документа // на 1, но чтобы проводки (движения) остались прежними Поступление = ПоступлениеСсылка.ПолучитьОбъект(); Для Каждого Строка Из Поступление.Еда Цикл Строка.Количество = 1; КонецЦикла; // если сейчас просто записать документ // изменятся его проводки, ведь он уже проведён // но если установить флаг Загрузка Поступление.ОбменДанными.Загрузка = Истина; // то можно записать проведенный документ // без повторного проведения Поступление.Записать(); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьПродажуПоНомеру(Номер, Интервал) Возврат Документы.ПродажаЕды.НайтиПоНомеру( Номер, Интервал ); КонецФункции /// Как открыть форму существующего документа /// по ссылке в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСуществующегоДокумента(Команда) СсылкаНаДокумент = ПолучитьПродажуПоНомеру("ВМБП-000006", '20141231'); ПараметрыФормы = Новый Структура("Ключ", СсылкаНаДокумент); ОткрытьФорму( "Документ.ПродажаЕды.ФормаОбъекта", // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму выбора документа и /// отследить её закрытие в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуВыбораДокумента(Команда) ОповещениеОЗакрытии = Новый ОписаниеОповещения("ПослеВыбораДокумента", ЭтотОбъект); ОткрытьФорму( "Документ.ПродажаЕды.ФормаВыбора". ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораДокумента(Результат, Параметры) Экспорт Если Результат <> Неопределено Тогда Сообщить("Был выбран документ " + Результат); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция НайтиПоставщикаПоИмени(Имя) Возврат Справочники.Поставщики.НайтиПоНаименованию( Имя ); КонецФункции /// Как открыть форму списка (журнал) документов и /// с отбором по реквизиту в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуСпискаДокументовСОтбором(Команда) // откроем список поступлений, оставив // только те, что от поставщика ООО "Поле" ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Поставщик", НайтиПоставщикаПоИмени("ООО ""Поле""")); ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора); ОткрытьФорму( "Документ.ПоступлениеЕды.ФормаСписка", ПараметрыФормы ); КонецПроцедуры /// Как открыть форму только что созданного, но ещё /// не записанного документа в 1с 8.3, 8.2 &НаКлиенте Процедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда) // получаем форму нового документа ФормаНовогоДокумента = ПолучитьФорму( "Документ.ПоступлениеЕды.ФормаОбъекта". Истина); // делаем копию её данных (так как напрямую их менять // нельзя) КопияДанныхФормы = ФормаНовогоДокумента.Объект; // заполняем эти данные на сервере ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы); // копируем заполненные данные в исходную форму КопироватьДанныеФормы(КопияДанныхФормы, ФормаНовогоДокумента.Объект); // показываем форму нового заполненного // документа пользователю ФормаНовогоДокумента.Открыть(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы) // преобразуем данные формы в документ Поступление = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ПоступлениеЕды")); // заполним только табличную часть НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( "Банан" ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550; // преобразуем документа обратно в данные формы ЗначениеВДанныеФормы(Поступление, ДанныеФормы); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

    Документы в языке 1С 8.3, 8.2 (в примерах)

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *