Как программно создать документ КорректировкаЗаписейРегистров

1. Sergey_SP 15.10.10 15:07 Сейчас в теме
Добрый день

Нужно скорректировать остатки по регистру накопления в бухгалтерии.
В типовой конфигурации есть документ КорректировкаЗаписейРегистров, но я вот что-то не пойму его структуры...

Может у кого есть пример как добавить строку в этот документ скажем по произвольному регистру накопления?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. Alexey26 2 07.12.15 16:29 Сейчас в теме
(1) Sergey, ДокументОбъект = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
2. anig99 2843 15.10.10 15:29 Сейчас в теме
он напрямую работает с регистрами - табличные части формируются динамически. Нужно создать набор записей регистра накопления, где в качестве регистратора будет корректировка. Только вот надо или вручную предварительно или программно(щас не вспомню где) указать состав регистров документа. Иначе при перезаписи документа вручную всего его движения удалятся.
3. Sergey_SP 15.10.10 15:31 Сейчас в теме
ага...

спасибо, попробую.
4. ftm 12.09.11 08:18 Сейчас в теме
Я вот так делал

ДокКорректировкаГруппа=Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
	ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировкаГруппа.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
	ДокКорректировкаГруппа.Дата = Дата(2010,12,31);
	ДокКорректировкаГруппа.Комментарий = "Ввод начальных остатков по транспортным";
	НоваяСтрокаРегТранс = ДокКорректировкаГруппа.ТаблицаРегистровНакопления.Добавить();
	НоваяСтрокаРегТранс.Имя = "ТранспортныеЗатраты";
	НоваяСтрокаРегТранс.Представление = "Журнал транспорнтых затрат";
....
ДокКорректировкаГруппа.Записать();
	НаборЗаписей.мПериод=Дата(2010,12,31);
	НаборЗаписей.мТаблицаДвижений=ДанныеВТЗ;
	НаборЗаписей.ВыполнитьПриход();
	ДокКорректировкаГруппа.Записать()

Показать
Dimka74; Светлый ум; +2 Ответить
5. Evga 06.10.11 09:50 Сейчас в теме
я регистры самой обработкой правил. этои документ лучше вручную сделать
6. pvl_mksv 20 09.11.11 23:30 Сейчас в теме
погугли, есть много ссылок на прочие форумы, там подробно описан алгоритм создания дока и привязки его к регистру.
7. redkiller3 10.11.11 00:06 Сейчас в теме
Объект = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
Объект.Дата = КонецДня(ДатаДокумента);
Объект.УстановитьНовыйНомер();
Объект.ИспользоватьЗаполнениеДвижений = Истина;
Объект.ЗаполнениеДвижений.Добавить();
и т.д.
8. maratimus 22 24.02.12 17:15 Сейчас в теме
ДокКор = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();



Стр = ДокКор.Движения.ВзаиморасчетыУСН.ДобавитьРасход();

Стр.Организация = ВыборкаДетальныеЗаписи.Организация;
Стр.ДоговорКонтрагента = Планысчетов.Хозрасчетный.ЕНприУСН;
Стр.СуммаВзаиморасчетов = ВыборкаДетальныеЗаписи.СуммаОборот;
Стр.Период = КонецГода(дата);
//-----
Стр2 = ДокКор.Движения.РасходыПриУСН.ДобавитьПриход();

Стр2.Организация = ВыборкаДетальныеЗаписи.Организация;
Стр2.СтатусыОплатыРасходовУСН = Перечисления.СтатусыРасходовУСН.НеОплачено;
Стр2.ВидРасхода = Перечисления.ВидыРасходовУСН.Налоги;
Стр2.СчетУчета = Планысчетов.Хозрасчетный.ЕНприУСН;
Стр2.Валюта = Валюта643;
Стр2.ОтражениеВУСН = Перечисления.ОтражениеВУСН.НеПринимаются;
Стр2.Сумма = ВыборкаДетальныеЗаписи.СуммаОборот;
Стр2.Период = КонецГода(дата);
9. maratimus 22 24.02.12 17:43 Сейчас в теме
перем дата;

Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Валюта643 = Справочники.Валюты.НайтиПоКоду("643");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ХозрасчетныйОборотыДтКт.СуммаОборот,
| ХозрасчетныйОборотыДтКт.Организация
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоГода, &КонецГода, , СчетДт = ЗНАЧЕНИЕ(Плансчетов.Хозрасчетный.ПрочиеРасходыНеОблагаемыеЕНВД), , СчетКт = ЗНАЧЕНИЕ(Плансчетов.Хозрасчетный.ЕНприУСН), , ) КАК ХозрасчетныйОборотыДтКт";

