7.7 Как заполнить книгу покупок по приходу от поставщика?

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем Kas-tet, 30 сен 2016.

  1. TopicStarter Overlay
    Kas-tet
    Offline

    Kas-tet

    Регистрация:
    30 сен 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Помогите, нужно сделать заполнение книги покупок по приходу от поставщика вне зависимости от того оплачено или нет, она сделана по оплате, прошлый программист делал.Сам я 1с только учу [​IMG], т.к. в универе его не преподавали... вот код заполнения по оплате:

    Код:
    Процедура Заполнить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()
  2. Хряк
    Offline

    Хряк Профессионал в 1С

    Регистрация:
    26 сен 2007
    Сообщения:
    1.447
    Симпатии:
    37
    Баллы:
    54
    выбрать доки.прихода
    пока получить док.прихода цикл

    далее всё после строки
    Док.НайтиДокумент(Ит.Субконто(1));
    выкидывая строки с обращением к бухитогам
  3. TopicStarter Overlay
    Kas-tet
    Offline

    Kas-tet

    Регистрация:
    30 сен 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Спасибо, а подробнее можно? Я только учусь 1с)
  4. TopicStarter Overlay
    Kas-tet
    Offline

    Kas-tet

    Регистрация:
    30 сен 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    Я изменил условие, подсказали, но не уверен или оно правильно считать будет, т.к. поменялся коэффициент, а он дальше по коду участвует в вычислениях:



    Код:
    //   Если Ит.ДО() <> 0 Тогда
          Если Ит.Субконто(1).Вид() = "ПриходОтПоставщика" Тогда
           
           
             НоваяСтрока();
             Приход     = Ит.Субконто(1);
             Оплата     = "Оплата согласно выписки " + Строка(Ит.НачДата);
             Контрагент   = Ит.Субконто(1).Контрагент;
             Всего1     = Ит.Субконто(1).Итог("Всего") - Ит.Субконто(1).ИтогоПоСкидке + Ит.Субконто(1).Транспортные + Ит.Субконто(1).СуммаНДСТрансп;
             Коэфф     = 1;
             Разница     = Всего1 - Ит.ДО();
             //Если (Разница > 10) ИЛИ (Разница < (-10)) Тогда               // не уверен в правильности последующих вычислений
             //   Коэфф   = Ит.ДО() / Всего1; 
             //КонецЕсли;
             Всего   = Ит.ДО();
           
             Док.НайтиДокумент(Ит.Субконто(1));
    *
    *
    *
          
             Если Коэфф <> 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()
    
  5. TopicStarter Overlay
    Kas-tet
    Offline

    Kas-tet

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

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ит.Субконто(1).ДатаДок - получили дату документа для сравнения
    Kas-tet нравится это.
  7. TopicStarter Overlay
    Kas-tet
    Offline

    Kas-tet

    Регистрация:
    30 сен 2016
    Сообщения:
    22
    Симпатии:
    0
    Баллы:
    1
    спасибо уже сделал
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104

Поделиться этой страницей