Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2024, 21:47

вывод % наценки

Автор ADRENALIN1986, 17 фев 2011, 19:07

0 Пользователей и 1 гость просматривают эту тему.

ADRENALIN1986

Проблема вот в чем , когда в документе поступления товаров  выбираешь товар, потом ставишь  цену товара к примеру 100 и учетнную цену 120 то  то выводит %наценку 20% . Мне нужно сделать так  что бы когда я ввел цену товара 100 а учетную цену 80 он мне вывел % наценку -20% . Вместо этого он в графе % наценки ничего не выводит(( Помогите пожалуйста. Рисунок и код прилогаеться

ADRENALIN1986

не могу вложить файлы  тоетсь фото и код пишет нет доступа к папке вложений что может быть такое

prog1c7.7

попробуй код так отписать просто

ADRENALIN1986

Перем Валюта,сФормат,Спропись,ЗнОкр;
Перем КонтекстФормыПодбора;
Перем НПкакНадбавка;
Перем НачальнаяДатаДокумента,Новый;
Перем ДатаНДСрф,НулеваяСтавкаНДС,ТоварИзРФ;
//_____________________________________________________________________________

Процедура ВидимостьБСО()
   Если ВидПоступления=1 Тогда
      Форма.БСО.Видимость(1);
   Иначе
      Форма.БСО.Видимость(0);
   КонецЕсли;
КонецПроцедуры

//_____________________________________________________________________________

Процедура ПриВыбореБСО()
   Если (БСО.Выбран()=1) И (Количество =0) Тогда
       Если (ПустоеЗначение(БСО.НомерНач)=0) И
           (ПустоеЗначение(БСО.НомерКон)=0) Тогда
         Количество = Число(БСО.НомерКон) - Число(БСО.НомерНач) + 1;
      Иначе
         Количество = БСО.Количество;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры //ПриВыбореБСО

//_____________________________________________________________________________
Процедура ВидимостьГрафНП()
   Форма.НП.Видимость(РассчитыватьНП); 
   Форма.СтавкаНП.Видимость(РассчитыватьНП); 
КонецПроцедуры // ВидимостьГрафНП
//_____________________________________________________________________________
Процедура ПроверитьРФ()
   Если Контрагент.Выбран()=1 Тогда
      Если (Контрагент.РФ=1) И (ДатаДок>=ДатаНДСрф) Тогда
         ТоварИзРФ =1;
      Иначе   
         ТоварИзРФ =0;
      КонецЕсли;
   Иначе
         ТоварИзРФ =-1;
   КонецЕсли;
   
КонецПроцедуры //ПроверитьРФ
//_____________________________________________________________________________
Процедура ПриВыбореКонтрагента()
   глПриВыбореКонтрагента(Контрагент,Договор);
   ПроверитьРФ();
КонецПроцедуры //глПриВыбореКонтрагента(Контрагент,Договор)

//-----------------------------------------------------------------------------
Процедура Видимость()     
   Если Договор.Валютный=1 тогда
      ЗнОкр=2;
   Иначе
      ЗнОкр=0;
   КонецЕсли;
   ВидимостьГрафНП();
   Если РассчитыватьНП = 1 Тогда
      ВыбратьСтроки();
      Пока Получитьстроку() = 1 Цикл 
         Если НПКакНадбавка = 1 тогда 
            НП = Окр((Сумма + НДС)*СтавкаНП*0.01,ЗнОкр);
         Иначе
            НП = Окр((Сумма + НДС)*СтавкаНП/(100-СтавкаНП),ЗнОкр);
         КонецЕсли;
         Всего = Сумма + НДС+НП;
      КонецЦикла;
   Иначе                         
      ВыбратьСтроки();
      Пока Получитьстроку() = 1 Цикл
         НП = 0;                       
         Всего = Сумма + НДС+НП;
      КонецЦикла;
   КонецЕсли;
КонецПроцедуры
//_____________________________________________________________________________
Процедура Пересчет(Подбор=0)
   Если Материал.Выбран() = 1 Тогда
         Если Договор.Валютный=1 тогда
         ЗнОкр=2;
      Иначе
         ЗнОкр=0;
      КонецЕсли;
      Если ТоварИзРФ<0 Тогда
         ПроверитьРФ();
      КонецЕсли;
       
      Если (ТоварИзРФ=1) И (СтавкаНДС.Выбран()=0) Тогда
         Если ПустоеЗначение(НулеваяСтавкаНДС)=1 Тогда
             СпрНДС = СоздатьОбъект("Справочник.СтавкиНДС");
            Если СпрНДС.НайтиПоРеквизиту("Ставка",0,1) = 0 тогда
               СпрНДС.Новый();
               СпрНДС.Наименование = "0% НДС - из РФ";
               СпрНДС.Ставка = 0;
               СпрНДС.Записать();
            КонецЕсли;                                         
            НулеваяСтавкаНДС = СпрНДС.ТекущийЭлемент();
         КонецЕсли;
         СтавкаНДС = НулеваяСтавкаНДС;
      КонецЕсли;
      Если (СтавкаНДС.выбран()=0) и (Константа.ОсновнаяСтавкаНДС.Выбран() = 1) Тогда
         СтавкаНДС = Константа.ОсновнаяСтавкаНДС;
      КонецЕсли;
      
      Если (Форма.ТекущаяКолонка() = "Материал") или (Подбор = 1) Тогда
         Цена = Материал.Цена;
         Количество = ?(Количество=0,1,Количество);
         Сумма = Окр(Количество*Цена,ЗнОкр);
         НДС = Окр(Сумма*СтавкаНДС.Ставка/100,ЗнОкр);
         Если РассчитыватьНП = 1 Тогда
            Если НПКакНадбавка = 1 тогда 
               НП = Окр((Сумма + НДС)*СтавкаНП*0.01,ЗнОкр);
            Иначе
               НП = Окр((Сумма + НДС)/(100-СтавкаНП)*СтавкаНП,ЗнОкр);
            КонецЕсли;   
         Иначе
            НП = 0;
         КонецЕсли;
         Всего = Сумма + НДС+НП;

      ИначеЕсли (Форма.ТекущаяКолонка() = "Количество") или (Форма.ТекущаяКолонка() = "Цена") Тогда
         Сумма = Окр(Количество*Цена,ЗнОкр);
         НДС = Окр((Сумма)*СтавкаНДС.Ставка/100,ЗнОкр);
         Если РассчитыватьНП = 1 Тогда
            //НП = Окр((Сумма + НДС)/(100-СтавкаНП)*СтавкаНП,ЗнОкр);
            Если НПКакНадбавка = 1 тогда 
               НП = Окр((Сумма + НДС)*СтавкаНП*0.01,ЗнОкр);
            Иначе
               НП = Окр((Сумма + НДС)/(100-СтавкаНП)*СтавкаНП,ЗнОкр);
            КонецЕсли;   
         Иначе
            НП = 0;
         КонецЕсли;
         Всего = Сумма + НДС+НП;

      ИначеЕсли (Форма.ТекущаяКолонка() = "Сумма") или (Форма.ТекущаяКолонка() = "СтавкаНДС") Тогда
         //Цена = Окр(Сумма/?(Количество=0,1,Количество),2,1);
         НДС = Окр((Сумма)*СтавкаНДС.Ставка/100,ЗнОкр);
         Если РассчитыватьНП = 1 Тогда
            Если НПКакНадбавка = 1 тогда 
               НП = Окр((Сумма + НДС)*СтавкаНП*0.01,ЗнОкр);
            Иначе
               НП = Окр((Сумма + НДС)/(100-СтавкаНП)*СтавкаНП,ЗнОкр);
            КонецЕсли;
         Иначе
            НП = 0;
         КонецЕсли;
         Всего = Сумма + НДС+НП;

      ИначеЕсли (Форма.ТекущаяКолонка() = "НДС") или (Форма.ТекущаяКолонка() = "СтавкаНП")  Тогда
         Если РассчитыватьНП = 1 Тогда
            Если НПКакНадбавка = 1 тогда 
               НП = Окр((Сумма + НДС)*СтавкаНП*0.01,ЗнОкр);
            Иначе
               НП = Окр((Сумма + НДС)/(100-СтавкаНП)*СтавкаНП,ЗнОкр);
            КонецЕсли;
         Иначе
            НП = 0;
         КонецЕсли;
         Всего = Сумма + НДС+НП;

      ИначеЕсли Форма.ТекущаяКолонка() = "НП" Тогда
         Всего = Сумма + НДС+НП;
         
      ИначеЕсли (Форма.ТекущаяКолонка() = "Всего") и (отВсего=1) Тогда
         Если (РассчитыватьНП = 1) и (НП <> 0) Тогда
            СуммаБезНП = Всего - НП;
            НДС = Окр(СуммабезНП*СтавкаНДС.Ставка/(100+СтавкаНДС.Ставка),ЗнОкр);   
            Сумма = СуммаБезНП - НДС;
         Иначе
            НДС = Окр(Всего*СтавкаНДС.Ставка/(100+СтавкаНДС.Ставка),ЗнОкр);
            Сумма = Всего - НДС;
         КонецЕсли;
         Цена = Окр(Сумма/?(Количество=0,1,Количество),2);
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры //Пересчет
//_____________________________________________________________________________
Функция ИтоговаяСтрока()
    ИтСтр = "Итого поступило материалов на сумму: "+СокрЛ(Формат(Итог("Всего"),"Ч20.0-,"))+", в т.ч. НДС "+СокрЛ(Формат(Итог("НДС"),"Ч20.0-,"));
   Возврат ИтСтр;
КонецФункции //ИтоговаяСтрока
//_____________________________________________________________________________
Процедура Подбор()
//   ОткрытьПодбор("Справочник.Материалы");
   ОткрытьПодбор("Справочник.Материалы","ДляПодбора",КонтекстФормыПодбора);
   КонтекстФормыПодбора.МестоХранения = МестоХранения; //"Склад";
   КонтекстФормыПодбора.ДатаДок = ДатаДок;
   КонтекстФормыПодбора.Ответственный = Ответственный;
   КонтекстФормыПодбора.Счет10 = СчетПоКоду("10");
   ОткрытьПодбор("Справочник.Материалы","ДляПодбора",КонтекстФормыПодбора);
КонецПроцедуры
//_____________________________________________________________________________
Процедура ОбработкаПодбора(ВыбрМатериал)
   Кол=1;
   Если ВвестиЧисло(Кол,"Введите количество",10,4)=0 Тогда
      Возврат;
   КонецЕсли;
   Если Кол > 0 Тогда
      НоваяСтрока();
      Материал = ВыбрМатериал;
      Количество = Кол;
      Если РассчитыватьНП = 1 Тогда
         СтавкаНП = 5;
      КонецЕсли;
      АктивизироватьСтроку();
      Пересчет(1);
   КонецЕсли;
КонецПроцедуры
//____________________________________________________________
Процедура Печать(Стиль)   
   Если стиль=0 тогда   
      юВалНакладной(Договор,Валюта,сФормат,Спропись,ЗнОкр);
      Курс=1;
   Иначе
      юВалНакладной("",Валюта,сФормат,Спропись,ЗнОкр);
      Курс   = ПолучитьКурс(Договор.Валюта,ДатаДок);
   КонецЕсли;   
      
   Таб = СоздатьОбъект("Таблица");
     Таб.ИсходнаяТаблица("М-4");
   ТМЦ = "Материалы"; 
   НомерДокС = СокрЛП(НомерДок);
   МОЛ = Ответственный;
   ГлБухгалтер =  Константа.ГлБухгалтер.Получить(ДатаДок);
   ИтогСумма = 0; ИтогНДС=0;  ИтогВсего=0;
   Таб.ВывестиСекцию("Шапка");
    ВыбратьСтроки();
   Пока ПолучитьСтроку()=1 Цикл
      МПЗ     = СокрЛП(Материал.Наименование)+?((ВидПоступления=1) И (БСО.Выбран()=1),
               " ("+СокрЛП(БСО.Наименование)+" "+СокрЛП(БСО.Серия)+СокрЛП(БСО.НомерНач)+"... "+СокрЛП(БСО.НомерКон)+")","");             
      Артикул = Материал.Код;
      ЕдИзм   = Материал.ЕдиницаИзмерения;
      Цена_   = Цена;
      СуммаБезНДС = ?(РассчитыватьНП=1,Сумма+НП,Сумма);
      НДС_   = НДС;
      Всего_ = Всего;
      Если Стиль=1 тогда
         ИтогСумма = ИтогСумма + ?(РассчитыватьНП=1,Сумма+НП,Сумма)*Курс;   
         ИтогНДС   = ИтогНДС   + НДС*Курс;
         ИтогВсего = ИтогВсего + Всего*Курс;
      КонецЕсли;
         Таб.ВывестиСекцию("Строка");
   КонецЦикла;
   Если Стиль=0 тогда
        ИтогСумма = ?(РассчитыватьНП=1,Итог( "Сумма" )+Итог( "НП" ),Итог( "Сумма" ));
      ИтогНДС   = Итог("НДС");
      ИтогВсего = Итог("Всего");
   КонецЕсли;
    Таб.ВывестиСекцию("Подвал");
   Таб.Опции(0,0,0,0,"ОпцииПечатиМ4","ОкноМ4");
   Таб.ТолькоПросмотр(1);
   Таб.ПараметрыСтраницы(1,,,,,,,,,1);
   Таб.Показать("Печать приходного ордера форма №М-4","");
КонецПроцедуры // Печать 
//_____________________________________________________________________________
Процедура ПечатьМеню()                         
   Перем Стиль;
   Если (Договор.Валютный = 1) И (Договор.Валюта.Выбран()=1) И (Договор.Валюта<>Константа.ОсновнаяВалюта) тогда
      Меню = СоздатьОбъект("СписокЗначений");
      Меню.ДобавитьЗначение(0, "В валюте договора");
      Меню.ДобавитьЗначение(1, "В основной валюте");
      Если Меню.ВыбратьЗначение(Стиль,,,,1) = 1 Тогда
         Печать(Стиль);
      КонецЕсли; 
    Иначе         
      Печать(0);
   КонецЕсли;
КонецПроцедуры
//
Процедура ПриВыбореСклада()
   Ответственный = МестоХранения.МОЛ;
КонецПроцедуры
//_____________________________________________________________________________
Процедура ВводНового(Копирование) // Предопределенная процедура
   
   Новый = 1;
   Если Копирование = 1 Тогда //копирование документа
       Возврат;
   КонецЕсли;
    РассчитыватьНП = ВосстановитьЗначение("Поступление материалов - рассчитывать НП");
   МестоХранения = глЗначениеПоУмолчанию("ОсновнойСклад");
   Ответственный = МестоХранения.МОЛ;
   ВидПоставщика = Перечисление.ВидПоставщика.Поставщики;
КонецПроцедуры // ВводНового
//_____________________________________________________________________________
Процедура ПриОткрытии() // Предопределенная процедура
   
   ПриЗаписиПерепроводить(1);
   
   глПроверкаРазрешенияРедактирования(Контекст);
   
   Если Проведен() = 1 Тогда
      Форма.ТолькоПросмотр(1);
   КонецЕсли;
   


   Если Форма.ТолькоПросмотр() = 1 Тогда
      Форма.КнПодбор.Доступность(0);
      Форма.КнОчистить.Доступность(0);
      Форма.КнопкаОК.Доступность(0);
      Форма.КнопкаПоУмолчанию("КнЗакрыть");
   КонецЕсли;
   НачальнаяДатаДокумента = ДатаДок;

   Форма.Материал.ВыполнятьФормулуТолькоПриИзменении(1);
   Форма.Количество.ВыполнятьФормулуТолькоПриИзменении(1);
   Форма.Цена.ВыполнятьФормулуТолькоПриИзменении(1);
   Форма.Сумма.ВыполнятьФормулуТолькоПриИзменении(1);
   ВидимостьГрафНП();
   ВидимостьБСО();
   ФлКодМатериала = ВосстановитьЗначение("Материалы - ФлКодМатериала");
   Форма.ГрАртикул.Заголовок(?(ФлКодМатериала=1,"Код","Артикул"));
   Если Новый=1 Тогда
      АвтоВремяНачалоДня();
   Иначе
      АвтоВремяОтключить();
   КонецЕсли;
КонецПроцедуры // ПриОткрытии
//_____________________________________________________________________________
Процедура ПриЗаписи() // Предопределенная процедура
   Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда
      СтатусВозврата(0);
      Возврат;
   ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда
      СтатусВозврата(0);
      Возврат;
   КонецЕсли;
    СохранитьЗначение("Поступление материалов - рассчитывать НП",РассчитыватьНП);
   СохранитьЗначение("Материалы - ФлКодМатериала",ФлКодМатериала);
   Операция.СуммаОперации = Итог("Сумма");
   Операция.Содержание = "Поступление материалов";
КонецПроцедуры
//-----------------------------------------------------------------------------
Процедура ПриЗакрытии()
КонецПроцедуры // ПриЗакрытии()
//-----------------------------------------------------------------------------
Новый = 0;
НПкакНадбавка = Константа.НалогСпродажКакНадбавка;
ДатаНДСрф = Дата(2005,1,1);
НулеваяСтавкаНДС = "";
ТоварИзРФ = -1;

ADRENALIN1986


ADRENALIN1986

Все всем спасибо тема снята разобрался)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск