Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как заполнить книгу покупок поприходу от поставщика?  (Прочитано 19760 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kas-tet
Новенький

by
Offline Offline

« : 30-09-2016 11:42 » new


Помогите, нужно сделать заполнение книги покупок по приходу от поставщика вне зависимости от того оплачено или нет, она сделана по оплате, прошлый программист делал.Сам я 1с только учу А черт его знает..., т.к. в универе его не преподавали... вот код заполнения по оплате:

Код: (Text)
Процедура Заполнить1()

   Если КоличествоСтрок() > 0 Тогда
      Если Вопрос("Перед заполнением таблица документа будет очищена. Продолжить?", "Да+Нет") = "Нет" Тогда
         Возврат;
      КонецЕсли;
      УдалитьСтроки();
   КонецЕсли;
   
   Ит = СоздатьОбъект("БухгалтерскиеИтоги");
   Док   = СоздатьОбъект("Документ.ПриходОтПоставщика");
   Ит.ИспользоватьСубконто(ВидыСубконто.Накл);
   Ит.ВыполнитьЗапрос(НачМесяца(ДатаДок), КонМесяца(ДатаДок), "60.1", "51",, 2, "День",);  
   Сч_НДС = СчетПоКоду("18.1.2");
   
   Ит.ВыбратьПериоды();
   
   Пока Ит.ПолучитьПериод() = 1 Цикл
      Ит.ВыбратьСубконто(1);
      Пока Ит.ПолучитьСубконто(1) = 1 Цикл
         
         Если Ит.ДО() <> 0 Тогда
           
            НоваяСтрока();
            Приход      = Ит.Субконто(1);
            Оплата      = "Оплата согласно выписки " + Строка(Ит.НачДата);
            Контрагент   = Ит.Субконто(1).Контрагент;
            Всего1      = Ит.Субконто(1).Итог("Всего") - Ит.Субконто(1).ИтогоПоСкидке + Ит.Субконто(1).Транспортные + Ит.Субконто(1).СуммаНДСТрансп;
            Коэфф      = 1;
            Разница      = Всего1 - Ит.ДО();
            Если (Разница > 10) ИЛИ (Разница < (-10)) Тогда
               Коэфф   = Ит.ДО() / Всего1;  
            КонецЕсли;
            Всего   = Ит.ДО();
           
            Док.НайтиДокумент(Ит.Субконто(1));

            НДС18         = Док.СуммаНДСТрансп;
            СуммаБезНДС18   = 0;
//
// ***** 15.03.2010 *****
// Добавлено:
//
            НДС20         = 0; //Док.СуммаНДСТрансп;
            СуммаБезНДС20   = 0;
//        
// ***** evm *****
//        
           
            НДС10         = 0;
            СуммаБезНДС10   = 0;
            СуммаБезНДС      = Док.Транспортные;
            СчетНДС         = Сч_НДС;
            НДС909         = 0;
            СуммаБезНДС909   = 0;
            НДС1525         = 0;
            СуммаБезНДС1525   = 0;
            НДС1667         = 0;
            СуммаБезНДС1667   = 0;
           
            Док.ВыбратьСтроки();
           
            Пока Док.ПолучитьСтроку() = 1 Цикл
               Если Док.СтавкаНДС = 10 Тогда
                  НДС10         = НДС10 + Док.НДС;
                  СуммаБезНДС10   = СуммаБезНДС10 + (Док.Всего - Док.НДС);
               
               ИначеЕсли Док.СтавкаНДС = 18 Тогда
                  НДС18         = НДС18 + Док.НДС;
                  СуммаБезНДС18   = СуммаБезНДС18 + (Док.Всего - Док.НДС);
               
               ИначеЕсли Док.СтавкаНДС = 15.25 Тогда
                  НДС1525         = НДС1525 + Док.НДС;
                  СуммаБезНДС1525   = СуммаБезНДС1525 + (Док.Всего - Док.НДС);
//
// ***** 15.03.2010 *****
// Добавлено:
//
               ИначеЕсли Док.СтавкаНДС = 20 Тогда
                  НДС20         = НДС20 + Док.НДС;
                  СуммаБезНДС20   = СуммаБезНДС20 + (Док.Всего - Док.НДС);
               
               ИначеЕсли Док.СтавкаНДС = 16.67 Тогда
                  НДС1667         = НДС1667 + Док.НДС;
                  СуммаБезНДС1667   = СуммаБезНДС1667 + (Док.Всего - Док.НДС);
//        
// ***** evm *****
//        
               ИначеЕсли Док.СтавкаНДС = 24 Тогда
                  НДС909         = НДС909 + Док.НДС;
                  СуммаБезНДС909   = СуммаБезНДС909 + (Док.Всего - Док.НДС);
                  СуммаБезНДС      = СуммаБезНДС + Док.Всего;
               
               ИначеЕсли Док.СтавкаНДС = 9.09 Тогда
                  НДС909         = НДС909 + Док.НДС;
                  СуммаБезНДС909   = СуммаБезНДС909 + (Док.Всего - Док.НДС);
               
               ИначеЕсли Док.СтавкаНДС = 0 Тогда
                  СуммаБезНДС      = СуммаБезНДС + Док.Всего;
               
               Иначе
                  СуммаБезНДС      = СуммаБезНДС + Док.Всего;
               
               КонецЕсли;  
           
            КонецЦикла;
           
            Если Коэфф <> 1 Тогда
               НДС18         = Окр(Коэфф * НДС18, 2, 1);
               СуммаБезНДС18   = Окр(Коэфф * СуммаБезНДС18, 2, 1);
//
// ***** 15.03.2010 *****
// Добавлено:
//
               НДС20         = Окр(Коэфф * НДС20, 2, 1);
               СуммаБезНДС20   = Окр(Коэфф * СуммаБезНДС20, 2, 1);
               НДС1667         = Окр(Коэфф * НДС1667, 0, 1);
               СуммаБезНДС1667   = Окр(Коэфф * СуммаБезНДС1667, 2, 1);
//        
// ***** evm *****
//        
               НДС10         = Окр(Коэфф * НДС10, 2, 1);
               СуммаБезНДС10   = Окр(Коэфф * СуммаБезНДС10, 2, 1);
               СуммаБезНДС      = Окр(Коэфф * СуммаБезНДС, 2, 1);
               НДС1525         = Окр(Коэфф * НДС1525, 2, 1);
               СуммаБезНДС1525   = Окр(Коэфф * СуммаБезНДС1525, 2, 1);
               НДС909         = Окр(Коэфф * НДС909, 2, 1);
               СуммаБезНДС909   = Окр(Коэфф * СуммаБезНДС909, 2, 1);  
            КонецЕсли;
         
         КонецЕсли;  
     
      КонецЦикла;
   КонецЦикла;

КонецПроцедуры // Заполнить1()
 
Записан
Kas-tet
Новенький

by
Offline Offline

« Ответ #1 : 03-10-2016 08:08 » 

Я изменил код, помогли, но не уверен в правильности расчетов дальше, т.к. пришлось за комментировать несколько строк, т.к. с ними не считает ндс
Код:
//  Если Ит.ДО() <> 0 Тогда
      [b]Если Ит.Субконто(1).Вид() = "ПриходОтПоставщика" Тогда[/b]  //вставил
       
       
         НоваяСтрока();
         Приход     = Ит.Субконто(1);
         Оплата     = "Оплата согласно выписки " + Строка(Ит.НачДата);
         Контрагент   = Ит.Субконто(1).Контрагент;
         Всего1     = Ит.Субконто(1).Итог("Всего") - Ит.Субконто(1).ИтогоПоСкидке + Ит.Субконто(1).Транспортные + Ит.Субконто(1).СуммаНДСТрансп;
         Коэфф     = 1;
        [b] Разница     = Всего1 - Ит.ДО();
         //Если (Разница > 10) ИЛИ (Разница < (-10)) Тогда               // не уверен в правильности последующих вычислений
         //   Коэфф   = Ит.ДО() / Всего1; 
         //КонецЕсли;[/b]
         Всего   = Ит.ДО();
       
         Док.НайтиДокумент(Ит.Субконто(1));
*
*
*
       
       [b]  Если Коэфф <> 1 Тогда[/b] //     ВОТ БЕРЕТ РАССЧИТАННЫЙ КОЭФФИЦИЕНТ
           НДС18       = Окр(Коэфф * НДС18, 2, 1);
           СуммаБезНДС18   = Окр(Коэфф * СуммаБезНДС18, 2, 1);
//
// ***** 15.03.2010 *****
// Добавлено:
//
           НДС20       = Окр(Коэфф * НДС20, 2, 1);
           СуммаБезНДС20   = Окр(Коэфф * СуммаБезНДС20, 2, 1);
           НДС1667       = Окр(Коэфф * НДС1667, 0, 1);
           СуммаБезНДС1667   = Окр(Коэфф * СуммаБезНДС1667, 2, 1);
//     
// ***** evm *****
//     
           НДС10       = Окр(Коэфф * НДС10, 2, 1);
           СуммаБезНДС10   = Окр(Коэфф * СуммаБезНДС10, 2, 1);
           СуммаБезНДС     = Окр(Коэфф * СуммаБезНДС, 2, 1);
           НДС1525       = Окр(Коэфф * НДС1525, 2, 1);
           СуммаБезНДС1525   = Окр(Коэфф * СуммаБезНДС1525, 2, 1);
           НДС909       = Окр(Коэфф * НДС909, 2, 1);
           СуммаБезНДС909   = Окр(Коэфф * СуммаБезНДС909, 2, 1); 
         КонецЕсли;
        КонецЕсли;
     //   КонецЕсли; 
   
     КонецЦикла;
   КонецЦикла;

КонецПроцедуры // Заполнить1()
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines