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

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

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

Хозрасчетный регистр (регистр бухгалтерии)



/// Как получить остатки по счету бухгалтерии в 1с 8.3, 8.2
/// на определенную дату, с отбором по организации и субконто
 
Процедура КакПолучитьОстаткиПоСчету()
 
    // Получим дебетовые остатки по 41 счету номенклатуры
 
    Организация = БухгалтерскийУчетПереопределяемый.
    ПолучитьЗначениеПоУмолчанию("ОсновнаяОрганизация");
    Склад = БухгалтерскийУчетПереопределяемый.
    ПолучитьЗначениеПоУмолчанию("ОсновнойСклад");
 
    На41ВедетсяУчетПоСкладам = ПланыСчетов.Хозрасчетный.
        ТоварыНаСкладах.ВидыСубконто.Найти(ПланыВидовХарактеристик.
        ВидыСубконтоХозрасчетные.Склады) <> Неопределено;
 
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Если На41ВедетсяУчетПоСкладам Тогда
        ВидыСубконто.Добавить(
            ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);
    КонецЕсли;
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ХозрасчетныйОстатки.КоличествоОстатокДт
        |ИЗ";
 
    Если На41ВедетсяУчетПоСкладам Тогда
        Запрос.Текст = Запрос.Текст + 
        "
        |   РегистрБухгалтерии.Хозрасчетный.Остатки(
        |       &Дата, Счет = &Счет, &ВидыСубконто, 
        |       Организация = &Организация И Субконто1 = &Номенклатура И
        |       Субконто2 = &Склад) КАК ХозрасчетныйОстатки"
    Иначе
        Запрос.Текст = Запрос.Текст + 
        "
        |   РегистрБухгалтерии.Хозрасчетный.Остатки(
        |       &Дата, Счет = &Счет, &ВидыСубконто,
        |       Организация = &Организация И Субконто1 = &Номенклатура
        |   ) КАК ХозрасчетныйОстатки";
    КонецЕсли;
 
    Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
    Запрос.УстановитьПараметр("Организация", Организация);
    Если На41ВедетсяУчетПоСкладам Тогда
        Запрос.УстановитьПараметр("Склад", Склад);
    КонецЕсли;
 
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());
 
    ВыборкаНоменклатуры = Справочники.Номенклатура.Выбрать();
    ВыборкаНоменклатуры.Следующий();
    Запрос.УстановитьПараметр("Номенклатура", ВыборкаНоменклатуры.Ссылка);
 
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаЗапроса = РезультатЗапроса.Выбрать();
    Если ВыборкаЗапроса.Следующий() Тогда
        Сообщить("Остаток <" + ВыборкаНоменклатуры.Ссылка +
            "> - " + ВыборкаЗапроса.КоличествоОстатокДт);
    Иначе
        Сообщить("Остаток <" + ВыборкаНоменклатуры.Ссылка + "> - 0");
    КонецЕсли;
 
КонецПроцедуры
 
/// Как сделать отбор бухгалтерских проводок по
/// регистратору (документу) в 1с 8.3, 8.2
 
Процедура КакСделатьОтборПроводокПоДокументу()
 
    // Получим все проводки любого проведенного документа
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ХозрасчетныйДвиженияССубконто.СчетДт,
        |   ХозрасчетныйДвиженияССубконто.СчетКт,
        |   ХозрасчетныйДвиженияССубконто.Сумма
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
        |       ,,Регистратор = &Регистратор) КАК 
        |           ХозрасчетныйДвиженияССубконто";
 
    Запрос.УстановитьПараметр("Регистратор", СсылкаНаПроведенныйДокумент);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.СчетДт) + " " + 
            Строка(ВыборкаДетальныеЗаписи.СчетКт) + " " + 
            Строка(ВыборкаДетальныеЗаписи.Сумма));
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить обороты по бухгалтерскому счету за период
/// в 1с 8.3, 8.2
 
Процедура КакПолучитьОборотыПоСчету()
 
    // Получим дебетовые обороты по всем счетам входящих в иерархию 60 счета
 
    Запрос = Новый Запрос;
 
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ХозрасчетныйОстатки.СуммаОборотДт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.Обороты(
        |       ДАТАВРЕМЯ(2013, 01, 01), ДАТАВРЕМЯ(2013, 12, 31),, 
        |       Счет В ИЕРАРХИИ (
        |           ЗНАЧЕНИЕ(
        |             ПланСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками
        |           )
        |       )
        |   ) 
        |   КАК ХозрасчетныйОстатки";
 
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаЗапроса = РезультатЗапроса.Выбрать();
    Если ВыборкаЗапроса.Следующий() Тогда
        Сообщить(ВыборкаЗапроса.СуммаОборотДт);
    КонецЕсли;
 
КонецПроцедуры
 
/// Как изменять и добавлять бухгалтерские проводки в 1с 8.3, 8.2
 
Процедура КакИзменятьИДобавлятьПроводки()
 
    ВыбДок = Документы.ПриходныйКассовыйОрдер.Выбрать();
    Если ВыбДок.Следующий() Тогда
        Набор = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(ВыбДок.Ссылка);
        Набор.Прочитать();
 
        // изменение существующих записей
        Для Каждого Движение Из Набор Цикл
            Движение.Сумма = 100;
        КонецЦикла;
 
        // добавление новых записей
        Движение = Набор.Добавить();
        Движение.СчетДт = ПланыСчетов.Хозрасчетный.Касса;
        Движение.СчетКт = ПланыСчетов.Хозрасчетный.Выручка;
        Движение.Период = ТекущаяДата();
        Движение.Сумма = 10;
 
        // добавление новых записей
        Движение = Набор.Добавить();
        Движение.СчетДт = ПланыСчетов.Хозрасчетный.Касса;
        Движение.СчетКт = ПланыСчетов.Хозрасчетный.Выручка;
        Движение.Период = ТекущаяДата();
        Движение.Сумма = 1000;
 
        // удаление существующих записей
        Набор.Удалить(0);
 
        Набор.Записать(Истина);
    КонецЕсли;
 
КонецПроцедуры