Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
|

start [/forum/topic.php?fid=28&fpage=78&tid=1521167]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
18ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 297ms |

| 0 / 0 |
