62 счет и по нему лицевые счета

1. Buktory 25.11.09 07:15 Сейчас в теме
Всем привет.

Ранее в 1с формировался приходник на определенного клиента, по определенному договору.

А теперь выросла делема:


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


У кого нить были подобные ситуации и их решения если были?

Заранее спасибо
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vcv 89 25.11.09 08:53 Сейчас в теме
Сначала объясните общественности, что такое "лицевой счет" на 62 счете. Чем он отличается от договора и почему бы не использовать справочник договоров, окрестив отдельные договора "лицевыми счетами".
3. Buktory 26.11.09 00:40 Сейчас в теме
У каждого контрагента есть свой номер договора, допустим 20544.

На ентом договоре есть услуги c лицевыми счетами:
02054401 - абонентская плата;
02054402 - постоянный доступ в интернет.


И нуно сделать так чтоб через приходник падала деньга на допустим 02054401. И списывалась через оказание услуг с ентого лицевого счета (02054401).
4. Buktory 26.11.09 00:58 Сейчас в теме
////////////////////////////////////////////////////////////­////////////////////



А вот код в котором я затруднясь найти ту строку в которй можно было добисать строчку, которая учитывала бы лицевой счет((


// ПЕРЕМЕННЫЕ МОДУЛЯ
//

Перем СчетРасчетовСПокупателем;
Перем СчетАвансовПолученных;
Перем ОплатаДоговора;
Перем ЦеныВДоговоре;
Перем ВестиУчетРасчетовУЕ;
Перем Валюта;
Перем Кратность;
Перем АвансПоДоговору;
Перем АвансБезДоговора;
Перем АвансПоДоговоруРуб;
Перем АвансБезДоговораРуб;
Перем БезДоговора;
Перем ЗадолженностьПоРасчетамВУЕРуб, ЗадолженностьПоРасчетамВУЕВал;

////////////////////////////////////////////////////////////­////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
//

//******************************************************************************
// РассчитатьСуммуАванса()
//
// Описание:
// Выполняет расчет бухгалтерских итогов и определяет текущую сумму аванса.
//
Процедура РассчитатьСуммуАванса()

АвансБезДоговора = 0;
АвансБезДоговораРуб = 0;
АвансПоДоговору = 0;
АвансПоДоговоруРуб = 0;

Если ЗачитыватьАванс <> 1 Тогда //Зачитывать аванс
СписокДоговоров = СоздатьОбъект("СписокЗначений");
СписокДоговоров.ДобавитьЗначение(Договор);
БезДоговора = глДоговор(глИмяДоговораДляПлатежейБезДоговора, Контрагент);
Если (ЗачитыватьАванс = 0) и (ПустоеЗначение(БезДоговора) = 0) Тогда //Зачитывать аванс без договора
СписокДоговоров.ДобавитьЗначение(БезДоговора);
КонецЕсли;

БухИт = СоздатьОбъект("БухгалтерскиеИтоги");
БухИт.ИспользоватьСубконто(ВидыСубконто.Контрагенты, Контрагент, 2);
БухИт.ИспользоватьСубконто(ВидыСубконто.Договоры, СписокДоговоров, 2);
Если ОплатаДоговора = 2 Тогда
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"62.22",,Валюта,,,"В");

ИначеЕсли ВестиУчетРасчетовУЕ = 1 Тогда
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"62.7",,Валюта,,,"СВ");

Иначе
БухИт.ВыполнитьЗапрос(,ТекущийДокумент(),"62.2",,,,,"С");
КонецЕсли;

Если БухИт.ПолучитьСубконто(ВидыСубконто.Договоры,, БезДоговора) = 1 Тогда
Если ОплатаДоговора = 2 Тогда
АвансБезДоговора = БухИт.СКК("В");

ИначеЕсли ВестиУчетРасчетовУЕ = 1 Тогда
АвансБезДоговора = БухИт.СКК("В");
АвансБезДоговораРуб = БухИт.СКК("С");

Иначе
АвансБезДоговора = БухИт.СКК("С");
КонецЕсли;
КонецЕсли;

Если БухИт.ПолучитьСубконто(ВидыСубконто.Договоры,, Договор) = 1 Тогда
Если ОплатаДоговора = 2 Тогда
АвансПоДоговору = БухИт.СКК("В");

ИначеЕсли ВестиУчетРасчетовУЕ = 1 Тогда
АвансПоДоговору = БухИт.СКК("В");
АвансПоДоговоруРуб = БухИт.СКК("С");

Иначе
АвансПоДоговору = БухИт.СКК("С");
КонецЕсли;
КонецЕсли;

АвансБезДоговора = Макс(АвансБезДоговора, 0);
АвансБезДоговораРуб = Макс(АвансБезДоговораРуб, 0);
АвансПоДоговору = Макс(АвансПоДоговору, 0);
АвансПоДоговоруРуб = Макс(АвансПоДоговоруРуб, 0);
КонецЕсли;

КонецПроцедуры // РассчитатьСуммуАванса()

//*****************************************************************************
// ЗачестьАванс(ЗачетАванса, ЗачетАвансаРуб, ДоговорАванса)
//
Процедура ЗачестьАванс(ЗачетАванса, ЗачетАвансаРуб, ДоговорАванса)

Если ЗачетАванса > 0 Тогда
Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Зачтена предоплата";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Дебет.Счет = СчетАвансовПолученных;
Операция.Дебет.Контрагенты = Контрагент;
Операция.Дебет.Договоры = ДоговорАванса;
Операция.Кредит.Счет = СчетРасчетовСПокупателем;
Операция.Кредит.Контрагенты = Контрагент;
Операция.Кредит.Договоры = Договор;

Если ОплатаДоговора = 2 Тогда
Операция.Сумма = ЗачетАванса*Курс/Кратность;
Операция.Валюта = Валюта;
Операция.ВалСумма = ЗачетАванса;

ИначеЕсли ВестиУчетРасчетовУЕ = 1 Тогда
Операция.Сумма = ЗачетАвансаРуб;
Операция.Валюта = Валюта;
Операция.ВалСумма = ЗачетАванса;

ЗадолженностьПоРасчетамВУЕРуб = ЗадолженностьПоРасчетамВУЕРуб - Операция.Сумма;
ЗадолженностьПоРасчетамВУЕВал = ЗадолженностьПоРасчетамВУЕВал - Операция.ВалСумма;

Иначе
Операция.Сумма = ЗачетАванса;
КонецЕсли;

КонецЕсли;

КонецПроцедуры // ЗачетАванса()

////////////////////////////////////////////////////////////­////////////////////
// ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
//
//{{MRG[ --> ]
//*********************************************************************************
//}}MRG[ --> ]

//{{MRG[ --> ]
Функция Коментарий(Комент)
РезN="";
АДР="";
ФИО=СокрЛП(Комментарий);
Пока Найти(ФИО," ")>0 Цикл
ФИО=СтрЗаменить(ФИО," "," ");
КонецЦикла;
ФИО=СтрЗаменить(ФИО," ",РазделительСтрок);
Рез=СтрПолучитьСтроку(ФИО,1)+" ";
Для Х=2 По СтрДлина(ФИО) Цикл
Рез=Лев(СтрПолучитьСтроку(ФИО,Х),Х+80);
if СокрЛП(Рез) = "Бланк-Заказ" then
t=1;
endif;// РезN=РезN + Рез + " ";
if СокрЛП(Рез) = "от" then
t=0;
endif;
if t=1 then
РезN=РезN + Рез + " ";
endif;

КонецЦикла;
возврат РезN;
КонецФункции
//}}MRG[ --> ]
//*****************************************************************************
// Предопределенная процедура
//
Процедура ОбработкаПроведения()
//{{MRG[ --> ]
ДокументОснование =ДокументОснование;
//Ком= СокрЛП(Коментарий(Комментарий));
//if Ком<>"" then
// БЗ=Ком;
//endif;
//Сообщить(ПолучитьСтроку(Комментарий,"Введен на основании:"));

//
// РезN="";
//АДР="";
//
// ФИО=СокрЛП(Комментарий);
// Пока Найти(ФИО," ")>0 Цикл
// ФИО=СтрЗаменить(ФИО," "," ");
// КонецЦикла;
// ФИО=СтрЗаменить(ФИО," ",РазделительСтрок);
// Рез=СтрПолучитьСтроку(ФИО,1)+" ";
// Для Х=2 По СтрДлина(ФИО) Цикл
// Рез=Лев(СтрПолучитьСтроку(ФИО,Х),Х+80);
// if СокрЛП(Рез) = "Бланк-Заказ" then
// t=1;
// endif;// РезN=РезN + Рез + " ";
// if СокрЛП(Рез) = "от" then
// t=0;
// endif;
// if t=1 then
// РезN=РезN + Рез + " ";
// endif;
// Сообщить(РезN);
// КонецЦикла;





//}}MRG[ --> ]

Сч62_1 = СчетПоКоду("62.1");
Сч62_11 = СчетПоКоду("62.11");
Сч62_2 = СчетПоКоду("62.2");
Сч62_22 = СчетПоКоду("62.22");
Сч62_6 = СчетПоКоду("62.6");
Сч62_7 = СчетПоКоду("62.7");
Сч76_5 = СчетПоКоду("76.5");
Сч76_6 = СчетПоКоду("76.6");
Сч76_55 = СчетПоКоду("76.55");
Сч90_1_1 = СчетПоКоду("90.1.1");
Сч90_1_2 = СчетПоКоду("90.1.2");
Сч91_1 = СчетПоКоду("91.1");
Сч91_2 = СчетПоКоду("91.2");

СчУЕ_62 = СчетПоКоду("УЕ.62");

Сч68_5 = СчетПоКоду("68.5");
Сч76_Н_4 = СчетПоКоду("76.Н.4");
Сч90_6 = СчетПоКоду("90.6");

СчН06_01 = СчетПоКоду("Н06.01");

ЗадолженностьПоРасчетамВУЕРуб = 0;
ЗадолженностьПоРасчетамВУЕВал = 0;

ЦеныВДоговоре = 1; // в рублях
ВестиУчетРасчетовУЕ = 0;

Если Договор.Выбран() = 1 Тогда
Если ПустоеЗначение(Договор.ВалютаДоговора) = 0 Тогда
ЦеныВДоговоре = 2; // в валюте
КонецЕсли;
ОплатаДоговора = Договор.ОплатаДоговора; // 1 - врублях, 2 - в валюте
ВестиУчетРасчетовУЕ = Договор.ВестиУчетРасчетовУЕ;
КонецЕсли;

Если ЦеныВДоговоре = 2 Тогда
Валюта = Договор.ВалютаДоговора;
Кратность = Валюта.Кратность.Получить(ДатаДок);
Кратность = ?(Кратность=0, 1, Кратность);
Если ВестиУчетРасчетовУЕ = 1 Тогда
Кратность = Кратность * 100 / (100 + Договор.ПроцентКорректировкиКурсаУЕ);
КонецЕсли;

Если Курс = 0 Тогда
ТекстСообщения = "Не указан курс валюты";
глНеПроводить(Контекст, ТекстСообщения);
Возврат;
КонецЕсли;
КонецЕсли;

Если ОплатаДоговора = 2 Тогда
глТаблицаСчетов.УдалитьСтроки();

СчетРасчетовСПокупателем = Сч62_11;
СчетАвансовПолученных = Сч62_22;

Если ТипУслуги = 2 Тогда
глТаблицаСчетов.НоваяСтрока();
глТаблицаСчетов.Счет = Сч76_55;
глТаблицаСчетов.Субконто1 = Контрагент;
глТаблицаСчетов.Субконто2 = Договор;
глТаблицаСчетов.Валюта = Валюта;
глТаблицаСчетов.Курс = Курс;

ИначеЕсли (ТипУслуги = 3) и (ТипЗаказчика = 2) Тогда
СчетРасчетовСПокупателем = Сч76_55;
КонецЕсли;

глТаблицаСчетов.НоваяСтрока();
глТаблицаСчетов.Счет = СчетРасчетовСПокупателем;
глТаблицаСчетов.Субконто1 = Контрагент;
глТаблицаСчетов.Субконто2 = Договор;
глТаблицаСчетов.Субконто3 = "";
глТаблицаСчетов.Валюта = Валюта;
глТаблицаСчетов.Курс = Курс;

Если ЗачитыватьАванс <> 1 Тогда
глТаблицаСчетов.НоваяСтрока();
глТаблицаСчетов.Счет = СчетАвансовПолученных;
глТаблицаСчетов.Субконто1 = Контрагент;
глТаблицаСчетов.Субконто2 = Договор;
глТаблицаСчетов.Субконто3 = "";
глТаблицаСчетов.Валюта = Валюта;
глТаблицаСчетов.Курс = Курс;
Если ЗачитыватьАванс = 0 Тогда
БезДоговора = глДоговор(глИмяДоговораДляПлатежейБезДоговора, Контрагент);
Если ПустоеЗначение(БезДоговора) = 0 Тогда
глТаблицаСчетов.НоваяСтрока();
глТаблицаСчетов.Счет = СчетАвансовПолученных;
глТаблицаСчетов.Субконто1 = Контрагент;
глТаблицаСчетов.Субконто2 = БезДоговора;
глТаблицаСчетов.Субконто3 = "";
глТаблицаСчетов.Валюта = Валюта;
глТаблицаСчетов.Курс = Курс;
КонецЕсли;
КонецЕсли;
КонецЕсли;

глПереоценкаСчетов(Контекст, глТаблицаСчетов,, 0);

Иначе
Если ВестиУчетРасчетовУЕ = 0 Тогда
СчетРасчетовСПокупателем = Сч62_1;
СчетАвансовПолученных = Сч62_2;

Иначе
СчетРасчетовСПокупателем = Сч62_6;
СчетАвансовПолученных = Сч62_7;
КонецЕсли;

Если ТипУслуги = 3 Тогда
Если ТипЗаказчика = 2 Тогда
Если ВестиУчетРасчетовУЕ = 0 Тогда
СчетРасчетовСПокупателем = Сч76_5;

Иначе
СчетРасчетовСПокупателем = Сч76_6;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

// Заранее расчитаем сумму зачтенного аванса.
ЗачетАвансаПоДоговору = 0;
ЗачетАвансаБезДоговора = 0;
ЗачетАвансаПоДоговоруРуб = 0;
ЗачетАвансаБезДоговораРуб = 0;
РассчитатьСуммуАванса();

