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

v7: Расчет скидок + Маркеры

v7: Расчет скидок + Маркеры
Я
   Mafiozaa
 
28.10.20 - 08:38
Приветствую, в документе ЧекиККМ, при расчете скидок, теряются коды маркировок. Полез в код а там глаза разбегаются и понять ничего не могу, понимаю что там выгружается какое то ТЗ, прошу знатоков о помощи)

Процедура РасчетСкидокПоАкциям()
    Перем ТЗ;
    
    //Если ФС.СуществуетФайл(КаталогИБ()+"ExtForms\ЧекККМ_РасчетСкидокПоАкциям.ert")=1 Тогда
    //    ОткрытьФорму("Отчет",Контекст,КаталогИБ()+"ExtForms\ЧекККМ_РасчетСкидокПоАкциям.ert");
    //    Возврат;
    //КонецЕсли;

              
    Если ВидОперации=Перечисление.ВидыОперацийЧекККМ.ЧекНаВозврат Тогда
////nuzhno dlya korrektnogo TESTA po vozvratu SBASIBO
//        ТЗС=СоздатьОбъект("ТаблицаЗначений");
//        СпрНовНоменклатураБезСкидок = СоздатьОбъект("Справочник.НовНоменклатураБезСкидок");
//        ВыгрузитьТабличнуюЧасть(ТЗС);
//        Сп=ТЗС.Итог("СкидкаСпасибо");
//        Если ПустоеЗначение(Сп)=0 тогда
//            ТЗС.ВыбратьСтроки();
//            Пока ТЗС.ПолучитьСтроку()=1 цикл
//                ТЗС.Сумма=ТЗС.Сумма-ТЗС.СкидкаСпасибо;
//            КонецЦикла;
//        КонецЕсли;
//        
//        ТЗС.ВыбратьСтроки();
//        Пока ТЗС.ПолучитьСТроку()=1 цикл
//            Если СпрНовНоменклатураБезСкидок.НайтиПоРеквизиту("Номенклатура",ТЗС.Номенклатура,1)=1 Тогда
//                ТЗС.Акция="";
//                ТЗС.СкидкаПоСтроке=0;
//            КонецЕсли;
//        КОнецЦикла;
//        
//        ЗагрузитьТабличнуюЧасть(ТЗС);
//        
////}}MRG[ <-- ]
        Если ПустоеЗначение(БанкНом)=0 Тогда
            Если (ПустоеЗначение(Итог("СкидкаСпасибо"))=1) и (Итог("Сумма")>БанкСум) тогда
                Форма.кнБанк.Доступность(1);
            иначе
                БанкСум=Итог("Сумма");
                Форма.кнБанк.Доступность(1);
            КонецЕсли;
        КонецЕсли;
        
        Если Итог("Сумма")<БанкСум тогда
            БанкСум=Итог("Сумма");
            Форма.кнБанк.Доступность(1);
        КонецЕсли;

        Возврат;
    КонецЕсли;    
    
    Если Константа.ПолучитьАтрибут("Спасибо")=1 тогда
        Если ВидОперации=Перечисление.ВидыОперацийЧекККМ.Чек тогда
            Если (Форма.Списание.Доступность()=0) и (ПустоеЗначение(Итог("СкидкаСпасибо"))=0) и (РасчСкидкиКонтрСумма<>Итог("Сумма")+КоличествоСтрок())тогда
                Предупреждение("Чек изменен! Списание бонусов отменено! Спишите бонусы снова!",0);
                ОтменаСписания();
                Форма.Списание.Доступность(1);
                РасчСкидкиКонтрСумма=-1;
                Возврат;
            ИНачеесли (Форма.Списание.Доступность()=0) и (ПустоеЗначение(Итог("СкидкаСпасибо"))=0) и (РасчСкидкиКонтрСумма=Итог("Сумма")+КоличествоСтрок())тогда
                Предупреждение("Повторный расчет скидок! Списание бонусов отменено! Спишите бонусы снова!",0);
                ОтменаСписания();
                Форма.Списание.Доступность(1);
                РасчСкидкиКонтрСумма=-1;
                Возврат;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    
    СообщАкции="";
    
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.НоваяКолонка("Родитель","Справочник.Номенклатура");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        ТЗ.Родитель=ТЗ.Номенклатура.Родитель;
    КонецЦикла;
    ТЗУ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.Выгрузить(ТЗУ);
    ТЗУ.УдалитьСтроки();
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Если Регистр.УцененныеТовары.Остаток(ТЗ.Номенклатура,Склад,ТЗ.Цена,"Количество")>0 Тогда
            ТЗУ.НоваяСтрока();
            Для ц = 1 По ТЗУ.КоличествоКолонок() Цикл
                ТЗУ.УстановитьЗначение(ТЗУ.НомерСтроки,ц,ТЗ.ПолучитьЗначение(ТЗ.НомерСтроки,ц));
            КонецЦикла;
            ВрНС=ТЗ.НомерСтроки;
            ТЗ.УдалитьСтроку(ВрНС);
            Если ВрНС=1 Тогда
                ТЗ.ВыбратьСтроки();
            Иначе
                ТЗ.ПолучитьСтрокуПоНомеру(ВрНС-1);
            КонецЕсли;            
        КонецЕсли;
    КонецЦикла;
    
    ТЗ.НоваяКолонка("ИспКол","Число");
    ТЗ.НоваяКолонка("ТАКол","Число");
    
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Если ТЗ.Акция.Выбран()=1 Тогда
            Если ТЗ.Акция.ВарУсловие<>5 Тогда
                ТЗ.Акция="";
            КонецЕсли;
        КонецЕсли;
        ТЗ.СкидкаПоСтроке=0;
        Если Скидка.Выбран()=1 Тогда            
                      
            Если КартаЛояльности.Выбран()=1 Тогда
                Если Скидка.Процент<=15 Тогда
                    ТЗ.СкидкаПоСтроке=Скидка.Процент;
                КонецЕсли;
            Иначе
                Если Скидка.Процент<10 Тогда
                    ТЗ.СкидкаПоСтроке=Скидка.Процент;
                ИначеЕсли Скидка.Процент=10 Тогда
                    СпрДетСерия = СоздатьОбъект("Справочник.ДетСерия");
                    Номенкл=ТЗ.Номенклатура;
                    Для ц = 1 По ТЗ.Номенклатура.Уровень() Цикл    
                        Если СпрДетСерия.НайтиПоРеквизиту("Номенклатура",Номенкл,1)=1 Тогда
                            ТЗ.СкидкаПоСтроке=Скидка.Процент;
                            Прервать;
                        КонецЕсли;
                    КонецЦикла;  
                ИначеЕсли  Скидка.Процент=12 Тогда           // д.б. строки
                    ТЗ.СкидкаПоСтроке=Скидка.Процент;       // д.б. строки
                ИначеЕсли  Скидка.Процент=18 Тогда           // д.б. строки
                    ТЗ.СкидкаПоСтроке=Скидка.Процент;       // д.б. строки
                КонецЕсли;                                   // д.б. строки
            КонецЕсли;
        
        КонецЕсли;
    
    КонецЦикла;            
    
    ТЗА.ВыбратьСтроки();
    Пока ТЗА.ПолучитьСтроку()=1 Цикл
        Если ТЗА.Док.ВарУсловие=4 Тогда
            Продолжить;
        КонецЕсли;
        Если ТЗА.Вид>2 Тогда
            Прервать;
        КонецЕсли;
        Если ТЗА.ЕстьВремя=1 Тогда
            ТекЧас=0; ТекМин=0; ТекСек=0;
            ТекущееВремя(ТекЧас,ТекМин,ТекСек);
            Если (ТекЧас<ТЗА.ВремяС) ИЛИ (ТекЧас>=ТЗА.ВремяПо) Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ)=1 Тогда
            СкПоАкции=ТЗА.Док.Скидка;
            Если ТЗА.Вид=1 Тогда
                ТЗ.ВыбратьСтроки();
                Пока ТЗ.ПолучитьСтроку()=1 Цикл
                    Если ТЗ.Акция.ВарУсловие=5 Тогда
                        Продолжить;
                    КонецЕсли;
                    Если ТЗ.СкидкаПоСтроке<СкПоАкции Тогда
                        ТЗ.СкидкаПоСтроке=СкПоАкции;
                        ТЗ.Акция=ТЗА.Док;
                    КонецЕсли;                    
                КонецЦикла;
            ИначеЕсли ТЗА.Вид=2 Тогда
                ТЗ.ВыбратьСтроки();
                Пока ТЗ.ПолучитьСтроку()=1 Цикл
                    Если ТЗ.Акция.ВарУсловие=5 Тогда
                        Продолжить;
                    КонецЕсли;
                    Если ТоварЕстьВСпискеКАкции(ТЗА.Док,ТЗ.Номенклатура,ТЗ.Количество)=1 Тогда
                        Если ТЗ.СкидкаПоСтроке<СкПоАкции Тогда
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        КонецЕсли;                    
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
        
    СпрНовНоменклатураБезСкидок = СоздатьОбъект("Справочник.НовНоменклатураБезСкидок");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Номенкл=ТЗ.Номенклатура;
        Для ц = 1 По ТЗ.Номенклатура.Уровень() Цикл    
            Если СпрНовНоменклатураБезСкидок.НайтиПоРеквизиту("Номенклатура",Номенкл,1)=1 Тогда
                ТЗ.СкидкаПоСтроке=0;
                Если ТЗ.Акция.Выбран()=1 Тогда
                    Если ТЗ.Акция.ВарУсловие<>5 Тогда
                        ТЗ.Акция="";
                    КонецЕсли;
                КонецЕсли;
                Прервать;
            КонецЕсли;
            Номенкл=Номенкл.Родитель;
        КонецЦикла;
    КонецЦикла;
    
    ТЗА.ВыбратьСтроки();
    Пока ТЗА.ПолучитьСтроку()=1 Цикл
        Если ТЗА.Док.ВарУсловие=4 Тогда
            Продолжить;
        КонецЕсли;
        Если НЕ (ТЗА.Вид>2) Тогда
            Продолжить;
        КонецЕсли;
        Если ТЗА.ЕстьВремя=1 Тогда
            ТекЧас=0; ТекМин=0; ТекСек=0;
            ТекущееВремя(ТекЧас,ТекМин,ТекСек);
            Если (ТекЧас<ТЗА.ВремяС) ИЛИ (ТекЧас>=ТЗА.ВремяПо) Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ)=1 Тогда
            СкПоАкции=ТЗА.Док.Скидка;
            Если (ТЗА.Вид=8) И (ТЗА.Док.ВарУсловие=1) Тогда
                Вр=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                СпВр=глРазложить(ТЗА.Док.Подарки,",");  
                Если СпВр.РазмерСписка()=0 Тогда
                    СкПоАкции=0;
                Иначе
                    СкПоАкции=Число(СпВр.ПолучитьЗначение(Мин(Вр,СпВр.РазмерСписка())));
                КонецЕсли;
                ТЗ.ВыбратьСтроки();
                Пока ТЗ.ПолучитьСтроку()=1 Цикл
                    Если ТЗ.Акция.ВарУсловие=5 Тогда
                        Продолжить;
                    КонецЕсли;
                    Если ТоварЕстьВСпискеКАкции(ТЗА.Док,ТЗ.Номенклатура,ТЗ.Количество)=1 Тогда
                        Если ТЗ.СкидкаПоСтроке<СкПоАкции Тогда
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        КонецЕсли;                    
                    КонецЕсли;
                КонецЦикла;
            ИначеЕсли ТЗА.Вид=3 Тогда
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                Если КолАкц>0 Тогда
                    СпВр=глРазложить(ТЗА.Док.Подарки,",");  
                    Спр=СоздатьОбъект("Справочник.Номенклатура");
                    СпПодарков=СоздатьОбъект("СписокЗначений");
                    Для ц = 1 По СпВр.РазмерСписка() Цикл
                        Если Спр.НайтиПоКоду(СпВр.ПолучитьЗначение(ц),0)=1 Тогда
                            СпПодарков.ДобавитьЗначение(Спр.ТекущийЭлемент());
                        КонецЕсли;
                    КонецЦикла;
                    
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (СпПодарков.НайтиЗначение(ТЗ.Номенклатура)>0)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<100) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;
                    Если КолАкц>0 Тогда
                        Если СпПодарков.РазмерСписка()=1 Тогда
                            СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): "+ТовПоАкции+" "+КолАкц+" "+ТовПоАкции.ОсновнаяЕдиница+" в подарок добавить";
                        Иначе
                            СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): подарков добавить: "+КолАкц+" "+"шт.";
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=4 Тогда
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                СкПоАкции=ТЗА.Док.Скидка;
                КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                ВозмКолАкц=КолАкц;
                Если КолАкц>0 Тогда
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (ТЗ.Номенклатура=ТовПоАкции)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<СкПоАкции) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=СкПоАкции;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=СкПоАкции;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;  
                    
                    //Сообщить("Было возможно: "+ВозмКолАкц);
                    //Сообщить("Неиспользовано: "+КолАкц);
                    //ТЗ.ВыбратьСтроку();
                    Если КолАкц>0 Тогда                                                                                                          
                        ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1,ВозмКолАкц-КолАкц);
                        //СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): "+ТовПоАкции+" "+КолАкц+" "+ТовПоАкции.ОсновнаяЕдиница+" возможна скидка: "+СкПоАкции+"%";
                    КонецЕсли;
                    //ТЗ.ВыбратьСтроку();
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=5 Тогда
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                СкПоАкции=ТЗА.Док.Скидка;
                КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                Если КолАкц>0 Тогда
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        Если ТЗ.Акция.ВарУсловие=5 Тогда
                            Продолжить;
                        КонецЕсли;
                        Если ТЗ.ТАКол=0 Тогда
                            Продолжить;
                        КонецЕсли;    
                        
                        Возм=ТЗ.ТАКол;
                        
                        Если Возм=ТЗ.Количество Тогда
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        Иначе
                            ТЗ.Количество=ТЗ.Количество-Возм;
                            ТЗ.ИспКол=ТЗ.ИспКол-Возм;
                            ТекСтрНом=ТЗ.НомерСтроки;
                            СкопироватьСтроку(ТЗ,ТекСтрНом);
                            ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                            ТЗ.Количество=Возм;
                            ТЗ.ИспКол=Возм;
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        КонецЕсли;
                            
                        КолАкц=КолАкц-Возм;
                        Если КолАкц=0 Тогда
                            Прервать;
                        КонецЕсли;                                
                    КонецЦикла;  
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=7 Тогда //--- 2 в 1
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                СкПоАкции=ТЗА.Док.Скидка;
                КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                Если КолАкц>0 Тогда
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        Если ТЗ.Акция.ВарУсловие=5 Тогда
                            Продолжить;
                        КонецЕсли;
                        Если ТЗ.ТАКол=0 Тогда
                            Продолжить;
                        КонецЕсли;    
                        
                        Возм=ТЗ.ТАКол;
                        
                        Если Возм=ТЗ.Количество Тогда
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        Иначе
                            ТЗ.Количество=ТЗ.Количество-Возм;
                            ТЗ.ИспКол=ТЗ.ИспКол-Возм;
                            ТекСтрНом=ТЗ.НомерСтроки;
                            СкопироватьСтроку(ТЗ,ТекСтрНом);
                            ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                            ТЗ.Количество=Возм;
                            ТЗ.ИспКол=Возм;
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        КонецЕсли;
                            
                        КолАкц=КолАкц-Возм;
                        Если КолАкц=0 Тогда
                            Прервать;
                        КонецЕсли;                                
                    КонецЦикла;  
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=6 Тогда //подарок из спец. фонда
                КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
                Если КолАкц>0 Тогда
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        Если ТЗ.Акция.ВарУсловие=5 Тогда
                            Продолжить;
                        КонецЕсли;
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (ТЗ.Цена=0)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<100) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;

                    ТЗУ.ВыбратьСтроки();
                    Пока ТЗУ.ПолучитьСтроку()=1 Цикл
                        Если КолАкц=0 Тогда
                            Прервать;
                        КонецЕсли;                            
                        ДостКол=ТЗУ.Количество;
                        Если (ТЗУ.Цена=0) И (ДостКол>0) Тогда
                            ТЗ.НоваяСтрока();
                            ТЗ.Родитель=ТЗУ.Родитель;
                            ТЗ.ШтрихКод=ТЗУ.ШтрихКод;
                            ТЗ.Номенклатура=ТЗУ.Номенклатура;
                            ТЗ.Единица=ТЗУ.Единица;
                            ТЗ.Коэффициент=ТЗУ.Коэффициент;
                            ТЗ.Цена=ТЗУ.Цена;
                            ТЗ.СкидкаПоСтроке=100;
                            ТЗ.Акция=ТЗА.Док;
                            
                            Возм=Мин(КолАкц,ДостКол);
                            ТЗ.Количество=Возм;
                            ТЗ.ИспКол=Возм;

                            ТЗУ.Количество=ТЗУ.Количество-Возм;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;

                    Если КолАкц>0 Тогда
                        СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): подарков добавить: "+КолАкц+" "+"шт.";
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    ТЗА.ВыбратьСтроки();
    Пока ТЗА.ПолучитьСтроку()=1 Цикл
        Если ТЗА.Док.ВарУсловие<>4 Тогда
            Продолжить;
        КонецЕсли;
        Если ТЗА.Вид>2 Тогда
            Прервать;
        КонецЕсли;
        Если ТЗА.ЕстьВремя=1 Тогда
            ТекЧас=0; ТекМин=0; ТекСек=0;
            ТекущееВремя(ТекЧас,ТекМин,ТекСек);
            Если (ТекЧас<ТЗА.ВремяС) ИЛИ (ТекЧас>=ТЗА.ВремяПо) Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ)=1 Тогда
            СкПоАкции=ТЗА.Док.Скидка;
            Если ТЗА.Вид=1 Тогда
                ТЗ.ВыбратьСтроки();
                Пока ТЗ.ПолучитьСтроку()=1 Цикл
                    Если ТЗ.Акция.ВарУсловие=5 Тогда
                        Продолжить;
                    КонецЕсли;
                    Если ТЗ.СкидкаПоСтроке<СкПоАкции Тогда
                        ТЗ.СкидкаПоСтроке=СкПоАкции;
                        ТЗ.Акция=ТЗА.Док;
                    КонецЕсли;                    
                КонецЦикла;
            ИначеЕсли ТЗА.Вид=2 Тогда
                ТЗ.ВыбратьСтроки();
                Пока ТЗ.ПолучитьСтроку()=1 Цикл
                    Если ТЗ.Акция.ВарУсловие=5 Тогда
                        Продолжить;
                    КонецЕсли;
                    Если ТоварЕстьВСпискеКАкции(ТЗА.Док,ТЗ.Номенклатура,ТЗ.Количество)=1 Тогда
                        Если ТЗ.СкидкаПоСтроке<СкПоАкции Тогда
                            ТЗ.СкидкаПоСтроке=СкПоАкции;
                            ТЗ.Акция=ТЗА.Док;
                        КонецЕсли;                    
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    
    СпрНовНоменклатураБезСкидок = СоздатьОбъект("Справочник.НовНоменклатураБезСкидок");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Номенкл=ТЗ.Номенклатура;
        Для ц = 1 По ТЗ.Номенклатура.Уровень() Цикл    
            Если СпрНовНоменклатураБезСкидок.НайтиПоРеквизиту("Номенклатура",Номенкл,1)=1 Тогда
                ТЗ.СкидкаПоСтроке=0;
                Если ТЗ.Акция.Выбран()=1 Тогда
                    Если ТЗ.Акция.ВарУсловие<>5 Тогда
                        ТЗ.Акция="";
                    КонецЕсли;
                КонецЕсли;
                Прервать;
            КонецЕсли;
            Номенкл=Номенкл.Родитель;
        КонецЦикла;
    КонецЦикла;
    
    ТЗА.ВыбратьСтроки();
    Пока ТЗА.ПолучитьСтроку()=1 Цикл
        Если ТЗА.Док.ВарУсловие<>4 Тогда
            Продолжить;
        КонецЕсли;
        Если НЕ (ТЗА.Вид>2) Тогда
            Продолжить;
        КонецЕсли;
        Если ТЗА.ЕстьВремя=1 Тогда
            ТекЧас=0; ТекМин=0; ТекСек=0;
            ТекущееВремя(ТекЧас,ТекМин,ТекСек);
            Если (ТекЧас<ТЗА.ВремяС) ИЛИ (ТекЧас>=ТЗА.ВремяПо) Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ)=1 Тогда
            СкПоАкции=ТЗА.Док.Скидка;
            Если ТЗА.Вид=3 Тогда
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                КолАкц=1;
                Если КолАкц>0 Тогда
                    СпВр=глРазложить(ТЗА.Док.Подарки,",");  
                    Спр=СоздатьОбъект("Справочник.Номенклатура");
                    СпПодарков=СоздатьОбъект("СписокЗначений");
                    Для ц = 1 По СпВр.РазмерСписка() Цикл
                        Если Спр.НайтиПоКоду(СпВр.ПолучитьЗначение(ц),0)=1 Тогда
                            СпПодарков.ДобавитьЗначение(Спр.ТекущийЭлемент());
                        КонецЕсли;
                    КонецЦикла;
                    
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (СпПодарков.НайтиЗначение(ТЗ.Номенклатура)>0)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<100) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;
                    Если КолАкц>0 Тогда
                        Если СпПодарков.РазмерСписка()=1 Тогда
                            СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): "+ТовПоАкции+" "+КолАкц+" "+ТовПоАкции.ОсновнаяЕдиница+" в подарок добавить";
                        Иначе
                            СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): подарков добавить: "+КолАкц+" "+"шт.";
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=4 Тогда
                ТовПоАкции=ТЗА.Док.ДействиеТовар;
                СкПоАкции=ТЗА.Док.Скидка;
                КолАкц=1;
                Если КолАкц>0 Тогда
                    
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (ТЗ.Номенклатура=ТовПоАкции)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<СкПоАкции) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=СкПоАкции;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=СкПоАкции;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;
                    Если КолАкц>0 Тогда
                        СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): "+ТовПоАкции+" "+КолАкц+" "+ТовПоАкции.ОсновнаяЕдиница+" возможна скидка: "+СкПоАкции+"%";
                    КонецЕсли;
                КонецЕсли;
            ИначеЕсли ТЗА.Вид=6 Тогда //подарок из спец. фонда
                КолАкц=1;
                Если КолАкц>0 Тогда
                    ТЗ.ВыбратьСтроки();
                    Пока ТЗ.ПолучитьСтроку()=1 Цикл
                        ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
                        Если (ТЗ.Цена=0)
                        И (ДостКол>0)
                        И (ТЗ.СкидкаПоСтроке<100) Тогда
                            Возм=Мин(КолАкц,ДостКол);
                            
                            Если Возм=ТЗ.Количество Тогда
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                                ТЗ.ИспКол=ТЗ.Количество;
                            Иначе
                                ТЗ.Количество=ТЗ.Количество-Возм;
                                ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
                                ТекСтрНом=ТЗ.НомерСтроки;
                                СкопироватьСтроку(ТЗ,ТекСтрНом);
                                ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
                                ТЗ.Количество=Возм;
                                ТЗ.ИспКол=Возм;
                                ТЗ.СкидкаПоСтроке=100;
                                ТЗ.Акция=ТЗА.Док;
                            КонецЕсли;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;

                    ТЗУ.ВыбратьСтроки();
                    Пока ТЗУ.ПолучитьСтроку()=1 Цикл
                        Если КолАкц=0 Тогда
                            Прервать;
                        КонецЕсли;                            
                        ДостКол=ТЗУ.Количество;
                        Если (ТЗУ.Цена=0) И (ДостКол>0) Тогда
                            ТЗ.НоваяСтрока();
                            ТЗ.Родитель=ТЗУ.Родитель;
                            ТЗ.ШтрихКод=ТЗУ.ШтрихКод;
                            ТЗ.Номенклатура=ТЗУ.Номенклатура;
                            ТЗ.Единица=ТЗУ.Единица;
                            ТЗ.Коэффициент=ТЗУ.Коэффициент;
                            ТЗ.Цена=ТЗУ.Цена;
                            ТЗ.СкидкаПоСтроке=100;
                            ТЗ.Акция=ТЗА.Док;
                            
                            Возм=Мин(КолАкц,ДостКол);
                            ТЗ.Количество=Возм;
                            ТЗ.ИспКол=Возм;

                            ТЗУ.Количество=ТЗУ.Количество-Возм;
                            
                            КолАкц=КолАкц-Возм;
                            Если КолАкц=0 Тогда
                                Прервать;
                            КонецЕсли;                            
                        КонецЕсли;                                
                    КонецЦикла;
                    
                    Если КолАкц>0 Тогда
                        СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): подарков добавить: "+КолАкц+" "+"шт.";
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

    //ТЗА.ВыбратьСтроки();
    //Пока ТЗА.ПолучитьСтроку()=1 Цикл
    //    Если НЕ (ТЗА.Вид>2) Тогда
    //        Продолжить;
    //    КонецЕсли;
    //    Если ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ)=1 Тогда
    //        СкПоАкции=ТЗА.Док.Скидка;
    //        Если ТЗА.Вид=3 Тогда
    //            ТовПоАкции=ТЗА.Док.ДействиеТовар;
    //            КолАкц=ВыполненыУсловияАкции(ТЗА.Док,ТЗА.СпТоваров,ТЗА.СпГрупп2,ТЗ,1);
    //            Если КолАкц>0 Тогда
    //                ТЗ.ВыбратьСтроки();
    //                Пока ТЗ.ПолучитьСтроку()=1 Цикл
    //                    ДостКол=ТЗ.Количество-ТЗ.ИспКол+ТЗ.ТАКол;
    //                    Если (ТЗ.Номенклатура=ТовПоАкции)
    //                    И (ДостКол>0)
    //                    И (ТЗ.СкидкаПоСтроке<СкПоАкции) Тогда
    //                        Возм=Мин(КолАкц,ДостКол);
    //                        
    //                        Если Возм=ТЗ.Количество Тогда
    //                            ТЗ.СкидкаПоСтроке=СкПоАкции;
    //                            ТЗ.Акция=ТЗА.Док;
    //                            ТЗ.ИспКол=ТЗ.Количество;
    //                        Иначе
    //                            ТЗ.Количество=ТЗ.Количество-Возм;
    //                            ТЗ.ИспКол=ТЗ.ИспКол-Мин(ТЗ.ТАКол,Возм);
    //                            ТекСтрНом=ТЗ.НомерСтроки;
    //                            СкопироватьСтроку(ТЗ,ТекСтрНом);
    //                            ТЗ.ПолучитьСтрокуПоНомеру(ТекСтрНом+1);
    //                            ТЗ.Количество=Возм;
    //                            ТЗ.ИспКол=Возм;
    //                            ТЗ.СкидкаПоСтроке=СкПоАкции;
    //                            ТЗ.Акция=ТЗА.Док;
    //                        КонецЕсли;
    //                        
    //                        КолАкц=КолАкц-Возм;
    //                        Если КолАкц=0 Тогда
    //                            Прервать;
    //                        КонецЕсли;                            
    //                    КонецЕсли;                                
    //                КонецЦикла;
    //                Если КолАкц>0 Тогда
    //                    СообщАкции=СообщАкции+"Акция ("+СокрЛП(ТЗА.Док.Наименование)+"): "+ТовПоАкции+" "+КолАкц+" "+ТовПоАкции.ОсновнаяЕдиница+" скидка: "+СкПоАкции+"%. ";
    //                КонецЕсли;
    //            КонецЕсли;
    //        КонецЕсли;
    //    КонецЕсли;
    //КонецЦикла;
    
    ТЗ.Свернуть("ШтрихКод,Номенклатура,Единица,Коэффициент,Цена,Акция,СкидкаПоСтроке","Количество,Сумма");
    ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
        Если ТЗ.Акция.Выбран()=1 Тогда
            Если ТЗ.Акция.ВарУсловие=5 Тогда
                Стр="";
                Если ТЗА.НайтиЗначение(ТЗ.Акция,Стр,"Док")=1 Тогда
                    ТЗА.ПолучитьСтрокуПоНомеру(Стр);

                    п=ТЗА.СпТоваров.НайтиЗначение(ТЗ.Номенклатура);
                    ВрЦена="";
                    Если п>0 Тогда
                        ТЗА.СпТоваров.ПолучитьЗначение(п,ВрЦена);
                        ВрЦена=Число(ВрЦена);
                    Иначе
                        п=ТЗА.СпГрупп2.НайтиЗначение(ТЗ.Номенклатура.Родитель);
                        Если п>0 Тогда
                            ТЗА.СпГрупп2.ПолучитьЗначение(п,ВрЦена);
                            ВрЦена=Число(ВрЦена);
                        КонецЕсли;
                    КонецЕсли;
                    
                    Если п>0 Тогда
                        ТЗ.Сумма=ТЗ.Количество*ВрЦена;
                        ПСум=ТЗ.Цена*ТЗ.Количество;
                        ТЗ.СкидкаПоСтроке=?(ПСум=0,0,Окр((1-ТЗ.Сумма/ПСум)*100,3));
                        Продолжить;  
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
        //Округление цены со скидкой: 1 вариант - арифметически, 2 вариант - вниз: до 10 копеек.
        ТЗ.Сумма=ТЗ.Количество * Окр(ТЗ.Цена*(1-(ТЗ.СкидкаПоСтроке*.01)),1);
        //ТЗ.Сумма=ТЗ.Количество * (Цел(ТЗ.Цена*(1-(ТЗ.СкидкаПоСтроке*.01))*10)*.1);        
    КонецЦикла;
    
    //ТЗ.ВыбратьСтроку();    
    
    //ТЗУ.ВыбратьСтроку();
    ТЗУ.ВыбратьСтроки();
    Пока ТЗУ.ПолучитьСтроку()=1 Цикл
        Если ТЗУ.Количество=0 Тогда
            Продолжить;
        КонецЕсли;
        ТЗ.НоваяСтрока();
        ТЗ.ШтрихКод=ТЗУ.ШтрихКод;
        ТЗ.Номенклатура=ТЗУ.Номенклатура;
        ТЗ.Единица=ТЗУ.Единица;
        ТЗ.Коэффициент=ТЗУ.Коэффициент;
        ТЗ.Цена=ТЗУ.Цена;
        ТЗ.Акция="";
        ТЗ.СкидкаПоСтроке=0;
        ТЗ.Количество=ТЗУ.Количество;
        ТЗ.Сумма=ТЗ.Количество*ТЗ.Цена;
    КонецЦикла;
    
    ЗагрузитьТабличнуюЧасть(ТЗ);
    
    РасчСкидкиКонтрСумма=Итог("Сумма")+КоличествоСтрок();
    Активизировать("Получено");
    Если Константа.ПолучитьАтрибут("Спасибо")=1 тогда
        Если ВидОперации=Перечисление.ВидыОперацийЧекККМ.Чек тогда
            Форма.Списание.Видимость(1);
        КонецЕсли;
    КонецЕсли;;
КонецПроцедуры
   Mafiozaa
 
1 - 28.10.20 - 08:40
Черновым способом вставляю коды, но записывается всего один, на все позиции в чеке, не могу найти в какую ТЗ толкнуть дабы записать затем новаястрока
   Kigo_Kigo
 
2 - 28.10.20 - 08:55
(1) ну на вскидку, мне лень в твоей портянке разбираться
Перем ТЗКоды;

ВыгрузитьТабличнуюЧасть(ТЗ);
ВыгрузитьТабличнуюЧасть(ТЗКоды);
///Бла бла бла

Расчет скидок
//после


 ЗагрузитьТабличнуюЧасть(ТЗ);
 Для А = 1 по ТЗКоды.КоличествоСтрок() Цикл
 ПолучитьСтрокуПоНомеру(а);
 ТЗКоды.ПолучитьСтрокуПоНомеру(а);
 КодМаркировки = ТЗКоды.КодМаркировки;
КонецЦикла;
   Kigo_Kigo
 
3 - 28.10.20 - 08:57
Это при условии что количество и порядок строк не меняется
   Mafiozaa
 
4 - 28.10.20 - 09:02
(2) Хорошо, буду пробывать, ты разобрался с кодами?
   Kigo_Kigo
 
5 - 28.10.20 - 09:09
(4) да, я в прошлой теме отписал, что все зафурычило, поставил ФНоперцию ДО загона когда в машинку и все взлетело
   Mafiozaa
 
6 - 29.10.20 - 07:45
(3) Не, не выходит, путаница в этих тзшках
   Mafiozaa
 
7 - 29.10.20 - 07:48
(5) И переменная теряется при загрузке
 ЗагрузитьТабличнуюЧасть(ТЗ);
   Mikeware
 
8 - 29.10.20 - 07:48
"миста - лучший отладчик"©, ага
   Mafiozaa
 
9 - 29.10.20 - 07:49
(8) И тебе привет)
   Ёпрст
 
10 - 29.10.20 - 08:29
(0) ужасный код, писал явно студент. Многократные повторяющиеся циклы по одной тз. Не знание метода заполнить..избыточный код везде, читать лень
   Ёпрст
 
11 - 29.10.20 - 08:36
(2) меняется, там везде новая строка, еще и свертка тз потом.
   Mafiozaa
 
12 - 29.10.20 - 08:36
(10) В том и суть, что тут из одной тз в другую скачет, отладчиком сижу пытаюсь поймать)
   Ёпрст
 
13 - 29.10.20 - 08:39
(12) твой кодмаркиовки, прям в тч дока торчит? Т.е у тебя 1 строка в доке =  номенклатура с количеством 1 всегда?
   Mafiozaa
 
14 - 29.10.20 - 08:42
(13) КодМаркировки в тч дока, при перерасчете скидок он теряется, 1 строка в доке может быть по колву хоть сколько, но так как магазин одежды, никто более 1 штучки одной позиции не берет
   Ёпрст
 
15 - 29.10.20 - 08:43
(14) как это не берет? Чего, 2 пары носков в одном чеке не может быть?)
   Ёпрст
 
16 - 29.10.20 - 08:44
Я к чему клоню - у одной номенклатуры, может быть несколько кодов маркировки или нет?
   Mafiozaa
 
17 - 29.10.20 - 08:50
(16) У каждой штучки в номенклатуре свой код, 5 пар кросовок = 5 разных кодов
   Mafiozaa
 
18 - 29.10.20 - 08:55
(16) Я помню про что ты говорил, что кол-во>1 привет котенку,
   Mafiozaa
 
19 - 29.10.20 - 08:56
(15) Носков штучных нету, упаковка из 3, все упаковки разные позиции номенклатуры
   Ёпрст
 
20 - 29.10.20 - 08:56
(17) вот. Следовательно, в документе будет 5 строк с количеством 1 и разными кодами маркировки. А твой г- код в (0) сворачивает это все тебе в 1 строку с количеством 5.
   Mafiozaa
 
21 - 29.10.20 - 09:00
(20) Почему? Если в чеке 5 строк, после расчета скидок в ней так же остается 5 строк, но коды маркировок отлетают
   Kigo_Kigo
 
22 - 29.10.20 - 09:00
Так чем тебе код в (2) то не устроил? Что ты там пытаешь понять, или у тебя кодмаркировки строковая колонка которая не хранится в БД? по этому не выгружается методом выгрузитьтабчать?
   Ёпрст
 
23 - 29.10.20 - 09:01
Если лень всё переписывать, то втыкаешь такой костылик: в начале г- кода выгружаешь тч в свою тзкоды. В самом конце г-кода, перед загрузитьтабличнуючасть, пробегаешь результирующую тз, ишешь по номенклатуре все строки в твоей тзкоды, если в тз количество>1 то добавляешь стпоуи в эту тз и для каждой проставляешь свой код маркировки из твоей тзкоды. Попутно изменяя сумму в этой строке. Усё
   Ёпрст
 
24 - 29.10.20 - 09:02
(21) потому, что там сворачивается тз
   Mafiozaa
 
25 - 29.10.20 - 09:03
(22) Код маркировки это реквизит тч, который заполняется сканнером и не хранится в базе нигде, кроме переменной
   Kigo_Kigo
 
26 - 29.10.20 - 09:04
(24) Да ТЗ.Свернуть("ШтрихКод,Номенклатура,Единица,Коэффициент,Цена,Акция,СкидкаПоСтроке","Количество,Сумма"); заремарить надо
   Kigo_Kigo
 
27 - 29.10.20 - 09:04
(25) Очень опрометчивое решение
   Ёпрст
 
28 - 29.10.20 - 09:06
(25) у тя биполярное расстройство?
>>>>Это реквизит тч
>>>>Не хранится нигде
   Ёпрст
 
29 - 29.10.20 - 09:08
(26) ты код то почитай, на ночь. Там не только свертка, там и дрбавление строк по рзным условиям
   Mafiozaa
 
30 - 29.10.20 - 09:09
(29) Да это даже читать не возможно, я хоть и не специалист, но даже мне это не нравится)
 
 Рекламное место пустует
   Kigo_Kigo
 
31 - 29.10.20 - 09:16
(29) я ему сразу сказал, что мне его портянку разбирать не охото, да и не надо, пусть сам разбирается, а вот то что он решил не хранить кода в БД, очень опрометчиво, и да совет, в закрытии кассовой смены, переделай ЧекККм.Удалить(1) на ЧекККм.Удалить(0) это в будущем сильно упростит разборы полётов по КТ, да и вообще
   Kigo_Kigo
 
32 - 29.10.20 - 09:20
(31) да и вообще я еще КТ переношу в отчетКассовой смены в отдельную колонку, все товары с КТ в чеке только с количеством = 1
   Mafiozaa
 
33 - 29.10.20 - 09:21
(32) Ну да, я кт переношу и в возврат, и в отчет ккм


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