дата = дата(НалогиЗаГод+"0101");
Запрос.УстановитьПараметр("КонецГода", КонецГода(дата));
Запрос.УстановитьПараметр("НачалоГода", НачалоГода(дата));

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

ДокКор = ПолучитьДокКорректировки();

ДокКор.Движения.ВзаиморасчетыУСН.Очистить();
ДокКор.Движения.РасходыПриУСН.Очистить();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

Стр = ДокКор.Движения.ВзаиморасчетыУСН.ДобавитьРасход();

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

Стр2.Организация = ВыборкаДетальныеЗаписи.Организация;
Стр2.СтатусыОплатыРасходовУСН = Перечисления.СтатусыРасходовУСН.НеОплачено;
Стр2.ВидРасхода = Перечисления.ВидыРасходовУСН.Налоги;
Стр2.СчетУчета = Планысчетов.Хозрасчетный.ЕНприУСН;
Стр2.Валюта = Валюта643;
Стр2.ОтражениеВУСН = Перечисления.ОтражениеВУСН.НеПринимаются;
Стр2.Сумма = ВыборкаДетальныеЗаписи.СуммаОборот;
Стр2.Период = КонецГода(дата);
КонецЦикла;
Попытка

ДокКор.Записать();
Сообщить(ДокКор);

Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;


//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
//ДвиженияПоРегистрамУСН

КонецПроцедуры
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
10. maratimus 22 24.02.12 17:45 Сейчас в теме
Функция ПолучитьДокКорректировки()
ДокКор = неопределено;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| КорректировкаЗаписейРегистров.Ссылка
|ИЗ
| Документ.КорректировкаЗаписейРегистров КАК КорректировкаЗаписейРегистров
|ГДЕ
| КорректировкаЗаписейРегистров.Комментарий ПОДОБНО &Комментарий
| И КорректировкаЗаписейРегистров.Дата >= &Дата1
| И КорректировкаЗаписейРегистров.Дата <= &Дата2
| И КорректировкаЗаписейРегистров.ПометкаУдаления = ЛОЖЬ";

Запрос.УстановитьПараметр("Дата2", КонецГода(дата));
Запрос.УстановитьПараметр("Дата1", НачалоГода(дата));
Запрос.УстановитьПараметр("Комментарий", "ДвиженияПоРегистрамУСН");

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Если ВыборкаДетальныеЗаписи.Количество() = 0 Тогда

ДокКор = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
ДокКор.Комментарий = "ДвиженияПоРегистрамУСН";
ДокКор.Дата = КонецГода(дата);

НоваяСтрока = ДокКор.ТаблицаРегистровНакопления.Добавить();
НоваяСтрока.Имя = "ВзаиморасчетыУСН" ;
НоваяСтрока.Представление = "ВзаиморасчетыУСН";

НоваяСтрока2 = ДокКор.ТаблицаРегистровНакопления.Добавить();
НоваяСтрока2.Имя = "РасходыПриУСН" ;
НоваяСтрока2.Представление = "РасходыПриУСН";

ДокКор.Записать();

Иначе

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Вставить обработку выборки ВыборкаДетальныеЗаписи
ДокКор = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
КонецЦикла;
КонецЕсли;


Возврат ДокКор;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


КонецФункции // ПолучитьДокКорректировки()
11. maratimus 22 24.02.12 17:46 Сейчас в теме
Это для начисления единого налога при УСН.
Бух делает операцию,
а обработка делает движения по регистрам УСН.
12. o2005 62 25.04.12 21:13 Сейчас в теме
Документ «Корректировка записей регистров» в типовых конфигурациях 1С предназначен для ручной корректировки записей регистров накопления, зависимых регистров сведений и регистров бухгалтерии. Типичные ситуации, в которых может понадобиться документ «Корректировка записей регистров», - ввод начальных остатков, исправление ошибок в учете, отражение в учете операций, для которых в конфигурации нет специальных документов. В документе есть сервис автоматического заполнения движений с предопределенным действием «Сторно движений документа». С его помощь можно автоматически создать движения по регистрам бухгалтерии и регистрам накопления, аналогичные движениям указанного документа, но с отрицательными значениями.

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

В качестве примера, когда может потребоваться программно создать документ «Корректировка записей регистров», предлагаю рассмотреть операцию переоценки основных средств. Переоценка основных средств - ситуация хоть и нечастая, но все же вполне реальная, а специального документа для переоценки в типовых конфигурациях 1С нет. Чтобы пример получился более представительным (включал в себя все виды корректируемых регистров), я сделал обработку для конфигурации «1С:Управление производственным предприятием». Но с другой стороны, чтобы не перегружать пример лишней информацией, мы рассмотрим случай, когда в результате переоценки происходит увеличение стоимости основных средств и накопленной амортизации (дооценка).

В этом случае переоценка основных средств отражается в бухгалтерском учете проводками:

Дт. 01.01. - Кт. 83.01 - Увеличение первоначальной стоимости ОС.
Дт. 83.01. - Кт. 02.01 - Увеличение суммы накопленной амортизации ОС.

В налоговом учете операция переоценки основных средств не предусмотрена, но для того чтобы соблюдалось равенство БУ = НУ + ПР + ВР, мы должны отразить в учете возникновение постоянных разниц. Также мы должны сделать движения в регистрах накопления «СтоимостьОС», «СтоимостьОСБухгалтерскийУчет» и в регистрах сведений «ПараметрыАмортизацииОС», «ПараметрыАмортизацииОСБухгалтерскийУчет», «СобытияОС» и «СобытияОСОрганизаций».

Исходные данные для переоценки ОС берутся из dbf-таблицы с набором полей:

OS (строка) - код основного средства;
SumU (число) - сумма дооценки по управленческому учету в единицах валюты управленческого учета;
SumB (число) - сумма дооценки по бухгалтерскому учету;
AmortU (число) - сумма дооценки накопленной амортизации по управленческому учету в единицах валюты управленческого учета;
AmortB (число) - сумма дооценки накопленной амортизации по бухгалтерскому учету.

Упрощенный фрагмент кода обработки, иллюстрирующий запись проводок в регистр бухгалтерии, представлен в листинге:

Сч01_01 = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
Сч02_01 = ПланыСчетов.Хозрасчетный.АмортизацияОС_01;
Сч83_01 = ПланыСчетов.Хозрасчетный.ПриростСтоимостиИмуществаПоПереоценке;
ДБФ = Новый XBase;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() Тогда
    Попытка
        НачатьТранзакцию();
        
  ДокКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
        ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировка.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
        ДокКорректировка.Дата = Период;            

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

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

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

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

        ЗафиксироватьТранзакцию();
    Исключение
        Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
        ОтменитьТранзакцию();
    КонецПопытки;
КонецЕсли;
Показать


Как видно из примера, документ «Корректировка записей регистров» подобно документу «Операция» используется в качестве регистратора, движения же записываются непосредственно в регистр. Движения по регистрам накопления и регистрам сведений делаются аналогично.
13. lomanos 41 02.05.12 07:33 Сейчас в теме
Доброго времени суток, если тема еще жива, то может кто-нить подсказать, как создать документ "Корректировка записей регистров" так, чтобы он не попал в обмен?
Заранее оговорюсь, что чистить зарегистрированные объекты для обмена - не вариант, нужно чтобы они не попадали в регистрацию, но ТОЛЬКО для конкретного документа, а все остальные корректировки - попадали.
Есть у кого-нибудь какие-то предложения?
15. AndreykO 6 16.11.16 07:01 Сейчас в теме
(13) В любом случае придётся менять либо правила обмена, либо правила регистрации. Всё зависит от того, как у Вас настроен обмен. Признаком нерегистрируемости конкретного документа может являться, например, спец. строка символов в комментарии (типа: "#не#регистрировать#"), либо флаг какой-нить на форме документа, если есть возможность/желание менять конфигурацию/расширение. По этому признаку и отказывать в регистрации в правилах регистрации или же в правилах обмена использовать его как параметр с аналогичным назначением. В общем и целом - как-то так...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот