1С 8.3 Регистры бухгалтерии - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Регистры бухгалтерии

Данные > Примеры кода 1С > 1С 8.3 Регистры бухгалтерии
Регистры бухгалтерии в 1С 8.3 -  это объекты конфигурации, которые используются для регистрации хозяйственных операций в бухгалтерском учёте. Позволяют вести многоуровневый и многомерный аналитический учет, в том числе и по нескольким планам счетов. Предусмотрено ведение количественного, суммового и валютного учета по отдельным разрезам аналитики (субконто).

Распространенные ошибки в формировании движений документов по регистрам:
  1. Не свернуть Табличную часть перед построением движений. Бывают ситуации исключения, но если их не предусмотрено, то ТЧ документа при построении движений документа необходимо сворачивать. Пользователи часто копируют строки и может быть большое количество дублей строк. Чревато увеличением, как минимум, количества записей в регистрах. Например, можно решить в запросе так: СГРУППИРОВАТЬ ПО Документ.Материалы
  2. Не знать, что в 1 секунде времени может быть несколько тысяч документов, и для определения последовательности использовать поле "Дата" из документа. Необходимо использовать МоментВремени(), который равен Дата + Ссылка. И еще нужно иметь ввиду, что Ссылка - это не только УИД, но и идентификатор типа документа. Поэтому при упорядочивании внутри одной секунды сначала идут документы одного типа, а потом уже другого.
Чтение бухгалтерских проводок документа без значений субконто в 1С 8.3:
&НаСервере
Процедура ЧтениеБухгалтерскихПроводокБезСубконтоНаСервере()
   
// За журнал проводок отвечает таблица РегистрБухгалтерии.Хозрасчетный.
    // В ней нет информации о субконто - аналитике счетов

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

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

       
Сообщить("(" + Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=dd.MM.yy") + ") Дт: " + ВыборкаДетальныеЗаписи.СчетДт
        + " Кт: " + ВыборкаДетальныеЗаписи.СчетКт + " " + ВыборкаДетальныеЗаписи.Сумма + " руб.");

    КонецЦикла;

КонецПроцедуры
Чтение бухгалтерских проводок документа со значениями субконто в 1С 8.3:
&НаСервере
Процедура ЧтениеБухгалтерскихПроводокСозначениямиСубконтоНаСервере()

   
// За получение бухгалтерских проводок вместе с их аналитикой (субконто)
    // отвечает виртуальная таблица ДвиженияССубконто,
    // У неё есть параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Условие
    // 4. Порядок (влияет только на отбор первых)
    // 5. Первые (отбор перых N записей)

    // Получим проводки за 1 квартал 2020 года, где счёт 10.1 в
    // дебете или кредите, вместе с аналитикой (субконто).
   
Запрос = Новый Запрос;
   
Запрос.Текст =
       
"ВЫБРАТЬ
        |   ХозрасчетныйДвиженияССубконто.Период КАК Период,
        |   ХозрасчетныйДвиженияССубконто.Организация,
        |   ХозрасчетныйДвиженияССубконто.Регистратор,
        |   ХозрасчетныйДвиженияССубконто.Активность,
        |   ХозрасчетныйДвиженияССубконто.СчетДт,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт1,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт2,
        |   ХозрасчетныйДвиженияССубконто.СубконтоДт3,
        |   ХозрасчетныйДвиженияССубконто.СчетКт,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт1,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт2,
        |   ХозрасчетныйДвиженияССубконто.СубконтоКт3,
        |   ХозрасчетныйДвиженияССубконто.Сумма,
        |   ХозрасчетныйДвиженияССубконто.КоличествоДт,
        |   ХозрасчетныйДвиженияССубконто.КоличествоКт
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
        |       ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
        |       ДАТАВРЕМЯ(2020, 03, 31, 23, 59, 59),
        |       Активность = Истина И (СчетДт = &ВыбСчет ИЛИ СчетКт = &ВыбСчет))
        |   КАК ХозрасчетныйДвиженияССубконто
        |УПОРЯДОЧИТЬ ПО
        |   Период Возр"
;

   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1"));
   
РезультатЗапроса = Запрос.Выполнить();

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

       
Сообщить("<" + Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=dd.MM.yy") + "> Дт: " +
       
ВыборкаДетальныеЗаписи.СчетДт + " (" + ВыборкаДетальныеЗаписи.СубконтоДт1 + ", " +
       
ВыборкаДетальныеЗаписи.СубконтоДт2 + ") Кт: " + ВыборкаДетальныеЗаписи.СчетКт + " (" +
       
ВыборкаДетальныеЗаписи.СубконтоКт1 + ", " + ВыборкаДетальныеЗаписи.СубконтоКт2 + ") = " +
       
ВыборкаДетальныеЗаписи.Сумма + " руб.");

    КонецЦикла;

КонецПроцедуры
Чтение бухгалтерских проводок документа запросом в 1С 8.3:
// Процедура используется, если не требуется изменять найденные проводки
&НаСервере
Процедура ЧтениеБухгалтерскихПроводокДокументаЗапросомНаСервере()

   
// Есть ссылка на проведенный документ Поступления материалов № МРБ-000123
    // Этот документ делает проводки по регистру бухгалтерии "Хозрасчетный"
   
ПоступлениеСсылка = Документы.ПоступлениеМатериалов.НайтиПоНомеру("МРБ-000123", '20201231');

   
Запрос = Новый Запрос;// Чтение проводок по регистру "Хозрасчетный" запросом
   
Запрос.Текст =
       
"ВЫБРАТЬ
        |   Хозрасчетный.СчетДт,
        |   Хозрасчетный.СчетКт,
        |   Хозрасчетный.Сумма
        |ИЗ
        |   РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
        |ГДЕ
        |   Хозрасчетный.Регистратор = &ТекДок
        |УПОРЯДОЧИТЬ ПО
        |   Хозрасчетный.НомерСтроки"
;

   
Запрос.УстановитьПараметр("ТекДок", ПоступлениеСсылка);
   
РезультатЗапроса = Запрос.Выполнить();

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

       
Сообщить("Дт " + ВыборкаДетальныеЗаписи.СчетДт + " Кт " +
       
ВыборкаДетальныеЗаписи.СчетКт + " " + ВыборкаДетальныеЗаписи.Сумма + " руб.");

    КонецЦикла;

КонецПроцедуры
Получение оборотов между бухгалтерскими счетами в 1С 8.3:
&НаСервере
Процедура ПолучениеОборотовМеждуБухгалтерскимиСчетамиНаСервере()

   
// За получение оборотов между счётом и корреспондирующим счётом за произвольный период с заданной периодичностью
    // в различных разрезах аналитики отвечает виртуальная таблица Обороты, у неё есть следующие параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Периодичность (например, Период, Запись, Год, Месяц...)
    // 4. Условие счета (например, Счет = &ВыбСчет)
    // 5. Субконто (список видов субконто, влияет на доступность и смысл Субконто1, Субконто2..,
    //    которыми можно оперировать в запросе).
    // 6. Условие (например, Субконто1 = &ВыбСклад)
    // 7. Условие корсчета (аналогично условию счёта)
    // 8. КорСубконто (аналогично субконто)

    // *** ПРИМЕР КОДА №1 *** //
    // Узнаем сколько пришло и сколько ушло материала на основной склад за январь 2020 года.
    // То есть получим дебетовые и кредитовые обороты по счёту 10.1, субконто Склады (значение "Основной склад")
   
Запрос = Новый Запрос;
   
Запрос.Текст =
   
