Имя: Пароль:
1C
1С v8
Прокомментируйте процедуру, что можно исправить, зависает 1с помогает ребут скл
, , ,
0 genesys
 
31.08.16
10:32
Процедура КонтрольКоличестваДокументовВДень(Отказ)     
    Если Процедуры.Количество()
         ИЛИ НаправленияНазначенные.Количество() Тогда
        
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    МЦ_ПриемКонтрагента.Ссылка
        |ИЗ
        |    Документ.МЦ_ПриемКонтрагента КАК МЦ_ПриемКонтрагента
        |ГДЕ
        |    МЦ_ПриемКонтрагента.Контрагент = &Контрагент
        |    И МЦ_ПриемКонтрагента.ЯвляетсяНаправлением = &ЯвляетсяНаправлением
        |    И МЦ_ПриемКонтрагента.Проведен
        |    И НАЧАЛОПЕРИОДА(МЦ_ПриемКонтрагента.Дата, ДЕНЬ) = &ТекущийДень
        |    И МЦ_ПриемКонтрагента.Организация = &Организация
        |    И МЦ_ПриемКонтрагента.Ссылка <> &ТекущийДокумент";
        
        Запрос.УстановитьПараметр("Организация", Организация);
        Запрос.УстановитьПараметр("ТекущийДокумент", Ссылка);
        Запрос.УстановитьПараметр("Контрагент", Контрагент);
        Запрос.УстановитьПараметр("ТекущийДень", НачалоДня(?(ЗначениеЗаполнено(Дата), Дата, ТекущаяДата())));
        Запрос.УстановитьПараметр("ЯвляетсяНаправлением", ЯвляетсяНаправлением);
        
        РезультатЗапроса = Запрос.Выполнить();
        Отказ = НЕ РезультатЗапроса.Пустой();
        Если Отказ Тогда
            
            Выборка = РезультатЗапроса.Выбрать();
            Выборка.Следующий();
            Предупреждение("Сегодня уже создан документ для пациента " + Символы.ПС + ОбщегоНазначения.СформироватьЗаголовокДокумента(Выборка.Ссылка));
            
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры // КонтрольКоличестваДокументовВДень()
1 genesys
 
31.08.16
10:32
зависает не всегда
2 Cyberhawk
 
31.08.16
10:34
Сколько платят за решение вопроса?
3 genesys
 
31.08.16
10:35
мне не нужно решать вопрос
просто мнение ваше интересно, мб в процедуре дело
4 Неверный Параметр И
 
31.08.16
10:39
(3) Диагностика бесплатно при условии ремонта в нашем СЦ!

Сегодня создан документ для пациента [x]
5 Михаил Козлов
 
31.08.16
10:40
(3) Потестите запрос в консоли запросов.
6 aleks_default
 
31.08.16
10:41
Конечно зависает пока предупреждение не закроешь, делай сообщить()
7 Fragster
 
гуру
31.08.16
10:42
если это в модуле объекта перед/при записи или в обработке проведения или в форме в при записи - то неудивительно.
8 Господин ПЖ
 
31.08.16
10:44
>Предупреждение

классика жанра...
9 genesys
 
31.08.16
10:45
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{Документ.МЦ_ПриемКонтрагента.МодульОбъекта(741)}: Ошибка при вызове
метода контекста (Выполнить)

по причине:
Ошибка выполнения запроса
по причине:
Конфликт блокировок при выполнении транзакции:
Microsoft SQL Server Native Client 11.0: Превышено время ожидания
запроса на блокировку.
HRESULT=80040E31, SQLSrvr: SQLSTATE=HYT00, state=33, Severity=10,
native=1222, line=1
10 Господин ПЖ
 
31.08.16
10:47
(9) читать (7) до просветления
11 genesys
 
31.08.16
10:48
(10) Ну я эту процедуру не писал, стаж у меня 2 недели, я учусь
и (7) мне мало о чем говорит
12 Господин ПЖ
 
31.08.16
10:51
(11) ты через предупреждение() ставишь раком всю систему - блокируешь таблицу (или диапазон в таблице). читать  про блокировки на SQL
13 Неверный Параметр И
 
31.08.16
10:52
(11) А от нас-то ты что хочешь? Процедуру мы посмотрели.
14 genesys
 
31.08.16
10:52
(12) Вместо предупреждение сделать сообщение ?
15 Господин ПЖ
 
31.08.16
10:52
(12) + меняй предупреждение() на сообщить()
16 Неверный Параметр И
 
31.08.16
10:53
(11) Или это какой-то хитрый франч отлаживает юнглинга такой постановкой задач?
17 hitodom
 
31.08.16
10:56
вместо
НАЧАЛОПЕРИОДА(МЦ_ПриемКонтрагента.Дата, ДЕНЬ) = &ТекущийДень
лучше
МЦ_ПриемКонтрагента.Дата МЕЖДУ &НачалоДня И &КонецДня
18 genesys
 
31.08.16
10:58
(16) да не
19 genesys
 
31.08.16
11:01
(15) но ошибка выходит на 741 строке, т.е. он до ПРедупрежждение() не доходит даже
20 RomanYS
 
31.08.16
11:04
(19) до предупреждения дошло у другого пользователя, а все остальные теперь ждут когда тот нажав "ОК" разблокирует таблицы.
21 genesys
 
31.08.16
11:05
(20) т.е. всё дело в том, что какой то пользователь не жмёт ОК?
22 genesys
 
31.08.16
11:06
740 Запрос.УстановитьПараметр("ЯвляетсяНаправлением", ЯвляетсяНаправлением);
741        
742РезультатЗапроса = Запрос.Выполнить();

ошибка в 741 строке и она пустая
23 Pentosh
 
31.08.16
11:07
(21) вам уже ответили на вопрос, разжевали, мб попробуете заменить на "сообщить()", а потом дальше вопросы кидать?
24 Неверный Параметр И
 
31.08.16
11:08
(23) Он не хочет решать вопрос - см (3) Ему надо наше мнение, и оно начинает портится
25 zva
 
31.08.16
11:09
раз "помогает ребут скл" можно вместо предупреждения сразу ребутить
26 Неверный Параметр И
 
31.08.16
11:11
(22) Ну так и зависает оно не всегда.
27 Pentosh
 
31.08.16
11:16
а ПоказатьПредупреждение(), блокирует таблицы?
в СП про это ничего не нашел.
28 RomanYS
 
31.08.16
11:17
(27) блокирует не Предупреждение, а открытая транзакция, которая ждет ответа на предупреждение.
29 Pentosh
 
31.08.16
11:19
(28) понял.
а ПоказатьПредупреждение не ждет ответа, т.е. блокировки не будет?
30 bodri
 
31.08.16
11:22
(27) и (29) Если использовать ПоказатьПредупреждение(), тогда после окончания транзакции вылезет куча окон, а оно надо? Используй Сообщить()
31 genesys
 
31.08.16
11:25
Спасибо, попробуем
32 genesys
 
31.08.16
11:29
Мне больше интересно было не решить эту проблему, а узнать причину
Я узнал, спасиб
33 genesys
 
31.08.16
11:34
А подскажите, ЖР открывается через конфигуратор ?
34 Неверный Параметр И
 
31.08.16
11:37
(33) А попробовать - религия не позволяет?
И через него тоже.
35 genesys
 
31.08.16
11:39
(34) ПРосто через 1с предприятие не получается
кофнигуратор грузится)
36 Неверный Параметр И
 
31.08.16
11:43
(35) Сильно грузится?
37 genesys
 
31.08.16
11:44
(36) загружается, окей
38 genesys
 
31.08.16
12:11
39 genesys
 
31.08.16
12:14
Обновление конфы решает эту проблему точно ?
40 Альбатрос
 
31.08.16
12:21
(38) Это называется г*внокод
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший