Регистры бухгалтерии в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

/// Как прочитать бухгалтерские проводки без значений
/// субконто в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПрочитатьПроводкиБезСубконтоНаСервере()
 
    // За журнал проводок отвечает таблица РегистрБухгалтерии.Хозрасчетный.
    // Обратите внимание, что в ней нет информации о субконто - аналитике
    // счетов, участвующих в проводках.
 
    // получим все бухгалтерские проводки
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Хозрасчетный.Период КАК Период,
        |   Хозрасчетный.Организация,
        |   Хозрасчетный.СчетДт,
        |   Хозрасчетный.СчетКт,
        |   Хозрасчетный.КоличествоДт,
        |   Хозрасчетный.КоличествоКт,
        |   Хозрасчетный.Сумма
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
        |ГДЕ
        |   Хозрасчетный.Активность = Истина
        |УПОРЯДОЧИТЬ ПО
        |   Период";
 
    РезультатЗапроса = Запрос.Выполнить();
    Записи = РезультатЗапроса.Выбрать();    
 
    Пока Записи.Следующий() Цикл
        Сообщить(
            "[" + Формат(Записи.Период, "ДФ=dd.MM.yy") + "]   " +
            "Дт " + Записи.СчетДт + " " +
            "Кт " + Записи.СчетКт + " " +
            Записи.Сумма + " руб.");
    КонецЦикла;
 
КонецПроцедуры
 
