1С:ПРЕДПРИЯТИЕ - Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие
ЯНГДЮМХЕ ДНЙСЛЕМРНБ НМКЮИМ
дНЙСЛЕМРШ Х АКЮМЙХ НМКЮИМ

нАЯКЕДНБЮРЭ

1С:ПРЕДПРИЯТИЕ - Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие

экономика



Отправить его в другом документе 1С:ПРЕДПРИЯТИЕ - Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие Hits:


ДРУГИЕ ДОКУМЕНТЫ

Национальная экономика и общественный продукт. ВНП,ВВП,НД и их составляющие
Деньги и денежный рынок. Денежно-кредитная политика
Технико-экономическое обоснование проектируемой КПУ
АНАЛИЗ ОБОРАЧИВАЕМОСТИ ОБОРОТНЫХ АКТИВОВ И КАПИТАЛА. ПОНЯТИЕ И ПРОДОЛЖИТЕЛЬНОСТЬ ОПЕРАЦИОННОГО ЦИКЛА
Финансовая отчетность
Приватизация - новый институт гражданских правоотношений
Глобализация мировой экономики
Анализ и планирование производительности труда
 

1С:ПРЕДПРИЯТИЕ - Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие

10.1. Принцип двойной записи. Баланс

Двойная запись ≈ прием учета, когда сумма и др. атрибуты каждой хозяйственной операции фиксируются дважды:

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

по кредиту другого (корреспондирующего) счета указывается источник, за счет которого произошло это изменение.

Дебет - он должен Кредит - он верит

Впервые описана Лукой Пачоли в 1494 г. в книге ╚Сумма арифметики, геометрии, учения о 444f56he ; пропорциях и отношениях╩, в разделе ╚Трактат о счетах и записях╩ , посвященной применению математики в коммерции.

Баланс

Слово ╚баланс╩ происходит от латинского выражения bi lanx ≈ ╚две чашки╩ и означает равновесие.



Баланс ≈ система показателей, отражающая поступление и расходование средств путем их сопоставления на определенную дату.

Бухгалтерский баланс состоит из двух частей: пассива и актива.

Актив═════════════════════════════════════════════════════ Пассив

Имущества═══════════════════════════════ Источники

Права═════════════════════════════════════ Обязательства к уплате

Обязательства к получению

Таким образом, общий принцип двойной записи заключается в том, что каждая операция о 444f56he ;дновременно фиксируется как изменение активов (приход) и пассивов (расход). Если после суммирования записей в каждом разделе суммы не совпадают, следует искать ошибку.

Равновесие бухгалтерского баланса - это равенство итогов актива и пассива, так как в активе баланса показываются хозяйственные средства предприятия, а в пассиве - источники этих средств, т.е. те же самые средства, но сгруппированные по другому признаку - по источникам их формирования.


148_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе V7

10.2. Бухгалтерские счета

Все хозяйственные операции находят свое отражение на счетах бухгалтерского учета. Если зафиксировать показатели учета на определенную дату, они будут представлены в виде остатков (сальдо) по счетам. При рассмотрении показателей во времени, принято оперировать понятием отчетного периода, в котором можно выделить начальные остатки, обороты и конечные остатки по счетам.

Другими словами бухгалтерский счет - это "регистр", на котором ведется учет некоторого разреза хозяйственной деятельности предприятия. Отличие от регистров оперативного учета в том, что балансовые счета ≈ это взаимосвязанные разрезы учета. Взаимосвязь счетов обусловлена корреспонденциями ≈ то есть двойными записями.

Сальдо и обороты по счетам бухгалтерского учета (самолетики)

Оборот - приход или расход объекта учета на счете за определенный период времени.

Сальдо ≈ остаток объекта учета на счете на дату сальдирования (расчета остатка).

Балансовые счета можно разделить на активные, пассивные и активно-пассивные. Активные счета имеют дебетовое сальдо (остаток), пассивные кредитовое сальдо (остаток). Красным ╚неправильным╩ сальдо называют ненулевое конечное кредитовое сальдо на активном счете или конечное дебетовое сальдо на пассивном счете в конце балансового периода. Активно-пассивные счета позволяют в одном разрезе учета вести и активные, и пассивные статьи баланса.

СНД ≈ сальдо начальное дебетовое, СКД ≈ сальдо конечное дебетовое, ДО ≈ дебетовый оборот, КО ≈ кредитовый оборот, СНК ≈ сальдо конечное кредитовое, СКК ≈ сальдо конечное кредитовое.


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 149

10.3. Виды метаданных компоненты ╚Бухгалтерский учет╩

План счетов - представляет собой таблицу, каждая строка которой отражает определенный счет или субсчет бухгалтерского учета.

Бухгалтерский счет ≈ (далее ╚Счет╩) это "регистр", на котором ведется учет некоторого разреза хозяйственной деятельности предприятия. Счета бывают Активные, Пассивные и Активно-Пассивные.

Виды Субконто предназначены для определения о 444f56he ;бъектов аналитического учёта по счетам, могут принимать значения справочников, документов, перечислений и базовых типов данных.

Проводка (корреспонденция) ≈ это связь счетов б/у обусловленная одной хозяйственной операцией. Она предназначена для изменения состояния средств, отражаемых в бухгалтерском учёте. Содержит корреспондирующие счета, сумму, информацию по синтетическому и аналитическому учёту, а также дополнительные реквизиты.

Операция - совокупность проводок, отражающих в бухгалтерском учёте хозяйственную операцию.

В системе ╚1С: Предприятие╩ счета предназначены для хранения планов счетов бухгалтерского учета, то есть объектов синтетического учета средств предприятия. Если в конфигурации не определены планы счетов - нельзя создать бухгалтерский документ.


150_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе V7

Представленные в окне планов счетов свойства устанавливаются для любого плана счетов, создан ного в конфигурации.Например, нельзя создать два плана счетов с различным набором реквизитов счета или с различными разделителями учета.

В качестве разделителя учета можно выбрать любой реквизит журнала проводок.

Интерактивные формы тоже являются общими для всех планов счетов. Обычно, для различных планов счетов, настраивают формы списка с различными наборами элементов формы и при открытии плана счетов жестко (программно) указывают, какую форму списка открывать для данного плана счетов.

Для ведения валютного учета (вычисления рублевого покрытия валютных сумм) необходимо предусмотреть в конфигурации Справочник с реквизитами Курс и Кратность, а в документах, формирующих бухгалтерские проводки, реквизит, ссылающийся на этот справочник.

Чтобы можно было вести на счете аналитический учет в разрезе субконто, необходимо установить значение ╚Макс. Количество субконто╩ больше нуля.

Очень важный параметр ╚Количественный учет╩ ╚Только по аналитике╩. Если он установлен, Вы не получите ни сальдо, ни обороты по количеству в разрезе счетов. В этом случае количественный учет возможен только в разрезе субконто. Если Вашему бухгалтеру необходимо видеть количественные сальдо и обороты по субсчетам, необходимо снять этот флажок и перепровести документы бухгалтерского учета.

Операции и проводки


Х. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 151

Создадим реквизит проводки ╚ТипУчета╩ типа перечисление ТипыУчета и разделитель учета в свойствах планов счетов.

В нашем примере мы создадим структуру бухгалтерского учета для списания о 444f56he ;борудования по партиям, аналогичную структуре оперативного учета.

Создадим два вида субконто, аналогичные измерениям регистра ╚Амортизация╩. Эту операцию можно сделать методом drag & drop в дереве метаданных. Перетащим последовательно измерения регистра на ветку Виды Субконто.

В окне планов счетов создадим План счетов ╚Учебный╩ и определим максимальное количество субконто ≈ 2. В учебном плане счетов создадим группу счетов с субсчетами. Иерархия в плане счетов определяется шаблоном кода.

Новый счет удобно вводить клавишей Ins или через меню ╚Действия╩ - ╚Новая строка╩. Учет не списанного оборудования будем вести на Активном счете, а списанного - на Пассивном. Количественный учет и Субконто1-


152_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе V7

Оборудование определим по группе счетов, а Субконто2 ≈ Партия только на активном счете.

При создании бухгалтерских запросов надо внимательно просмотреть, как заданы параметры счета в плане счетов. Если параметр счета задан только на субсчете, как Субконто2 ≈ Партия, то итоговые значения сальдо и оборотов по группе счетов для этого параметра не накапливаются.

Важной особенностью бухгалтерских счетов является возможность создания счетов, как в конфигурации, так и в самой информационной базе. Последние не помечены красной галочкой и могут редактироваться в режиме ╚Предприятие╩, даже если по ним сформированы проводки ручными операциями или бухгалтерскими документами. После такого редактирования, необходимо перепровести всю базу; итоги при этом изменятся.

10.3.1. Виды субконто

Термин субконто используется для обозначения набора значений, используемых для ведения аналитического учета по счету. Buд субконто идентифицирует совокупность объектов конкретного типа, которые могут использоваться для ведения аналитического учета. Значение субконто в проводке - это ссылка на объект аналитики.

Созданные виды субконто указываются при настройке аналитического учета по счетам. Для каждого счета допускается использование до 5 видов субконто, что позволяет вести многомерный аналитический учет. Ведение многоуровневого аналитического учета реализуется путем использования многоуровневых справочников.


X Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 153

Свойства объекта аналитики: тип значения, свойство отбора, ссылки на его цены и представления о 444f56he ;бъекта, настраиваются при конфигурировании вида субконто

В нашем примере установим признак отбора для субконто ╚Оборудование╩.

Свойства количественного, валютного и суммового учета по субконто определяются непосредственно на счетах.

Субконто на счетах имеют назначение аналогичное измерениям оборотного регистра. Отличие заключается в том, что в корреспонденции мы задаем одну и ту же ссылку на объект аналитики на разных счетах, что позволяет получить обороты между корреспондирующими счетами по объекту аналитики.

10.3.2. Атрибуты операции и проводки

Бухгалтерская операция имеет аналогию с документом, это просто другое представление документа.

Атрибуты операции ≈ это реквизиты шапки, они, как правило, и берутся из Шапки бухгалтерского документа:

ДатаОперации (Дата, обычно это дата документа), Содержание (обычно произвольная строка),


154_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе V7

СуммаОперации (Число, обычно это итог по сумме ≈ Итог(╚Сумма╩)),

Документ (ссылка на документ, создавший операцию). Атрибуты проводки ≈ это реквизиты многострочной части.

Количество (Число),

Валюта (элемент справочника, определенный в свойствах планов счетов для валютного учета),

ВалСумма (Число),

Сумма (Число, для валютных счетов ≈ это рублевое покрытие).

Параметры синтетического и аналитического учета задаются в проводке по дебету и кредиту:

Атрибуты Дебета и Кредита:

∙═══ Счет,

Субконто (виды и количество субконто определяются выбранным счетом).



Упражнение 28 В документе Приход создайте реквизит шапки ТипУчета типа перечисление ТипыУчета. Предусмотрите ввод его значения по умолчанию -текущее значение константы ТекТипУчета, при создании нового документа в информационной базе.


Х Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 155

В зависимости от значения этого реквизита мы будем выполнять движения по документу. У этого перечисления три значения: Красное, Белое и Черное. Определим условия проведения документа.

В результате если значение перечисления Красное ≈ документ будет проведен и по оперативному, и по бухгалтерскому учету.

Описание алгоритма Операции в модуле документа.

После того, как мы сконфигурировали объекты бухгалтерского учета можно создать в модуле приходного документа операцию с проводками.

Проводки по документу создаются через атрибут ╚Операция╩.

Упражнение 29. Создадим алгоритм формирования операции по документу ╚Приход╩ с учетом формирования партии приходным документом и условия списания по бухгалтерскому или оперативному учету.

В окне редактирования документа установим флаг ╚Бухгалтерский учет╩, а в модуле документа отредактируем предопределенную процедуру ОбработкаПроведения(). Операцию также можно создать с помощью конструктора формирования о 444f56he ;пераций, но процедуру ОбработкаПроведения() надо будет потом отредактировать.


156_____ _______ ______ _______ 1С:Лрвдприятие. Практика программирования на платформе V7

В конструкторе заполним атрибуты операции и проводки. Определяемый атрибут проводки выделяем в нижней таблице. Формулу, вычисляющую его значения, определяем по значению или берем из данных документа.

После редактирования модуль документа должен выглядеть примерно так:

// ** ** ******

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку() =1 Цикл

// Запись истории периодического реквизита справочника

Если НовЦенаоОборудование. Цена. Получить (ТекудийДокумент () ) Тогда

ПривязыватьСтроку(НомерСтроки);

УстановитьРеквизитСправочника(Оборудование,"Цена",НовЦена);

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Бел Тогда

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

Регистр.Амортизация.Оборудование = Оборудование; Регистр.Амортизация.Партия = ТекущийДокумент(); Регистр.Амортизация.Количество = Количество* Единица.Коэффициент;

Регистр.Амортизация.Стоимость = Сумма;


Х Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 157

Регистр.Амортизация.ПривязыватьСтроку(НомерСтроки);

Регистр.Амортизация.ДвижениеПриходВыполнить();

//}}ДВИЖЕНИЯ_РЕГИСТРОВ

КонецЕсли;

Если ТипУчетаоПеречисление.ТипыУчета.Чер Тогда

//}ФОРМИРОВАНИЕ_ОПЕРАЦИИ

КонецЕсли;

КонецПроцедуры

Обратите внимание, что, в отличие от движений регистров, для которых записывается каждое движение по строке документа, проводки по документу записываются в информационную базу все сразу при записи операции. Если возникает необходимость записать сформированные проводки, например, Чтобы посмотреть бухгалтерские итоги, используется метод Операция.ЗаписатьПроводки(). Метод может использоваться только для атрибута "Операция" документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам, уже измененным проводками, записанными этим документом. После


158═══ ____________________ 1С:Предприятие. Практика программирования на платформе V7

выполнения метода ЗаписатьПроводки() и до окончания процедуру ОбработкаПроведение уже невозможно изменять или удалять проводки добавленные до вызова этого метода. Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции. При записи сложной проводки, если у главной корреспонденции сложной проводки не указана сумма (равна 0), то она автоматически вычисляется на основании подчиненных корреспонденции.

При добавлении нового субконто или валютного учета (╚+╩) по счёту в плане счетов, в модулях документов, по которым проводки формируются интерактивно, необходимо прописать движения по созданным атрибутам счёта: <тип субконто> или <ВалСумма>.

Операция. ВалСумма=...;

10.4. Бухгалтерские итоги

Бухгалтерские Итоги (далее БИ) - это служебный объект позволяющий читать и отбирать информацию из объектов метаданных бухгалтерского учета. Он имеет два режима: режим итогов и режим бухгалтерского запроса.

10.4.1. Режим

В режиме Итогов выводится информация текущего периода или любого произвольного периода. В последнем случае БИ надо рассчитать на нужный период с помощью метода Рассчитать(ДатаНачала, ДатаКонца)

БИ.Рассчитать(<НачалоПериода>,<КонецПериода>,<ФильтрПоСчетам>,<ТолькоСинтетика>,

<ПланСчетов>,<РазделительУчета>);

<ФильтрПоСчетам> - необязательный параметр. Счета, для которых будет выполняться временный расчет

итогов. Задается значением типа "Счет" или объектом типа ''СписокЗначений", содержащим значения

типа "Счет", либо строкой, содержащей список кодов счетов, разделенных символом "," или ";"

("АМ.ПР;АМ.СП") .

<ТолькоСинтетика> - необязательный параметр: 1 - рассчитывать сальдо только по счетам; 0 - или не