"ВЫБРАТЬ
    |   ХозрасчетныйОбороты.Счет,
    |   ХозрасчетныйОбороты.Субконто1 КАК Склад,
    |   ХозрасчетныйОбороты.Организация,
    |   ХозрасчетныйОбороты.СуммаОборотДт КАК ПоступилоМатериалов,
    |   ХозрасчетныйОбороты.СуммаОборотКт КАК СписаноМатериалов,
    |   ХозрасчетныйОбороты.СуммаОборот КАК Разница
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Обороты(
    |       ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
    |       ДАТАВРЕМЯ(2020, 01, 31, 23, 59, 59),
    |       Период,Счет = &ВыбСчет,&ВидыСубконто, Субконто1 = &ВыбСклад)
    |КАК ХозрасчетныйОбороты"
;

   
ВидыСубконто = Новый Массив;
   
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);

   
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1") );
   
Запрос.УстановитьПараметр("ВыбСклад",Справочники.Склады.НайтиПоНаименованию("Основной"));
   
РезультатЗапроса = Запрос.Выполнить();

   
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    Если
ВыборкаДетальныеЗаписи.Следующий() Тогда

       
Сообщить("Счёт " + ВыборкаДетальныеЗаписи.Счет + " (" + ВыборкаДетальныеЗаписи.Склад + ")");
       
Сообщить("Поступило материалов на " + ВыборкаДетальныеЗаписи.ПоступилоМатериалов + " руб.");
       
Сообщить("Списано материалов на " +ВыборкаДетальныеЗаписи.СписаноМатериалов + " руб.");
       
Сообщить("Разница между поступление и списанием " + ВыборкаДетальныеЗаписи.Разница + " руб.");

    КонецЕсли;

   
// *** ПРИМЕР КОДА №2 *** //
    // Узнаем сколько пришло материала на основной склад за каждый месяц 2020 года.
   
Запрос = Новый Запрос;
   
Запрос.Текст =
   
"ВЫБРАТЬ
    |   ХозрасчетныйОбороты.Период,
    |   ХозрасчетныйОбороты.Счет,
    |   ХозрасчетныйОбороты.Субконто1 КАК Склад,
    |   ХозрасчетныйОбороты.Организация,
    |   ХозрасчетныйОбороты.СуммаОборотДт КАК ПоступлениеМатериалов
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Обороты(
    |       ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
    |       ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
    |       Месяц,Счет = &ВыбСчет,&ВидыСубконто,
    |       Субконто1 = &ВыбСклад
    |   ) КАК ХозрасчетныйОбороты
    |УПОРЯДОЧИТЬ ПО
    |   Период Возр"
;

   
ВидыСубконто = Новый Массив;
   
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады);

   
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1"));
   
Запрос.УстановитьПараметр("ВыбСклад",Справочники.Склады.НайтиПоНаименованию("Основной"));
   
РезультатЗапроса = Запрос.Выполнить();

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

       
Сообщить(Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=ММММ") + ": " + ВыборкаДетальныеЗаписи.ПоступлениеМатериалов + " руб.");

    КонецЦикла;

   
// *** ПРИМЕР КОДА №3 *** //
    // Узнаем сколько денег поступило в кассу от покупателей за 2020 год.
    // То есть проанализируем дебетовые обороты между 50.1 и 62.1
   
Запрос = Новый Запрос;
   
Запрос.Текст =
   
"ВЫБРАТЬ
    |   ХозрасчетныйОбороты.Счет,
    |   ХозрасчетныйОбороты.КорСчет,
    |   ХозрасчетныйОбороты.СуммаОборотДт
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Обороты(
    |       ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
    |       ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
    |       Период,Счет = &ВыбСчет,,,КорСчет = &ВыбКорСчет) КАК ХозрасчетныйОбороты"
;

   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("50.1"));
   
Запрос.УстановитьПараметр("ВыбКорСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.1"));
   
РезультатЗапроса = Запрос.Выполнить();

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

       
Сообщить("За 2020 год на " + ВыборкаДетальныеЗаписи.Счет + " с " +
       
ВыборкаДетальныеЗаписи.КорСчет + " пришло " + ВыборкаДетальныеЗаписи.СуммаОборотДт + " руб.");

    КонецЦикла;

КонецПроцедуры
Получение остатков по бухгалтерскому счету в 1С 8.3:
&НаСервере
Процедура ПолучениеОстатковПоБухгалтерскомуСчетуНаСервере()

   
// За получение остатков по бухгалтерским счетам в разрезе аналитики отвечает
    // виртуальная таблица Остатки. У неё есть следующие параметры:
    // 1. Период (на который считаем остатки)
    // 2. Условие счета (например, Счет = &ВыбСчет)
    // 3. Субконто (список видов субконто, влияет на доступность и смысл
    // Субконто1, Субконто2.., которыми можно оперировать в запросе
    // 4. Условие (например, Субконто1 = &ВыбСклад)

    // Найдём остатки материалов на всех складах на конец 2020 года.
    // То есть запросим дебетовые остатки по всем счетам,
    // входящих в группу 10 счёта в разрезе субконто Материалы.
   
Запрос = Новый Запрос;
   
Запрос.Текст =
   
"ВЫБРАТЬ
    |   ХозрасчетныйОстатки.Счет,
    |   ХозрасчетныйОстатки.Субконто1 КАК Материал,
    |   ХозрасчетныйОстатки.КоличествоОстатокДт,
    |   ХозрасчетныйОстатки.СуммаОстатокДт
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.Остатки(
    |       ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
    |       Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто) КАК ХозрасчетныйОстатки"
;

   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("10"));

   
ВидыСубконто = Новый Массив;
   
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Материалы);
   
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
   
РезультатЗапроса = Запрос.Выполнить();

   
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
Сообщить("Остатки материалов по всем складам на конец 2020 года.");
    Пока
ВыборкаДетальныеЗаписи.Следующий() Цикл

       
Сообщить(ВыборкаДетальныеЗаписи.Материал.Наименование +" Количество = " + ВыборкаДетальныеЗаписи.КоличествоОстатокДт +
       
" шт.Сумма = " + ВыборкаДетальныеЗаписи.СуммаОстатокДт + " руб.");

    КонецЦикла;

КонецПроцедуры
Получение одновременно остатков и оборотов по бухгалтерскому счету в 1С 8.3:
&НаСервере
Процедура ПолучениеОдновременноОстатковИОборотовПоБухгалтерскомуСчетуНаСервере()

   
// За получение остатков и обротов за произвольный период с заданной периодичностью в разрезе аналитики
    // отвечает виртуальная таблица ОстаткиИОбороты, у неё есть параметры:
    // 1. Начало периода
    // 2. Конец периода
    // 3. Периодичность (например, Период, Год, Месяц, Неделя, День...)
    // 4. Метод дополнения периодов (Движение или ДвиженияИГраницыПериода)
    // 5. Условие счета (например, Счет = &ВыбСчет)
    // 6. Субконто (список видов субконто, влияет на доступность и смысл Субконто1, Субконто2..,
    // которыми можно оперировать в запросе
    // 7. Условие (например, Субконто1 = &ВыбМатериал)

    // Получим начальный остаток, приход, расход, и конечный остаток Доски обрезной
    // на всех складах за каждый месяц 2020 года:

   
Запрос = Новый Запрос;
   
Запрос.Текст =
   
"ВЫБРАТЬ
    |   ХозрасчетныйОстаткиИОбороты.Период,
    |   ХозрасчетныйОстаткиИОбороты.Счет,
    |   ХозрасчетныйОстаткиИОбороты.Субконто1,
    |   ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт,
    |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
    |   ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
    |   ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт
    |ИЗ
    |   РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
    |       ДАТАВРЕМЯ(2020, 01, 01, 00, 00, 00),
    |       ДАТАВРЕМЯ(2020, 12, 31, 23, 59, 59),
    |       Месяц, ДвиженияИГраницыПериода,
    |       Счет В ИЕРАРХИИ (&ВыбСчет), &ВидыСубконто,
    |       Субконто1 = &ВыбМатериал
    |   ) КАК ХозрасчетныйОстаткиИОбороты"
;


   
ВидыСубконто = Новый Массив;
   
ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Материалы);
   
Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);
   
Запрос.УстановитьПараметр("ВыбСчет",ПланыСчетов.Хозрасчетный.НайтиПоКоду("10"));
   
Запрос.УстановитьПараметр("ВыбМатериал",Справочники.Материалы.НайтиПоНаименованию("Доска обрезная"));
   
РезультатЗапроса = Запрос.Выполнить();

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

       
Сообщить(Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=ММММ") + ": ");
       
Сообщить(Строка(ВыборкаДетальныеЗаписи.Счет) + " " + ВыборкаДетальныеЗаписи.Субконто1 + " Нач. остаток " +
       
ВыборкаДетальныеЗаписи.КоличествоНачальныйОстатокДт + " приход " +
       
ВыборкаДетальныеЗаписи.КоличествоОборотДт + ", расход " + ВыборкаДетальныеЗаписи.КоличествоОборотКт
        + " Кон. остаток " + ВыборкаДетальныеЗаписи.КоличествоКонечныйОстатокДт);

    КонецЦикла;

КонецПроцедуры
Поиск и программное изменение бухгалтерских проводок документа в 1С 8.3:
&НаСервере
Процедура ПоискИПрограммноеИзменениеБухгалтерскихПроводокДокументаНаСервере()

   
// Ссылка на проведенный документ Поступление материалов № МРБ-000123
   
ПоступлениеСсылка = Документы.ПоступлениеМатериалов.НайтиПоНомеру("МРБ-000123", '20201231');

   
// Документ делает следующие проводки по регистру бухгалтерии "Хозрасчетный":
    // Дт 10.1 Кт 60.1
    // Дт 60.1 Кт 50.1

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

    // Используем объектную технику получения проводок,так как будем их изменять:

   
ПоступлениеМатериалов = ПоступлениеСсылка.ПолучитьОбъект();
   
// Получение набора проводок этого документа в регистр "Хозрасчетный"
   
НаборПроводок = ПоступлениеМатериалов.Движения.Хозрасчетный;

   
// Чтение проводок из базы данных
   
НаборПроводок.Прочитать();

    Для Каждого
Проводка Из НаборПроводок Цикл

       
// Выводим старые значения
       
Сообщить("Дт " + Проводка.СчетДт + " = " + Проводка.КоличествоДт + " шт.; Кт " + Проводка.СчетКт +
       
" = " + Проводка.КоличествоКт + " шт.; Сумма = " + Проводка.Сумма + " руб.");

        Если
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1") Тогда
           
// эта проводка в дебет 10 счёта - изменим её, утроив количество по дебету
           
Проводка.КоличествоДт = Проводка.КоличествоДт * 3;
        КонецЕсли;

    КонецЦикла;

   
// Добавляем новую проводку
   
НоваяПроводка = НаборПроводок.Добавить();

   
// По Дебету:
   
НоваяПроводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1");

   
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады]
    =
Справочники.Склады.НайтиПоНаименованию("Основной");

   
НоваяПроводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Материалы]
    =
Справочники.Материалы.НайтиПоНаименованию("Доска обрезная");

   
НоваяПроводка.КоличествоДт = 777;

   
// По Кредиту:
   
НоваяПроводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.1");

   
НоваяПроводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты]
    =
Справочники.Контрагенты.НайтиПоНаименованию("ЗАО ""Умелые руки""");

   
// Общие данные проводки:
   
НоваяПроводка.Период = ТекущаяДата();
   
НоваяПроводка.Организация = Справочники.Организации.НайтиПоНаименованию("ООО ""Сделай сам""");
   
НоваяПроводка.Сумма = 9000;
   
НоваяПроводка.Содержание = "Проводка добавлена программно.";

   
// Записываем набор проводок:
   
НаборПроводок.Записать(Истина); // удалим старые проводки и запишем вместо них новые

    // Теперь бухг.проводки документа № МРБ-000123, отличаются от тех, что были записаны документом при проведении,
    // чтобы вернуть их к начальному виду - нужно перепровести документ

КонецПроцедуры
Получение информации о бухгалтерском счёте из плана счетов в 1С 8.3:
&НаСервере
Процедура ПолучениеИнформацииОБухгалтерскомСчётеИзПланаСчетовНаСервере()

   
// Чтение информации о счёте из плана счетов:

    // Находим счёт по коду
   
Счёт10_1 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1");

   
// Смотрим состав каждого субконто
   
Для Каждого Субконто Из Счёт10_1.ВидыСубконто Цикл
       
Сообщить("Субконто " + Субконто.ВидСубконто.Наименование);
       
Сообщить("...Количественный=" + Субконто.Количественный);
       
Сообщить("...Валютный=" + Субконто.Валютный);
       
Сообщить("...Суммовой=" + Субконто.Суммовой);
    КонецЦикла;

   
// Узнаем, ведётся ли на 10.1 учёт по складам (есть ли у этого счёта субконто "Склады")
   
Если Счёт10_1.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.МестаХранения) <> Неопределено Тогда
       
Сообщить("На 10.1 ведётся учёт по складам.");
    Иначе
       
Сообщить("На 10.1 ведётся учёт по складам не ведётся.");
    КонецЕсли;

   
// Узнаем, является ли один счёт родителем другого
   
Счёт10 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10");
    Если
Счёт10_1.ПринадлежитЭлементу(Счёт10) Тогда
       
Сообщить(Счёт10_1.Код + " является родителем для " + Счёт10.Код);
    КонецЕсли;

КонецПроцедуры
Создание бухгалтерских проводок без привязки к документу в 1С 8.3:
&НаСервере
Процедура СозданиеБухгалтерскихПроводокБезПривязкиКДокументу()

   
// Бухгалтерские проводки обязательно должны быть привязаны к документу, в нашем случае этим документом
    // будет документ "БухСправка"

    // Создание и запись пустого документа (пока без бухгалтерских проводок)
   
Операция = Документы.БухСправка.СоздатьДокумент();
   
Операция.Дата = ТекущаяДата();
   
Операция.Организация = Справочники.Организации.НайтиПоНаименованию("Сделай сам");
   
Операция.СуммаОперации = 3000;
   
Операция.Содержание = "Ручная операция по 10 счёту";
   
Операция.Записать(РежимЗаписиДокумента.Запись);

   
// Получение набора проводок, его заполнение и запись
   
НаборПроводок = Операция.Движения.Хозрасчетный;

   
Проводка = НаборПроводок.Добавить();
   
Проводка.Период = Операция.Дата;

   
// По Дебету:
   
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1");
   
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Материалы]
    =
Справочники.Материалы.НайтиПоНаименованию("Доска обрезная");

   
На10ВедетсяУчетПоСкладам = Проводка.СчетДт.ВидыСубконто.
   
Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады) <> Неопределено;

    Если
На10ВедетсяУчетПоСкладам Тогда

       
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] =
       
Справочники.Склады.НайтиПоНаименованию("Основной");

    КонецЕсли;

   
Проводка.КоличествоДт = 3;

   
// По Кредиту:
   
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.1");
   
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] =
   
Справочники.Контрагенты.НайтиПоНаименованию("Умелые руки");

   
// Общие данные проводки:
   
Проводка.Сумма = 800;

   
//Записываем набор проводок:
   
НаборПроводок.Записать(Истина);

КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Регистры бухгалтерии:
1
комментарий
Паша
21 мар 2021
Супер инструкция!
____________________
Copyright©, «Программист 1С в г.Минске», 16.03.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому