powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Как избежать блокировки?
39 сообщений из 39, показаны все 2 страниц
Как избежать блокировки?
    #37348743
1С 8.2 SQL УПП

Поясните ламеру кто виноват.

Внедряют у нас в конторе систему.
Администратор ругается что мои простые запросы блокируют регистр.продажи, а значит я чего-то делаю не так.

Для целей аналитической отчетности я с помошью ADO выгружаю нужные детальные записи регистров и справочников на др. сервер.
Я даже переделал алгоритм выгрузки из регистра продаж и тяну оттуда данные запросом частями.

Нужно как-то модифицировать код чтобы не вызывать блокировки или это должен сделать администратор?

Использование консоли запросов приведет к такому же результату?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37348787
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский, текст запроса в студию.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37348945
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст запроса давайте. А вобще странно - этот регистр бессмысленно блокировать.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349120
Перем АДОДБКоннект, стрПодключения, ИмяСервера, ОшибкаSQL, SQLJob, ЗапросВ, Результат, Сейчас, Начало, Конец, Тн, Тк, Шаг, Строк;

Процедура ВыгрузитьПродажи()

ТаблицаSQL = "v8_Продажи_кор";


ИмяСервера = "XXX";
ИмяБазы = "infanalit";
ИмяПользователя = "sa";
Пароль = "";



стрПодключения = "Provider=SQLOLEDB.1;
|Pwd="+Пароль+";
|User ID="+ИмяПользователя+";
|Data Source=" + ИмяСервера + ";
|Initial Catalog=" + ИмяБазы + "";

Сейчас = ТекущаяДата();
Начало = ДобавитьМесяц(НачалоМесяца(Сейчас),-1);
Если Начало < Дата(2011,7,1) тогда Начало = Дата(2011,7,1) КонецЕсли;
Конец = НачалоДня(Сейчас);
Если Начало > Конец тогда Начало = Конец КонецЕсли;

Шаг = 86400*1; //60*60*24
Тн = Начало;
Тк = Тн + Шаг;



ЗапросВ = Новый Запрос;
ЗапросВ.Текст = "ВЫБРАТЬ
| 1 КАК Движение,
//| началопериода(Продажи.Период, День) КАК ДатаПроводки,
| началопериода(Продажи.Регистратор.Дата, День) КАК ДатаПроводки,
| Продажи.Активность,
| Продажи.Номенклатура.Код как Код,
| Продажи.Количество,
| Продажи.Стоимость,
| Продажи.СтоимостьБезСкидок,
| Продажи.НДС,
| Продажи.Регистратор.Номер КАК НомерДокумента,
| Продажи.Организация.Код КАК КодОрганизации,
| Продажи.Контрагент.Код КАК КодКонтрагента,
| Продажи.Регистратор.Грузополучатель.Код КАК КодГрузополучателя,
| Продажи.Регистратор.Грузоотправитель.Код КАК КодГрузоотправителя,
| Продажи.Регистратор.АдресДоставки КАК АдресДоставки
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
| И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))
| И Продажи.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРеализацияТоваров.ПродажаКомиссия)
//| И началопериода(Продажи.Период, День) между &Начало и &Конец
| И началопериода(Продажи.Регистратор.Дата, День) между &Начало и &Конец
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 2,
| началопериода(Возвраты.Период, День) как ДатаПроводки,
| Возвраты.Активность,
| Возвраты.Номенклатура.Код как Код,
| Возвраты.Количество,
| Возвраты.Стоимость,
| Возвраты.СтоимостьБезСкидок,
| Возвраты.НДС,
| Возвраты.Регистратор.Номер как НомерДокумента,
| Возвраты.Организация.Код как КодОрганизации,
| Возвраты.Контрагент.Код как КодКонтрагента,
| Возвраты.Регистратор.Грузополучатель.Код как КодГрузополучателя,
| Возвраты.Регистратор.Грузоотправитель.Код КАК КодГрузоотправителя,
| null как АдресДоставки
|ИЗ
| РегистрНакопления.Продажи КАК Возвраты
|ГДЕ
| Возвраты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
| И (НЕ Возвраты.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))
| И Возвраты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВозвратТоваровОтПокупателя.ПродажаКомиссия)
| И началопериода(Возвраты.Период, День) между &Начало и &Конец
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 3,
| началопериода(ВозвратЗакупки.Период, День) как ДатаПроводки,
| ВозвратЗакупки.Активность,
| ВозвратЗакупки.Номенклатура.Код как Код,
| 0 - ВозвратЗакупки.Количество как Количество,
| 0 - ВозвратЗакупки.Стоимость как Стоимость,
| 0 как СтоимостьБезСкидок,
| ВозвратЗакупки.НДС,
| ВозвратЗакупки.Регистратор.Номер как НомерДокумента,
| ВозвратЗакупки.Организация.Код как КодОрганизации,
| ВозвратЗакупки.Контрагент.Код как КодКонтрагента,
| ВозвратЗакупки.Регистратор.Грузополучатель.Код как КодГрузополучателя,
| ВозвратЗакупки.Регистратор.Грузоотправитель.Код КАК КодГрузоотправителя,
| null как АдресДоставки
|ИЗ
| РегистрНакопления.Закупки КАК ВозвратЗакупки
|ГДЕ
| ВозвратЗакупки.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
| И (НЕ ВозвратЗакупки.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))
| И ВозвратЗакупки.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия)
| И началопериода(ВозвратЗакупки.Период, День) между &Начало и &Конец";



Контрагенты = Новый СписокЗначений;
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("000000001")); // Общие поставщики
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000019")); // Полиграф материалы и сырьё
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD007831")); // Кредиторы (обработанные)
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000027")); // Услуги типографские
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000026")); // Услуги прочие

Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000020")); // Правообладатели физ лица
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000021")); // Правообладатели юр лица
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000016")); // Иностранные компании
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000017")); // Налоговые агенты налоговые органы
Контрагенты.Добавить(Справочники.Контрагенты.НайтиПоКоду("ITD000014")); // Аренда и субаренда

ЗапросВ.УстановитьПараметр("Контрагенты",Контрагенты);



АДОДБКоннект = Новый COMОбъект("ADODB.Connection");
АДОДБКоннект.ConnectionTimeOut =300;
АДОДБКоннект.CommandTimeOut =300;
АДОДБКоннект.CursorLocation = 2; //adUseServer

Попытка
АДОДБКоннект.Open(стрПодключения);
Исключение
АДОДБКоннект.Close();
Сообщить("Невозможно установить соединение с SQL-сервером " + ИмяСервера);
ОшибкаSQL=ТаблицаSQL;
Возврат;
КонецПопытки;



Попытка
//АДОДБКоннект.Execute("IF OBJECT_ID(N'" + ТаблицаSQL + "','U') IS not NULL drop table " + ТаблицаSQL );

АДОДБКоннект.Execute("IF OBJECT_ID(N'" + ТаблицаSQL + "','U') IS not NULL truncate table " + ТаблицаSQL
+ " else CREATE TABLE " + ТаблицаSQL + " ("
+ "Движение smallint null, "
+ "ДатаПроводки datetime null, "
+ "Активность bit null, "
+ "НоменклатураКод varchar(18) COLLATE Cyrillic_General_CI_AS null, "
+ "Количество int null, "
+ "Стоимость money null, "
+ "СтоимостьБезСкидок money null, "
+ "СуммаНДС money null, "
+ "ДокументНомер varchar(15) COLLATE Cyrillic_General_CI_AS null, "
+ "ОрганизацияКод varchar(10) COLLATE Cyrillic_General_CI_AS null, "
+ "КонтрагентКод varchar(10) COLLATE Cyrillic_General_CI_AS null, "
+ "ГрузополучательКод varchar(10) COLLATE Cyrillic_General_CI_AS null, "
+ "ГрузоотправительКод varchar(10) COLLATE Cyrillic_General_CI_AS null, "
+ "АдресДоставки varchar(255) COLLATE Cyrillic_General_CI_AS null, "
+ "Локализация bit null)"
);

АДОДБКоннект.Execute("BEGIN TRANSACTION");
АДОДБКоннект.Execute("set implicit_transactions off");
Исключение
АДОДБКоннект.Close();
Сообщить("Невозможно Drop/Create/BEGIN TRANSACTION table на SQL-сервере " + ИмяСервера);
ОшибкаSQL=ТаблицаSQL;
Возврат;
КонецПопытки;



Пока Тн <= Конец Цикл

Если Тк > Конец Тогда Тк = Конец КонецЕсли;

ЗапросВ.УстановитьПараметр("Начало",Тн);
ЗапросВ.УстановитьПараметр("Конец",Тк);
Сообщить("Выгружаем период с " + Формат( Тн, "ДЛФ=Д") + " по " + Формат( Тк, "ДЛФ=Д"));

Результат = ЗапросВ.Выполнить().Выгрузить();
Строк = Результат.Количество();


Если Строк > 0 тогда
Сообщить("Обрабатываем " + Строк +" строк за период с " + Формат( Тн, "ДЛФ=Д") + " по " + Формат( Тк, "ДЛФ=Д"));

Для Каждого СтрокаРез из Результат Цикл

АдресДоставки = Лев(СтрЗаменить(СтрокаРез.АдресДоставки,"'","''"),255);

Количество = Формат(СтрокаРез.Количество,"ЧГ=0; ЧН=0");
Стоимость = Формат(СтрокаРез.Стоимость,"ЧГ=0; ЧРД='.'; ЦДЧ=2; ЧН=0");
СтоимостьБезСкидок = Формат(СтрокаРез.СтоимостьБезСкидок,"ЧГ=0; ЧРД='.'; ЦДЧ=2; ЧН=0");
НДС = Формат(СтрокаРез.НДС,"ЧГ=0; ЧРД='.'; ЦДЧ=2; ЧН=0");

Активность = Формат(СтрокаРез.Активность,"БЛ=0; БИ=1");

Попытка

АДОДБКоннект.Execute("Insert INTO " + ТаблицаSQL + " values ("
+ "" + СтрокаРез.Движение + ","
+ "'" + СтрокаРез.ДатаПроводки + "',"
+ "" + Активность + ","
+ "'" + СокрП(СтрокаРез.Код) + "',"
+ "" + Количество + ","
+ "" + Стоимость + ","
+ "" + СтоимостьБезСкидок + ","
+ "" + НДС + ","
+ "'" + СтрокаРез.НомерДокумента + "',"
+ "'" + СтрокаРез.КодОрганизации + "',"
+ "'" + СтрокаРез.КодКонтрагента + "',"
+ "'" + СтрокаРез.КодГрузополучателя + "',"
+ "'" + СтрокаРез.КодГрузоотправителя + "',"
+ "'" + АдресДоставки + "',"

+ "null" + ")"
);


Исключение
Сообщить("Ошибка вставки данных в SQL: " + ОписаниеОшибки());
АДОДБКоннект.Execute("Commit");
АДОДБКоннект.Execute("set implicit_transactions on");
АДОДБКоннект.Close();
ОшибкаSQL=ТаблицаSQL;
Возврат;
КонецПопытки;



ОбработкаПрерыванияПользователя();
КонецЦикла;


конецесли;

Тн = Тн + Шаг + 86400; //60*60*24
Тк = Тн + Шаг;

Конеццикла;


Попытка
АДОДБКоннект.Execute("update _v8_Актуальность set Актуальность='" + ТекущаяДата() + "', НачалоПериода='" + Начало + "', КонецПериода='" + Конец + "' where Таблица='" + ТаблицаSQL +"'");
Исключение
Сообщить("Невозможно Update на SQL-сервере " + ИмяСервера);
АДОДБКоннект.Execute("Commit");
АДОДБКоннект.Execute("set implicit_transactions on");
АДОДБКоннект.Close();
ОшибкаSQL=ТаблицаSQL;
Возврат;
КонецПопытки;


Попытка
АДОДБКоннект.Execute("Commit");
АДОДБКоннект.Execute("set implicit_transactions on");
Исключение
Сообщить("Невозможно Commit на SQL-сервере " + ИмяСервера);
АДОДБКоннект.Close();
ОшибкаSQL=ТаблицаSQL;
Возврат;
КонецПопытки;


АДОДБКоннект.Close();


КонецПроцедуры
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349177
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский, в каком контексте идет запрос к 1С? Не выполняется ли он случайно в явной или неявной (при записи документа, в обработке проведения и т.д.) транзакции?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349197
DmitriyZДмирий Романовский, в каком контексте идет запрос к 1С? Не выполняется ли он случайно в явной или неявной (при записи документа, в обработке проведения и т.д.) транзакции?

Даже не знаю что ответить :-(
Я запускаю обычную внешнюю обработку с этим кодом на клиентской машине.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349244
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский, в коде вроде нет криминала. Вопрос - как администратор определил, что именно ваши запросы блокируют регистр?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349293
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349309
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349437
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZПрограммист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее.Сорри да сглупил.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349441
DmitriyZПрограммист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее.

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

А как тогда работают встроенные отчеты?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349471
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский, Т.е. когда вы запускаете свою обработку, пользователи не могут проводить документы? На всякий случай еще раз просмотрите код. Если запрос к 1С идет в Попытка - Исключение, уберите.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349491
DmitriyZДмирий Романовский, Т.е. когда вы запускаете свою обработку, пользователи не могут проводить документы? На всякий случай еще раз просмотрите код. Если запрос к 1С идет в Попытка - Исключение, уберите.

Т.е вот так делать ненадо?

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// Вставить содержимое обработчика.

Отказ = истина;
Попытка
ВыгрузитьПродажи();
Исключение
Сообщить("Ошибка : " + ОписаниеОшибки());
Возврат;
КонецПопытки;
КонецПроцедуры
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349507
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно).
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349660
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZДмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно).Ну скорее уж транзакция... Не вижу даже теоретически чтобы "попытка" помешала - хотя конечно есть ошибки платформы...
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349846
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сDmitriyZДмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно).Ну скорее уж транзакция... Не вижу даже теоретически чтобы "попытка" помешала - хотя конечно есть ошибки платформы... Я понимаю, но мало ли, чем черт не шутит :)
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349964
HoBTID
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

...
Криминал:
И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349973
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HoBTID Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

...
Криминал:
И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &КонецИ в чем криминал?
И почему тогда "Возвраты.Регистратор.Грузополучатель" не криминал?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37349975
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор - а база случайно не файловая?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37350055
HoBTID Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

...
Криминал:
И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец

И как правильно надо?
(НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))
ибо не нужны лишние данные...

это понятно что можно переделать, задав параметры запроса иначе
началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец[/quot]

Возвраты.Регистратор.Грузополучатель
Переделать как ?
ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Грузополучатель.Код КАК ГрузополучательКод,
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37350063
Программист 1сАвтор - а база случайно не файловая?

Нет, там что то серьезное на кластерах и MS SQL :-)
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37350217
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский,

Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

Правильно
(НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

Вы про букву и? Или про ссылка?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37350270
Программист 1сДмирий Романовский,

Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

Правильно
(НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

Вы про букву и? Или про ссылка?

Простите, но не понял о чем речь!

Что такое условие надо помещать в самое начало списка условий?
Это условие можно без .Ссылка задавать?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37350556
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий Романовский - сорри вопрос не вам. Думал это мне ответили на вопрос. Еще раз его задам.

HoBTID Криминал:
И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты))

...
Криминал:
И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &КонецИ в чем криминал?
И почему тогда "Возвраты.Регистратор.Грузополучатель" не криминал?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37351649
Поубирал и поправил все что смог в соответствии с данными рекомендациями.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37351653
Дмирий РомановскийПоубирал и поправил все что смог в соответствии с данными рекомендациями.
Стало работать за 4 мин вместо 10-15, если Админы ничего не успели намудрить.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37351655
Стало работать за 4мин вместо 10-15, если админы не успели чего намудрить.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37352094
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий РомановскийСтало работать за 4мин вместо 10-15, если админы не успели чего намудрить. А блокировки остались, не удалось выяснить?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37353246
DmitriyZДмирий РомановскийСтало работать за 4мин вместо 10-15, если админы не успели чего намудрить. А блокировки остались, не удалось выяснить?

Я не спрашивал. :-)
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37353250
Дмирий РомановскийDmitriyZпропущено...
А блокировки остались, не удалось выяснить?

Я не спрашивал. :-)
Админ начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я.
Но руководство после переговоров дало ему команду "помочь" а не "давить" :-)
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37353423
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмирий РомановскийДмирий Романовскийпропущено...


Я не спрашивал. :-)
Админ начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я.
Но руководство после переговоров дало ему команду "помочь" а не "давить" :-)Помоему у вас война за власть...

Напиши ему письменно вопрос про блокировки - пусть письменно и отвечает.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37354994
Программист 1сДмирий РомановскийАдмин начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я.
Но руководство после переговоров дало ему команду "помочь" а не "давить" :-)Помоему у вас война за власть...

Напиши ему письменно вопрос про блокировки - пусть письменно и отвечает.

Да нет. Систему только внедряют. Контора большая. Им пока не до моих рабочих проблем. Я не "программист".
Никто там просто не ожидал наличия продвинутых пользователей 1С.
Думали что всем хватит штатных отчетов.
А мне и конслоли запросов мало :-)

Естественно, что как только я звесил недоделанный запрос на 6мин админ обалдел.
А года узнал что я еще и обработки делаю - обалдел 2 раза.

В итоге мне сказали предъявить обработки на "экспертизу".
Спасибо что вы мне тут подсказали как "вылизать" запросы.
После доделок запрос на сервер отрабатывает стабильно без задержек при заданном интервале за 10 сек. 80% времени уходит на перегонку данных.

Надеюсь, что после "экспертизы" всё встанет на свои места.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358158
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дак а что тут экперементировать, поймать запрос профайлером если есть хинт (NOLOCK) значить DIRTY READ и не о каких блокировках речи быть не может, если хинта нет то (если не управляемые блокировки) уровень изоляции REPEATABLE READ (уже имеем блокировочки), если управляемые то READ COMMITED блокировочки тоже есть, учитывая что документы пишут себя в SERIALIZABLE то .....

P.S. Написанное выше - истина для MSSQL
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358191
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XenoXДак а что тут экперементировать, поймать запрос профайлером если есть хинт (NOLOCK) значить DIRTY READ и не о каких блокировках речи быть не может, если хинта нет то (если не управляемые блокировки) уровень изоляции REPEATABLE READ (уже имеем блокировочки), если управляемые то READ COMMITED блокировочки тоже есть, учитывая что документы пишут себя в SERIALIZABLE то .....

P.S. Написанное выше - истина для MSSQL вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Иначе что, запустил отчет на пол - часа и никто не может доки проводить?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358220
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Иначе что, запустил отчет на пол - часа и никто не может доки проводить?

Есть сомнения насчет dirty read особенно для отчетов, легко огрести несогласованных данных, с фантомами и прочей радостью, для всевозможных списков точно nolock используется, к сожалению особо не задавался данным вопросом и утверждать на все 100% не могу, надо брать профайлер и смотреть.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358253
nicktcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZ...
вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ.


Вообще-то блокировки читающими транзакциями в СУБД не ставятся.
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358430
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nicktcherDmitriyZ...
вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ.


Вообще-то блокировки читающими транзакциями в СУБД не ставятся. Да ну? Проведите эксперимент: напишите в 1С простой запрос и поставьте ему "ДЛЯ ИЗМЕНЕНИЯ" запрос ничего не пишет, только читает однако данные будут заблокированы. На самом деле запомнить довольно просто читаем в транзакции - есть блокировка, читаем вне транзакции - блокировок нет (это касаемо 1С)
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37358646
Фотография XenoX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nicktcherDmitriyZ...
вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ.


Вообще-то блокировки читающими транзакциями в СУБД не ставятся.

а как же уровни изоляции выше read commited?
...
Рейтинг: 0 / 0
Как избежать блокировки?
    #37366158
nicktcher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitriyZnicktcherпропущено...


Вообще-то блокировки читающими транзакциями в СУБД не ставятся. Да ну? Проведите эксперимент: напишите в 1С простой запрос и поставьте ему "ДЛЯ ИЗМЕНЕНИЯ" запрос ничего не пишет, только читает однако данные будут заблокированы. На самом деле запомнить довольно просто читаем в транзакции - есть блокировка, читаем вне транзакции - блокировок нет (это касаемо 1С)

Разумеется, я имел в виду обычные запросы. "ДЛЯ ИЗМЕНЕНИЯ" принудительно выставляет блокировку на запрашиваемые данные. Дык это в документации описано
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / [игнор отключен] [закрыт для гостей] / Как избежать блокировки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]