Имя: Пароль:
1C
1C 7.7
v7: Странный код в новой ТиС
0 ildary
 
11.01.16
09:49
Уважаемые специалисты, подскажите пожалуйста, как правильно понимать такой код?

Если МнЧ.КоличествоСтрок() = 0 Тогда
    МнЧ.НоваяСтрока();
    МнЧ.Номенклатура = МнЧ.ПолучитьЗначение(1,"Номенклатура");
    МнЧ.Цена         = МнЧ.ПолучитьЗначение(1,"Цена");
    МнЧ.СтавкаНДС     = МнЧ.ПолучитьЗначение(1,"СтавкаНДС");
    МнЧ.Единица      = МнЧ.ПолучитьЗначение(1,"Единица");
    МнЧ.ЕдиницаКод   = МнЧ.ПолучитьЗначение(1,"ЕдиницаКод");
    МнЧ.АкцизЦена    = МнЧ.ПолучитьЗначение(1,"АкцизЦена");
Иначе
    МнЧ.НоваяСтрока();
    МнЧ.Номенклатура = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Номенклатура");
    МнЧ.Цена         = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Цена");
    МнЧ.СтавкаНДС     = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"СтавкаНДС");
    МнЧ.Единица      = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Единица");
    МнЧ.ЕдиницаКод   = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"ЕдиницаКод");
    МнЧ.АкцизЦена    = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"АкцизЦена");
КонецЕсли;                            

разве не достаточно для первого ветвления сделать МнЧ.НоваяСтрока();?
1 Масянька
 
11.01.16
09:51
(0) Выше код покажи...
2 ildary
 
11.01.16
09:56
(1) он не особо поможет. Это кусок процедуры ПодготовитьМнЧосн() из СчетФактураВыданный. Пытаюсь понять - это ошибка или мудрость кода превышает мои знания?

    Пока РаспредГТД.ПолучитьСтроку() = 1 Цикл
        
        ТекСумма      = МнЧ.Сумма;
        ТекСуммаНДС      = МнЧ.СуммаНДС;
        ТекВсегоСНДС  = МнЧ.ВсегоСНДС;
        ТекКоличество = МнЧ.Количество;
        
        Если ТекКоличество > 0 Тогда
            ТекКоэф = РаспредГТД.Колво/ТекКоличество;
        Иначе
            ТекКоэф = 1;
        КонецЕсли;
        
        Если НЕ(РаспредГТД.НомерСтроки = 1) Тогда
    
            Если МнЧ.КоличествоСтрок() = 0 Тогда
                МнЧ.НоваяСтрока();
                МнЧ.Номенклатура = МнЧ.ПолучитьЗначение(1,"Номенклатура");
                МнЧ.Цена         = МнЧ.ПолучитьЗначение(1,"Цена");
                МнЧ.СтавкаНДС     = МнЧ.ПолучитьЗначение(1,"СтавкаНДС");
                МнЧ.Единица      = МнЧ.ПолучитьЗначение(1,"Единица");
                МнЧ.ЕдиницаКод   = МнЧ.ПолучитьЗначение(1,"ЕдиницаКод");
                МнЧ.АкцизЦена    = МнЧ.ПолучитьЗначение(1,"АкцизЦена");
            Иначе
                МнЧ.НоваяСтрока();
                МнЧ.Номенклатура = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Номенклатура");
                МнЧ.Цена         = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Цена");
                МнЧ.СтавкаНДС     = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"СтавкаНДС");
                МнЧ.Единица      = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"Единица");
                МнЧ.ЕдиницаКод   = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"ЕдиницаКод");
                МнЧ.АкцизЦена    = МнЧ.ПолучитьЗначение(МнЧ.КоличествоСтрок()-1,"АкцизЦена");
            КонецЕсли;                            
        КонецЕсли;
3 НЕА123
 
11.01.16
09:59
(1)
как я понял, в (0) вопрос о смысле

МнЧ.Номенклатура = МнЧ.Номенклатура;
4 Масянька
 
11.01.16
10:01
(2) СФ заполняется на основании РтиУ с учетом партий (ГТД). Если не понятно - исправь, как тебе понятно и попробуй.
5 ildary
 
11.01.16
10:03
(3) да, особенно если перед этим стоит оператор МнЧ.НоваяСтрока()

(4) вышло обновление ТиС с исправлением ошибок. Я смотрю, что они исправили и пытаюсь понять, нету ли здесь ереси.
6 itlikbez
 
11.01.16
10:05
(0) Зато красиво.
Независимо от того, куда вы едете — это в гору и против ветра!