Имя: Пароль:
1C
1C 7.7
v7: Непонятное движение регистра
0 Санта Клаус
 
07.10.20
16:51
В ТИС 7.7 при проведении документа Поступление импорт делается корректирующее (по всей видимости) движение по Регистру Партии,КодОперации ПоступлениеТМЦ,Товар купленный - с нулевым количеством и минусовой суммой. В отладчике не мог увидеть и отловить это движение. Может ли сама платформа делать такое движение.Спасибо
1 mikecool
 
07.10.20
16:54
нет
2 Санта Клаус
 
07.10.20
16:57
спс
3 HawkEye
 
07.10.20
18:48
(0) теоретически может, в отладчике смотри что происходит в ПроведениеПоРегистрам()
4 HawkEye
 
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
Ура! и в чем там смысл? минусует ранее имевшиеся авансы по сборам?