/// Как прочитать бухгалтерские проводки вместе со
/// значениями субконто в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПрочитатьПроводкиВместеССубконтоНаСервере()
 
    // За получение бухгалтерских проводок вместе с их аналитикой (субконто)
    // отвечает виртуальная таблица ДвиженияССубконто,
    // у неё есть параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Условие
    // 4. Порядок (влияет только на отбор первых)
    // 5. Первые (отбор перых N записей)
 
    // Получим проводки за 1 квартал 2014 года, где счёт 41.01 в
    // дебете или кредите, вместе с их аналитикой (субконто).
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ХозрасчетныйДвиженияССубконто.Период КАК Период,
        |   ХозрасчетныйДвиженияССубконто.Организация,
        |   ХозрасчетныйДвиженияССубконто.Регистратор,
        |   ХозрасчетныйДвиженияССубконто.Активность,
        |   ХозрасчетныйДвиженияССубконто.СчетДт,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт1,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт2,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт3,
        |   ХозрасчетныйДвиженияССубконто.СчетКт,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт3,
        |   ХозрасчетныйДвиженияССубконто.Сумма,
        |   ХозрасчетныйДвиженияССубконто.КоличествоДт,
        |   ХозрасчетныйДвиженияССубконто.КоличествоКт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
        |       ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2014, 03, 31, 23, 59, 59),
        |       Активность = Истина И (
        |           СчетДт = &ВыбСчет ИЛИ СчетКт = &ВыбСчет)
        |   )
        |   КАК ХозрасчетныйДвиженияССубконто
        |УПОРЯДОЧИТЬ ПО
        |   Период Возр";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01"));
 
    РезультатЗапроса = Запрос.Выполнить();
    Записи = РезультатЗапроса.Выбрать();
 
    Пока Записи.Следующий() Цикл
        Сообщить(
            "[" + Формат(Записи.Период, "ДФ=dd.MM.yy") + "]   " +
            "Дт " + Записи.СчетДт + " " +
            "(" + Записи.СубконтоДт1 + ", " + Записи.СубконтоДт2 + ")" +
            " " +
            "Кт " + Записи.СчетКт + " " +
            "(" + Записи.СубконтоКт1 + ", " + Записи.СубконтоКт2 + ")" +
            " " +
            Записи.Сумма + " руб.");
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить обороты между бухгалтерскими счетами в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПолучитьОборотыМеждуСчетамиНаСервере()
 
    // Пример №1
    Сообщить("Пример №1");
 
    // За получение оборотов между счётом и корреспондирующим счётом
    // за произвольный период с заданной периодичностью в различных
    // разрезах аналитики отвечает виртуальная таблица Обороты,
    // у неё есть следующие параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Периодичность (например, Период, Запись, Год, Месяц...)
    // 4. Условие счета (например, Счет = &ВыбСчет)
    // 5. Субконто (список видов субконто, влияет на доступность
    //    и смысл Субконто1, Субконто2.., которыми можно оперировать
    //    в запросе).
    // 6. Условие (например, Субконто1 = &ВыбСклад)
    // 7. Условие корсчета (аналогично условию счёта)
    // 8. КорСубконто (аналогично субконто)
 
    // Узнаем сколько пришло и сколько ушло товара на основной склад
    // за январь 2014 года. То есть получим дебетовые и кредитовые
    // обороты по счёту 41.01, субконто Склады (значение "Основной склад")
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ХозрасчетныйОбороты.Счет,
        |   ХозрасчетныйОбороты.Субконто1 КАК Склад,
        |   ХозрасчетныйОбороты.Организация,
        |   ХозрасчетныйОбороты.СуммаОборотДт КАК ПришёлТовар,
        |   ХозрасчетныйОбороты.СуммаОборотКт КАК УшёлТовар,
        |   ХозрасчетныйОбороты.СуммаОборот КАК Разница
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.Обороты(
        |       ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2014, 01, 31, 23, 59, 59),
        |       Период,
        |       Счет = &ВыбСчет,
        |       &ВидыСубконто,
        |       Субконто1 = &ВыбСклад
        |   )
        |КАК ХозрасчетныйОбороты";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")
    );
 
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады
    );
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
 
    Запрос.УстановитьПараметр("ВыбСклад",
        Справочники.Склады.НайтиПоНаименованию("Основной")
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Записи = РезультатЗапроса.Выбрать();
 
    Если Записи.Следующий() Тогда
 
        Сообщить("Счёт " + Записи.Счет + " (" + Записи.Склад + ")");
        Сообщить("Пришёл товар на " + Записи.ПришёлТовар + " руб.");
        Сообщить("Ушёл товар на " +Записи.УшёлТовар + " руб.");
        Сообщить("Разница между поступление и списанием " + 
            Записи.Разница + " руб."
        );
 
    КонецЕсли;
 
    // ===========================================================
 
    // Пример №2
    Сообщить("Пример №2");
 
    // Узнаем сколько пришло товара на основной склад
    // за каждый месяц 2014 года.
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ХозрасчетныйОбороты.Период,
        |   ХозрасчетныйОбороты.Счет,
        |   ХозрасчетныйОбороты.Субконто1 КАК Склад,
        |   ХозрасчетныйОбороты.Организация,
        |   ХозрасчетныйОбороты.СуммаОборотДт КАК ПришёлТовар
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.Обороты(
        |       ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59),
        |       Месяц,
        |       Счет = &ВыбСчет,
        |       &ВидыСубконто,
        |       Субконто1 = &ВыбСклад
        |   ) КАК ХозрасчетныйОбороты
        |УПОРЯДОЧИТЬ ПО
        |   Период Возр";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")
    );
 
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады
    );
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
 
    Запрос.УстановитьПараметр("ВыбСклад",
        Справочники.Склады.НайтиПоНаименованию("Основной")
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Записи = РезультатЗапроса.Выбрать();
 
    Пока Записи.Следующий() Цикл
 
        Сообщить(
            Формат(Записи.Период, "ДФ=ММММ") + ": " +
            Записи.ПришёлТовар + " руб."
        );
 
    КонецЦикла;
 
    // ===========================================================
 
    // Пример №3
    Сообщить("Пример №3");
 
    // Узнаем сколько денег поступило в кассу от покупателей за 2014 год.
    // То есть проанализируем дебетовые обороты между 50.01 и 62.01
 
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ХозрасчетныйОбороты.Счет,
        |   ХозрасчетныйОбороты.КорСчет,
        |   ХозрасчетныйОбороты.СуммаОборотДт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.Обороты(
        |       ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59),
        |       Период,
        |       Счет = &ВыбСчет,
        |       ,
        |       ,
        |       КорСчет = &ВыбКорСчет
        |   ) КАК ХозрасчетныйОбороты";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.01")
    );
 
    Запрос.УстановитьПараметр("ВыбКорСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01")
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Записи = РезультатЗапроса.Выбрать();
 
    Пока Записи.Следующий() Цикл
 
        Сообщить(
            "За 2014 год на " +
            Записи.Счет + " с " + Записи.КорСчет + " пришло " +
            Записи.СуммаОборотДт + " руб."
        );
 
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить остатки по бухгалтерскому счету в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПолучитьОстаткиПоСчетуНаСервере()
 
    // За получение остатков по бухгалтерским счетам
    // в разрезе аналитики отвечает виртуальная
    // таблица Остатки, у неё есть следующие параметры:
    // 1. Период (на который считаем остатки)
    // 2. Условие счета (например, Счет = &ВыбСчет)
    // 3. Субконто (список видов субконто, влияет на доступность
    //    и смысл Субконто1, Субконто2.., которыми можно оперировать
    //    в запросе
    // 4. Условие (например, Субконто1 = &ВыбСклад)
 
    // Найдём остатки товаров на всех складах на конец 2014 года.
    // То есть запросим дебетовые остатки по всем счетам,
    // входящих в группу 41 счёта в разрезе субконто Номенклатура.
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ХозрасчетныйОстатки.Счет,
        |   ХозрасчетныйОстатки.Субконто1 КАК Товар,
        |   ХозрасчетныйОстатки.КоличествоОстатокДт,
        |   ХозрасчетныйОстатки.СуммаОстатокДт        
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.Остатки(
        |       ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59),
        |       Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто
        |   ) КАК ХозрасчетныйОстатки";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("41")
    );
 
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура
    );
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Записи = РезультатЗапроса.Выбрать();
 
    Сообщить("Остатки товаров по всем складам на конец 2014 года.");
 
    Пока Записи.Следующий() Цикл
 
        Сообщить(
            Записи.Товар.Наименование +
            " Количество [" + Записи.КоличествоОстатокДт + " шт.]" +
            " Сумма [" + Записи.СуммаОстатокДт + " руб.]"
        );
 
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить сразу остатки и обороты по бухгалтерскому счету
/// в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПолучитьСразуОстаткиИОборотыПоСчетуНаСервере()
 
    // За получение остатков и обротов за произвольный период
    // с заданной периодичностью в разрезе аналитики отвечает
    // виртуальная таблица ОстаткиИОбороты, у неё есть параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Периодичность (например, Период, Год, Месяц...)
    // 4. Метод дополнения периодов (Движение или ДвиженияИГраницыПериода)
    // 5. Условие счета (например, Счет = &ВыбСчет)
    // 6. Субконто (список видов субконто, влияет на доступность
    //    и смысл Субконто1, Субконто2.., которыми можно оперировать
    //    в запросе
    // 7. Условие (например, Субконто1 = &ВыбТовар)
 
    // Для примера получим начальный остаток, приход, расход, и
    // конечный остаток банана на всех складах за каждый месяц
    // 2014 года.
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ХозрасчетныйОстаткиИОбороты.Период,
        |   ХозрасчетныйОстаткиИОбороты.Счет,
        |   ХозрасчетныйОстаткиИОбороты.Субконто1,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
        |   ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
        |       ДАТАВРЕМЯ(2014, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2014, 12, 31, 23, 59, 59),
        |       Месяц, ДвиженияИГраницыПериода, 
        |       Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто,
        |       Субконто1 = &ВыбТовар
        |   ) КАК ХозрасчетныйОстаткиИОбороты";
 
    Запрос.УстановитьПараметр("ВыбСчет",
        ПланыСчетов.Хозрасчетный.НайтиПоКоду("41")
    );
 
    ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура
    );
    Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
 
    Запрос.УстановитьПараметр("ВыбТовар", 
        Справочники.Номенклатура.НайтиПоНаименованию("Банан")
    );
 
    РезультатЗапроса = Запрос.Выполнить();
 
    Записи = РезультатЗапроса.Выбрать();
 
    Пока Записи.Следующий() Цикл
        Сообщить(Формат(Записи.Период, "ДФ=ММММ") + ": ");
        Сообщить(
            Строка(Записи.Счет) + " " + Записи.Субконто1 + " " +
            "Нач. остаток " + Записи.КоличествоНачальныйОстатокДт +
            " приход " + Записи.КоличествоОборотДт + ", расход " +
            Записи.КоличествоОборотКт + " Кон. остаток " + 
            Записи.КоличествоКонечныйОстатокДт
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как найти и изменить программно бухгалтерские проводки
/// документа в 1с 8.3, 8.2
 
&НаСервере
Процедура КакНайтиИИзменитьПроводкиДокументаНаСервере()
 
    // предположим у нас есть ссылка на проведенный
    // документ поступления еды № ВМБП-000002
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000002", '20141231');
 
    // мы знаем, что этот документ делает следующие
    // проводки по регистру бухгалтерии "Хозрасчетный":
    // - Дт 41.01 Кт 60.01
    // - Дт 60.01 Кт 50.01
 
    // наша задача: найти эти проводки бухгалтерские проводки
    // и изменить их (например, удвоим количество по дебету 41.01)
    // и записать вместо старых
 
    // используем объектную технику получения проводок,
    // ведь мы будем их изменять
 
    Поступление = ПоступлениеСсылка.ПолучитьОбъект();
 
    // получим набор проводок этого документа в регистр "Хозрасчетный"
    НаборПроводок = Поступление.Движения.Хозрасчетный;
 
    // прочитаем проводки из базы данных
    НаборПроводок.Прочитать();
 
    Для Каждого Проводка Из НаборПроводок Цикл
 
        // выведем старые значения
        Сообщить(
            "Дт " + Проводка.СчетДт + " (" + Проводка.КоличествоДт + " шт.) " +
            "Кт " + Проводка.СчетКт + " (" + Проводка.КоличествоКт + " шт.) " +
            Проводка.Сумма + " руб."
        ); 
 
        Если 
            Проводка.СчетДт = 
            ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01")
        Тогда
            // эта проводка в дебет 41 счёта
            // изменим её, удвоив количество по дебету
            Проводка.КоличествоДт = Проводка.КоличествоДт * 2;
        КонецЕсли;
 
    КонецЦикла;
 
    // добавим новую проводку
    НоваяПроводка = НаборПроводок.Добавить();
    // дт
    НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
    НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] =
         Справочники.Склады.НайтиПоНаименованию("Основной");
    НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] =
        Справочники.Номенклатура.НайтиПоНаименованию("Банан");
    НоваяПроводка.КоличествоДт = 333;    
    // кт
    НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
    НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] =
        Справочники.Контрагенты.НайтиПоНаименованию("ООО ""Африка""");
    // общая часть
    НоваяПроводка.Период = ТекущаяДата();
    НоваяПроводка.Организация = Справочники.Организации.НайтиПоНаименованию("ООО ""Ромашка""");
    НоваяПроводка.Сумма = 5000;
    НоваяПроводка.Содержание = "Проводка добавлена программно.";
 
    //  разом запишем набор проводок
    НаборПроводок.Записать(
        Истина // удалим старые проводки и запишем вместо них новые
    );
 
    // теперь бухгалтерские проводки документа № ВМБП-000002,
    // отличаются от тех, что были записаны документом при проведении
    // чтобы вернуть их к начальному виду - нужно
    // перепровести документ
 
КонецПроцедуры
 
/// Как прочитать бухгалтерские проводки документа запросом в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПрочитатьПроводкиДокументаЗапросомНаСервере()
 
    // этот приём используется, если не требуется изменять
    // найденные проводки
 
    // предположим у нас есть ссылка на проведенный
    // документ поступления еды № ВМБП-000002
 
    ПоступлениеСсылка = 
        Документы.ПоступлениеЕды.НайтиПоНомеру(
            "ВМБП-000002", '20141231');
 
    // мы знаем, что этот документ делает проводки по
    // регистру бухгалтерии "Хозрасчетный"
 
    // прочитаем проводкипо регистру "Хозрасчетный" запросом
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Хозрасчетный.СчетДт,
        |   Хозрасчетный.СчетКт,
        |   Хозрасчетный.Сумма
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
        |ГДЕ
        |   Хозрасчетный.Регистратор = &ВыбРегистратор
        |
        |УПОРЯДОЧИТЬ ПО
        |   Хозрасчетный.НомерСтроки";
 
    Запрос.УстановитьПараметр("ВыбРегистратор", ПоступлениеСсылка);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            "Дт " + ВыборкаДетальныеЗаписи.СчетДт +
            " Кт " + ВыборкаДетальныеЗаписи.СчетКт + 
            " " + ВыборкаДетальныеЗаписи.Сумма + " руб."
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как создать бухгалтерские проводки без привязки
/// к документу в 1с 8.3, 8.2
 
&НаСервере
Процедура КакСоздатьПроводкиБезДокументаНаСервере()
 
    // в нашей тестовой конфигурации нет документа
    // "ОперацияБух", который присутствует во всех
    // типовых
 
    Сообщить("Этот пример нельзя выполнить в этой базе.");
    Возврат;
 
    // бухгалтерские проводки обязательно должны быть к
    // привязаны к документу, в данном случае этим документом
    // будет документ "ОперацияБух", задуманный как раз для
    // ручных бухгалтерских операций
 
    // создаём и записываем пустой документ
    // пока без бухгалтерских проводок
    Операция = Документы.ОперацияБух.СоздатьДокумент();
    Операция.Дата = ТекущаяДата();
    Операция.Организация = Справочники.Организации.НайтиПоНаименованию("Ромашка");	
    Операция.СуммаОперации = 1000;
    Операция.Содержание = "Ручная операция по 41 счёту";
    Операция.Записать(РежимЗаписиДокумента.Запись);
 
    // затем получаем его набор проводок (пустой)
    // заполняем его и записываем
    НаборПроводок = Операция.Движения.Хозрасчетный;	
 
    Проводка = НаборПроводок.Добавить();
    Проводка.Период = Операция.Дата;
    Проводка.Организация = Операция.Организация;
    // дт
    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
    Проводка.СубконтоДт[
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура
    ] = Справочники.Номенклатура.НайтиПоНаименованию("Банан");
 
    На41ВедетсяУчетПоСкладам = Проводка.СчетДт.ВидыСубконто.Найти(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады
    ) <> Неопределено;
 
    Если На41ВедетсяУчетПоСкладам Тогда
        Проводка.СубконтоДт[
            ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады
        ] = Справочники.Склады.НайтиПоНаименованию("Основной");
    КонецЕсли;
 
    Проводка.КоличествоДт = 3;
    // кт
    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01");
    Проводка.СубконтоКт[
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты
    ] = Справочники.Контрагенты.НайтиПоНаименованию("Беркут");
    // общее
    Проводка.Сумма = 500;
 
    НаборПроводок.Записать(Истина);
 
КонецПроцедуры
 
/// Как получить информацию о бухгалтерском счёте
/// из плана счетов в 1с 8.3, 8.2
 
&НаСервере
Процедура КакПолучитьИнформациюОСчетеНаСервере()
 
    // читаем информацию о счёте из плана счетов
 
    // находим счёт по коду
    Счёт41_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
 
    // смотрим состав субконто
    Для Каждого Субконто Из Счёт41_1.ВидыСубконто Цикл        
        Сообщить("Субконто " + Субконто.ВидСубконто.Наименование);
        Сообщить("  Валютный " + Субконто.Валютный);
        Сообщить("  Количественный " + Субконто.Количественный);
        Сообщить("  Суммовой " + Субконто.Суммовой);
    КонецЦикла;
 
    // узнаем, ведётся ли на 41.01 учёт по складам
    // (другими словами есть ли у этого счёта субконто
    // склады)
 
    Если Счёт41_1.ВидыСубконто.Найти(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады
    ) <> Неопределено Тогда
        Сообщить("На 41.01 ведётся учёт по складам.");
    Иначе
        Сообщить("На 41.01 ведётся учёт по складам не ведётся.");
    КонецЕсли;
 
    // узнаем является ли один счёт родителем другого
    Счёт41 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41");
    Если Счёт41_1.ПринадлежитЭлементу(Счёт41) Тогда
        Сообщить(Счёт41.Код + " является родителем для " + 
            Счёт41_1.Код);
    КонецЕсли;
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Регистры бухгалтерии в языке 1С 8.3, 8.2 (в примерах)

<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

С уважением, (преподаватель школы 1С программистов и разработчик обновлятора).



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: