7.7 Подсчет не по порядку

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем SCtYL, 17 янв 2011.

  1. TopicStarter Overlay
    SCtYL
    Offline

    SCtYL

    Регистрация:
    20 сен 2010
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Возникла проблема с реализацией одной мульки. Суть задачи состоит в том, что нужно считать данные из xml файла в документ и если в строке с данными присутствует клиент, то номер=номер+1, где номер первоначально до первой проводки равен нулю, с последующими проводками номер считывается с максимального номера предыдущих документов. Так вот сложность связана с тем, что в xml файле строки находятся в подгруппах в первой подгруппе время может быть позже чем во второй. Нужно чтобы они строго по времени шли и соответственно тот пресловутый номер строго по времени. Я попытался решить эту проблему следующим методом:
    Я создал второй такой же документ, первоначально данные заносятся во второй документ, затем в обработке происходит следующее:
    Код:
    Функция SEM03Регистр()
    НачатьТранзакцию();
    максвремя=235959;
    //Считывается количество документов
    Ково =СоздатьОбъект("Документ.РегистрВнутреннегоУчета1");
    Ково.ВыбратьДокументы();   
    НачКоло=1;
    Коло=0;
    Пока Ково.ПолучитьДокумент() = 1 Цикл
    Коло=Коло+1;
    КонецЦикла;            
    Для шубадуба = НачКоло По Коло  Цикл
    Регист=СоздатьОбъект("Документ.РегистрВнутреннегоУчета1");
    Регист.ВыбратьДокументы();
    //Считываеться документ с минимальным временем
    Пока Регист.ПолучитьДокумент() = 1 Цикл
    Если Регист.ТекущийДокумент().ВремяДокум < максвремя Тогда
    максвремя=Регист.ТекущийДокумент().ВремяДокум;   
    ТекЭл=Регист.ТекущийДокумент().НомерДок;     
    КонецЕсли;                                
    КонецЦикла;    
    //Здесь переноситься в 1-ый документ
    Если Регист.НайтиПоНомеру(ТекЭл) = 1 Тогда
    РегистрВнутреннегоУчета=СоздатьОбъект("Документ.РегистрВнутреннегоУчета");
    РегистрВнутреннегоУчета.Новый();
    РегистрВнутреннегоУчета.НоваяСтрока(); 
    GOTO здесь	РегистрВнутреннегоУчета.ВремяСделки=Регист.ТекущийДокумент().ВремяСделки;   
    РегистрВнутреннегоУчета.ТипСделки=Регист.ТекущийДокумент().ТипСделки;
    РегистрВнутреннегоУчета.ДатаДок=Регист.ТекущийДокумент().ДатаДок;
    РегистрВнутреннегоУчета.Записать();
    РегистрВнутреннегоУчета.Провести(РегистрВнутреннегоУчета.ДатаДока);
    Регист.Удалить(1);                 
    КонецЕсли;  
    КонецЦикла;
    ЗафиксироватьТранзакцию();
    КонецФункции
    
    
    Пока не вставлял считывание последнего номера и запись следующего, т.к. это все никак не заработает, он почему то не считывает данные из "здесь". Берет только первый документ и начинает его мусолить столько сколько документов записано во 2ом. Подскажите что тут не так или может как то по другому сделать?
  2. Бухгалтерский угодник
    Offline

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

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Методов решения несколько.
    Можно выгружать в ТЗ и там сортировать по времени только после этого - записывать
  3. TopicStarter Overlay
    SCtYL
    Offline

    SCtYL

    Регистрация:
    20 сен 2010
    Сообщения:
    45
    Симпатии:
    0
    Баллы:
    1
    Спасибо огромное, помогло.

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