Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
1С 8.2 SQL УПП Поясните ламеру кто виноват. Внедряют у нас в конторе систему. Администратор ругается что мои простые запросы блокируют регистр.продажи, а значит я чего-то делаю не так. Для целей аналитической отчетности я с помошью ADO выгружаю нужные детальные записи регистров и справочников на др. сервер. Я даже переделал алгоритм выгрузки из регистра продаж и тяну оттуда данные запросом частями. Нужно как-то модифицировать код чтобы не вызывать блокировки или это должен сделать администратор? Использование консоли запросов приведет к такому же результату? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 20:00 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, текст запроса в студию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 20:59 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Текст запроса давайте. А вобще странно - этот регистр бессмысленно блокировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 23:54 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Перем АДОДБКоннект, стрПодключения, ИмяСервера, Ошибка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(); КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 08:50 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, в каком контексте идет запрос к 1С? Не выполняется ли он случайно в явной или неявной (при записи документа, в обработке проведения и т.д.) транзакции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 09:28 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZДмирий Романовский, в каком контексте идет запрос к 1С? Не выполняется ли он случайно в явной или неявной (при записи документа, в обработке проведения и т.д.) транзакции? Даже не знаю что ответить :-( Я запускаю обычную внешнюю обработку с этим кодом на клиентской машине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 09:46 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, в коде вроде нет криминала. Вопрос - как администратор определил, что именно ваши запросы блокируют регистр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 10:17 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Выберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 10:42 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Программист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 10:49 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZПрограммист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее.Сорри да сглупил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 11:53 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZПрограммист 1сВыберите период максимальный. Запустите вашу обработку. Паралельно попробуйте сформировать любой отчет по продажам (что использует регистр продажи). Если формируется - мордой тыкайте админа. Отчет то сформируется в любом случае. Пусть лучше любой документ по продажам попробует провести - это надежнее. Так Админ именно это и подразумевает. А как тогда работают встроенные отчеты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 11:55 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, Т.е. когда вы запускаете свою обработку, пользователи не могут проводить документы? На всякий случай еще раз просмотрите код. Если запрос к 1С идет в Попытка - Исключение, уберите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 12:12 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZДмирий Романовский, Т.е. когда вы запускаете свою обработку, пользователи не могут проводить документы? На всякий случай еще раз просмотрите код. Если запрос к 1С идет в Попытка - Исключение, уберите. Т.е вот так делать ненадо? Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) // Вставить содержимое обработчика. Отказ = истина; Попытка ВыгрузитьПродажи(); Исключение Сообщить("Ошибка : " + ОписаниеОшибки()); Возврат; КонецПопытки; КонецПроцедуры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 12:23 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 12:32 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZДмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно).Ну скорее уж транзакция... Не вижу даже теоретически чтобы "попытка" помешала - хотя конечно есть ошибки платформы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 13:29 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Программист 1сDmitriyZДмирий Романовский, уберите Попытка - Исключение. Повторите эксперимент. Сообщите результат (мне самому интересно).Ну скорее уж транзакция... Не вижу даже теоретически чтобы "попытка" помешала - хотя конечно есть ошибки платформы... Я понимаю, но мало ли, чем черт не шутит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 14:42 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) ... Криминал: И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:18 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
HoBTID Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) ... Криминал: И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &КонецИ в чем криминал? И почему тогда "Возвраты.Регистратор.Грузополучатель" не криминал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:20 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Автор - а база случайно не файловая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:21 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
HoBTID Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) ... Криминал: И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец И как правильно надо? (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) ибо не нужны лишние данные... это понятно что можно переделать, задав параметры запроса иначе началопериода(Продажи. Регистратор.Дата , День) между &Начало и &Конец[/quot] Возвраты.Регистратор.Грузополучатель Переделать как ? ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.РеализацияТоваровУслуг).Грузополучатель.Код КАК ГрузополучательКод, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:46 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Программист 1сАвтор - а база случайно не файловая? Нет, там что то серьезное на кластерах и MS SQL :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 15:47 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский, Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) Правильно (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) Вы про букву и? Или про ссылка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 16:41 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Программист 1сДмирий Романовский, Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) Правильно (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) Вы про букву и? Или про ссылка? Простите, но не понял о чем речь! Что такое условие надо помещать в самое начало списка условий? Это условие можно без .Ссылка задавать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 17:01 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий Романовский - сорри вопрос не вам. Думал это мне ответили на вопрос. Еще раз его задам. HoBTID Криминал: И (НЕ Продажи.Контрагент.Ссылка В ИЕРАРХИИ (&Контрагенты)) ... Криминал: И началопериода(Продажи. Регистратор.Дата , День) между &Начало и &КонецИ в чем криминал? И почему тогда "Возвраты.Регистратор.Грузополучатель" не криминал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2011, 19:50 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Поубирал и поправил все что смог в соответствии с данными рекомендациями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 13:45 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий РомановскийПоубирал и поправил все что смог в соответствии с данными рекомендациями. Стало работать за 4 мин вместо 10-15, если Админы ничего не успели намудрить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 13:47 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Стало работать за 4мин вместо 10-15, если админы не успели чего намудрить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 13:48 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий РомановскийСтало работать за 4мин вместо 10-15, если админы не успели чего намудрить. А блокировки остались, не удалось выяснить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2011, 16:26 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZДмирий РомановскийСтало работать за 4мин вместо 10-15, если админы не успели чего намудрить. А блокировки остались, не удалось выяснить? Я не спрашивал. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:53 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий РомановскийDmitriyZпропущено... А блокировки остались, не удалось выяснить? Я не спрашивал. :-) Админ начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я. Но руководство после переговоров дало ему команду "помочь" а не "давить" :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 11:55 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дмирий РомановскийДмирий Романовскийпропущено... Я не спрашивал. :-) Админ начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я. Но руководство после переговоров дало ему команду "помочь" а не "давить" :-)Помоему у вас война за власть... Напиши ему письменно вопрос про блокировки - пусть письменно и отвечает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2011, 13:19 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Программист 1сДмирий РомановскийАдмин начал давить на свое вышестоящее руководство дабы ввести ограничения таким как я. Но руководство после переговоров дало ему команду "помочь" а не "давить" :-)Помоему у вас война за власть... Напиши ему письменно вопрос про блокировки - пусть письменно и отвечает. Да нет. Систему только внедряют. Контора большая. Им пока не до моих рабочих проблем. Я не "программист". Никто там просто не ожидал наличия продвинутых пользователей 1С. Думали что всем хватит штатных отчетов. А мне и конслоли запросов мало :-) Естественно, что как только я звесил недоделанный запрос на 6мин админ обалдел. А года узнал что я еще и обработки делаю - обалдел 2 раза. В итоге мне сказали предъявить обработки на "экспертизу". Спасибо что вы мне тут подсказали как "вылизать" запросы. После доделок запрос на сервер отрабатывает стабильно без задержек при заданном интервале за 10 сек. 80% времени уходит на перегонку данных. Надеюсь, что после "экспертизы" всё встанет на свои места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2011, 14:07 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
Дак а что тут экперементировать, поймать запрос профайлером если есть хинт (NOLOCK) значить DIRTY READ и не о каких блокировках речи быть не может, если хинта нет то (если не управляемые блокировки) уровень изоляции REPEATABLE READ (уже имеем блокировочки), если управляемые то READ COMMITED блокировочки тоже есть, учитывая что документы пишут себя в SERIALIZABLE то ..... P.S. Написанное выше - истина для MSSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:12 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
XenoXДак а что тут экперементировать, поймать запрос профайлером если есть хинт (NOLOCK) значить DIRTY READ и не о каких блокировках речи быть не может, если хинта нет то (если не управляемые блокировки) уровень изоляции REPEATABLE READ (уже имеем блокировочки), если управляемые то READ COMMITED блокировочки тоже есть, учитывая что документы пишут себя в SERIALIZABLE то ..... P.S. Написанное выше - истина для MSSQL вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Иначе что, запустил отчет на пол - часа и никто не может доки проводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:31 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZ вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Иначе что, запустил отчет на пол - часа и никто не может доки проводить? Есть сомнения насчет dirty read особенно для отчетов, легко огрести несогласованных данных, с фантомами и прочей радостью, для всевозможных списков точно nolock используется, к сожалению особо не задавался данным вопросом и утверждать на все 100% не могу, надо брать профайлер и смотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 17:46 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZ... вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Вообще-то блокировки читающими транзакциями в СУБД не ставятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 18:10 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
nicktcherDmitriyZ... вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Вообще-то блокировки читающими транзакциями в СУБД не ставятся. Да ну? Проведите эксперимент: напишите в 1С простой запрос и поставьте ему "ДЛЯ ИЗМЕНЕНИЯ" запрос ничего не пишет, только читает однако данные будут заблокированы. На самом деле запомнить довольно просто читаем в транзакции - есть блокировка, читаем вне транзакции - блокировок нет (это касаемо 1С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2011, 21:03 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
nicktcherDmitriyZ... вроде как если мы запрос вне транзакции делаем (и нет у него директивы ДЛЯ ИЗМЕНЕНИЯ), он всегда DIRTY READ. Вообще-то блокировки читающими транзакциями в СУБД не ставятся. а как же уровни изоляции выше read commited? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2011, 07:29 |
|
||
|
Как избежать блокировки?
|
|||
|---|---|---|---|
|
#18+
DmitriyZnicktcherпропущено... Вообще-то блокировки читающими транзакциями в СУБД не ставятся. Да ну? Проведите эксперимент: напишите в 1С простой запрос и поставьте ему "ДЛЯ ИЗМЕНЕНИЯ" запрос ничего не пишет, только читает однако данные будут заблокированы. На самом деле запомнить довольно просто читаем в транзакции - есть блокировка, читаем вне транзакции - блокировок нет (это касаемо 1С) Разумеется, я имел в виду обычные запросы. "ДЛЯ ИЗМЕНЕНИЯ" принудительно выставляет блокировку на запрашиваемые данные. Дык это в документации описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2011, 17:22 |
|
||
|
|

start [/forum/topic.php?all=1&fid=28&tid=1521167]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 351ms |

| 0 / 0 |
