Примеры работы с регистром бухгалтерии

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

Запись в регистр бухгалтерии

// Пример записи движения по регистру бухгалтерии
Процедура ЗаписатьДвижениеРегистраБухгалтерии()
    
    // Создаем объект документа, который будет основанием для проводки
    Документ = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    // Заполняем параметры документа...
    
    // Создаем набор записей регистра бухгалтерии
    НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборЗаписей.Мode = РежимНабораЗаписейРегистра.Движение;
    
    // Создаем новую запись
    Запись = НаборЗаписей.Добавить();
    Запись.Период = Документ.Дата;
    Запись.СчетДт = ПланыСчетов.Хозрасчетный.Материалы;
    Запись.СчетКт = ПланыСчетов.Хозрасчетный.Поставщики;
    Запись.Сумма = 10000; // Сумма проводки
    Запись.Валюта = Справочники.Валюты.НайтиПоКоду("643");
    Запись.СуммаВВалюте = 10000;
    Запись.Количество = 1;
    Запись.Подразделение = Справочники.Подразделения.Основное;
    Запись.ОбъектАналитикиДт = Справочники.Номенклатура.НайтиПоНаименованию("Офисный стол");
    Запись.ОбъектАналитикиКт = Справочники.Контрагенты.НайтиПоНаименованию("ООО Поставщик");
    Запись.Документ = Документ;
    
    // Записываем движения
    НаборЗаписей.Записать();
    
КонецПроцедуры

Чтение данных из регистра бухгалтерии

// Пример получения оборотов по счету
Процедура ПолучитьОборотыПоСчету()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Хозрасчетный.СчетДт КАК Счет,
    |    СУММА(Хозрасчетный.Сумма) КАК Сумма
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.СчетДт = &Счет
    |    И Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода
    |СГРУППИРОВАТЬ ПО
    |    Хозрасчетный.СчетДт";
    
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.Материалы);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        Сообщить("Счет: " + Выборка.Счет + ", Сумма: " + Выборка.Сумма);
    КонецЦикла;
    
КонецПроцедуры

Получение остатков на дату

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

Корректировка записей регистра

// Пример корректировки ранее проведенных движений
Процедура КорректироватьПроводки(ДокументОснование)
    
    // Создаем набор записей для корректировки
    НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НаборЗаписей.Mode = РежимНабораЗаписейРегистра.Движение;
    
    // Находим проводки для корректировки
    Отбор = Новый Структура;
    Отбор.Вставить("Документ", ДокументОснование);
    
    Движения = РегистрыБухгалтерии.Хозрасчетный.ВыбратьДвижения(Отбор);
    
    Пока Движения.Следующий() Цикл
        // Создаем новую запись на сторнирование
        ЗаписьСторно = НаборЗаписей.Добавить();
        ЗаписьСторно.Заполнить(Движения);
        ЗаписьСторно.Сторно = Истина;
        
        // Создаем новую запись с корректными данными
        ЗаписьКорректировка = НаборЗаписей.Добавить();
        ЗаписьКорректировка.Заполнить(Движения);
        ЗаписьКорректировка.Сумма = Движения.Сумма * 0.9; // Уменьшаем сумму на 10%
    КонецЦикла;
    
    // Записываем корректировки
    НаборЗаписей.Записать();
    
КонецПроцедуры

Пример сложного запроса к регистру бухгалтерии

// Пример запроса с аналитиками и группировками
Процедура ПолучитьОборотыСАналитикой()
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |    Хозрасчетный.СчетДт КАК СчетДт,
    |    Хозрасчетный.ОбъектАналитикиДт КАК Номенклатура,
    |    Хозрасчетный.Подразделение КАК Подразделение,
    |    СУММА(Хозрасчетный.Сумма) КАК Сумма,
    |    СУММА(Хозрасчетный.Количество) КАК Количество
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
    |ГДЕ
    |    Хозрасчетный.Период МЕЖДУ &НачалоПериода И &КонецПериода
    |    И Хозрасчетный.СчетДт В ИЕРАРХИИ(&Счет)
    |СГРУППИРОВАТЬ ПО
    |    Хозрасчетный.СчетДт,
    |    Хозрасчетный.ОбъектАналитикиДт,
    |    Хозрасчетный.Подразделение";
    
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.Материалы);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоГода(ТекущаяДата()));
    Запрос.УстановитьПараметр("КонецПериода", ТекущаяДата());
    
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(СтрШаблон("Счет: %1, Номенклатура: %2, Подразделение: %3, Сумма: %4, Количество: %5",
            ВыборкаДетальныеЗаписи.СчетДт,
            ВыборкаДетальныеЗаписи.Номенклатура,
            ВыборкаДетальныеЗаписи.Подразделение,
            ВыборкаДетальныеЗаписи.Сумма,
            ВыборкаДетальныеЗаписи.Количество));
    КонецЦикла;
    
КонецПроцедуры

Проверка существования проводок для документа

// Проверка наличия движений для документа
Функция ЕстьПроводкиПоДокументу(Документ)
    
    Отбор = Новый Структура;
    Отбор.Вставить("Документ", Документ);
    
    Возврат РегистрыБухгалтерии.Хозрасчетный.НайтиДвижения(Отбор).Количество() > 0;
    
КонецФункции

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

Поделиться с друзьями
Smirnov code
Добавить комментарий