|   |   | 
| 
 | v7: 1С зависает при проведении документа | ☑ | ||
|---|---|---|---|---|
| 0
    
        Melcor 29.03.16✎ 11:30 | 
        Доброго дня. Есть 1С 7.7 ТиС 948. Проблема в том, что если нажать провести в документе поступления, то 1С зависает, снизу пишет обработка строк запроса и уходит в кому, тестирование и исправление не проходит, ждал неделю, так и не ожило, выгрузка-загрузка данных тоже не помогла. Причем зависает не на всех документах, а где много строк, относительно конечно много, например 60     | |||
| 1
    
        zak555 29.03.16✎ 11:32 | 
        внешние компоненты есть ?     | |||
| 2
    
        Mikeware 29.03.16✎ 11:33 | 
        а что говорит по этому поводу старый мудрый еврей Дебаггер?     | |||
| 3
    
        Масянька 29.03.16✎ 11:33 | 
        (0) Открой модуль проведения поступления и посмотри.     | |||
| 4
    
        Melcor 29.03.16✎ 11:38 | 
        Ёк макарёк! Какой-то чудак обозвал поступление розница в  Поступление ТМЦ, а в рознице нафигачил мутного кода     | |||
| 5
    
        Mikeware 29.03.16✎ 11:39 | 
        "это просто праздник какой-то"©     | |||
| 6
    
        Melcor 29.03.16✎ 11:58 | 
        Перед проведением есть процедура и в ней вот такой модуль, и почему-то зависает когда запрос пытается выполнить, базе крантец?
 СЗНоменклатуры = СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СЗНоменклатуры, "Номенклатура"); сообщить("Проведение 1"); Запрос = СоздатьОбъект("Запрос"); ДатаЗапроса = Мин(ДатаДок, ПолучитьДатуТА()); ТекстЗапроса = " |Период с ДатаЗапроса по ДатаЗапроса; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |РегФирма = Регистр.ОстаткиТМЦ.Фирма; |РегСклад = Регистр.ОстаткиТМЦ.Склад; |ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод; |Количество = Регистр.ОстаткиТМЦ.Количество; |Условие (Номенклатура в СЗНоменклатуры); |Условие (РегСклад = Склад); |Условие (РегФирма = Фирма); |Функция ОстКоличество = КонОст(Количество); |Группировка Номенклатура; |Группировка ЦенаПрод; |"; ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Номенклатура, РозничнаяЦена, Коэффициент"); сообщить("Проведение 2"); Запрос.Выполнить(ТекстЗапроса); | |||
| 7
    
        Melcor 29.03.16✎ 12:00 | 
        Может попробовать удалить все файлы регистров и перепровести?     | |||
| 8
    
        Злопчинский 29.03.16✎ 12:00 | 
        В типовой ТиС в проведениях нет запросов.
 вывод - кривые руки и отсутсвие извилин ;-) | |||
| 9
    
        Mikeware 29.03.16✎ 12:01 | 
        (8) т.е. типичный "закон соотношения радиусов"     | |||
| 10
    
        Злопчинский 29.03.16✎ 12:03 | 
        (7) сделай как в типовой обычно делается - тупую выгрузку итогов регистра с наложением фильтров и временным расчетом     | |||
| 11
    
        Масянька 29.03.16✎ 12:03 | 
        (4) Коленку или сразу в голову? :)     | |||
| 12
    
        Melcor 29.03.16✎ 12:03 | 
        Самый большой файл RG328 весит 200 метров
 (8) база переписанная, при нажатии на ОК или Провести, попадает сначала в свою процедуру, а оттуда уже в выполняется Записать и Провести | |||
| 13
    
        Злопчинский 29.03.16✎ 12:03 | 
        и нахуа остатки получать в поступлении? - вы там что - сразу переоценку делаете при наличии остатков?     | |||
| 14
    
        Масянька 29.03.16✎ 12:04 | 
        (12) Переписывай проведение и перепроводи. Про копию не забудь.     | |||
| 15
    
        Злопчинский 29.03.16✎ 12:04 | 
        (12) Партии. Регистры - незакрыты. Увеличение времени исполнения запросов и выгрузки итогов, увеличение - ощутимое при открытии месяца.     | |||
| 16
    
        Melcor 29.03.16✎ 12:04 | 
        Вот процедура полностью при нажатии на ОК
 Процедура ПроверкаОстатков(Режим) Если Константа.ПереоцениватьОстатки = 0 Тогда Если Режим = "ОК" Тогда СтрокаДействийФормы = "#Записать Провести? Закрыть"; Иначе СтрокаДействийФормы = "#Записать Провести"; КонецЕсли; Возврат; КонецЕсли; СЗНоменклатуры = СоздатьОбъект("СписокЗначений"); ВыгрузитьТабличнуюЧасть(СЗНоменклатуры, "Номенклатура"); сообщить("Проведение 1"); Запрос = СоздатьОбъект("Запрос"); ДатаЗапроса = Мин(ДатаДок, ПолучитьДатуТА()); ТекстЗапроса = " |Период с ДатаЗапроса по ДатаЗапроса; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |РегФирма = Регистр.ОстаткиТМЦ.Фирма; |РегСклад = Регистр.ОстаткиТМЦ.Склад; |ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод; |Количество = Регистр.ОстаткиТМЦ.Количество; |Условие (Номенклатура в СЗНоменклатуры); |Условие (РегСклад = Склад); |Условие (РегФирма = Фирма); |Функция ОстКоличество = КонОст(Количество); |Группировка Номенклатура; |Группировка ЦенаПрод; |"; ТаблицаДокумента = СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ТаблицаДокумента, "Номенклатура, РозничнаяЦена, Коэффициент"); сообщить("Проведение 2"); Запрос.Выполнить(ТекстЗапроса); сообщить("Проведение 3"); ТЗПереоценка = СоздатьОбъект("ТаблицаЗначений"); ТЗПереоценка.НоваяКолонка("Номенклатура", "Справочник.Номенклатура"); ТЗПереоценка.НоваяКолонка("Количество", "Число",,,,10); ТЗПереоценка.НоваяКолонка("ЦенаСтарая", "Число",,,"Цена (стар.)",10); ТЗПереоценка.НоваяКолонка("ЦенаНовая", "Число",,,"Цена (нов.)",10); // В случае дублей строк будет предложено переоцениваем по первой цене Пока Запрос.Группировка("Номенклатура") = 1 Цикл Пока Запрос.Группировка("ЦенаПрод") = 1 Цикл // Отрицательные количества переоценивать не будем Если Запрос.ОстКоличество <= 0 Тогда Продолжить; КонецЕсли; НомСтроки = 0; ТаблицаДокумента.НайтиЗначение(Запрос.Номенклатура, НомСтроки, "Номенклатура"); ТаблицаДокумента.ПолучитьСтрокуПоНомеру(НомСтроки); НоваяЦена = Окр(ТаблицаДокумента.РозничнаяЦена/ТаблицаДокумента.Коэффициент, 2); Если НоваяЦена <> Запрос.ЦенаПрод Тогда ТЗПереоценка.НоваяСтрока(); ТЗПереоценка.Номенклатура = Запрос.Номенклатура; ТЗПереоценка.Количество = Запрос.ОстКоличество; ТЗПереоценка.ЦенаСтарая = Запрос.ЦенаПрод; ТЗПереоценка.ЦенаНовая = НоваяЦена; КонецЕсли; КонецЦикла; КонецЦикла; СЗПарам = СоздатьОбъект("СписокЗначений"); СЗПарам.Установить("Заголовок", "Переоценка остатков"); СЗПарам.Установить("ТекстВопроса", "На складе обнаружены остатки ТМЦ по розничной цене, отличной от розничной цены, назначаемой в документе поступления. Переоценить?"); СЗПарам.Установить("ТаблЗначений", ТЗПереоценка); Если ТЗПереоценка.КоличествоСтрок() = 0 Тогда Если Режим = "ОК" Тогда СтрокаДействийФормы = "#Записать Провести? Закрыть"; Иначе СтрокаДействийФормы = "#Записать Провести"; КонецЕсли; Возврат; КонецЕсли; НачатьТранзакцию(); ДействияПриЗаписи(); Записать(); ЗафиксироватьТранзакцию(); Провести(); ОткрытьФормуМодально("Обработка.ВопросСТаблицейЗначений", СЗПарам, 1); Если СЗПарам = "Да" Тогда Док = СоздатьОбъект("Документ.ПереоценкаРозница"); Док.Новый(); Док.Фирма = Фирма; Док.Склад = Склад; Док.Проект = Проект; Док.Валюта = глРубли; Док.Курс = 1; Док.Кратность = 1; Док.Комментарий = "Переоценка в связи с поступлением нового товара"; Док.ЗагрузитьТабличнуюЧасть(ТЗПереоценка); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Док.Единица = Док.Номенклатура.БазоваяЕдиница; Док.Коэффициент = 1; КонецЦикла; Док.Записать(); Док.Провести(); ОткрытьФорму(Док.ТекущийДокумент()); Если Режим = "ОК" Тогда СтрокаДействийФормы = "#Закрыть"; КонецЕсли; ИначеЕсли СЗПарам = "Нет" Тогда Если Режим = "ОК" Тогда СтрокаДействийФормы = "#Закрыть"; КонецЕсли; КонецЕсли; КонецПроцедуры // ПроверкаОстатков() | |||
| 17
    
        Melcor 29.03.16✎ 12:05 | 
        (13) ага     | |||
| 18
    
        Масянька 29.03.16✎ 12:05 | 
        (16) На фига остатки при поступлении? 
 Ты, кстати, владельца базы спрашивал? | |||
| 19
    
        Melcor 29.03.16✎ 12:06 | 
        (18) Да только щя наткнулся на эту процедуру, до этого сразу запустил тестир и исправ, которая так и непрошла     | |||
| 20
    
        Mikeware 29.03.16✎ 12:07 | 
        (19) а зачем?     | |||
| 21
    
        Melcor 29.03.16✎ 12:08 | 
        (20) Зачем тестирование?     | |||
| 22
    
        Злопчинский 29.03.16✎ 12:09 | 
        (19) "до этого сразу запустил тестир и исправ,"
 - долго итоги пересчитывает из-за незакрытых регистров. оставь на сутки - дождешься... | |||
| 23
    
        MishaD 29.03.16✎ 12:09 | 
        (20) мать моя женщина, глянул краем глаза, похоже при приходе товара по новым ценам это счастье переоценивает на них текущий товар на остатках.     | |||
| 24
    
        Melcor 29.03.16✎ 12:09 | 
        (22) таки не дождался, таки удаление файлов регистров и перепроведение всей базы поможет, как считаете?     | |||
| 25
    
        Melcor 29.03.16✎ 12:10 | 
        (23) Агась)     | |||
| 26
    
        Mikeware 29.03.16✎ 12:10 | 
        (21) естественно...
 у тебя это способ диагностики? или универссальное лекарство от всех болезней? | |||
| 27
    
        Melcor 29.03.16✎ 12:11 | 
        (26) На здоровой базе спокойнее искать проблему     | |||
| 28
    
        Melcor 29.03.16✎ 12:12 | 
        (26) В половине случаев проблемы исчезали, особенно у тех кто переиндексировть базы не любит     | |||
| 29
    
        Melcor 29.03.16✎ 13:53 | 
        Удаление файлов регистров и перепроведение не помогло (     | |||
| 30
    
        Melcor 29.03.16✎ 13:53 | 
        Друзья, посоветуйте что можно сделать     | |||
| 31
    
        Mikeware 29.03.16✎ 13:54 | 
        (30) позвать программиста....     | |||
| 32
    
        Melcor 29.03.16✎ 13:55 | 
        (31) Но явно не тебя, ни одного совета, зачем в тему заходишь? с чатиком перепутал?     | |||
| 33
    
        Mikeware 29.03.16✎ 14:13 | 
        (32) так тебе эти советы не помогут. Был бы на твоем месте программист - ему б посоветовал...     | |||
| 34
    
        Злопчинский 29.03.16✎ 14:44 | 
        проверять на циклические ссылки, например...     | |||
| 35
    
        Phanatom 29.03.16✎ 15:08 | 
        (8) ТС не правильно вам сказал. Данная функция в модуле формы и вызывается она при нажатии на кнопку "ОК" или "Провести". Сама функция идет в стандартной конфе и срабатывает при выставленной галке в настройках "Переоценивать остатки".
 но суть тормозов от этого не меняется. | |||
| 36
    
        Phanatom 29.03.16✎ 15:12 | 
        (30) а если убрать в настройках галку "Переоценивать остатки"(есть такая константа) - тормоза пропадут? Что у вас в программе с границей последовательности?     | |||
| 37
    
        Phanatom 29.03.16✎ 15:17 | 
        хотя если все перепровели, то должна быть на последний документ.     | |||
| 38
    
        Melcor 29.03.16✎ 15:58 | 
        (37) 1С подвисает когда пытаешься выполнить запрос к регистру ОстаткиТМЦ     | |||
| 39
    
        Mikeware 29.03.16✎ 16:02 | 
        (38) ну сделай не запросом.     | |||
| 40
    
        HawkEye 29.03.16✎ 18:18 | 
        (16) феноменальный код )))     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |