План счетов
создан, операции и проводки готовы, теперь можно и заняться документами.
Давайте определим общие реквизиты документов и нумераторы.
Каждый документ относится к какой-либо фирме – это первый общий
реквизит. Мы хотим к каждому документу приписать пояснение – это
будет вторым общим реквизитом. Все документы у нас будут связаны
с деньгами, а деньги обычно относятся к какой-нибудь валюте – третий
общий реквизит – валюта. Валюта имеет по отношению к базовой валюте
на каждую дату свой курс – еще два общих реквизита: дата курса и
курс. Еще нас будет интересовать кто создал этот документ – и еще
один общий реквизит автор.
Идентификатор | Тип значения | Дополнительно |
ФирмаДокумента | С.Фирмы | О |
Пояснение | Строка 100 | |
Валюта | С.Валюты | |
ДатаКурса | Дата | |
Курс | Число 6.2 | |
АвторДокумента | Строка 50 | О |
Первый и самый простой документ будет Учет НДС. Проводка по нему самая простая (Д 68.1 – К 19.3). Этим документом мы будем переводить сумму НДС за приобретенные комплектующие в зачет налогов. Документ будет относиться к специальному журналу "УчетНДС". Журнал обычный. В журнале заведем графу "Сумма", значение для нее будем брать Документ.УчетНДС.Сумма.
Идентификатор: УчетНДС Журнал: УчетНДС Нумератор: Нет Периодичность: Год Длина: 5 Тип: число Уникальность: да Автонумерация: да Может являться основанием для документа любого вида?: нет |
|||||
Проводить: да Автоматическое удаление движений: да Автоматическая нумерация строк: да |
Бухгалтерский
учет: да Расчет: нет Оперативный учет: нет |
||||
Создавать операцию: Всегда Редактировать операцию: нет | |||||
Является основанием для |
Вводится на основании |
||||
Шапка |
|||||
Реквизит | Описание | ТипЗначения | Доп. |
||
Сумма | Число 10.2 | 3, + |
|||
Таблица |
|||||
Реквизит | Описание | ТипЗначения | Доп. |
Перем СтВалюта;
Перем СтДатаКурса;
Перем СтКурс;
//Переменные для пересчета суммы при изменении валюты документа
//==========================================================
Процедура ВводНового()
АвторДокумента=СокрЛП(ИмяПользователя());
ФирмаДокумента=Константа.ОснФирма;
Валюта=Константа.ОснВалюта;
ДатаКурса=ДатаДок;
Курс=1;
// Заполняем значения по умолчанию
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
КонецПроцедуры
//==========================================================
Процедура ПриОткрытии()
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
ПриЗаписиПерепроводить(1);
// При записи изменений перепроводить обязательно
КонецПроцедуры
//==========================================================
Процедура Валюта()
КурсС=СтКурс;
КратС=СтВалюта.Кратность;
КурсН=Валюта.Курс.Получить(ДатаКурса);
КратН=Валюта.Кратность;
Коэфф=Окр((КурсС*КратН)/(КурсН*КратС),6,1);
// Переводим в валюту документа
Курс=КурсН;
Сумма=Окр(Сумма*Коэфф,2,1);
// Пересчитываем сумму
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
КонецПроцедуры
Перейдем к модулю документа. Учет мы будем вести в базовой
валюте. Здесь мы напишем самый наипростейший вариант модуля проведения.
В данном случае нам надо только перевести сумму с одного счета на
другой одной проводкой. Напишем процедуру проведения:Процедура ОбработкаПроведения()
КурсД=Курс;
КратД=Валюта.Кратность;
КурсУ=Константа.ОснВалюта.Курс.Получить(ДатаДок);
КратУ=Константа.ОснВалюта.Кратность;
Коэфф=Окр((КурсД*КратУ)/(КурсУ*КратД),6,1); // переводим в
валюту документа
СуммаО=Окр(Сумма*Коэфф,2,1);
// Пересчитали сумму документа в сумму операции
в базовую валюту
ПривязыватьСтроку(0);
// Следующая за этой командой новая проводка
к строке документа не
// привязывается
Операция.НоваяПроводка();
// Создаем проводку (простую) по операции
Операция.Дебет.Счет = СчетПоКоду("68.1",ПланыСчетов.Наш);
Операция.Кредит.Счет = СчетПоКоду("19.3",ПланыСчетов.Наш);
// Указали корреспонденцию проводки
Операция.Сумма = СуммаО;
// Сумма проводки
Операция.Фирма = ФирмаДокумента;
Операция.Комментарий = "Учет НДС за приобретенные комплектующие";
Операция.НомерЖурнала = " ";
// Дополнительные сведения по проводке
Операция.Содержание = "Учет НДС";
Операция.СуммаОперации = СуммаО;
Операция.Автор = СокрЛП(ИмяПользователя());
// Дополнительные сведения по операции
Операция.Записать();
КонецПроцедуры
Документ создан. Давайте его проверим. Входим в 1С:Предприятие и создаем новый документ "Учет НДС" на сумму 1000 тугриков (для примера), затем меняем валюту на рубли и получаем 22.77 рубля (при курсе 22.77 руб. за 1000 тугриков) все сходится, вернем тугрики. Сохраним и проведем документ. Смотрим журнал операций (Меню Действия команда "Перейти в журнал операций"). Сумма операции 22.77 (при сумме документа 1000) – верно. Проверяем проводку – тоже все верно. Документ написан правильно. Удалим этот документ, чтобы не мешал.
Идентификатор: ПриходнаяНакладная Журнал: ПриходныеНакладные Нумератор: Нет Периодичность: Год Длина: 5 Тип: число Уникальность: да Автонумерация: да Может являться основанием для документа любого вида?: нет |
|||||
Проводить: да Автоматическое удаление движений: да Автоматическая нумерация строк: да |
Бухгалтерский
учет: да Расчет: нет Оперативный учет: нет |
||||
Создавать операцию: Всегда Редактировать операцию: нет | |||||
Является основанием для |
Вводится на основании |
||||
Шапка |
|||||
Реквизит | Описание | ТипЗначения | Доп. |
||
Поставщик | С.Контрагенты | ||||
Склад | С.Склады | ||||
Таблица |
|||||
Реквизит | Описание | ТипЗначения | Доп. |
||
Товар | С.Комплектующие | ||||
Кол | Число 5.0 | +, И | |||
ЦенаБНДС | Цена без НДС | Число 7.2 | + | ||
ЦенаСНДС | Цена с НДС | Число 7.2 | + | ||
СуммаБНДС | Сумма без НДС | Число 13.2 | +, И | ||
СуммаНДС | Сумма НДС | Число 13.2 | +, И | ||
СуммаСНДС | Сумма с НДС | Число 13.2 | +, И |
Перем СтВалюта;
Перем СтДатаКурса;
Перем СтКурс;
//==========================================================
Процедура ВводНового()
АвторДокумента=СокрЛП(ИмяПользователя());
ФирмаДокумента=Константа.ОснФирма;
Валюта=Константа.ОснВалюта;
ДатаКурса=ДатаДок;
Курс=1;
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
Поставщик = Константа.ОснПоставщик;
КонецПроцедуры
//==========================================================
Процедура ПриОткрытии()
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
ПриЗаписиПерепроводить(1);
КонецПроцедуры
//==========================================================
Процедура Валюта()
// При смене валюты, либо даты курса
КурсС=СтКурс;
КратС=СтВалюта.Кратность;
КурсН=Валюта.Курс.Получить(ДатаКурса);
КратН=Валюта.Кратность;
Коэфф=Окр((КурсС*КратН)/(КурсН*КратС),6,1); // переводим в
валюту документа
Курс=КурсН;
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
// Обходим строки
ЦенаБНДС=Окр(ЦенаБНДС*Коэфф,2,1);
ЦенаСНДС=Окр(ЦенаСНДС*Коэфф,2,1);
СуммаБНДС=Окр(ЦенаБНДС*Кол,2,1);
СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецЦикла;
СтВалюта=Валюта;
СтДатаКурса=ДатаКурса;
СтКурс=Курс;
КонецПроцедуры
//==========================================================
Процедура Товар()
// Изменили товар, пересчитаем цену с НДС
ЦенаСНДС=Окр(ЦенаБНДС*(1+(Товар.НДС.Значение/100)),2,1);
СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецПроцедуры
//==========================================================
Процедура Кол()
СуммаБНДС=Окр(ЦенаБНДС*Кол,2,1);
СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецПроцедуры
//==========================================================
Процедура ЦенаБНДС()
ЦенаСНДС=Окр(ЦенаБНДС*(1+(Товар.НДС.Значение/100)),2,1);
// Определим цену с НДС по цене без НДС
СуммаБНДС=Окр(ЦенаБНДС*Кол,2,1);
СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецПроцедуры
//==========================================================
Процедура ЦенаСНДС()
ЦенаБНДС=Окр(ЦенаСНДС*(1-(Товар.НДС.ОбрЗначение/100)),2,1);
// Определим цену без НДС по цене с НДС
СуммаБНДС=Окр(ЦенаБНДС*Кол,2,1);
СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецПроцедуры
Процедура ОбработкаПроведения()
Если Склад.Выбран()=0 Тогда
// Если склад не указан
Сообщить("Документ Приходная накладная
№"+НомерДок+" от "+ДатаДок+"
|не проведен.
|Не выбран склад получатель");
// Делаем сообщение
НеПроводитьДокумент();
// Указываем, что документ проводить не надо
Возврат;
// Выходим из процедуры
КонецЕсли;
Если Поставщик.Выбран()=0 Тогда
Сообщить("Документ Приходная накладная №"+НомерДок+"
от "+ДатаДок+"
|не проведен.
|Не выбран поставщик");
НеПроводитьДокумент();
Возврат;
КонецЕсли;
КурсД=Курс;
КратД=Валюта.Кратность;
КурсУ=Константа.ОснВалюта.Курс.Получить(ДатаДок);
КратУ=Константа.ОснВалюта.Кратность;
Коэфф=Окр((КурсД*КратУ)/(КурсУ*КратД),6,1);
// Переводим в валюту документа
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
// Обходим строки
ПривязыватьСтроку(НомерСтроки);
// Здесь мы хотим указать какая строка документа
вызвала эту проводку
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("10.2",ПланыСчетов.Наш);
Операция.Дебет.МестоХранения = Склад;
Операция.Дебет.Комплектующее = Товар;
Операция.Дебет.ПриходнаяНакладная = ТекущийДокумент();
Операция.Кредит.Счет = СчетПоКоду("60",ПланыСчетов.Наш);
Операция.Кредит.Контрагент = Поставщик;
Операция.Кредит.ПриходнаяНакладная = ТекущийДокумент();
Операция.Количество = Кол;
Операция.Сумма = Окр(СуммаБНДС*Коэфф,2,1);
Операция.Фирма = ФирмаДокумента;
Операция.Комментарий = "Поступление комплектующих";
Операция.НомерЖурнала = "6";
КонецЦикла;
ПривязыватьСтроку(0);
// Эта проводка по всему документу вцелом
Операция.НоваяПроводка();
Операция.Дебет.Счет = СчетПоКоду("19.3",ПланыСчетов.Наш);
Операция.Кредит.Счет = СчетПоКоду("60",ПланыСчетов.Наш);
Операция.Кредит.Контрагент = Поставщик;
Операция.Кредит.ПриходнаяНакладная = ТекущийДокумент();
Операция.Сумма = Окр(Итог("СуммаНДС")*Коэфф,2,1);
Операция.Фирма = ФирмаДокумента;
Операция.Комментарий = "Учет НДС по поступ. комплектующим";
Операция.НомерЖурнала = "6";
Операция.Содержание = "Поступление комплектующих";
Операция.СуммаОперации = Окр(Итог("СуммаСНДС")*Коэфф,2,1);
Операция.Автор = АвторДокумента;
Операция.Записать();
КонецПроцедуры
Теперь, когда создан документ "Приходная накладная",
нам надо внести соответствующую поправку в Субконто ПриходнаяНакладная.
Укажем в этом Субконто тип как Д.ПриходнаяНакладная.
Процедура
ПриОткрытии()
// Установим начальные значения диапазона
дат
ВыбНачПериода = НачалоПериодаБИ();
ВыбКонПериода = КонецПериодаБИ();
КонецПроцедуры
//==========================================================
Процедура Сформировать()
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Ит = СоздатьОбъект("БухгалтерскиеИтоги");
Ит.ИспользоватьПланСчетов(ПланыСчетов.Наш);
Ит.ИспользоватьРазделительУчета(Константа.ОснФирма);
Ит.ИспользоватьСубконто(ВидыСубконто.Контрагент,,1);
Ит.ИспользоватьСубконто(ВидыСубконто.ПриходнаяНакладная,,1);
Ит.ВыполнитьЗапрос(ВыбНачПериода,ВыбКонПериода,"60",,, 1,"Операция","С");
Таб.ВывестиСекцию("Шапка");
ИтНачКред=0;
ИтКонКред=0;
ИтОбоКред=0;
Ит.ВыбратьСубконто(1);
Пока Ит.ПолучитьСубконто(1)=1 Цикл
Контра=Ит.Субконто(1);
НачКред=Ит.СНК(1);
КонКред=Ит.СКК(1);
ОбоКред=КонКред-НачКред;
Таб.ВывестиСекцию("Контра");
ИтНачКред=ИтНачКред+НачКред;
ИтКонКред=ИтКонКред+КонКред;
ИтОбоКред=ИтОбоКред+ОбоКред;
Ит.ВыбратьСубконто(2);
Пока Ит.ПолучитьСубконто(2)=1 Цикл
Дока=Ит.Субконто(2);
НачКред=Ит.СНК(1);
КонКред=Ит.СКК(1);
ОбоКред=КонКред-НачКред;
Таб.ВывестиСекцию("Дока");
КонецЦикла;
КонецЦикла;
// Здесь ничего нового
Таб.ВывестиСекцию("Подвал");
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(2);
// Ориентация Ландшафт
Таб.Показать("Сформировать","");
КонецПроцедуры
Попробуем в
1С:Предприятии наш новый отчет.
<< Предыдущая глава Содержание Следующая глава>>