ТаблицаРеализации = СоздатьОбъект("ТаблицаЗначений");
ТаблицаРеализации.НоваяКолонка("Услуга");
ТаблицаРеализации.НоваяКолонка("ВидНоменклатуры");
ТаблицаРеализации.НоваяКолонка("СтавкаНДС");
ТаблицаРеализации.НоваяКолонка("СтавкаНП");
ТаблицаРеализации.НоваяКолонка("Всего", "Число", 15, 2);
ТаблицаРеализации.НоваяКолонка("ВалВсего", "Число", 15, 2);
ТаблицаРеализации.НоваяКолонка("НП", "Число", 15, 2);
ТаблицаРеализации.НоваяКолонка("НДС", "Число", 15, 2);
ТаблицаРеализации.НоваяКолонка("Количество");

ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
ТаблицаРеализации.НоваяСтрока();
ТаблицаРеализации.Услуга = Услуга;
ТаблицаРеализации.ВидНоменклатуры = Услуга.ВидНоменклатуры;
ТаблицаРеализации.СтавкаНДС = глСтавкаНалога(Контекст, "НДС");
ТаблицаРеализации.СтавкаНП = глСтавкаНалога(Контекст, "НП");
ТаблицаРеализации.Количество = Количество;

Если (ЦеныВДоговоре = 2) и (ВестиУчетРасчетовУЕ = 0) Тогда
ТаблицаРеализации.Всего = Всего*Курс/Кратность;
ТаблицаРеализации.НП = НП*Курс/Кратность;
ТаблицаРеализации.НДС = НДС*Курс/Кратность;
Если ОплатаДоговора =2 Тогда
ТаблицаРеализации.ВалВсего = Всего;
КонецЕсли;

Иначе
ТаблицаРеализации.Всего = Всего;
ТаблицаРеализации.НП = НП;
ТаблицаРеализации.НДС = НДС;
КонецЕсли;
КонецЦикла;

СуммаЗачтенногоАванса = 0;
СуммаЗачтенногоАвансаРуб = 0;
КурсАванса = 0;

Если (ЗачитыватьАванс <> 1) и (ТаблицаРеализации.Итог("Всего") <> 0) Тогда //Зачитывать аванс

Если ОплатаДоговора = 2 Тогда
ВсегоОтгружено = ТаблицаРеализации.Итог("ВалВсего");

Иначе
ВсегоОтгружено = ТаблицаРеализации.Итог("Всего");
КонецЕсли;

Если ВестиУчетРасчетовУЕ = 1 Тогда
ЗачетАвансаПоДоговору = Мин(АвансПоДоговору, ВсегоОтгружено);
ЗачетАвансаБезДоговора = Мин(АвансБезДоговора, ВсегоОтгружено - ЗачетАвансаПоДоговору);

Аванс = АвансПоДоговору + АвансБезДоговора;
ЗачетАванса = ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора;

Если ЗачетАванса = Аванс Тогда
ЗачетАвансаПоДоговоруРуб = АвансПоДоговоруРуб;
ЗачетАвансаБезДоговораРуб = АвансБезДоговораРуб;

ИначеЕсли ЗачетАванса > АвансПоДоговору Тогда
ЗачетАвансаПоДоговоруРуб = АвансПоДоговоруРуб;
ЗачетАвансаБезДоговораРуб = Окр(ЗачетАвансаБезДоговора * Окр(АвансБезДоговораРуб / ?(АвансБезДоговора = 0, 1, АвансБезДоговора), 4, 1), 2, 1);

Иначе
ЗачетАвансаПоДоговоруРуб = Окр(ЗачетАвансаПоДоговору * Окр(АвансПоДоговоруРуб / ?(АвансПоДоговору = 0, 1, АвансПоДоговору), 4, 1), 2, 1);
ЗачетАвансаБезДоговораРуб = 0;
КонецЕсли;

Иначе
ЗачетАвансаПоДоговору = Мин(АвансПоДоговору, ВсегоОтгружено);
ЗачетАвансаБезДоговора = Мин(АвансБезДоговора, ВсегоОтгружено - ЗачетАвансаПоДоговору);
КонецЕсли;

ЗачестьАванс(ЗачетАвансаПоДоговору, ЗачетАвансаПоДоговоруРуб, Договор);
ЗачестьАванс(ЗачетАвансаБезДоговора, ЗачетАвансаБезДоговораРуб, БезДоговора);

СуммаЗачтенногоАванса = ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора;

Если ВестиУчетРасчетовУЕ = 1 Тогда
СуммаЗачтенногоАвансаРуб = ЗачетАвансаПоДоговоруРуб + ЗачетАвансаБезДоговораРуб;

ПечЗачетАванса = Окр(ЗачетАвансаПоДоговоруРуб + ЗачетАвансаБезДоговораРуб, 2, 1);
ПечЗачетАвансаПоДоговору = Окр(ЗачетАвансаПоДоговоруРуб, 2, 1);
ПечЗачетАвансаБезДоговора = Окр(ЗачетАвансаБезДоговораРуб, 2, 1);
ПечАвансПоДоговору = Окр(АвансПоДоговоруРуб, 2, 1);
ПечАвансБезДоговора = Окр(АвансБезДоговораРуб, 2, 1);
ПечВсегоОтгружено = ВсегоОтгружено;
Если ЦеныВДоговоре = 2 Тогда
ПечВсегоОтгружено = Окр(ВсегоОтгружено * Курс / Кратность, 2, 1);
КонецЕсли;

Иначе
ПечЗачетАванса = Окр(ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора, 2, 1);
ПечЗачетАвансаПоДоговору = Окр(ЗачетАвансаПоДоговору, 2, 1);
ПечЗачетАвансаБезДоговора = Окр(ЗачетАвансаБезДоговора, 2, 1);
ПечАвансПоДоговору = Окр(АвансПоДоговору, 2, 1);
ПечАвансБезДоговора = Окр(АвансБезДоговора, 2, 1);
ПечВсегоОтгружено = ВсегоОтгружено;
КонецЕсли;

Если (АвансПоДоговору + АвансБезДоговора) <> 0 Тогда
ТекстСообщения = "=> Зачет аванса:" + РазделительСтрок
+ " отгружено на сумму: "+ПечВсегоОтгружено+", зачтен аванс в размере: "+ПечЗачетАванса + РазделительСтрок
+ " - определен аванс по договору "+Договор+" в сумме: "+ПечАвансПоДоговору+", зачтен аванс в размере: "+ПечЗачетАвансаПоДоговору + РазделительСтрок;

Если ЗачитыватьАванс = 0 Тогда
ТекстСообщения = ТекстСообщения
+ " - определен аванс без указания договора в сумме: "+ПечАвансБезДоговора+", зачтен аванс в размере: "+ПечЗачетАвансаБезДоговора;
Иначе
ТекстСообщения = ТекстСообщения
+ " - аванс без указания договора не учтен";
КонецЕсли;

глСообщениеПроведения(ТекстСообщения, ТекущийДокумент(), 0);
КонецЕсли;

АвансПоДоговору = АвансПоДоговору - ЗачетАвансаПоДоговору;
АвансБезДоговора = АвансБезДоговора - ЗачетАвансаБезДоговора;
АвансПоДоговоруРуб = АвансПоДоговоруРуб - ЗачетАвансаПоДоговоруРуб;
АвансБезДоговораРуб = АвансБезДоговораРуб - ЗачетАвансаБезДоговораРуб;
КонецЕсли;

ТаблицаРеализации.Свернуть("Услуга,ВидНоменклатуры, СтавкаНДС, СтавкаНП","ВалВсего, Всего, НДС, НП, Количество");

Если ОплатаДоговора = 2 Тогда
ИтогВсего = ТаблицаРеализации.Итог("ВалВсего");

Иначе
ИтогВсего = ТаблицаРеализации.Итог("Всего");
КонецЕсли;

ТаблицаРеализации.НоваяКолонка("ВыручкаРуб", "Число", 15, 2);
ТаблицаРеализации.НоваяКолонка("СуммоваяРазница", "Число", 15, 2);

РаспределеноАванса = 0;
РаспределеноАвансаРуб = 0;
КолСтрокТабОтгрузки = ТаблицаРеализации.КоличествоСтрок();
КурсАванса = ?(СуммаЗачтенногоАванса = 0, 0, Окр(СуммаЗачтенногоАвансаРуб / СуммаЗачтенногоАванса, 4, 1));
К = ?(ИтогВсего = 0, 0, СуммаЗачтенногоАванса / ИтогВсего);

ТаблицаРеализации.ВыбратьСтроки();
Пока ТаблицаРеализации.ПолучитьСтроку() = 1 Цикл
Если (ЦеныВДоговоре = 2) и (ВестиУчетРасчетовУЕ = 1) Тогда
Если ПустоеЗначение(ИтогВсего) = 0 Тогда
ЧастьСуммыЗачтенногоАванса = Окр(СуммаЗачтенногоАванса * ТаблицаРеализации.Всего / ИтогВсего, 2, 1);
ЧастьСуммыЗачтенногоАвансаРуб = Окр(СуммаЗачтенногоАвансаРуб * ТаблицаРеализации.Всего / ИтогВсего, 2, 1);

Иначе
ЧастьСуммыЗачтенногоАванса = 0;
ЧастьСуммыЗачтенногоАвансаРуб = 0;
КонецЕсли;

РаспределеноАванса = РаспределеноАванса + ЧастьСуммыЗачтенногоАванса;
РаспределеноАвансаРуб = РаспределеноАвансаРуб + ЧастьСуммыЗачтенногоАвансаРуб;

