Содержание

2.38 Документ НакладнаяНаВыпуск.

Предыдущим документом мы запустили производство некоторого количества изделий. И вот, наши работнички все сделали. Нам надо зафиксировать факт сдачи готовой продукции на склад и, разумеется, начислить работникам зарплату за труд, вложенный в изготовление материальных ценностей. Для этой сложной задачи мы создадим очередной документ – Накладная на выпуск из производства.
Проводки по документу (Д 20 – К 70) – начисление зарплаты по факту выпуска продукции, (Д 40 – К 20) – сам выпуск продукции на склад.
Документ будет закрывать производственные партии, сформированные нарядами на сборку. Соответственно работников мы будем брать из этих нарядов, оттуда же мы возьмем и перечень выпускаемых изделий.
Выпуск продукции будет осуществляться на конкретный склад.
Сведем все сведения по документу в таблицу:
Идентификатор: НакладнаяНаВыпуск
Журнал: ВыпускИзПроизводства
Нумератор: Нет       Периодичность: Год
Длина: 5         Тип: число
Уникальность: да       Автонумерация: да
Может являться основанием для документа любого вида?: нет
Проводить: да
Автоматическое удаление движений: да
Автоматическая нумерация строк: да
Бухгалтерский учет: да
Расчет: нет
Оперативный учет: нет
Создавать операцию: Всегда     Редактировать операцию: нет

Является основанием для

Вводится на основании

Шапка

Реквизит Описание ТипЗначения

Доп.

Склад   С.Склады  

Таблица

Реквизит Описание ТипЗначения

Доп.

Наряд   Д.НарядНаСборку  
Документ будет храниться в специальном журнале.
Не забудем указать этот документ как тип соответствующего субконто.

Создаем форму документа. Поле АвторДокумента, как обычно делаем недоступным.
Добавляем кнопку [Печать] с формулой Печать(). В модуль формы пишем:
Процедура ПоИзделиям() Далее
Процедура ПоСборщикам() Далее
// Это мы объявили две процедуры, они будут описаны ниже
//==========================================================
Процедура ВводНового()
  АвторДокумента=СокрЛП(ИмяПользователя());
  ФирмаДокумента=Константа.ОснФирма;
  Валюта=Константа.ОснВалюта;
  ДатаКурса=ДатаДок;
  Курс=1;
КонецПроцедуры
//==========================================================
Процедура ПриОткрытии()
  ПриЗаписиПерепроводить(1);
КонецПроцедуры
//==========================================================
Процедура Печать()
  СпЗн=СоздатьОбъект("СписокЗначений");
  СпЗн.ДобавитьЗначение(1,"ПоИзделиям");
  СпЗн.ДобавитьЗначение(2,"ПоСборщикам");
// Создали список значений и заполнили его
  Значение=0;
  Рез=СпЗн.ВыбратьЗначение(Значение,"",1,,1);
// Предлагаем выбрать из списка значение
// Список значения появится в виде выпадающей менюшки
  Если Рез=1 Тогда
    Если Значение=1 Тогда
      ПоИзделиям();
    Иначе
      ПоСборщикам();
    КонецЕсли;
  КонецЕсли;
КонецПроцедуры
//==========================================================
Процедура ПоИзделиям()
// Распечатаем список выпускаемых изделий
  ТабИзд=СоздатьОбъект("ТаблицаЗначений");
  ТабИзд.НоваяКолонка("Изд","Справочник.Изделия");
  ТабИзд.НоваяКолонка("Кол","Число",12,0);
  ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
    ДокН=Наряд;
// По каждому наряду
    ДокН.ВыбратьСтроки();
    Пока ДокН.ПолучитьСтроку()=1 Цикл
// По каждой строке наряда
      ТабИзд.НоваяСтрока();
      ТабИзд.Изд=ДокН.Изделие;
      ТабИзд.Кол=ДокН.Кол;
    КонецЦикла;
  КонецЦикла;
  ТабИзд.Свернуть("1","2");
  ТабИзд.Сортировать("1+");
  Таб=СоздатьОбъект("Таблица");
  Таб.ИсходнаяТаблица("ПоИзделиям");
  Таб.ВывестиСекцию("Шапка");
  ТабИзд.ВыбратьСтроки();
  Пока ТабИзд.ПолучитьСтроку()=1 Цикл
    Стр=ТабИзд.НомерСтроки;
    Изд=ТабИзд.Изд;
    Кол=ТабИзд.Кол;
    Таб.ВывестиСекцию("Строка");
  КонецЦикла;
  Таб.ТолькоПросмотр(1);
  Таб.ПараметрыСтраницы(1,100,1);
  Таб.Показать("");
КонецПроцедуры
//==========================================================
Процедура ПоСборщикам()
  ТабСбр=СоздатьОбъект("ТаблицаЗначений");
  ТабСбр.НоваяКолонка("Сбор","Справочник.Сотрудники");
  ТабСбр.НоваяКолонка("Сум","Число",14,2);
  ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
    ДокН=Наряд;
    ДокН.ВыбратьСтроки();
    Пока ДокН.ПолучитьСтроку()=1 Цикл
      ТабСбр.НоваяСтрока();
      ТабСбр.Сбор=ДокН.Сборщик;
      Рас=ДокН.Изделие.Расценка;
      Кол=ДокН.Кол;
      ТабСбр.Сум=Окр(Рас*Кол,2,1);
    КонецЦикла;
  КонецЦикла;
  ТабСбр.Свернуть("1","2");
  ТабСбр.Сортировать("1+");
  Таб=СоздатьОбъект("Таблица");
  Таб.ИсходнаяТаблица("ПоСборщикам");
  Таб.ВывестиСекцию("Шапка");
  ТабСбр.ВыбратьСтроки();
  Пока ТабСбр.ПолучитьСтроку()=1 Цикл
    Стр=ТабСбр.НомерСтроки;
    Сбор=ТабСбр.Сбор;
    Сум=ТабСбр.Сум;
    Таб.ВывестиСекцию("Строка");
  КонецЦикла;
  Таб.ТолькоПросмотр(1);
  Таб.ПараметрыСтраницы(1,100,1);
  Таб.Показать("");
КонецПроцедуры
Создадим две таблицы, одна будет называться "ПоИзделиям", вторая "ПоСборщикам":

По изделиям:

По сборщикам:

Переходим к модулю проведения документа. Он не особо сложен:
Процедура ОбработкаПроведения()
  Если Склад.Выбран()=0 Тогда
    Сообщить("Документ Наряд на сборку №"+НомерДок+" от "+ДатаДок+"
    |не проведен.
    |Не выбран склад заготовок");
    НеПроводитьДокумент();
    Возврат;
  КонецЕсли;
  БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
  БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Наш);
  БухИтоги.ИспользоватьРазделительУчета(ФирмаДокумента);
  СумО=0;
  ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл
    ДокН=Наряд;
    ДокН.ВыбратьСтроки();
    Пока ДокН.ПолучитьСтроку()=1 Цикл
// По каждой строке наряда
      Изд=ДокН.Изделие;
      Кол=ДокН.Кол;
      Сбр=ДокН.Сборщик;
      Рас=ДокН.Изделие.Расценка;
      СумС=Окр(Рас*Кол,2,1);
      БухИтоги.ИспользоватьСубконто(ВидыСубконто.ВидЗатрат,Перечисление.
      ВидыЗатрат.НаКомплектующие,2);
      БухИтоги.ИспользоватьСубконто(ВидыСубконто.Изделие,Изд,2);
      БухИтоги.ИспользоватьСубконто(ВидыСубконто.НарядНаКомплектацию,
      ДокН,2);
      БухИтоги.ВыполнитьЗапрос(,ДатаДок,"20");
      СумК=БухИтоги.СКД(1);
// Определяем сумму на комплектующие по конкретному изделию
// из конкретного наряда
      ПривязыватьСтроку(НомерСтроки);
// Этой преводкой начислим зарплату
      Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("20",ПланыСчетов.Наш);
      Операция.Кредит.Счет = СчетПоКоду("70",ПланыСчетов.Наш);
      Операция.Дебет.ВидЗатрат = Перечисление.ВидыЗатрат.НаЗарплату;
      Операция.Дебет.Изделие = Изд;
      Операция.Дебет.НарядНаКомплектацию = ДокН;
      Операция.Кредит.Сотрудник = Сбр;
      Операция.Фирма = ФирмаДокумента;
      Операция.Комментарий = "Начислена оплата труда";
      Операция.НомерЖурнала = "10";
      Операция.Сумма = СумС;
      Операция.Количество = Кол;
      ПривязыватьСтроку(НомерСтроки);
// Этой проводкой спишем на 40ой счет затраты на комплектующие
      Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("40",ПланыСчетов.Наш);
      Операция.Кредит.Счет = СчетПоКоду("20",ПланыСчетов.Наш);
      Операция.Дебет.МестоХранения = Склад;
      Операция.Дебет.Изделие = Изд;
      Операция.Дебет.НакладнаяНаВыпуск = ТекущийДокумент();
      Операция.Кредит.ВидЗатрат = Перечисление.ВидыЗатрат.НаКомплектующие;
      Операция.Кредит.Изделие = Изд;
      Операция.Кредит.НарядНаКомплектацию = ДокН;
      Операция.Фирма = ФирмаДокумента;
      Операция.Комментарий = "Передача на склад готовой продукции";
      Операция.НомерЖурнала = "10";
      Операция.Сумма = СумК;
      Операция.Количество = Кол;
      СумО=СумО+СумК;
      ПривязыватьСтроку(НомерСтроки);
// Этой проводкой спишем на 40ой счет затраты на зарплату
      Операция.НоваяПроводка();
      Операция.Дебет.Счет = СчетПоКоду("40",ПланыСчетов.Наш);
      Операция.Кредит.Счет = СчетПоКоду("20",ПланыСчетов.Наш);
      Операция.Дебет.МестоХранения = Склад;
      Операция.Дебет.Изделие = Изд;
      Операция.Дебет.НакладнаяНаВыпуск = ТекущийДокумент();
      Операция.Кредит.ВидЗатрат = Перечисление.ВидыЗатрат.НаЗарплату;
      Операция.Кредит.Изделие = Изд;
      Операция.Кредит.НарядНаКомплектацию = ДокН;
      Операция.Фирма = ФирмаДокумента;
      Операция.Комментарий = "Передача на склад готовой продукции";
      Операция.НомерЖурнала = "10";
      Операция.Сумма = СумС;
      Операция.Количество = 0;
      СумО=СумО+СумС;
    КонецЦикла;
  КонецЦикла;
  Операция.Содержание = "Выпуск из производства";
  Операция.СуммаОперации = СумО;
  Операция.Автор = АвторДокумента;
  Операция.Записать();
КонецПроцедуры
Проверяем работу документа.

2.39 Документ РасходнаяНакладная.

Товар поступил на склад, и это хорошо. Теперь мы можем продать что-нибудь ненужное. А чтобы продать что-нибудь ненужное нам нужно иметь расходную накладную. Проводок в расходной накладной будет богато:
(Д 90.2 – К 40) – списание товара со склада по себестоимости,
(Д 90.3 – К 68.1) – учет НДС,
(Д 90.9 – К 99) – учет прибыли(убытка),
(Д 90.1 – К 90.2) – определение выручки,
(Д 90.1 – К 90.3) – определение выручки,
(Д 90.1 – К 90.9) – определение выручки,
(Д 62 – К 90.1) – начисление долга на покупателя.
Проведем анализ счетов на предмет субконто, по ним мы сможем определить требуемые реквизиты:

  1. Счет 40 – МестоХранения, Изделие, НакладнаяНаВыпуск;
  2. Счет 62 – Комтрагент, РасходнаяНакладная;
  3. Счет 68 – нет;
  4. Счет 90 – Изделие;
  5. Счет 99 – нет.
Итого: МестоХранения – Склад, Изделие – Товар, НакладнаяНаВыпуск – при формировании проводок, Контрагент – Покупатель, РасходнаяНакладная – она сама и есть. Раз мы будем играться с НДС, то нам нужны будут цена без НДС и цена с НДС, ну и соответствующие суммы, а также сумма НДС. Сводим все в таблицу:
Идентификатор: РасходнаяНакладная
Журнал: РасходныеНакладные
Нумератор: Нет       Периодичность: Год
Длина: 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);
  БухИтоги.ИспользоватьСубконто(ВидыСубконто.Изделие,Тов,2);
  БухИтоги.ВыполнитьЗапрос(,ДатаДок,"40");
  ИОст=БухИтоги.СКД(3);
  Возврат(ИОст);
КонецФункции
//==========================================================
Процедура Кол()
  ОстИзд=Ост(Склад,Товар);
  Если Кол>ОстИзд Тогда
    Кол=ОстИзд;
  КонецЕсли;
  СуммаБНДС=Окр(ЦенаБНДС*Кол,2,1);
  СуммаСНДС=Окр(ЦенаСНДС*Кол,2,1);
  СуммаНДС=СуммаСНДС-СуммаБНДС;
КонецПроцедуры
// В общем, ничего нового...
При проведении этого документа у нас, во-первых, будет задействована многострочная часть, во-вторых, списание по методу FIFO (мы воспользуемся алгоритмом №2 из документа НарядНаСборку), в-третьих большое количество проводок. Все это несколько усложнит код, но не намного. Пишем процедуру проведения.
Процедура ОбработкаПроведения()
  Если Склад.Выбран()=0 Тогда
    Сообщить("Документ Расходная накладная №"+НомерДок+" от "+ДатаДок+"
    |не проведен.
    |Не выбран склад ");
    НеПроводитьДокумент();
    Возврат;
  КонецЕсли;
  Если Покупатель.Выбран()=0 Тогда
    Сообщить("Документ Расходная накладная №"+НомерДок+" от "+ДатаДок+"
    |не проведен.
    |Не указан покупатель");
    НеПроводитьДокумент();
    Возврат;
  КонецЕсли;
  ТабЗн=СоздатьОбъект("ТаблицаЗначений");
  ВыгрузитьТабличнуюЧасть(ТабЗн);
// Скинем в таблицу значений всю табличную часть документа разом
  ТабЗн.Сортировать("Товар");
  ФлагОтказа=0;
  ТабЗн.ВыбратьСтроки();
  ТТов="@#$";
// Ну уж такого товара точно не будет!
  Пока ТабЗн.ПолучитьСтроку()=1 Цикл
    Если ТТов=ТабЗн.Товар Тогда
      ФлагОтказа=1;
    КонецЕсли;
    ТТов=ТабЗн.Товар;
  КонецЦикла;
// Проверили дубли строк
  Если ФлагОтказа=1 Тогда
    Сообщить("Документ Расходная накладная №"+НомерДок+" от "+ДатаДок+"
    |не проведен.
    |Есть двойные строки товара");
    НеПроводитьДокумент();
    Возврат;
  КонецЕсли;
  БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
  БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Наш);
  БухИтоги.ИспользоватьРазделительУчета(ФирмаДокумента);
  ФлагОтказа=0;
  ТабЗн.ВыбратьСтроки();
  Пока ТабЗн.ПолучитьСтроку()=1 Цикл
    Изд=ТабЗн.Товар;
    Колич=ТабЗн.Кол;
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестоХранения,Склад,2);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.Изделие,Изд,2);
    БухИтоги.ВыполнитьЗапрос(,ДатаДок,"40");
    КолОст=БухИтоги.СКД(3);
    Если Колич>КолОст Тогда
// Проверяем наличие товара на складе
      ФлагОтказа=1;
      Сообщить(Строка(Изд));
    КонецЕсли;
  КонецЦикла;
  Если ФлагОтказа=1 Тогда
    Сообщить("Документ Расходная накладная №"+НомерДок+" от "+ДатаДок+"
    |не проведен.
    |Заявка по вышеперечисленным позициям
    |превышает остаток на складе");
    НеПроводитьДокумент();
    Возврат;
  КонецЕсли;
  КурсД=Курс;
  КратД=Валюта.Кратность;
  КурсУ=Константа.ОснВалюта.Курс.Получить(ДатаДок);
  КратУ=Константа.ОснВалюта.Кратность;
  Коэфф=Окр((КурсД*КратУ)/(КурсУ*КратД),6,1);
// переводим в валюту документа
  ТабИзд=СоздатьОбъект("ТаблицаЗначений");
  ТабИзд.НоваяКолонка("Изд","Справочник.Изделия");
  ТабИзд.НоваяКолонка("Док","Документ.НакладнаяНаВыпуск");
  ТабИзд.НоваяКолонка("Кол","Число",10,0);
  ТабИзд.НоваяКолонка("Сум","Число",14,2);
// Динамическая таблица для партий
  ТабЗн.Сортировать("Товар");
  ТабЗн.ВыбратьСтроки();
  Пока ТабЗн.ПолучитьСтроку()=1 Цикл
    ИздП=ТабЗн.Товар;
    КолИ=ТабЗн.Кол;
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестоХранения,Склад,2);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.Изделие,ИздП,2);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.НакладнаяНаВыпуск,,1);
    БухИтоги.ВыполнитьЗапрос(,ДатаДок,"40");
    БухИтоги.ВыбратьСубконто(3);
    Пока БухИтоги.ПолучитьСубконто(3)=1 Цикл
      ДокП=БухИтоги.Субконто(3);
      КолП=БухИтоги.СКД(3);
      СумП=БухИтоги.СКД(1);
      Если КолИ>0 Тогда
// Заполняем таблицу партий
        ТабИзд.НоваяСтрока();
        ТабИзд.Изд=ИздП;
        ТабИзд.Док=ДокП;
        ТабИзд.Кол=КолП;
        ТабИзд.Сум=СумП;
        КолИ=КолИ-КолП;
      Иначе
        Прервать;
      КонецЕсли;
    КонецЦикла;
  КонецЦикла;
  ТабЗн.УдалитьСтроки();
  ТабЗн="";
  ТабИзд.Сортировать("1+,2+");
  ВыбратьСтроки();
  Пока ПолучитьСтроку()=1 Цикл // По Товару
    НС=НомерСтроки;
    Тов=Товар;
    Колич=Кол;
    ТабИзд.ВыбратьСтроки();
    Пока ТабИзд.ПолучитьСтроку()=1 Цикл // По Партии
      ТовП=ТабИзд.Изд;
      Если ТовП<>Тов Тогда
        Продолжить;
      КонецЕсли;
      ДокП=ТабИзд.Док;
      КолП=ТабИзд.Кол;
      Если КолП=0 Тогда
        Продолжить;
      КонецЕсли;
      СумП=ТабИзд.Сум;
      СтрП=ТабИзд.НомерСтроки;
      Если Колич>КолП Тогда
// Себестоимость
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.2",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("40",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.МестоХранения = Склад;
        Операция.Кредит.Изделие = Тов;
        Операция.Кредит.НакладнаяНаВыпуск = ДокП;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "Учет по себестоимости";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = СумП;
        Операция.Количество = КолП;
// НДС
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.3",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("68.1",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "Учет НДС";
        Операция.НомерЖурнала = "8";
        Операция.Сумма = Окр((КолП*(ЦенаСНДС-ЦенаБНДС))*Коэфф,2,1);
// Прибыли/Убытки
        Результат=Окр((КолП*ЦенаБНДС)*Коэфф,2,1)-СумП;
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Если Результат>0 Тогда
          Операция.Дебет.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
          Операция.Кредит.Счет = СчетПоКоду("99",ПланыСчетов.Наш);
          Операция.Дебет.Изделие = Тов;
          Операция.Фирма = ФирмаДокумента;
          Операция.Комментарий = "Учет прибыли";
          Операция.НомерЖурнала = "15";
          Операция.Сумма = Результат;
        Иначе
          Операция.Дебет.Счет = СчетПоКоду("99",ПланыСчетов.Наш);
          Операция.Кредит.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
          Операция.Кредит.Изделие = Тов;
          Операция.Фирма = ФирмаДокумента;
          Операция.Комментарий = "Учет убытка";
          Операция.НомерЖурнала = "11";
          Операция.Сумма = -Результат;
        КонецЕсли;
// Себестоимость - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.2",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на себестоимость";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = СумП;
// НДС - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.3",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на НДС";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((КолП*(ЦенаСНДС-ЦенаБНДС))*Коэфф,2,1);
// Прибыль(убыток) - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на прибыль(убыток)";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((КолП*ЦенаБНДС)*Коэфф,2,1)-СумП;
// Покупатель
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("62",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Дебет.Контрагент = Покупатель;
        Операция.Дебет.РасходнаяНакладная = ТекущийДокумент();
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "долг на покупателя";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((КолП*ЦенаСНДС)*Коэфф,2,1);
// Уменьшение партии
        Колич=Колич-КолП;
        ТабИзд.УстановитьЗначение(СтрП,"Кол",0);
        ТабИзд.УстановитьЗначение(СтрП,"Сум",0);
      Иначе
        СумО=Окр(Колич*(СумП/КолП),2,1);
// Себестоимость
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.2",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("40",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.МестоХранения = Склад;
        Операция.Кредит.Изделие = Тов;
        Операция.Кредит.НакладнаяНаВыпуск = ДокП;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "Учет по себестоимости";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = СумО;
        Операция.Количество = Колич;
// НДС
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.3",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("68.1",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "Учет НДС";
        Операция.НомерЖурнала = "8";
        Операция.Сумма = Окр((Колич*(ЦенаСНДС-ЦенаБНДС))*Коэфф,2,1);
// Прибыли/Убытки
        Результат=Окр((Колич*ЦенаБНДС)*Коэфф,2,1)-СумО;
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Если Результат>0 Тогда
          Операция.Дебет.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
          Операция.Кредит.Счет = СчетПоКоду("99",ПланыСчетов.Наш);
          Операция.Дебет.Изделие = Тов;
          Операция.Фирма = ФирмаДокумента;
          Операция.Комментарий = "Учет прибыли";
          Операция.НомерЖурнала = "15";
          Операция.Сумма = Результат;
        Иначе
          Операция.Дебет.Счет = СчетПоКоду("99",ПланыСчетов.Наш);
          Операция.Кредит.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
          Операция.Кредит.Изделие = Тов;
          Операция.Фирма = ФирмаДокумента;
          Операция.Комментарий = "Учет убытка";
          Операция.НомерЖурнала = "11";
          Операция.Сумма = -Результат;
        КонецЕсли;
// Себестоимость - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.2",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на себестоимость";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = СумО;
// НДС - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.3",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на НДС";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((Колич*(ЦенаСНДС-ЦенаБНДС))*Коэфф,2,1);
// Прибыль(убыток) - выручка
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.9",ПланыСчетов.Наш);
        Операция.Дебет.Изделие = Тов;
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "выручка на прибыль(убыток)";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((Колич*ЦенаБНДС)*Коэфф,2,1)-СумО;
// Покупатель
        ПривязыватьСтроку(НС);
        Операция.НоваяПроводка();
        Операция.Дебет.Счет = СчетПоКоду("62",ПланыСчетов.Наш);
        Операция.Кредит.Счет = СчетПоКоду("90.1",ПланыСчетов.Наш);
        Операция.Дебет.Контрагент = Покупатель;
        Операция.Дебет.РасходнаяНакладная = ТекущийДокумент();
        Операция.Кредит.Изделие = Тов;
        Операция.Фирма = ФирмаДокумента;
        Операция.Комментарий = "долг на покупателя";
        Операция.НомерЖурнала = "11";
        Операция.Сумма = Окр((Колич*ЦенаСНДС)*Коэфф,2,1);
// Уменьшение партии
        ТабИзд.УстановитьЗначение(СтрП,"Кол",КолП-Колич);
        ТабИзд.УстановитьЗначение(СтрП,"Сум",СумП-СумО);
        Прервать;
      КонецЕсли;
    КонецЦикла; // По Партии
  КонецЦикла; // По Товару
  Операция.Содержание = "Реализация продукции";
  Операция.СуммаОперации = Окр(Итог("СуммаСНДС")*Коэфф,2,1);
  Операция.Автор = АвторДокумента;
  Операция.Записать();
КонецПроцедуры
Ну, вот, с расходной накладной разобрались. Главное не запутаться в проводках и не забыть, что если оба счета не имеют количественного учета в проводке не должно быть ссылки на количество. Иначе программа будет ругаться при проведении документа. Проверьте, как работает этот документ.


Предыдущая Содержание Следующая