Как распровести документ в 1с
или просто — тупо , получить объект по ссылке, изменить что надо, а потом перепровести все документы .
(3)убираешь автоудаление движений и глумишься как угодно
ну и чево.. далее..чему там ехать? или этот реквизит на чего нибудь влияет?
(3) так поменяй реквизит и запиши в режиме записи, а не проведения. Док изменится, а движения — нет. И распроводить не надо.
если тупо )
.Записать(РежимЗаписиДокумента.Запись);
т.е. сначала делаю отмену проведения, потом изменяю реквизит, и делаю записать уже с проведением
(0) Поставить для документа «Не удалять движения автоматически».
Провести документ: ДокументОбъект = Ссылка.ПолучитьОбъект();
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
если на движения не влияет то моно (9)
(8) в том то и дело что реквизит важный — меняю ДоговорКонтрагента .
тогда если не хочешь изменения движений то перед перезаписью галку надо снять автоудаление движений
(13) Не понимаю что тебе надо. Движения должны меняться или нет? Если да, то что значит «не поехали»?
движения должны откатится назад
т.е. мне адо документ распровести, сделать в нём изменения, и провести ..
Куда назад.
новое проведение сделает новые движения ..
ААААААААААААААА. LOLLLLLLLLLLLLLLLLLLL.
пост № (16) не читаем
я щас со стула упаду.
(19) Ты обкурился?
да, юморная ветка 🙂
я уже упал.
Если нада—то сделай! В чем проблеа то?
(23) хуже.. похоже пофигуратор открыл.)
Я ничего не путаю, автор активно занимался УПП. И автора уволили. Так? Если да, то правильно сделали.
(29) ты такой вывод сделал потому что я не ПРОГРАММИСТ ?
(30) Судя по твоим веткам ты ваще непонятно что. И не прог, и не бух, да и на аналитика, мягко говоря, не тянешь. Мот ты одно из инкарнаций матрёшки? По уровню тупости вы с ним примерно на одном уровне. Еще гений с вами третий
Самосвал — прирожденный продавец проектов
знает много специфических терминов и повышенную словоотдачу
за ним генеральные должны идти зажмурив глаза
(32) но сколь-нибудь образованный человек эту ахинею не воспримет всерьез.
Это мистец какой-то. Действительно, непонятно, чем занимается Автор и удивляет время реакции на простой ответ типа: Хочешь перепровести — перепроведи.
(34) Автор явно не в ладах с головой. Это не оскорбление, а констатация факта. Простые выводы: на глобальный стёб это не тянет, ибо очень тупо и затратно (по времени хотя бы), а Света всё равно не получицца. Ну а если не стёб (как оно и есть, имхо), то см. первое предложение
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
Программная работа с документами в 1С
В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С, а также узнаем, как программно открыть основную форму документа.
Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.
Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».
Создать документ 1С программно
В моей учебной конфигурации 1С имеется простенький документ с небольшим набором реквизитов, а также с одной табличной частью.

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

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

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

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

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

Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.
ДокПриход = Документы.ПриходТовара.СоздатьДокумент(); ДокПриход.Дата = ТекущаяДата(); ДокПриход.Склад = Склад; ДокПриход.Комментарий = "#Документ создан автоматически обработкой" ДокПриход.Записать();
Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.

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


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

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

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

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Вступайте в мои группы:
10 Replies to “Программная работа с документами в 1С”
Евгений :
Ошибки в падежах и склонениях. Типично для 1Совца.
Судя по этой статье, здесь много что выкинуто за кулису и непонятно. Если и книжки так написаны, то зачем они нужны, тем более новичкам.
Это классика: 99% «профессоров» пишут книжки для себя, хотя утверждают обратное. Молодец, написал сам себе памятку. Подсчёт суммы в первом варианте неправильный из-за округления.
Всё названо одинаково и реквизиты и элементы….всё по 1Совски, чтобы вообще нихера не понять.
До УЧИТЕЛЯ дорасти надо, хотя при капитализме каждый суслик мнит себя агрономом.
Одинаковые имена для реквизитов и элементов — это норма. Любую типовую открой и посмотри, как там сделано.
И о какой ошибке округления идет речь? Ты что здесь округлять собрался? В момент записи значения в поле Сумма округление производится автоматически в соответствие с заданной точностью в Конфигураторе.
Владимир :
По поводу книг. Читал книгу «Программировать в 1С за 11 шагов», книга написана очень понятным и доступным языком. Это первая книга, читая которую, я начал что-то понимать в 1С.
Ильяс, спасибо за статью. Что касается падежей — это не самое страшное. Плохо то, что сразу нарисовываются какие — то «умники», которых будут волновать округления и падежи. А вот если бы в статье о программной работе с документами учитывались округления, попытки, исключения — это была бы действительно статья типичного 1С — ника, которых полно и толку от которой — ноль. Не обращай на таких внимания. Основная масса, к сожалению, такая.
Падежи можно, конечно, и пропустить. Хотя, лучше все эти склонения и жиши перепроверить. Читающие оценят. Однако, ошибка в округлении — выдаёт безалаберность в прикладной области. Это важно. Автору — радуйтесь поддержке, но обращайте особое внимание на критику, она делает Вас лучше.
Ты где здесь ошибку в округлении нашел?
Ну и запятые проверь у себя в сообщении.
Как обработкой создать сразу много документов?чтобы данные табЧасти заполнялись например,из самописного регистра или табличногодок-та?на каждую строчку новый документ?
Екатерина :
Ильяс, спасибо за статью! Всё доступно и понятно!
«Программировать в 1С за 11 шагов», прочел! Как пишут выше, что книга «ниочем и все убрано за кулису», все не так! Для меня книга как шпаргалка, и написана легче для понимания чем «ХрусталевРадченко», плюсом короткие видосы на канале — в общем и целом ресурс для начинающего хороший отличный. Ильяс, СПАСИБО ! очень помогает твой труд.
Как перепровести документы в 1С 8.3?
Краткая инструкция к перепроведению документов в 1С 8.3.
Чтобы перепровести документ в 1С, необходимо использовать простой и доступный механизм. Он заключается в отмене процедуры проведения, после чего выставляются новые настройки с последующим проведением. Для дополнительного удобства в 1С еще предусмотрена функция группового перепроведения нескольких документов одновременно.
Как только вы выставили необходимые настройки в документе, процесс перепроведения выполняется в автоматическом режиме. Для этого только нужно нажать кнопку «провести и закрыть». Если же нажать кнопку «Провести», то процедура проведения будет выполнена, но документ после этого автоматически не закроется.
Например, вы можете выполнить проведение документов Реализация товаров и услуг или Расходная накладная и т.д.
Или перепровести Акт об оказании услуг (Оказание услуг и другие).
Перепровести счета на оплату и прочее.
И так далее по представленной аналогии.
Если же использовать выпадающее меню, которое появляется после нажатия кнопки «Еще», то можно отменить в 1С проведение документа, а после повторно провести этот документ.
Чтобы посмотреть результаты перепроведения, нужно нажать на кнопку под название «Дт-Кт».
Все перечисленное ранее – это функционал и возможности для проведения отдельно взятых документов. Однако, программа дает возможность выполнять групповое перепроведение документов в 1С. Давайте более подробно рассмотрим этот способ.
Для начала вам необходимо зайти в главное меню и там выбрать вкладку «Операции». Нажимайте на нее, и перед вами откроется меню. В списке нужно найти пункт «Групповое перепроведение документов». Нажимайте на нее, чтобы начать процедуру группового перепроведения документов.
После нажатия на кнопку, система предложит вам сделать выбор:
- определить организацию;
- выбрать период, за который предстоит выполнить перепроведение.
Кроме того, здесь же вы можете выбрать вариант остановки процесса, если система выявит какие-либо ошибки. Далее введите необходимые реквизиты и можно смело нажимать на кнопку «Выполнить». Перепроведение документов в 1С стартует.
Как только система выполнит заданную операцию, перед вами откроется окно с результатами групповой операции по перепроведению выбранных нескольких документов. В диагностическом сообщении вы увидите количество проведенных документов, а также возникшие ошибки и их количество. Вам нужно будет прочитать это сообщение и огласиться. На этом процесс можно считать завершенным. Теперь вы знаете, как перепровести документы в 1С 8.3.
Как выполнить групповое проведение или перепроведение документов
Перед перепроведением документов рекомендуется сделать архивную копию базы данных «1С».
Групповое проведение документов позволяет провести либо перепровести документы выбранного типа за указанный период «одним кликом».
1. Выберите меню «Операции – Проведение документов».

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

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

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

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