1С 8.3 Регистры бухгалтерии
Данные > Примеры кода 1С > 1С 8.3 Регистры бухгалтерии
Регистры бухгалтерии в 1С 8.3 - это объекты конфигурации, которые используются для регистрации хозяйственных операций в бухгалтерском учёте. Позволяют вести многоуровневый и многомерный аналитический учет, в том числе и по нескольким планам счетов. Предусмотрено ведение количественного, суммового и валютного учета по отдельным разрезам аналитики (субконто).
Распространенные ошибки в формировании движений документов по регистрам:
- Не свернуть Табличную часть перед построением движений. Бывают ситуации исключения, но если их не предусмотрено, то ТЧ документа при построении движений документа необходимо сворачивать. Пользователи часто копируют строки и может быть большое количество дублей строк. Чревато увеличением, как минимум, количества записей в регистрах. Например, можно решить в запросе так: СГРУППИРОВАТЬ ПО Документ.Материалы
- Не знать, что в 1 секунде времени может быть несколько тысяч документов, и для определения последовательности использовать поле "Дата" из документа. Необходимо использовать МоментВремени(), который равен Дата + Ссылка. И еще нужно иметь ввиду, что Ссылка - это не только УИД, но и идентификатор типа документа. Поэтому при упорядочивании внутри одной секунды сначала идут документы одного типа, а потом уже другого.
Оглавление:
Чтение бухгалтерских проводок документа без значений субконто в 1С 8.3:
&НаСервере
Процедура ЧтениеБухгалтерскихПроводокБезСубконтоНаСервере()
// За журнал проводок отвечает таблица РегистрБухгалтерии.Хозрасчетный.
// В ней нет информации о субконто - аналитике счетов
// Получение всех бухгалтерских проводок:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.Период КАК Период,
| Хозрасчетный.Организация КАК Организация,
| Хозрасчетный.СчетДт КАК СчетДт,
| Хозрасчетный.СчетКт КАК СчетКт,
| Хозрасчетный.КоличествоДт КАК КоличествоДт,
| Хозрасчетный.КоличествоКт КАК КоличествоКт,
| Хозрасчетный.Сумма КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Активность = Истина
|УПОРЯДОЧИТЬ ПО
| Период";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("(" + Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=dd.MM.yy") + ") Дт: " + ВыборкаДетальныеЗаписи.СчетДт
+ " Кт: " + ВыборкаДетальныеЗаписи.СчетКт + " " + ВыборкаДетальныеЗаписи.Сумма + " руб.");
КонецЦикла;
КонецПроцедуры
Процедура ЧтениеБухгалтерскихПроводокБезСубконтоНаСервере()
// За журнал проводок отвечает таблица РегистрБухгалтерии.Хозрасчетный.
// В ней нет информации о субконто - аналитике счетов
// Получение всех бухгалтерских проводок:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.Период КАК Период,
| Хозрасчетный.Организация КАК Организация,
| Хозрасчетный.СчетДт КАК СчетДт,
| Хозрасчетный.СчетКт КАК СчетКт,
| Хозрасчетный.КоличествоДт КАК КоличествоДт,
| Хозрасчетный.КоличествоКт КАК КоличествоКт,
| Хозрасчетный.Сумма КАК Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Активность = Истина
|УПОРЯДОЧИТЬ ПО
| Период";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("(" + Формат(ВыборкаДетальныеЗаписи.Период, "ДФ=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. Начало периода
// 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');
Запрос = Новый Запрос;// Чтение проводок по регистру "Хозрасчетный" запросом
Запрос.Текст =
"ВЫБРАТЬ
| Хозрасчетный.СчетДт,
| Хозрасчетный.СчетКт,
| Хозрасчетный.Сумма
|ИЗ
| РегистрБухгалтерии.Хозрасчетный КАК Хозрасчетный
|ГДЕ
| Хозрасчетный.Регистратор = &ТекДок
|УПОРЯДОЧИТЬ ПО
| Хозрасчетный.НомерСтроки";
Запрос.УстановитьПараметр("ТекДок", ПоступлениеСсылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить("Дт " + ВыборкаДетальныеЗаписи.СчетДт + " Кт " +
ВыборкаДетальныеЗаписи.СчетКт + " " + ВыборкаДетальныеЗаписи.Сумма + " руб.");
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЧтениеБухгалтерскихПроводокДокументаЗапросомНаСервере()
// Есть ссылка на проведенный документ Поступления материалов № МРБ-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. Начало периода
// 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. Период (на который считаем остатки)
// 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. Начало периода
// 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, отличаются от тех, что были записаны документом при проведении,
// чтобы вернуть их к начальному виду - нужно перепровести документ
КонецПроцедуры
Процедура ПоискИПрограммноеИзменениеБухгалтерскихПроводокДокументаНаСервере()
// Ссылка на проведенный документ Поступление материалов № МРБ-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.Код);
КонецЕсли;
КонецПроцедуры
Процедура ПолучениеИнформацииОБухгалтерскомСчётеИзПланаСчетовНаСервере()
// Чтение информации о счёте из плана счетов:
// Находим счёт по коду
Счёт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;
//Записываем набор проводок:
НаборПроводок.Записать(Истина);
КонецПроцедуры
Процедура СозданиеБухгалтерскихПроводокБезПривязкиКДокументу()
// Бухгалтерские проводки обязательно должны быть привязаны к документу, в нашем случае этим документом
// будет документ "БухСправка"
// Создание и запись пустого документа (пока без бухгалтерских проводок)
Операция = Документы.БухСправка.СоздатьДокумент();
Операция.Дата = ТекущаяДата();
Операция.Организация = Справочники.Организации.НайтиПоНаименованию("Сделай сам");
Операция.СуммаОперации = 3000;
Операция.Содержание = "Ручная операция по 10 счёту";
Операция.Записать(РежимЗаписиДокумента.Запись);
// Получение набора проводок, его заполнение и запись
НаборПроводок = Операция.Движения.Хозрасчетный;
Проводка = НаборПроводок.Добавить();
Проводка.Период = Операция.Дата;
// По Дебету:
Проводка.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.1");
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Материалы]
= Справочники.Материалы.НайтиПоНаименованию("Доска обрезная");
На10ВедетсяУчетПоСкладам = Проводка.СчетДт.ВидыСубконто.
Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады) <> Неопределено;
Если На10ВедетсяУчетПоСкладам Тогда
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] =
Справочники.Склады.НайтиПоНаименованию("Основной");
КонецЕсли;
Проводка.КоличествоДт = 3;
// По Кредиту:
Проводка.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.1");
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] =
Справочники.Контрагенты.НайтиПоНаименованию("Умелые руки");
// Общие данные проводки:
Проводка.Сумма = 800;
//Записываем набор проводок:
НаборПроводок.Записать(Истина);
КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом #Регистры бухгалтерии:
1
комментарий
Паша
21 мар 2021
Супер инструкция!
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник