7.7 Групповое создание счет-фактур на основании Передачи ОС

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем spartak_lp, 29 июн 2012.

  1. TopicStarter Overlay
    spartak_lp
    Offline

    spartak_lp Опытный в 1С

    Регистрация:
    3 окт 2011
    Сообщения:
    201
    Симпатии:
    0
    Баллы:
    26
    Здраствуйте! Есть ли такие обработки по групповому созданию счет-фактур выданных на основании документа "ПередачаОС"?
  2. TopicStarter Overlay
    spartak_lp
    Offline

    spartak_lp Опытный в 1С

    Регистрация:
    3 окт 2011
    Сообщения:
    201
    Симпатии:
    0
    Баллы:
    26
    И еще хотелось бы узнать где искать код процедуры создания счет-фактур на основании документа "ПередачаОС"
    PS - Бухучет 7.70.537
  3. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    В самом документе СФ. Процедура ВВодНаОсновании. Там вызывается 2 основные процеду
    шапки (из ГМ)
    и т.части (в теле самого модуля документа)
  4. TopicStarter Overlay
    spartak_lp
    Offline

    spartak_lp Опытный в 1С

    Регистрация:
    3 окт 2011
    Сообщения:
    201
    Симпатии:
    0
    Баллы:
    26
    Есть обработка, которая делает групповое создание счет-фактур на основании "Оказания услуг". В процедуре создания такой код:
    Код:
    Процедура СформироватьСчФ()	   // сделано по ОказаниюУслуг
    СпрСотр=СоздатьОбъект("Справочник.Сотрудники");  
    СпрСотр.НайтиПоКоду("000072");
    СпрСотрЛоб=СпрСотр.ТекущийЭлемент();
    Приходы.ВыбратьСтроки();
    Пока приходы.получитьстроку() = 1 Цикл
    Если Приходы.Флаг = "V" Тогда	
    иначе
    продолжить;
    КонецЕсли;
    Если Приходы.ДОк.Вид() = "ОказаниеУслуг" Тогда
    // по занесенным в список актам проверми - нет ли подчиненной счет-фактуры
    ДокОсн = Приходы.ДОк;
    ДокПодч  = создатьОбъект("Документ");
    Если ДокПодч.ВыбратьПодчиненныеДокументы(ДатаНачала,ДатаКонца,ДокОсн) = 1 Тогда
    Если ДокПодч.Вид() = "СчетФактура" Тогда
    ДокСчФ  = создатьОбъект("Документ.СчетФактура");
    докподч.СделатьНеПроведенным();
    докподч.УдалитьСтроки();
    докподч.Записать();
    ДоксчФ.НайтиДокумент(докПодч.ТекущийДокумент());
    докподч = "";	
    Иначе
    продолжить;
    КонецЕсли;
    иначе
    ДокСчФ  = создатьОбъект("Документ.СчетФактура");
    ДокСчФ.Новый();
    ДокСчф.ВерсияОбъекта = Константа.НомерРелиза;
    КонецЕсли;				  
    
    Доксчф.ДатаДок=ДокОсн.ДатаДок;
    Доксчф.документоснование = ДокОсн.текущийДокумент();  
    
    Доксчф.СчетАкциза = 1;
    Доксчф.Грузоотправитель = ПолучитьПустоеЗначение();
    Доксчф.ВариантОтправки = 1;	
    ДОксчф.Контрагент = ДокОсн.контрагент;										
    //
    Если Константа.МетодОпределенияВыручки.Получить(ДокСчФ.ДатаДок) = глПоОтгрузке Тогда
    ДокСчФ.СчетНДС = 1;
    Иначе
    ДокСчФ.СчетНДС = 2;
    Если ДокОсн.Вид() = "ОказаниеУслуг" Тогда
    Если (ДокОсн.ТипУслуги = 2) и (ДокОсн.ЗачетТребований = 1) Тогда
    ДокСчФ.СчетНДС = 1;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    Если  ДокОсн.Вид()="ОказаниеУслуг" Тогда
    ДокСчФ.Руководитель= ДокОсн.Руководитель;
    КонецЕсли;
    ДокСчФ.Договор = ДокОсн.Договор;
    ПриВыбореДоговора();
    ДокСчФ.Контрагент=ДокОсн.Контрагент;
    ДокСчФ.ТипЦен = ДокОсн.ТипЦен;
    // Заполнение грузополучателя и грузоотправителя
    ДокСчФ.Грузополучатель=ДокОсн.Контрагент;
    
    ДокСчФ.Аванс = 0;
    ДокСчФ.ВидОперации = Перечисление.ВидыОперацийСчетаФактурыВыданного.Реализация;
    ДокСчФ.КомментарийАкта = ДокОсн.Комментарий;
    ДокОсн.ВыбратьСтроки();
    Пока ДокОсн.ПолучитьСтроку()=1 Цикл
    ДокСчФ.НоваяСтрока();
    ДокСчФ.НазначитьТип("Товар", "Справочник.Номенклатура");
    Если ( ДокОсн.Вид()="ОказаниеУслуг" ) Тогда
    ДокСчФ.Товар=ДокОсн.Услуга;
    ИначеЕсли ( ДокОсн.Вид()="ВыполнениеЭтапаРабот" ) Тогда
    ДокСчФ.Товар=ДокОсн.Работа;
    Иначе
    ДокСчФ.Товар=ДокОсн.Товар;
    КонецЕсли;
    
    ДокСчФ.Количество=ДокОсн.Количество;
    ДокСчФ.СтавкаНДС = глСтавкаНалога(ДокОсн, "НДС");
    Кол = ?(ДокСчФ.Количество = 0, 1, ДокСчФ.Количество);
    Если (Цел(ДокСчФ.СтавкаНДС.Ставка) = ДокСчФ.СтавкаНДС.Ставка) или
    (ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНДС = 0) Тогда
    
    Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНП = 1 Тогда
    Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНДС = 0 Тогда
    ДокСчФ.Цена = (ДокОсн.Всего - ДокОсн.НП)/Кол;
    
    Иначе
    ДокСчФ.Цена = (ДокОсн.Всего - ДокОсн.НДС - ДокОсн.НП)/Кол;
    КонецЕсли;
    
    Иначе
    Если ДокОсн.ВариантРасчетаНалогов.СуммаВключаетНДС = 0 Тогда
    ДокСчФ.Цена = ДокОсн.Цена;
    
    Иначе
    ДокСчФ.Цена = (ДокОсн.Всего - ДокОсн.НДС)/Кол;
    КонецЕсли;
    КонецЕсли;
    
    ДокСчФ.Сумма = ДокОсн.Всего - ДокОсн.НДС - ДокОсн.НП;
    Иначе
    ДокСчФ.Цена = (ДокОсн.Всего - ДокОсн.НП)/Кол;
    ДокСчФ.Сумма = ДокОсн.Всего - ДокОсн.НП;
    КонецЕсли;
    ДокСчФ.НДС=ДокОсн.НДС;
    ДокСчФ.Счет = СчетПоКоду("90.3");
    ПриВыбореСчета();
    Если ДокОсн.Вид() = "ОказаниеУслуг" Тогда  
    Если ДокОсн.ТипУслуги = 3 Тогда
    ДокСчф.Счет = СчетПоКоду("91.2.0");  
    
    ПриВыбореСчета();
    ДокСчф.Субконто1 = ДокОсн.СтатьяПрочихДоходовИРасходов;
    КонецЕсли;
    КонецЕсли;
    Если Цел(ДокСчф.СтавкаНДС.Ставка) = ДокСчф.СтавкаНДС.Ставка Тогда
    ДокСчф.Всего=ДокСчф.Сумма+ДокСчф.НДС;
    Иначе
    ДокСчф.Всего=ДокСчФ.Сумма;
    КонецЕсли;
    КонецЦикла;// Перебор строк табличной части дока основания
    Доксчф.руководитель =  ДокОСн.Руководитель;
    Доксчф.ГлБухгалтер  =  СпрСотрЛоб;
    //Доксчф.ПриказДир =  "";
    Доксчф.ПриказГлБух  =  "согласно приказа № 29 от 16.02.11";
    доксчф.Комментарий = "Введен на основании: "+ГлПредставлениеДокумента(ДокОсн);
    доксчф.Записать();																
    доксчф.Комментарий = доксчф.Комментарий  + "@" + РасчДоки(ДокСчф.ТекущийДокумент());	  
    
    Доксчф.НомерПлатРасчДок =  Доксчф_НомерПлатРасчДок ;
    Доксчф.ДатаПлатРасчДок  =  Доксчф_ДатаПлатРасчДок;
    Доксчф.датаоплаты   = "" + Доксчф_датаоплаты ;
    
    доксчф.Записать();
    
    Сообщить("Записан документ : " + доксчф.ПредставлениеВида() + " " + доксчф.НомерДок + " от " + доксчф.ДатаДок, "I");
    
    // попробуем провести данную счет фактуру		
    попытка
    доксчф.Провести();			
    исключение
    Сообщить("Не удалось провести докумет: " + доксчф);
    конецпопытки;
    иначе
    продолжить;
    КонецЕсли;
    КонецЦикла;
    
    ЗаполнитьПриходы();
    Конецпроцедуры 
    Что нужно тут изменить, чтобы создавались СФ на основании док-тов "ПередачаОС"?
  5. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Да в принципе не так много. Смотрите процедуру ВводНаОсновании и ЗаполнениеТЧ документа СФ
  6. TopicStarter Overlay
    spartak_lp
    Offline

    spartak_lp Опытный в 1С

    Регистрация:
    3 окт 2011
    Сообщения:
    201
    Симпатии:
    0
    Баллы:
    26
    Спасибо, вроде разобрался как подогнать под данную обработку, буду пробовать...

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