указан - рассчитывать сальдо по счетам и по субконто.

Метод БИ. ОсновныеИтоги() переводит БИ в режим работы с итогами текущего периода

(основными итогами). Вызов этого метода имеет смысл тогда, когда ранее был выполнен расчет

временных итогов или запрос, и нужно вернуть объект к работе с основными итогами. При этом

результаты запроса или расчета временных итогов теряются.


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 159

БИ.СНД(<Счет>,<ТипСуммы>,<Валюта>,<Субконто1...>)

Возвращает дебетовое сальдо по счету на начало периода.

<Счет> - значение типа "Счет" или строка - код счета.

<ТипСуммы> - необязательный параметр.

Значения: 1 ("С") - сумма(по умолчанию);

2 ("В") - валютная сумма;

3("К") - количество.

<Валюта> - необязательный параметр.

<Субконто1...> - необязательные параметры. Значения субконто. Если параметры не указаны, то итоги

выдаются без учета аналитики.

Список параметров остальных бухгалтерских функций в режиме итогов такой же, кроме оборотов между счетами:

БИ.ОБ(<СчетДеб>,<СчетКр>,<ТипСуммы>,<Валюта>). Возвращает число - оборот с дебета счета <СчетДеб> в кредит счета <СчетКред>

Упражнение 30. В Форме списка справочника ╚Оборудование╩ вывести текущее конечное дебетовое сальдо по сумме конкретного оборудования (элемента справочника), по счету ╚Приход оборудования╩.

10.4.2. Режим

В режиме запроса с помощью метода БИ.ВыполнитьЗапрос(ДатаН,ДатаК) можно ╚построить╩ в оперативной памяти таблицу выборки и затем выбирать из нее необходимые данные.

БИ.ВыполнитьЗапрос(<НачалоПериода>,<КонецПериода>,<Счет>,<КоррСчет>,

<Валюта>,<ТипИтогов>,<Периодичность>,<ТипСуммы>)

<ТипИтогов> - число - тип отбираемых итогов. Значения: 1 - остатки и обороты по счету в цепом; 2 -

обороты между счетами; 3 - первое и второе вместе. По умолчанию: 1.

<Периодичность> - число или символьная строка (см. документацию).Позволяет получить

Дополнительный разрез итогов по периодам. По умолчанию периодичность не задана. Значения:

1("Период"); 2("Операция"); З("Проводка");═ 4 ("День"); 5 ("'Неделя'); 6 ("Декада"); 7 ("Месяц");

8 ("Квартал"); 9 ("Год").

<ТипСуммы> - число или строка - тип рассчитываемых итогов. Значения: 1("С") рассчитывать суммы;2

("В") рассчитывать валютные суммы; 4 ("К") рассчитывать количество. Если требуется одновременно

Рассчитывать разные суммы, значение параметра получается путем сложения допустимых значений,

например: 5 (1+4) - рассчитывать суммы и количество.



Перед вызовом этого метода можно установить признак отбора по субсчетам, определить фильтры по субконто и опции запроса.

БИ.Опции(<ВклЗабалансовСуммы>,<ВклОборСубкСуммы>)


160_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе \/7

Значения: 0 - суммы не включаются;

1 - суммы включаются.

БИ.ВключатьСу6счета(<ФлагСчета>,<ФлагКоррСчета>)_Устанавливает режим отбора итогов

методом "ВыполнитьЗапрос" по субсчетам.

<ФлагСчета> - необязательный параметр. Признак развертывания сальдо по субсчетам основного счета

Значение:О - не разворачить по субсчетам (по умолчанию); 1 - разворачивать по субсчетам; -1 (минус

единица) - не выдавать итоги по счетам-группам.

При установке признака отбора по субсчетам следует иметь в виду, что при установленном флажке ╚Количественный учет╩ ╚Только по аналитике╩ в свойствах Счетов при выборке субсчетов Вы не получите сальдо и обороты по количеству.

БИ.ИспользоватьСубконто(<ВидСубконто>,<Субконто>, <ТипФильтра>,<ПоГруппам>)

<ВидСубконто> - значение типа "ВидСубконто" (ВидСубконто.<ВидСубконто>)- расчет итогов будет

выполнен только для субконто указанного вида.

<Субконто> - значение Субконто, по которому будут отобраны итоги по аналитике. Если параметр не

задан - то считается пустым значением субконто.

<ТипФильтра> - Значения: 1 - разворачивать по данному субконто (по умолчанию), 2 - отбирать по

данному субконто, 3 - не учитывать это субконто вообще. <ПоГруппам> - число - группировка итогов по

субконто. Значения: 0 - не показывать итоги по группам справочника (по умолчанию);

1 - показывать итоги по группам справочника.

При установке фильтров по субконто надо обратить внимание на порядок их установки. Вложенность циклов выборки по субконто должна соответствовать порядку фильтров.

Тип фильтра 2 - отбор по субконто, имеет смысл использовать только для видов субконто с установленным флагом отбора (закладка ╚Дополнительные╩ свойств вида субконто).


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 161

Порядок вложенности циклов выборки


Обращение к результатам запроса



Данные из бухгалтерского запроса выбираются в циклах выборки. На рисунке ниже показаны правила вложенности циклов выборки бухгалтерских итогов из запроса.

При обращении к атрибутам выборки, в отличие от методов, не надо ставить скобки - ().


162 _____ _______ ______ ______ 1С:Предприятив. Практика программирования на платформе V7

При обращении в запросе к остаткам, оборотам и развернутому сальдо указывается только один параметр - ТипСуммы:

1  ("С") - сумма;

2  ("В") - валютная сумма;

3  ("К") - количество.

Если параметр не указан, метод возвращает сумму.

Создание таблицы партий с помощью бухгалтерского запроса

Сформируем в модуле документа ╚Амортизация╩ бухгалтерский запрос и заполним таблицу бухгалтерских партий.

Обратите внимание на порядок вызова методов ИспользоватьСубконто() -он должен соответствовать иерархии субконто на счетах указанных в методе ВыполнитьЗапрос(). Порядок вложенности циклов выборки бухгалтерских итогов методами ВыбратьСубконто() и ПолучитьСубконто() должен соответствовать последовательности установки фильтров по субконто методом ИспользоватьСубконто().

В процедуре Партии(ЗначениеОборудования) мы сформируем таблицу партий оборудования, по которым конечное сальдо больше нуля. При вызове процедуры в параметр надо передать значение оборудования, по которому необходимо получить партии.

Перем ТаблицаБухгПартий, Ит;

Процедура Партии(ЗначениеОборудования)

Если ПустоеЗначение(ТаблицаБухгПартий)=0 Тогда

ТаблицаБухгПартий.УдалитьСтроки();

КонецЕсли;

Ит = СоздатьОбъект("БухгалтерскиеИтоги");

Ит.ИспользоватьСубконто(ВидыСубконто.Оборудование, ЗначениеОборудования, 2);// Отбор

Ит.ИспользоватьСубконто(ВидыСубконто.Партия,, 1);

Ит.ВыполнитьЗапрос(НачКвартала(ДатаДок),ДатаДок,"ОБ.ПР",,,1,,"СК");


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 163

// Цикл по субконто 1 (Оборудование) не делаем,

// т.к. указан отбор по субконто

Ит.ВыбратьСубконто(2);

Пока Ит.ПолучитьСубконто(2) = 1 Цикл

ТаблицаБухгПартий.НоваяСтрока();

ТаблицаБухгПартий.Партия=Ит.Субконто(2);

// Сальдо конечное дебетовое;

ТаблицаБухгПартий.СКДСум = Ит.СКД();

ТаблицаБухгПартий.СКДКол = Ит.СКД(З);

КонецЦикла;

КонецПроцедуры

Ит=СоздатьОбъект("БухгалтерскиеИтоги╩); Ит.ИспользоватьПланСчетов(ПланыСчетов.Учебный); ТаблицаБухгПартий=Создать0бъект("ТаблицаЗначений"); ТаблицаБухгПартий.НоваяКолонка("Партия"); ТаблицаБухгПартий.НоваяКолонка("СКДСум"); ТаблицаБухгПартий.НоваяКолонка("СКДКол");


164_____ _______ ______ _______ 1С:Предприятие. Практика программирования не платформе V7

Упражнение 31. Создадим алгоритм формирования операции по документу ╚Амортизация╩ с учетом списания оборудования по партиям.

Отредактируем процедуру ОбработкаПроведения() в документе ╚Амортизация╩. В цикле выборки строк документа, для списания по бухгалтерским партиям, будем вызывать процедуру Партии(), в цикле выбирать партии из таблицы значений и списывать их по соответствующим счетам.

Так как Оборудование списывается и по оперативному и по бухгалтерскому учету, запрет на списание, если имеется дефицит, надо снять.

Процедура ОбработкаПроведения()

Перем Сообщение1;

Рег=Создать0бъект ( "Регистр. Амортизация" ) ;

ТаблицаПартий=Создать0бъект ( "ТаблицаЗначений" ) ;

Если ИтогиАктуальны()=0 Тогда

Peг.ВременныйРасчет() ;

РассчитатьРегистрыНа(ТекущийДокумент());

КонецЕсли;

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

// Списание по Оперативному учету

// определим списываемое значение

ВсегоСписать=Результат;


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 165



Дефицит=Рег.СводныйОстаток(Оборудование,,"Стоимость")-ВсегоСписать;

Если Дефицит<0 Тогда

Сообщение1="Дефицит по остаткам "+Оборудование+" = "+Дефицит+"!";

Предупреждение(Сообщение1);

Перейти ~БухгалтерскийУчет; // Переход по метке

// Отмена проведения документа //

СтатусВозврата(0);

//Возврат;

КонецЕсли;

Регистр.Амортизация.Оборудование = Оборудование; Регистр.Амортизация.ПривязыватьСтроку(НомерСтроки); Peг.УстановитьФильтр(Оборудование,);

Рег.ВыгрузитьИтоги(ТаблицаПартий,1,1);//Создали партии оборудования═══

//ТаблицаПартий.ВыбратьСтроку(); //отладка

Если ТипСписания=Перечисление.ТипыСписания.F1FО Тогда

ТаблицаПартий.Сортировать("Партия",1) ;

ИначеЕсли ТипСписания=Перечисление.ТипыСписания.LIFO Тогда

ТаблицаПартий.Сортировать("Партия -") ;

Иначе // по средней себестоимости

//Алгоритм списания по средней себестоимости Регистр.Амортизация.Количество =

Результат*Рег.СводныйОстаток(Оборудование,,"Количество")/ Peг.СводныйОстаток(Оборудование,,"Стоимость") ;

Регистр.Амортизация.Стоимость= Результат;

Регистр.Амортизация.ДвижениеРасходВыполнить();

Продолжить;

КонецЕсли;

// Списание по партиям оперативного учета

ТаблицаПартий.ВыбратьСтроки();

Пока ТаблицаПартий.ПолучитьСтроку()=1 Цикл

Регистр.Амортизация.Партия = ТаблицаПартий.Партия;

Если ТаблицаПартий.Стоимость<=ВсегоСписать Тогда

//Партию списываем целиком и уменьшим списываемое значение

Регистр.Амортизация.Количество = ТаблицаПартий.Количество;

Регистр.Амортизация.Стоимость= ТаблицаПартий.Стоимость; ВсегоСписать=ВсегоСписать-ТаблицаПартий.Стоимость;


166_____ _______ ______ _______ 1С:Предприятие. Практика программирования на платформе V7

Иначе

//С партии списываем списываемое значение целиком и обнуляем его

Регистр.Амортизация.Количество = ВсегоСписать* ТаблицаПартий.Количество/ТаблицаПартий.Стоимость; Регистр.Амортизация.Стоимость = ВсегоСписать;

ВсегоСписать=0;

КонецЕсли;

Регистр.Амортизация.ДвижениеРасходВыполнить();

//Проверим: всё ли списали?

Если ВсегоСписать <=0 Тогда

Прервать;

КонецЕсли;

КонецЦикла;

// Списание по Бухгалтерскому учету

// определим списываемое значение

// Установим метку безусловного перехода

ухгалтерскийУчет: Списать=Результат;

Партии(Оборудование);

// Проверим Сальдо по сумме

Дефицит=ТаблицаБухгПартий.Итог("СКДСум")-Списать;

Если Дефицит<0 Тогда

Сообщить("Бухгалтерский дефицит по оборудованию " + Оборудование+" = "+Дефицит ) ;

// Операцию не формировать

Продолжить;

КонецЕсли;

Если ТипСписания=Перечисление.ТипыСписания.FIFO Тогда

ТаблицаБухгПартий.Сортировать("Партия",1);

ИначеЕсли ТипСписания=Перечисление.ТипыСписания.LIFO Тогда

ТаблицаВухгПартий.Сортировать("Партия -") ;

Иначе // по средней себестоимости

//Алгоритм списания по средней себестоимости Операция.НоваяПроводка();


X. Основы построения ╚Бухгалтерского учёта╩ в системе 1С:Предприятие_________ 167

Операция.Кредит.Счет=СчетПоКоду("ОБ.ПР",ПланыСчетов.Учебный);

Операция.Кредит.Оборудование = Оборудование;

Операция.Кредит.Партия = ТекущийДокумент();

Операция.Дебет.Счет=СчетПоКоду("ОБ.СП".ПланыСчетов.Учебный);

Операция.Дебет.Оборудование = Оборудование;

Операция.Количество=Результат* ТаблицаБухгПартий.Итог("СКДКол")/ ТаблицаБухгПартий.Итог("СКДСум");

Операция.Сумма = Результат;

Продолжить;

КонецЕсли;

// Списание по партиям Бухгалтерского учета ТаблицаБухгПартий.ВыбратьСтроки();

Пока ТаблицаБухгПартий.ПолучитьСтроку()=1 Цикл

Операция.НоваяПроводка();

Операция.Кредит.Счет=СчетПоКоду("ОБ.ПР", ПланыСчетов.Учебный);

Операция.Кредит.Оборудование = Оборудование;

Операция.Кредит.Партия = ТаблицаБухгПартий.Партия;

Операция.Дебет.Счет=СчетПоКоду("ОБ.СП".ПланыСчетов.Учебный);

Операция.Дебет.Оборудование = Оборудование;

Операция.ТипУчета = ТаблицаБухгПартий.Партия.ТипУчета;

Если ТаблицаБухгПартий.СКДСум <=Списать Тогда

Операция.Количество= ТаблицаБухгПартий.СКДКол;

Операция.Сумма = ТаблицаБухгПартий. СКДСум;

Списать = Списать -ТаблицаБухгПартий. СКДСум;

Иначе

Операция.Количество= Списать*

ТаблицаБухгПартий.СКДКол/ТаблицаБухгПартий.СКДСум;

Операция. Сумма = Списать;

Списать = 0;


168_____ _______ ______ _______ 1С:Предприятив. Практика программирования на платформе V7

КонецЕсли;

//Проверим: всё ли списали?

Если Списать <=0 Тогда

Прервать;

КонецЕсли;

КонецЦикла;

КонецЦикла;

Операция.Содержание = "Списание оборудования";

Операция.СуммаОперации = Итог("Результат");

Операция.Записать();

КонецПроцедуры

Вопросы для самоконтроля

Что общего у бухгалтерского и оперативного учета?

Чем отличается бухгалтерский учет от учета на оборотных регистрах?

Чем отличается бухгалтерский учет от учета на регистрах остатков?

Что представляет из себя служебный объект Бухгалтерские Итоги?