Все об 1С8 - просто и доступно

Добавить в Избранное  Сделать Стартовой  Написать письмо

Главная Статьи Вопрос-ответ Экспресс-справочник Гостевая книга
Экспресс-справочник
Справочники
Документы
Регистры сведений
Регистры накоплений
Регистры расчета
Регистр бухгалтерии
Отчеты
Обработки
Работа с запросами

Регистры накопления

// РеализацияУслуг - регистр накопления оборотов
//
// Измерения: Организация, СчетРасчходов, 
// НоменклатурнаяГруппа, Подразделение
//
// Ресурсы: Сумма
 
/// Как прочитать записи регистра накопления оборотов
/// в 1с 8.3, 8.2 с возможностью отбора и упорядочивания
 
Процедура КакПрочитатьЗаписиРегистраНакопленияОборотов()
 
    ОрганизацияПоУмолчанию = 
        БухгалтерскийУчетПереопределяемый.
        ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");    
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РеализацияУслуг.Период,
        |    РеализацияУслуг.Регистратор,
        |    РеализацияУслуг.НомерСтроки,
        |    РеализацияУслуг.Активность,
        |    РеализацияУслуг.Организация,
        |    РеализацияУслуг.СчетРасходов,
        |    РеализацияУслуг.НоменклатурнаяГруппа,
        |    РеализацияУслуг.Подразделение,
        |    РеализацияУслуг.Сумма
        |ИЗ
        |    РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг
        |ГДЕ
        |    РеализацияУслуг.Организация = &ВыбОрганизация
        |УПОРЯДОЧИТЬ ПО
        |   РеализацияУслуг.Сумма УБЫВ";
 
    Запрос.УстановитьПараметр("ВыбОрганизация", ОрганизацияПоУмолчанию);
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.Период) + " " +
            ВыборкаДетальныеЗаписи.Сумма
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить обороты регистра накопления оборотов за период
/// в 1с 8.3, 8.2
 
Процедура КакПолучитьОборотыРегистраНакопленияОборотовЗаПериод()
 
    ОрганизацияПоУмолчанию = 
        БухгалтерскийУчетПереопределяемый.
        ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РеализацияУслугОбороты.Организация,
        |    РеализацияУслугОбороты.СчетРасходов,
        |    РеализацияУслугОбороты.НоменклатурнаяГруппа,
        |    РеализацияУслугОбороты.Подразделение,
        |    РеализацияУслугОбороты.СуммаОборот
        |ИЗ
        |    РегистрНакопления.РеализацияУслуг.Обороты(
        |        &НачалоПериода, &КонецПериода
        |        ) КАК РеализацияУслугОбороты
        |ГДЕ
        |    РеализацияУслуг.Организация = &ВыбОрганизация";
 
    Запрос.УстановитьПараметр("ВыбОрганизация", ОрганизацияПоУмолчанию);
    Запрос.УстановитьПараметр("НачалоПериода", '20130101');
    Запрос.УстановитьПараметр("КонецПериода", '20131231');
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(ВыборкаДетальныеЗаписи.СуммаОборот);    
    КонецЦикла;
 
    // Для регистров оборотов оборот подсчитывается как сумма всех движений.
    // Параметры таблицы Обороты(НачалоПериода, КонецПериода, Периодичность, 
    //    Условие).
 
КонецПроцедуры
 
// ЗарплатаКВыплате - регистр накопления остатков
//
// Измерения: Организация, ФизическоеЛицо, СтатьяФинансирования,
//     СтатьяРасходов, Сотрудник, Подразделение,
//     ПериодВзаиморасчетов, ХарактерВыплаты
//
// Ресурсы: СуммаКВыплате
 
/// Как прочитать записи регистра накопления остатков
/// в 1с 8.3, 8.2 с возможностью отбора и упорядочивания
 
Процедура КакПрочитатьЗаписиРегистраНакопленияОстатков()
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЗарплатаКВыплате.Период,
        |    ЗарплатаКВыплате.Регистратор,
        |    ЗарплатаКВыплате.НомерСтроки,
        |    ЗарплатаКВыплате.Активность,
        |    ЗарплатаКВыплате.ВидДвижения,
        |    ЗарплатаКВыплате.Организация,
        |    ЗарплатаКВыплате.ФизическоеЛицо,
        |    ЗарплатаКВыплате.СтатьяФинансирования,
        |    ЗарплатаКВыплате.СтатьяРасходов,
        |    ЗарплатаКВыплате.Сотрудник,
        |    ЗарплатаКВыплате.Подразделение,
        |    ЗарплатаКВыплате.ПериодВзаиморасчетов,
        |    ЗарплатаКВыплате.ХарактерВыплаты,
        |    ЗарплатаКВыплате.СуммаКВыплате
        |ИЗ
        |    РегистрНакопления.ЗарплатаКВыплате КАК ЗарплатаКВыплате";
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.Период ) + " " +
            ВыборкаДетальныеЗаписи.Сотрудник + " " +
            ВыборкаДетальныеЗаписи.ВидДвижения + " " +
            ВыборкаДетальныеЗаписи.СуммаКВыплате
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить остатки регистра накопления остатков на дату
/// в 1С 8.3, 8.2
 
Процедура КакПолучитьОстаткиРегистраНакопленияОстатковНаДату()
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЗарплатаКВыплатеОстатки.Организация,
        |    ЗарплатаКВыплатеОстатки.ФизическоеЛицо,
        |    ЗарплатаКВыплатеОстатки.СтатьяФинансирования,
        |    ЗарплатаКВыплатеОстатки.СтатьяРасходов,
        |    ЗарплатаКВыплатеОстатки.Сотрудник,
        |    ЗарплатаКВыплатеОстатки.Подразделение,
        |    ЗарплатаКВыплатеОстатки.ПериодВзаиморасчетов,
        |    ЗарплатаКВыплатеОстатки.ХарактерВыплаты,
        |    ЗарплатаКВыплатеОстатки.СуммаКВыплатеОстаток
        |ИЗ
        |    РегистрНакопления.ЗарплатаКВыплате.Остатки(
        |        &ПараметрПериод) КАК ЗарплатаКВыплатеОстатки";
 
    Запрос.УстановитьПараметр("ПараметрПериод", ТекущаяДата());
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.ПериодВзаиморасчетов) 
            + " " + ВыборкаДетальныеЗаписи.Сотрудник + " " +
            ВыборкаДетальныеЗаписи.СуммаКВыплатеОстаток + " "
        );
    КонецЦикла;
 
    // Параметры таблицы Остатки(Период, Условие).
 
КонецПроцедуры
 
/// Как изменять записи регистра накопления в 1с 8.3, 8.2
 
Процедура МодификацияЗаписейРегистраНакопления()
 
    ВыбДок = Документы.ПоступлениеТоваровУслуг.Выбрать();
    Если ВыбДок.Следующий() Тогда
        Набор = РегистрыНакопления.НДСПредъявленный.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(ВыбДок.Ссылка);
        Набор.Прочитать();
 
        // изменение существующих записей
        Для Каждого Движение Из Набор Цикл
            Движение.НДС = 0;
        КонецЦикла;
 
        // добавление новых записей
        Движение = Набор.ДобавитьРасход();
        Движение.НДС = 100;
        Движение.Период = ТекущаяДата();
 
        Движение = Набор.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
        Движение.НДС = 300;
        Движение.Период = ТекущаяДата();
 
        // удаление существующих записей
        Набор.Удалить(0);
 
        Набор.Записать(Истина);
    КонецЕсли;
 
КонецПроцедуры