Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Непонятное движение регистра

v7: Непонятное движение регистра
Я
   Санта Клаус
 
07.10.20 - 16:51
В ТИС 7.7 при проведении документа Поступление импорт делается корректирующее (по всей видимости) движение по Регистру Партии,КодОперации ПоступлениеТМЦ,Товар купленный - с нулевым количеством и минусовой суммой. В отладчике не мог увидеть и отловить это движение. Может ли сама платформа делать такое движение.Спасибо
   mikecool
 
1 - 07.10.20 - 16:54
нет
   Санта Клаус
 
2 - 07.10.20 - 16:57
спс
   HawkEye
 
3 - 07.10.20 - 18:48
(0) теоретически может, в отладчике смотри что происходит в ПроведениеПоРегистрам()
   HawkEye
 
4 - 07.10.20 - 18:51
+(3) там кстати в коде написано, русским по белому: РегПартии.Количество = 0;
   Злопчинский
 
5 - 07.10.20 - 23:58
там все тупо по оприходванию ПАРТИЙ ТМЦ
.
//******************************************************************************

// глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров)
//

// Параметры:                                                     
//    Конт              - контекст проведения

//    ТаблицаДокумента - таблица документа. Должна содержать колонки:
//                         1) "Номенклатура"

//                         2) "Количество"
//                         3) "Сумма"       (в валюте взаиморасчетов)

//                         4) "СуммаУпр"    (в валюте управленческого учета)
//                         5) "СуммаРуб"    (в валюте бухгалтерского учета)

//                         6) "СуммаНДС"    (в валюте бухгалтерского учета)
//                         7) "Партия"      (в которую оприходовать)

//                         8) "ВидТМЦ"      (Вид ТМЦ, Перечисление.ВидыТМЦ)
//                        Только для оприходования на розничный склад:

//                           9) "СуммаРозничная"
//    СписокПараметров - список доп параметров проведения

//   (используются: "Фирма", "Склад", "Контрагент", "Договор", "ТекДок", "КодОперации")
//

// Описание:
//   Производит оприходование ТМЦ по регистру "ПартииНаличие".

//
Процедура глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров) Экспорт
    
    СпрПартии            = СоздатьОбъект("Справочник.Партии");
    
    РегПартии            = Конт.Регистр.ПартииНаличие;
             
    Фирма                = СписокПараметров.Получить("Фирма");
    Склад                = СписокПараметров.Получить("Склад");
    Поставщик            = СписокПараметров.Получить("Контрагент");
    ДоговорПоставщика    = СписокПараметров.Получить("Договор");
    ТекДок                = СписокПараметров.Получить("ТекДок");
    КодОперации            = СписокПараметров.Получить("КодОперации");
    
    УчПолитика             = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
    
    МОЛ                    = Склад.МОЛ;                                              

    ТаблНоменклатуры.ВыбратьСтроки();
    Пока ТаблНоменклатуры.ПолучитьСтроку()=1 Цикл
                  
        Номенклатура = ТаблНоменклатуры.Номенклатура;
        Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
         или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда
            Продолжить;
        КонецЕсли;
        
        //измерения

        РегПартии.Фирма                = Фирма;
        РегПартии.МОЛ                = МОЛ;
        РегПартии.Номенклатура        = Номенклатура;
        РегПартии.СтатусПартии        = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидТМЦ,Номенклатура,КодОперации, Склад);
        Если (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.FIFO)
         или (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.LIFO)
         или (РегПартии.СтатусПартии = глСП.Т_Принятый) Тогда
                 
            ЗакупочнаяЦена             = ?(ТаблНоменклатуры.Количество=0,
                                        0,
                                        Окр(ТаблНоменклатуры.Сумма / ТаблНоменклатуры.Количество,2,1));
            РегПартии.Партия        = глЗаполнитьПартию(СпрПартии,  ТаблНоменклатуры.Партия,
                                            Поставщик,ДоговорПоставщика,ТекДок,ЗакупочнаяЦена);
            РегПартии.ДатаПартии    = ТекДок.ДатаДок;
            
        Иначе     
            РегПартии.Партия        = "";                
            РегПартии.ДатаПартии    = "";
        КонецЕсли;
            
        //ресурсы

        РегПартии.Количество        = ТаблНоменклатуры.Количество;
        РегПартии.СуммаУпр            = ТаблНоменклатуры.СуммаУпр;
        РегПартии.СуммаРуб            = ТаблНоменклатуры.СуммаРуб;
        РегПартии.СуммаБезНДС        = ТаблНоменклатуры.СуммаРуб-ТаблНоменклатуры.СуммаНДС;
        
        Если Склад.РозничныйСклад = 1  Тогда
            РегПартии.ПродСтоимость = ТаблНоменклатуры.ПродСтоимость;  
        КонецЕсли;
        РегПартии.ЦенаПрод = ТаблНоменклатуры.ЦенаПродПриход;
        
        //реквизиты      

        РегПартии.КодОперации         = КодОперации;
        
        РегПартии.ПривязыватьСтроку(ТаблНоменклатуры.НомерСтрокиДокумента);
        
        РегПартии.ДвижениеПриходВыполнить();
        
    КонецЦикла;

КонецПроцедуры// глОприходованиеПартийТМЦ()  
.
а то что вы обсуждаете связано с добавкой хвостов" - таможенные платежи и пошлины.
.
по тупо оприходованным партиям (ничем не отличается от обычных поступлений) - колбасим по каждой партии пошлины и пр.

    // отразим таможенные сборы и пошлины и НДС

    ОстатокСбораРуб     = ТаможенныйСборРуб + ТаможенныйСборВал_Р;
    КоэффСбора            = ?(ТаблицаДокумента.Итог("СуммаРуб") = 0, 0, ОстатокСбораРуб / ТаблицаДокумента.Итог("СуммаРуб"));
        
    МОЛ                    = Склад.МОЛ;
                                        
    КурсДоллара            = ?(Валюта = глДоллары,    Курс,глКурсДляВалюты(глДоллары,    ДатаДок));
    КурсРубля            = ?(Валюта = глРубли,    Курс,глКурсДляВалюты(глРубли,    ДатаДок));
    КратДоллара            = ?(Валюта = глДоллары,    Кратность,глКратностьДляВалюты(глДоллары,ДатаДок));
    КратРубля            = ?(Валюта = глРубли,    Кратность,глКратностьДляВалюты(глРубли,     ДатаДок));
        
    РегПартии             = Регистр.ПартииНаличие;
    УчПолитика             = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(ДатаДок);
    
    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку() = 1 Цикл
        
        //измерения

        РегПартии.Фирма                = Фирма;
        РегПартии.МОЛ                = МОЛ;
        РегПартии.Номенклатура        = ТаблицаДокумента.Номенклатура;
        РегПартии.СтатусПартии        = глПолучитьСтатусПартииПрихода(ТаблицаДокумента.ВидТМЦ,ТаблицаДокумента.Номенклатура,глКО.Закупка);
        Если (Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(ДатаДок) = Перечисление.МетодыРасчетаСебестоимости.FIFO) 
         или (Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(ДатаДок) = Перечисление.МетодыРасчетаСебестоимости.LIFO)
         или (РегПартии.СтатусПартии = глСП.Т_Принятый) Тогда
                 
            РегПартии.Партия        = ТаблицаДокумента.Партия;
            РегПартии.ДатаПартии    = ДатаДок;
            
        Иначе     
            РегПартии.Партия        = "";                
            РегПартии.ДатаПартии    = "";
        КонецЕсли;
            
        //ресурсы                                                   

        Если ТаблицаДокумента.НомерСтроки = ТаблицаДокумента.КоличествоСтрок() Тогда
            ТекСуммаСбора     = ОстатокСбораРуб;
        Иначе
            ТекСуммаСбора     = Окр(ТаблицаДокумента.СуммаРуб * КоэффСбора,2,1);
            ОстатокСбораРуб = ОстатокСбораРуб - ТекСуммаСбора;
        КонецЕсли;
        
        РегПартии.Количество        = 0;
        РегПартии.СуммаРуб            = ТаблицаДокумента.СуммаПошлиныРуб+
                                        ТаблицаДокумента.СуммаНДСРуб+
                                        ТекСуммаСбора;
        РегПартии.СуммаБезНДС        = ТаблицаДокумента.СуммаПошлиныРуб+
                                        ТекСуммаСбора;
        РегПартии.СуммаУпр            = глПересчет(РегПартии.СуммаРуб,глРубли,КурсРубля,глДоллары,КурсДоллара,КратРубля,КратДоллара);
        
        //реквизиты      

        РегПартии.КодОперации         = глКО.ТаможенныеПлатежи;     
        
        РегПартии.ПривязыватьСтроку(ТаблицаДокумента.НомерСтрокиДокумента);
        РегПартии.ДвижениеПриходВыполнить();
        
    КонецЦикла;// по строкам таблицы документа
   Злопчинский
 
6 - 07.10.20 - 23:59
Вычисляется на раз (имхо).
надо тупо дать скрин заполненной ТЧ и скрин движений по регистру
   Злопчинский
 
7 - 08.10.20 - 00:04
смотрите - похоже у вас большая сумма сборов  и мелкая сумма по строке типа так..
.
здесь смотри на КФ обрати внимание
      Если ТаблицаДокумента.НомерСтроки = ТаблицаДокумента.КоличествоСтрок() Тогда
            ТекСуммаСбора     = ОстатокСбораРуб;
        Иначе
            ТекСуммаСбора     = Окр(ТаблицаДокумента.СуммаРуб * КоэффСбора,2,1);
            ОстатокСбораРуб = ОстатокСбораРуб - ТекСуммаСбора;
        КонецЕсли;
   Санта Клаус
 
8 - 08.10.20 - 08:20
нашел)
СкорректироватьДвиженияПартийПоАвансам()
глЗаписатьДвиженияРегистраПартийПоТаблице(ТаблицаКорректировкиПартий, Конт)
   Злопчинский
 
9 - 08.10.20 - 09:47
Ура! и в чем там смысл? минусует ранее имевшиеся авансы по сборам?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.