8.х Тормоз при проведении документа

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем saha25, 30 окт 2007.

Статус темы:
Закрыта.
  1. TopicStarter Overlay
    saha25
    Offline

    saha25 Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    95
    Симпатии:
    3
    Баллы:
    29
    Добрый день, ВСЕ!

    Есть небольшая проблема.
    Исходные данные:
    комп - PIV, 512 RAM, win2003 server
    1С - 1С:Предприятие 8.0 (8.0.18.2),
    самописная конфигурация.
    Так вот, при проведении документа с количеством строк начиная где-то от 25 и выше (проверялось на 100 ) 1С тупо зависает и ничего не происходит, зависание продолжалось 3 часа после чего 1С была вырублена.
    Некоторые скажут что у программиста кривые руки, что ж возможно, поэтому привожу код, который "зависает". Документ, кстати, по идее должен просто списывать указаный товар.
    Поскольку товар "специфический" у него много дополнительных параметров. Вот структура таблицы документа:
    Товар, Количество, Вес, Параметр1 (справочник), Параметр2 (справочник), Параметр3 (справочник), Параметр4 (строка), Параметр5 (справочник), Параметр6 (справочник), Параметр7 (справочник), Параметр8 (справочник), Параметр9 (строка). Соответственно все тоже в регистре.
    Запрос заполнения таблицы при проверки наличного количество
    Код:
    Запрос.Текст="
    |ВЫБРАТЬ РАЗЛИЧНЫЕ 
    |    Док.Товар                               КАК Товар,
    |    Док.Параметр1                   КАК Параметр1,
    |    Док.Параметр2                   КАК Параметр2,
    |    Док.Параметр3                   КАК Параметр3,
    |    Док.Параметр4                   КАК Параметр4,
    |    Док.Параметр5                   КАК Параметр5,
    |    Док.Параметр6                   КАК Параметр6,
    |    Док.Параметр7                   КАК Параметр7,
    |    Док.Параметр8                   КАК Параметр8,
    |    Док.Параметр9                   КАК Параметр9,
    |     Док.Количество                  КАК ДокументКоличество,
    |     Док.Вес                      КАК ДокументВес,
    |     Остатки.КоличествоОстаток     КАК ОстатокКоличество,
    |     Остатки.ВесОстаток                  КАК ОстатокВес,
    |     Остатки.СебестоимостьОстаток      КАК ОстатокСебестоимость
    |ИЗ
    |    (Выбрать 
    |         Д.Товар,
    |         Д.параметр1,
    |         Д.параметр2,
    |         Д.параметр3,
    |         Д.параметр4,
    |         Д.параметр5,
    |         Д.параметр6,
    |         Д.параметр7,
    |         Д.параметр8,
    |         Д.параметр9, 
    |         Сумма(Д.Количество) КАК Количество,
    |         Сумма(Д.Вес) КАК Вес
    |     Из
    |         Документ."+ИмяТаблицы+" КАК Д
    |     Где
    |         Д.Ссылка=&ДокументСсылка "+ДопУсловие+"
    |     СГРУППИРОВАТЬ ПО
    |                               Д.Товар,
    |         Д.Параметр1,
    |         Д.Параметр2,
    |         Д.Параметр3,
    |         Д.Параметр4,
    |         Д.Параметр5,
    |         Д.Параметр6,
    |         Д.Параметр7,
    |         Д.Параметр8,
    |         Д.Параметр9
    |     ) КАК Док
    | 
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |     РегистрНакопления.ОстаткиТовара.Остатки("+?(РежимПроведения=РежимПроведенияДокумента.Оперативный,",","&ДатаДок,")+"
    |         Фирма = &Фирма И Склад = &Склад И
    |        Параметр1 В (" + СписокРеквизита("Параметр1",ИмяТаблицы) + ")  И  
    |        Параметр2 В (" + СписокРеквизита("Параметр2",ИмяТаблицы) + ")  И 
    |        Параметр3 В (" + СписокРеквизита("Параметр3",ИмяТаблицы) + ")  И 
    |        Параметр4 В (" + СписокРеквизита("Параметр4",ИмяТаблицы) + ") И 
    |        Параметр5 В (" + СписокРеквизита("Параметр5",ИмяТаблицы) + ") И 
    |        Параметр6 В (" + СписокРеквизита("Параметр6",ИмяТаблицы) + ")  И 
    |        Параметр7 В (" + СписокРеквизита("Параметр7",ИмяТаблицы) + ")  И 
    |        Параметр8 В (" + СписокРеквизита("Параметр8",ИмяТаблицы) + ") И 
    |        Параметр9 В (" + СписокРеквизита("Параметр9",ИмяТаблицы) + ") И
    |        Товар В (" + СписокРеквизита("Товар",ИмяТаблицы) + ")   ) КАК Остатки
    |ПО 
    |     Док.Товар           = Остатки.Товар И 
    |     Док.Параметр1 = Остатки.Параметр1 И
    |     Док.Параметр2 = Остатки.Параметр2 И
    |     Док.Параметр3 = Остатки.Параметр3 И
    |     Док.Параметр4 = Остатки.Параметр4 И
    |     Док.Параметр5= Остатки.Параметр5 И
    |     Док.Параметр6= Остатки.Параметр6 И
    |     Док.Параметр7= Остатки.Параметр7И
    |     Док.Параметр8 = Остатки.Параметр8 И
    |     Док.Параметр9 = Остатки.Параметр9 
    |   
    |ИТОГИ  
    |      СУММА(ДокументКоличество),
    |     МАКСИМУМ(ОстатокКоличество),
    |      МАКСИМУМ(ОстатокВес),
    |      МАКСИМУМ(ОстатокСебестоимость)
    |ПО 
    |     Док.Товар,
    |      Док.Параметр1,
    |      Док.Параметр2,
    |      Док.Параметр3,
    |      Док.Параметр4,
    |      Док.Параметр5,
    |      Док.Параметр6,
    |      Док.Параметр7,
    |      Док.Параметр8,
    |     Док.Параметр9";
    
    
    Вот такой запрос, после Выполнить().Выбрать() происходит тормоз. В регистре остатков на данный момент ~4000 записей. Может можно как-то оптимизировать или исправить.
    Спасибо.

    Добавлено: Вообщем-то программа не зависает, просто все ОЧЧЕЕЕНЬ долго делается. на 50 строк документ - 555 секунд.

    ИЗМЕНЕНО: Пользуйтесь тэгом
    Код:
    [/color]
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не особо вчитываясь в код - Параметр4 и Параметр9 - добили :)

    PS. Ёжик птица гордая: пока не пнёшь - не полетит!
  3. TopicStarter Overlay
    saha25
    Offline

    saha25 Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    95
    Симпатии:
    3
    Баллы:
    29
    "Параметры" называются по другому я изменил их название для простоты
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Поясняю: сравнение СТРОКА со СТРОКОЙ - это ужОс...
    Код:
    Параметр4 В (" + СписокРеквизита("Параметр4",ИмяТаблицы) + ") И 
    
    
  5. TopicStarter Overlay
    saha25
    Offline

    saha25 Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    95
    Симпатии:
    3
    Баллы:
    29
    Всё, разобрался. Тему можно закрывать.
    Дело было, как правильно было подмечено, в сравнении строк со строками, а так же убрал некоторые ПараметрN В (...), те которые иногда не заполнялись.
    Спасибо за помощь.
Статус темы:
Закрыта.

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