Если КолСтрокТабОтгрузки = ТаблицаРеализации.НомерСтроки Тогда
Если РаспределеноАванса <> СуммаЗачтенногоАванса Тогда
ЧастьСуммыЗачтенногоАванса = ЧастьСуммыЗачтенногоАванса + СуммаЗачтенногоАванса - РаспределеноАванса;
КонецЕсли;

Если РаспределеноАвансаРуб <> СуммаЗачтенногоАвансаРуб Тогда
ЧастьСуммыЗачтенногоАвансаРуб = ЧастьСуммыЗачтенногоАвансаРуб + СуммаЗачтенногоАвансаРуб - РаспределеноАвансаРуб;
КонецЕсли;
КонецЕсли;

ВсегоРубПоКурсуОтгрузки = Окр(ТаблицаРеализации.Всего * Курс / Кратность, 2, 1);
ОплаченоПоКурсуОтгрузки = Окр(К * ВсегоРубПоКурсуОтгрузки, 2, 1);
ТаблицаРеализации.ВыручкаРуб = ВсегоРубПоКурсуОтгрузки + ЧастьСуммыЗачтенногоАвансаРуб - ОплаченоПоКурсуОтгрузки;

НДСРубПоКурсуОтгрузки = Окр(ТаблицаРеализации.НДС * Курс / Кратность, 2, 1);
ОплаченоНДСПоКурсуОтгрузки = Окр(К * НДСРубПоКурсуОтгрузки, 2, 1);
НДСвЧастиЗачтенногоАвансаРуб = Окр(К * ТаблицаРеализации.НДС * КурсАванса, 2, 1);
СуммаНДС = НДСРубПоКурсуОтгрузки + НДСвЧастиЗачтенногоАвансаРуб - ОплаченоНДСПоКурсуОтгрузки;

НПРубПоКурсуОтгрузки = Окр(ТаблицаРеализации.НП * Курс / Кратность, 2, 1);
ОплаченоНППоКурсуОтгрузки = Окр(К * НПРубПоКурсуОтгрузки, 2, 1);
НПвЧастиЗачтенногоАвансаРуб = Окр(К * ТаблицаРеализации.НП * КурсАванса, 2, 1);
СуммаНП = НПРубПоКурсуОтгрузки + НПвЧастиЗачтенногоАвансаРуб - ОплаченоНППоКурсуОтгрузки;

ВыручкаБезНалогов = ТаблицаРеализации.ВыручкаРуб - СуммаНДС - СуммаНП;

Если (Договор.ОтражатьСуммовуюРазницуПриЗачетеАванса = 1) и (ВестиУчетРасчетовУЕ = 1) Тогда
ТаблицаРеализации.СуммоваяРазница = ЧастьСуммыЗачтенногоАвансаРуб - ОплаченоПоКурсуОтгрузки;
КонецЕсли;

Иначе
ВыручкаБезНалогов = ТаблицаРеализации.Всего - ТаблицаРеализации.НДС - ТаблицаРеализации.НП;
КонецЕсли;

Если (Договор.ОтражатьСуммовуюРазницуПриЗачетеАванса = 1) и (ВестиУчетРасчетовУЕ = 1) Тогда
ПоКурсуОтгрузки = ОплаченоПоКурсуОтгрузки - ОплаченоНДСПоКурсуОтгрузки - ОплаченоНППоКурсуОтгрузки;
ПоКурсуОплаты = ЧастьСуммыЗачтенногоАвансаРуб - НДСвЧастиЗачтенногоАвансаРуб - НПвЧастиЗачтенногоАвансаРуб;
СуммоваяРазница = ПоКурсуОплаты - ПоКурсуОтгрузки;

Иначе
СуммоваяРазница = 0;
КонецЕсли;

Если (ВыручкаБезНалогов > 0) и (глНовыеПравилаВеденияНУ(ДатаДок) = 1) и (ТаблицаРеализации.ВидНоменклатуры.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.УслугаЕНВД) Тогда
Операция.НоваяПроводка();
Операция.НомерЖурнала = "НУ";
Операция.СодержаниеПроводки = "Выручка от реализации";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Кредит.Счет = СчН06_01;
Операция.Кредит.Номенклатура = ТаблицаРеализации.Услуга;
Операция.Кредит.УсловияПоступленияИВыбытия = Перечисление.УсловияПоступленияИВыбытия.ЗаПлату;
Операция.Кредит.Основание = Договор;
Операция.Сумма = ВыручкаБезНалогов - СуммоваяРазница;

глОтражениеСуммовыхРазницВНаловомУчете(Контекст, СуммоваяРазница, 0);
КонецЕсли;
КонецЦикла;

ТаблицаРеализации.Свернуть("ВидНоменклатуры, СтавкаНДС, СтавкаНП","ВалВсего, Всего, НДС, НП, ВыручкаРуб, СуммоваяРазница");
ТаблицаРеализации.ВыбратьСтроки();
Пока ТаблицаРеализации.ПолучитьСтроку() = 1 Цикл

Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Учтена выручка";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Дебет.Счет = СчетРасчетовСПокупателем;
Операция.Дебет.Контрагенты = Контрагент;
Операция.Дебет.Договоры = Договор;
Если ТипУслуги = 3 Тогда
Операция.Кредит.Счет = Сч91_1;
Операция.Кредит.ПрочиеДоходыИРасходы = СтатьяПрочихДоходовИРасходов;

ИначеЕсли ТаблицаРеализации.ВидНоменклатуры.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.УслугаЕНВД Тогда
Операция.Кредит.Счет = Сч90_1_2;
Операция.Кредит.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;

Иначе
Операция.Кредит.Счет = Сч90_1_1;
Операция.Кредит.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;
Если ВерсияОбъекта >= "7.70.421" Тогда
Операция.Кредит.СтавкиНДС = ТаблицаРеализации.СтавкаНДС;
Операция.Кредит.СтавкиНП = ТаблицаРеализации.СтавкаНП;
КонецЕсли;
КонецЕсли;

Если ОплатаДоговора = 2 Тогда
Операция.ВалСумма = ТаблицаРеализации.ВалВсего;
Операция.Валюта = Валюта;
КонецЕсли;

Если ВестиУчетРасчетовУЕ = 1 Тогда
Операция.ВалСумма = ТаблицаРеализации.Всего;
Операция.Валюта = Валюта;
Операция.Сумма = ТаблицаРеализации.ВыручкаРуб - ТаблицаРеализации.СуммоваяРазница;

ЗадолженностьПоРасчетамВУЕРуб = ЗадолженностьПоРасчетамВУЕРуб + Операция.Сумма;
ЗадолженностьПоРасчетамВУЕВал = ЗадолженностьПоРасчетамВУЕВал + Операция.ВалСумма;

Иначе
Операция.Сумма = ТаблицаРеализации.Всего;
КонецЕсли;

Если ТаблицаРеализации.СуммоваяРазница <> 0 Тогда
Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Суммовая разница";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Дебет.Счет = СчетРасчетовСПокупателем;
Операция.Дебет.Контрагенты = Контрагент;
Операция.Дебет.Договоры = Договор;
Если ТипУслуги = 3 Тогда
Операция.Кредит.Счет = Сч91_1;
Операция.Кредит.ПрочиеДоходыИРасходы = СтатьяПрочихДоходовИРасходов;

ИначеЕсли ТаблицаРеализации.ВидНоменклатуры.ТипНоменклатуры = Перечисление.ТипыНоменклатуры.УслугаЕНВД Тогда
Операция.Кредит.Счет = Сч90_1_2;
Операция.Кредит.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;

Иначе
Операция.Кредит.Счет = Сч90_1_1;
Операция.Кредит.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;
Если ВерсияОбъекта >= "7.70.421" Тогда
Операция.Кредит.СтавкиНДС = ТаблицаРеализации.СтавкаНДС;
Операция.Кредит.СтавкиНП = ТаблицаРеализации.СтавкаНП;
КонецЕсли;
КонецЕсли;

Операция.Валюта = Валюта;
Операция.Сумма = ТаблицаРеализации.СуммоваяРазница;
ЗадолженностьПоРасчетамВУЕРуб = ЗадолженностьПоРасчетамВУЕРуб + Операция.Сумма;

КонецЕсли;
КонецЦикла;

Если (ЦеныВДоговоре = 1) или (ОплатаДоговора = 2) Тогда
СуммаРеализации = ТаблицаРеализации.Итог("Всего");

ИначеЕсли ВестиУчетРасчетовУЕ = 1 Тогда
СуммаРеализации = ТаблицаРеализации.Итог("ВыручкаРуб") - ТаблицаРеализации.Итог("СуммоваяРазница");

Иначе
СуммаРеализации = Окр(ТаблицаРеализации.Итог("Всего")*Курс/Кратность, 2, 1);
КонецЕсли;

Если (ТипУслуги = 2) и (СуммаРеализации > 0) и (ЗачетТребований = 1) Тогда
СчетРасчетовСКомитентом = ?(ОплатаДоговора = 2, Сч76_55, Сч76_5);
СчетРасчетовСКомитентом = ?(ВестиУчетРасчетовУЕ = 1, Сч76_6, СчетРасчетовСКомитентом);

Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Комисс. вознаграждение";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Дебет.Счет = СчетРасчетовСКомитентом;
Операция.Дебет.Контрагенты = Контрагент;
Операция.Дебет.Договоры = Договор;
Операция.Кредит.Счет = СчетРасчетовСПокупателем;
Операция.Кредит.Контрагенты = Контрагент;
Операция.Кредит.Договоры = Договор;
Если ЦеныВДоговоре = 2 Тогда
Если ОплатаДоговора = 2 Тогда
Операция.Валюта = Валюта;
Операция.ВалСумма = ТаблицаРеализации.Итог("ВалВсего");
КонецЕсли;

Если ВестиУчетРасчетовУЕ = 1 Тогда
Операция.ВалСумма = ТаблицаРеализации.Итог("Всего");
Операция.Валюта = Валюта;
Операция.Сумма = ТаблицаРеализации.Итог("ВыручкаРуб") - ТаблицаРеализации.Итог("СуммоваяРазница");

Иначе
Операция.Сумма = ТаблицаРеализации.Итог("Всего");
КонецЕсли;

Иначе
Операция.Сумма = СуммаРеализации;
КонецЕсли;
ЗачетАванса = СуммаРеализации;

Иначе
ЗачетАванса = (ЗачетАвансаПоДоговору + ЗачетАвансаБезДоговора);
КонецЕсли;

ТаблицаРеализации.Свернуть("ВидНоменклатуры, СтавкаНП","Всего, НП");
Если (СуммаРеализации > 0) и (ВерсияОбъекта >= "7.70.421") Тогда
К = ЗачетАванса / СуммаРеализации;
ТаблицаРеализации.ВыбратьСтроки();
Пока ТаблицаРеализации.ПолучитьСтроку() = 1 Цикл
Если ТаблицаРеализации.НП = 0 Тогда
Продолжить;
КонецЕсли;

НПкУплате = К*ТаблицаРеализации.НП;
ОтложеноНП = ТаблицаРеализации.НП - НПкУплате;
Если НПкУплате > 0 Тогда // был зачет аванса
Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Начислен НП";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Если ТипУслуги = 3 Тогда
Операция.Дебет.Счет = Сч91_2;
Операция.Дебет.ПрочиеДоходыИРасходы = СтатьяПрочихДоходовИРасходов;
Иначе
Операция.Дебет.Счет = Сч90_6;
Операция.Дебет.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;
Операция.Дебет.СтавкиНП = ТаблицаРеализации.СтавкаНП;
КонецЕсли;
Операция.Кредит.Счет = Сч68_5;
Операция.Кредит.ВидыПлатежейВБюджет = Перечисление.ВидыПлатежейВБюджет.Налог;
Если ВестиУчетРасчетовУЕ = 1 Тогда
Операция.Сумма = НПкУплате*Курс/Кратность;
Иначе
Операция.Сумма = НПкУплате;
КонецЕсли;
КонецЕсли;

Если ОтложеноНП > 0 Тогда
Операция.НоваяПроводка();
Операция.НомерЖурнала = "ТВ";
Операция.СодержаниеПроводки = "Начислен НП";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Если ТипУслуги = 3 Тогда
Операция.Дебет.Счет = Сч91_2;
Операция.Дебет.ПрочиеДоходыИРасходы = СтатьяПрочихДоходовИРасходов;
Иначе
Операция.Дебет.Счет = Сч90_6;
Операция.Дебет.ВидыНоменклатуры = ТаблицаРеализации.ВидНоменклатуры;
Операция.Дебет.СтавкиНП = ТаблицаРеализации.СтавкаНП;
КонецЕсли;
Операция.Кредит.Счет = Сч76_Н_4;
Операция.Кредит.Контрагенты = Контрагент;
Операция.Кредит.Договоры = Договор;
Если ВестиУчетРасчетовУЕ = 1 Тогда
Операция.Сумма = ОтложеноНП*Курс/Кратность;
Иначе
Операция.Сумма = ОтложеноНП;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;

//********************************************************************
//Проводки по расчетам в у.е.
Если ДатаДок >= '01.01.2007' Тогда
Если ВестиУчетРасчетовУЕ = 1 Тогда
Если (ЗадолженностьПоРасчетамВУЕРуб + ЗадолженностьПоРасчетамВУЕВал) <> 0 Тогда
Операция.НоваяПроводка();
Операция.НомерЖурнала = "УЕ";
Операция.ПервичныйДокумент = глПредставлениеПервичногоДокумента(Контекст);
Операция.Дебет.Счет = СчУЕ_62;
Операция.Дебет.Субконто(1, Контрагент);
Операция.Дебет.Субконто(2, Договор);
Операция.Валюта = Валюта;
Операция.Сумма = ЗадолженностьПоРасчетамВУЕРуб;
Операция.ВалСумма = ЗадолженностьПоРасчетамВУЕВал;
Операция.СодержаниеПроводки = "Задолженность по реализации в у.е.";
КонецЕсли;
КонецЕсли;
КонецЕсли;
//********************************************************************
//{{MRG[ <-> ]
//}}MRG[ <-> ]
//{{MRG[ <-> ]
ДокументОснование =ДокументОснование;
//}}MRG[ <-> ]
Операция.Записать();

ТекстСообщения = "Документ проведен.";
глСообщениеПроведения(ТекстСообщения, ТекущийДокумент(), 0);
глПриПроведении(Контекст);

КонецПроцедуры
5. Buktory 26.11.09 01:27 Сейчас в теме
Нашла где надо добавить) Всем спасибки огромное за помощь
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот