| 
    
        
     
     | 
    
  | 
v7: Проблема с НомеромСтроки в Регистре | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        neetro    
     20.01.14 
            ✎
    13:09 
 | 
         
        Привет всем. Проблема для меня совсем не понятная. Может то сталкивался, подскажет как решить.
 
        Имеем: 1С 7.7 (27 релиз)на SQL server 2000 (ОС Win Server 2003 x32) 1С конфигурация Алкогольная (от КТ-Алкоголь, какая версия ТиС в основе - хз, но 9.2 точно). Есть отчет формирования алкогольной декларации, который в запросе цепляет данные из Алкогольного регистра. Группировки там ТекДок и СтрокаДокумента. До недавнего времени все работало приемлемо. Сейчас тупит. Берет какую то одну строку из документа (как я думал, оказалось из регистра) остальные не обрабатывает. Анализ выявил проблему. В Движениях Регистра в поле НомерСтроки пишется произвольное число (!). То есть строк в документе 13, позиций в регистре 13, но у всех номер строки = 62. Для этого же документа номер строки в регистре ПартииНаличие корректно встают с 1 по 13, В регистре Покупатели НомерСтроки = 3 (строка там одна). Короче черти че и документов таких полно. Внимаение! Если перепровести документ Руками, строчки везде встают как надо! Вывод в модуле документа все корректно прописано, иначе проблема после перепроведения руками тоже бы осталась. Стоит запустить перепроведение за месяц стандартными средствами = опять та же картина и опять номер строки во всех 13 строчках = 62. Если перепровести доки за день (только один вид документа = Поступление), то строчки опять же нормализуются. Делал Выгрузку\Загрузку. ТИИ полное. Перезагрузка сервера + SQL сервера. Работал с копией на локальном компьютере (другая машина на Win 7) в ДБФ режиме (чтобы исключить проблемы с жестким на серваке). Делал все то же самое + удаление файлов cdx. Короче я хз что еще куда смотреть.  | 
|||
| 
    1
    
        пипец    
     20.01.14 
            ✎
    13:14 
 | 
         
        ордночек в каталоге болтается ?
 
        ПривязыватьСтроку ???  | 
|||
| 
    2
    
        1dvd    
     20.01.14 
            ✎
    13:14 
 | 
         
        Покажи как в документа используется ПривязыватьСтроку();     
         | 
|||
| 
    3
    
        1dvd    
     20.01.14 
            ✎
    13:15 
 | 
         
        при групповом проведении некоторые переменные могут не очищаться, когда заканчивается проведение одного документа и начинается проведение следующего. Надо очищать переменные перед использованием!     
         | 
|||
| 
    4
    
        viktor_vv    
     20.01.14 
            ✎
    13:19 
 | 
         
        (3) +1. Глобальная переменная могут использоваться в ПривязыватьСтроку(<НомерСтроки>).     
         | 
|||
| 
    5
    
        КонецЦикла    
     20.01.14 
            ✎
    13:28 
 | 
         
        Посмотри отличаются ли оперативное и не оперативное проведение (ну типа ИтогиАктуальны())
 
        При групповом проведении переносится ТА.  | 
|||
| 
    6
    
        МихаилМ    
     20.01.14 
            ✎
    13:30 
 | 
         
        известная особенность 
 
        группового перепроведения: модуль проведения документа компилируется один раз.  | 
|||
| 
    7
    
        neetro    
     20.01.14 
            ✎
    13:53 
 | 
         
        (1) что простите? Файл какой то?
 
        (2) Перебор по редвижениям регистра Партии (это там где нормальны строки) СтрДок=РегПарт.НомерСтроки(); Потом проверка на пустую строку и Конт.ПолучитьСтрокуПоНомеру(СтрДок); ну и сама привязка Конт.Регистр.ДвиженияАлкоголя.ПривязыватьСтроку(СтрДок);  | 
|||
| 
    8
    
        neetro    
     20.01.14 
            ✎
    13:54 
 | 
         
        (6) м, и?     
         | 
|||
| 
    9
    
        neetro    
     20.01.14 
            ✎
    13:56 
 | 
         
        (5) ну там стандартно в модуле документа проверка
 
        Если ИтогиАктуальны() = 0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; Потом передача проведения в глобальник  | 
|||
| 
    10
    
        neetro    
     20.01.14 
            ✎
    13:58 
 | 
         
        (5) ну и в глобальнике потом 
 
        Если Конт.ИтогиАктуальны()=0 Тогда Если РегистрыРассчитаны = 0 Тогда //Значит, не считали объект ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(Конт.ТекущийДокумент()); КонецЕсли; КонецЕсли;  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |