Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

StBender



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
Процедура ПриходРозницаНУ (Док)
    // обработать приходные накладные для реализатора
                       
    РегОстатки = СоздатьОбъект("Регистр.ОстаткиТоваров");
    СчетН02_02=Бух.EvalExpr("СчетПоКоду(""Н02.02.1"")");
    БухОперация = Бух.CreateObject("Операция");
    
    Номенклатура=Бух.CreateObject("Справочник.Номенклатура");
    Номенклатура.ИспользоватьДату(СДаты);
    
    
    Содержание = "НУ "+ Док.Вид()+ " " + Док.НомерДок + " " + Док.ДатаДок;
    БухОперация.ВыбратьОперации(Док.ДатаДок, Док.ДатаДок);
    Пока БухОперация.ПолучитьОперацию() = 1 цикл
        Если СокрЛП(БухОперация.Содержание) = Содержание тогда
            БухОперация.Удалить(1);
            Прервать;
        КонецЕсли;
    КонецЦикла;
 
    БухОперация.Новая();
    БухОперация.ДатаОперации = Док.ДатаДок;
    БухОперация.Содержание = Содержание;
    БухОперация.СуммаОперации = 0;
    
    ИтогоСебестоимость = 0;
    ИтогоНаценка = 0;
 
    Док.ВыбратьСтроки();
    Пока Док.ПолучитьСтроку() = 1 цикл
        Если Док.Товар.Выбран() = 0  тогда
            Продолжить;
        КонецЕсли;
        Если Док.Товар.ВидТовара = Перечисление.ВидыТоваров.Услуга тогда
            Продолжить;
        КонецЕсли;
 
        состояние ("Документ "+Док+" товар "+Док.Товар);
        
        БазоваяСтоимость = 0;
        ОстатокТовара = 0;
        РегОстатки.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());
        Пока РегОстатки.ПолучитьДвижение() = 1 цикл
            Если
            (РегОстатки.Склад = Док.Склад) и
            (РегОстатки.Товар = Док.Товар) и
            (РегОстатки.Серия = Док.Серия) тогда
                Если РегОстатки.Приход = 1 тогда
                    БазоваяСтоимость = БазоваяСтоимость - РегОстатки.БазоваяСтоимость;
                    ОстатокТовара = ОстатокТовара - РегОстатки.ОстатокТовара;
                иначе
                    БазоваяСтоимость = БазоваяСтоимость + РегОстатки.БазоваяСтоимость;
                    ОстатокТовара = ОстатокТовара + РегОстатки.ОстатокТовара;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;  
        Если ОстатокТовара=0 тогда
            ОстатокТовара=1;
        конецесли;
        БазоваяСтоимость = Окр (БазоваяСтоимость / ОстатокТовара * Док.Количество * Док.Коэффициент, 2);
        БазоваяНДС = Окр (БазоваяСтоимость * (1 - 1 / (1 + ПроцентНДС(Док.Товар.СтавкаНДС) / 100)), 2);
 
        состояние ("Формирование проводок "+Док+" товар "+Док.Товар);
        // списание со склада  
        БухОперация.НоваяПроводка();
        БухОперация.Кредит.Счет = СчетН02_02;
        БухОперация.Кредит.Номенклатура = ПолучитьЭлемент(Док.Товар, Номенклатура);
        // Установить ставки НДС, НП и тип номенклатуры
        ОбновитьНоменклатуру (Док.Товар, Номенклатура);
        БухОперация.Количество = Док.Количество*Док.Коэффициент;
        БухОперация.Сумма = БазоваяСтоимость - БазоваяНДС;  
        
        
        // Себестоимость = БазоваяСтоимость - БазоваяНДС;
        // СебестоимостьСНаценкой = Док.Сумма - Док.НДС - Док.СуммаНП;
        Себестоимость = БазоваяСтоимость;
        СебестоимостьСНаценкой = Док.Сумма;
            
        Если (Себестоимость < СебестоимостьСНаценкой * 0.5) или  
             (Себестоимость >= СебестоимостьСНаценкой) тогда
            Сообщить("ВНИМАНИЕ! Себестоимость в строке " + Док.НомерСтроки + " " + Док.Товар + " " + Формат(Себестоимость, "Ч12.2") + " с наценкой " + Формат(СебестоимостьСНаценкой, "Ч12.2"));
        КонецЕсли;
            
        ИтогоСебестоимость = ИтогоСебестоимость + Себестоимость;
        ИтогоНаценка = ИтогоНаценка + Док.Сумма - Себестоимость;
 
        БухОперация.СуммаОперации = БухОперация.СуммаОперации + Док.Сумма;
 
    КонецЦикла;
 
    сообщить (Док.Вид()+ " " + Док.НомерДок + " " + Док.ДатаДок + " " + Формат(Док.Итог("Сумма"), "Ч12.2"));
    Сообщить("  себестоимость = " + Формат(ИтогоСебестоимость, "Ч12.2") + " наценка = " + Формат(ИтогоНаценка, "Ч12.2"));
    БухОперация.Записать();
 
КонецПроцедуры

Всего записей: 250 | Зарегистр. 18-06-2008 | Отправлено: 11:50 10-01-2014
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1С Программирование и поддержка (1C)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru