7.7 Подскажите, очень нужно

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Alex_Do, 21 окт 2013.

  1. TopicStarter Overlay
    Alex_Do
    Offline

    Alex_Do

    Регистрация:
    26 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    при процедуре сортировка, в документе обнуляются поля всего. Подскажите где я ошибаюсь , голову уже сломал
    Код:
     Процедура Сортировка()
    ТЗмал=СоздатьОбъект("ТаблицаЗначений");ТЗмал.КоличествоКолонок(2);//ТМЦ, порядковый номер
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Спр.ВыбратьЭлементы();НомНомер=0;
    Пока Спр.ПолучитьЭлемент()=1 цикл
    НомНомер=НомНомер+1;
    ТЗмал.НоваяСтрока();
    ТЗмал.УстановитьЗначение(ТЗмал.КоличествоСтрок(),1,Спр.ТекущийЭлемент());
    ТЗмал.УстановитьЗначение(ТЗмал.КоличествоСтрок(),2,НомНомер);
    КонецЦикла;
    
    ТЗ123=СоздатьОбъект("ТаблицаЗначений");
    ТЗ123.КоличествоКолонок(2);
    
    ТЗдок=СоздатьОбъект("ТаблицаЗначений");
    ТЗ=СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("кол1","Строка",,,"1",40,,1);
    ТЗ.НоваяКолонка("кол2","Строка",,,"2",40,,1);
    ТЗ.НоваяКолонка("кол3","Строка",,,"3",40,,1);
    ТЗ.НоваяКолонка("кол4","Строка",,,"4",40,,1);
    ТЗ.НоваяКолонка("кол5","Строка",,,"5",40,,1);
    ТЗ.НоваяКолонка("кол6","Строка",,,"6",40,,1);			 
    ТЗ.НоваяКолонка("кол7","Строка",,,"7",40,,1);
    ТЗ.НоваяКолонка("кол8","Строка",,,"8",40,,1);
    ТЗ.НоваяКолонка("кол9","Строка",,,"9",40,,1);
    ТЗ.НоваяКолонка("кол10","Строка",,,"10",40,,1);
    ТЗ.НоваяКолонка("кол11","Строка",,,"11",40,,1);
    ТЗ.НоваяКолонка("кол12","Строка",,,"12",40,,1);
    
    Спр=СоздатьОбъект("Справочник.Номенклатура");
    Текст=СоздатьОбъект("Текст");
    ИмяФайла="";
    ИмяКаталога="";
    //ФС.ВыбратьФайл(0,ИмяФайла,ИмяКаталога,"Файл сохранения настройки");
    ИмяКаталога=КаталогИБ();
    ИмяФайла="123.txt";
    Текст.Открыть(ИмяКаталога+ИмяФайла);
    
    Для й=1 по Текст.КоличествоСтрок() цикл
    стр=Текст.ПолучитьСтроку(й);
    
    ПозицияРазделителя=найти(стр,"|");
    ЗнСтр=число(сокрлп(лев(стр,ПозицияРазделителя-1)));
    Стр=прав(стр,стрдлина(стр)-ПозицияРазделителя);
    ПозицияРазделителя=найти(стр,"|");
    ЗнКол=число(сокрлп(лев(стр,ПозицияРазделителя-1)));
    Стр=прав(стр,стрдлина(стр)-ПозицияРазделителя);
    ПозицияРазделителя=найти(стр,"|");
    Код=сокрлп(лев(стр,ПозицияРазделителя-1));
    Стр=прав(стр,стрдлина(стр)-ПозицияРазделителя);
    //Если Спр.НайтиПоКоду(Код,0)>0 тогда
    Если ТЗ.КоличествоСтрок()>=ЗнСтр тогда
    Иначе
    Для гу=ТЗ.КоличествоСтрок()+1 по ЗнСтр цикл
    ТЗ.НоваяСтрока();
    КонецЦикла;
    КонецЕсли;
    ТЗ.УстановитьЗначение(ЗнСтр,ЗнКол,Код);
    ТЗ123.НоваяСтрока();
    ТЗ123.УстановитьЗначение(ТЗ123.КоличествоСтрок(),1,Код);
    ТЗ123.УстановитьЗначение(ТЗ123.КоличествоСтрок(),2,ЗнКол);
    //Иначе
    // сообщить("Товар с кодом "+строка(код)+" не найден!!!","!!!");
    //КонецЕсли;
    КонецЦикла;
    
    
    СпрСек=СоздатьОбъект("Справочник.Секции");
    //ИмяФайла=КаталогИБ()+"123.txt";
    //ТЗ123=СоздатьОбъект("ТаблицаЗначений");
    //ТЗ123.КоличествоКолонок(2);
    //Если ФС.СуществуетФайл(ИмяФайла)=0 тогда
    // сообщить("Не найден файл с секциями. Должный путь нахождения: "+ИмяФайла);
    // //СтатусВозврата(0);Возврат;
    //Иначе
    // Текст123=СоздатьОбъект("Текст");
    // Текст123.Открыть(ИмяФайла);
    // Для й=1 по Текст123.КоличествоСтрок() цикл
    //  Строка123=Текст123.ПолучитьСтроку(й);//  1|1|3106|  или  58|2|3441|
    //  Поз=Найти(Строка123,"|");
    //  Зн1=лев(Строка123,Поз-1);// 1  или  58
    //  Строка123=прав(Строка123,стрдлина(Строка123)-Поз);
    //  Поз=Найти(Строка123,"|");
    //  Зн2=лев(Строка123,Поз-1);// 1  или  2
    //  Строка123=прав(Строка123,стрдлина(Строка123)-Поз);
    //  Поз=Найти(Строка123,"|");
    //  Зн3=лев(Строка123,Поз-1);// 3106  или  3441
    //  ТЗ123.НоваяСтрока();
    //  ТЗ123.УстановитьЗначение(ТЗ123.КоличествоСтрок(),1,Зн3);
    //  ТЗ123.УстановитьЗначение(ТЗ123.КоличествоСтрок(),2,Зн2);
    // КонецЦикла;
    //КонецЕсли;
    
    ВыгрузитьТабличнуюЧасть(ТЗдок);
    ТЗдок.Свернуть("Товар,Единица,Коэффициент,Цена,Секции","Количество,Сумма");
    ТЗдок.НоваяКолонка("С","Число",40,,"С",40,,1);
    ТЗдок.НоваяКолонка("Н","Число",8,0,"Н",40,,1);
    ТЗдок.НоваяКолонка("Яряд","Число",4,,,,,1);  
    ТЗдок.НоваяКолонка("Ястеллаж","Число",4,,,,,1);
    ТЗдок.НоваяКолонка("Название","Строка",40,,,40,,1);//ДК 28-02
    ТЗдок.ВыбратьСтроки();
    Пока ТЗдок.ПолучитьСтроку()=1 цикл
    Секция=0;Секция2="000";
    ТЗдок.Яряд=ТЗдок.товар.ячейка.ряд;	 
    ТЗдок.Ястеллаж=ТЗдок.товар.ячейка.стелаж;
    ТЗдок.Название=ТЗдок.товар.наименование; 
    // Сообщить (ТЗдок.Яряд+" - ряд - стеллаж"+ТЗдок.Ястеллаж+" - наименование - "+  ТЗдок.Название);
    стр_=0;кол_=0;
    //Если ТЗ.НайтиЗначение(ТЗдок.Товар,стр_,кол_)>0 тогда
    // Секция=кол_;
    // Секция2=прав("000"+строка(стр_),3);
    //ИначеЕсли ТЗ.НайтиЗначение(ТЗдок.Товар.Родитель,стр_,кол_)>0 тогда
    // Секция=кол_;
    // Секция2=прав("000"+строка(стр_),3);
    //ИначеЕсли ТЗ.НайтиЗначение(ТЗдок.Товар.Родитель.Родитель,стр_,кол_)>0 тогда
    // Секция=кол_;
    // Секция2=прав("000"+строка(стр_),3);
    //ИначеЕсли ТЗ.НайтиЗначение(ТЗдок.Товар.Родитель.Родитель.Родитель,стр_,кол_)>0 тогда
    // Секция=кол_;
    // Секция2=прав("000"+строка(стр_),3);
    //КонецЕсли;
    //ТЗдок.С=строка(Секция)+"- 000";
    //стр=0;
    //Если ТЗмал.НайтиЗначение(ТЗдок.Товар,стр,1)>0 тогда
    // ТЗдок.Н=ТЗмал.ПолучитьЗначение(стр,2);
    //КонецЕсли;
    
    
    //////////Изменил
    стр = 0; кол = 0;
    Если ПустоеЗначение(ТЗдок.Товар.Ячейка) = 0 Тогда
    Поз = Найти(ТЗдок.Товар.Ячейка, " ");
    КодвТаблице=СокрЛП(Лев(ТЗдок.Товар.Ячейка, поз));
    ТЗ.НайтиЗначение(КодВТаблице, стр, кол);
    КонецЕсли;
    Секция = кол;
    Секция2 = прав("000"+строка(стр),3);
    
    //Для к=1 по ТЗ.КоличествоКолонок() цикл
    // Для с=1 по ТЗ.КоличествоСтрок() цикл
    //  Если ТЗ.ПолучитьЗначение(с,к) <> "" Тогда
    //   Зн=ТЗ.ПолучитьЗначение(с,к);
    //   Если Найти(СокрЛП(ТЗДок.Товар.Ячейка), СокрЛП(Зн)) > 0 Тогда
    //    Секция=к;
    //    Секция2=прав("000"+строка(с),3);
    //    прервать;
    //   КонецЕсли;
    //  КонецЕсли;
    // КонецЦикла;	
    // Если Секция=к тогда
    //  прервать;
    // КонецЕсли;
    //КонецЦикла;	
    
    
    ТЗдок.С=Секция;
    стр=0;
    Если ТЗмал.НайтиЗначение(ТЗдок.Товар,стр,1)>0 тогда
    ТЗдок.Н=ТЗмал.ПолучитьЗначение(стр,2);
    КонецЕсли;
    
    
    //////////КонецИзменил
    
    Поз = Найти(ТЗдок.Товар.Ячейка, " ");
    ГруппаТовара=СокрЛП(Лев(ТЗдок.Товар.Ячейка, поз));
    
    Сек=0;стр=0;кол=0;
    
    Если ТЗ123.НайтиЗначение(ГруппаТовара,стр,кол)>0 тогда
    Сек=число(ТЗ123.ПолучитьЗначение(стр,2));
    КонецЕсли;
    //Если ГруппаТовара.Уровень()=1 тогда
    // прервать;
    //КонецЕсли; 
    
    СпрСек=СоздатьОбъект("Справочник.Секции");
    Если СпрСек.НайтиПоКоду(Сек,0)=0 тогда
    СпрСек.Новый();
    СпрСек.Код=Сек;
    СпрСек.Записать();
    КонецЕсли;  
    ТЗдок.Секции= СпрСек.ТекущийЭлемент();
    КонецЦикла;
    
    ТЗдок.Свернуть("Товар,Единица,Коэффициент,Цена,Секции,С,Н,Яряд,Ястеллаж,Название","Количество,Сумма");
    ТЗдок.Сортировать("С+,Яряд+,Ястеллаж+,Название+");
    ЗагрузитьТабличнуюЧасть(ТЗдок);
    КонецПроцедуры
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вот тут:
    Код:
        ВыгрузитьТабличнуюЧасть(ТЗдок);
    ТЗдок.Свернуть("Товар,Единица,Коэффициент,Цена,Секции","Количество,Сумма");
    
    и тут
    Код:
    ТЗдок.Свернуть("Товар,Единица,Коэффициент,Цена,Секции,С,Н,Яряд,Ястеллаж,Название","Количество,Сумма");
    у вас нет суммируемой колонки "всего". Или это у вас "сумма"?
  3. TopicStarter Overlay
    Alex_Do
    Offline

    Alex_Do

    Регистрация:
    26 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Нашел ошибку.
  4. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ну и в чем она заключалась?
  5. TopicStarter Overlay
    Alex_Do
    Offline

    Alex_Do

    Регистрация:
    26 сен 2013
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    нужно было ВСЕГО добавить при ТЗдок.Свернуть
  6. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Ясно... О чем я вам и сказал... Думал может еще что-то упустил.

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