helpf.pro
Регистрация
 +54 
Распечатать

Документ Операция - Как программно создать и заполнить?

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

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

На первый взгляд задача может показаться простой: создать документ, заполнить таблицу проводок данными и провести. Но не тут-то было! Как только дело доходит до «Конфигуратора», начинаются сюрпризы. Оказывается, у документа «Операция» вообще нет таблицы проводок, которую мы видим в пользовательском режиме.

Как же так? А вот так! Документ «Операция" используется в качестве регистратора, а проводки пишутся непосредственно в регистр бухгалтерии.

Решается задача довольно просто. Рассмотрим в качестве примера фрагмент кода обработки загрузки остатков по счету 001 «Арендованные основные средства» из dbf-таблицы.
Код 1C v 8.х
 
ДокОперация = Документы.ОперацияБух.СоздатьДокумент();
ДокОперация.Дата = ДатаДокумента;
ДокОперация.Организация = Организация;
ДокОперация.Ответственный = Ответственный;
ДокОперация.Содержание = Содержание;
ДокОперация.Комментарий = Комментарий;
ДокОперация.Записать();
ДокОперацияСсылка = ДокОперация.Ссылка;

РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
ДБФ.Первая();
Пока Не ДБФ.ВКонце() Цикл
КодКонтрагента = СокрП(ДБФ.CA);
Контрагент = Справочники.Контрагенты.НайтиПоКоду(КодКонтрагента);
Если Контрагент.Пустая() Тогда
Сообщить("Не найден контрагент с кодом " + КодКонтрагента, СтатусСообщения.Внимание);
КонецЕсли;
КодОС = СокрП(ДБФ.OS);
ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(КодОС);
Если ОсновноеСредство.Пустая() Тогда
Сообщить("Не найдено ОС с кодом " + КодОС, СтатусСообщения.Внимание);
КонецЕсли;

РегЗапись = РегХозрасчетный.Добавить();
РегЗапись.Период = ДатаДокумента;
РегЗапись.Регистратор = ДокОперацияСсылка;
РегЗапись.Организация = Организация;
РегЗапись.Содержание = "Корректировка стоимости ОС с 0 стоимостью";
РегЗапись.СчетДт = Сч001;
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "Контрагенты", Контрагент);
БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
РегЗапись.Сумма = ДБФ.Sum;

ДБФ.Следующая();
КонецЦикла;
РегХозрасчетный.Записать();


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

Источник
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 116833
 +54 
Распечатать
Возможно, вас также заинтересует
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 52
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ
1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш
1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.
COM-подключение к базе 7.7 из 8.2 1С 7
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе=" D:ВашаБаза1с77" ; Пользователь=
Посмотреть все результаты поиска похожих
Комментарии
raushangs
28.06.2024 13:11Комментарий: 2
raushangs

как  заполнить реквизит СторнируемыйДокумент? 

demonzvl
28.01.2011 16:52Комментарий: 1
demonzvl
А как программно в 1с 8.2 создать документ при проводке?(Если можно часть кода) Что бы это документ был создан на основании документа в котором происходит выполнение Процедуры обработка проведения.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.