8.х Конфликт блокировок при выполнении транзакции

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Timberwolf, 19 май 2010.

  1. TopicStarter Overlay
    Timberwolf
    Offline

    Timberwolf

    Регистрация:
    18 июл 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Добрый день. Народ помогите, вот такая проблема. База зарплата и управление персоналом редакция 2.5 (2.5.22.3). Версия предприятия 8.2 (8.2.10.82). База ведется с 01.01.2008 года. Количество пользователей 15 человек. Версия базы SQL. На 2005 SQL-е (64 разрядная операционная система).
    Сервер 1С Предприятия и сама база находятся на разных серверах. Гигабитная сеть.
    Вообщем проблема в том, что постоянно вылитает ошибка "Конфликт блокировок при выполнении транзакции" при расчете каких либо документов (Начисление ЗП, Оплата по больничному и т.д.) Все те рекомендации которая дала компания 1С были выполнены, это такие как: Проведение регламентных операций в SQL, перенос сервера 1С предприятия и SQL на разные сервера. НО ВСЕ РАВНО НЕ ПОМОГАЕТ. База размером 4.5 Gb. Если у кого есть опыт в решении данной проблемы просьба ответить. Заранее благодарен!
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Для начала самое простое: сетку пропингуйте.. Может где-то "сопля висит" и канал не стабилен или оборудование "задумывается"
  3. TopicStarter Overlay
    Timberwolf
    Offline

    Timberwolf

    Регистрация:
    18 июл 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    с сеткой все ок.
    да и раньше на одном сервере трабла была та же.
    так что это не сетка.
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128
    Reply from 10.248.170.31: bytes=2048 time<1ms TTL=128

    Ping statistics for 10.XXX.XXX.XX:
    Packets: Sent = 13, Received = 13, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
    Control-C
    ^C
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Конфигурация типовая? В типовой таких проблем не будет - видимо, где-то криво дописано.
  5. TopicStarter Overlay
    Timberwolf
    Offline

    Timberwolf

    Регистрация:
    18 июл 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Народ подскажите таблица в SQL 2005 _AccumRgT6994 имеет количество строк более 25 000 000. Явный косяк. Кто-нибудь знает смысловую нагрузку данной таблицы? Размер таблицы около 2Gb. Конфа типовая ЗУП 2.5.22.3.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    что по этоиму поводу говорит метод глобального контекста
    ПолучитьСтруктуруХраненияБазыДанных() ?
  7. TopicStarter Overlay
    Timberwolf
    Offline

    Timberwolf

    Регистрация:
    18 июл 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Перем мТаблицыХранения;

    Процедура ОбновитьТаблицы()
    мТаблицыХранения = ПолучитьСтруктуруХраненияБазыДанных(, Истина);
    мТаблицыХранения.Сортировать("ИмяТаблицыХранения");
    ТаблицыSQL.Очистить();
    Для каждого СтрокаТаблХранения Из мТаблицыХранения Цикл
    СтрокаТаблицыSQL = ТаблицыSQL.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаТаблицыSQL, СтрокаТаблХранения);
    КонецЦикла;
    КонецПроцедуры

    Функция НайтиТекСтрокуТаблицыХранения()
    СтрокаТаблХранения = Неопределено;
    ТекСтрокаТаблиц = ЭлементыФормы.ТаблицыSQL.ТекущаяСтрока;
    Если ТекСтрокаТаблиц <> Неопределено Тогда
    СтрокаТаблХранения = мТаблицыХранения.Найти(ТекСтрокаТаблиц.ИмяТаблицыХранения, "ИмяТаблицыХранения");
    КонецЕсли;

    Возврат СтрокаТаблХранения;
    КонецФункции // НайтиТекСтрокуТаблицыХранения()

    Процедура ОбновитьПоля()
    СтрокаТаблХранения = НайтиТекСтрокуТаблицыХранения();
    Если СтрокаТаблХранения <> Неопределено Тогда
    ПоляSQL.Очистить();
    ПоляХранения = СтрокаТаблХранения.Поля;
    Для каждого СтрокаПоляХранения Из ПоляХранения Цикл
    СтрокаПоляSQL = ПоляSQL.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаПоляSQL, СтрокаПоляХранения);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры

    Процедура ОбновитьИндексы()
    СтрокаТаблХранения = НайтиТекСтрокуТаблицыХранения();
    Если СтрокаТаблХранения <> Неопределено Тогда
    ИндексыSQL.Очистить();
    ИндексыХранения = СтрокаТаблХранения.Индексы;
    Для каждого СтрокаИндексаХранения Из ИндексыХранения Цикл
    СтрокаИндексаSQL = ИндексыSQL.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаИндексаSQL, СтрокаИндексаХранения);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры

    Процедура ОбновитьПоляИндекса()
    ТекСтрокаИндексов = Неопределено;
    СтрокаИндексаХранения = Неопределено;
    СтрокаТаблХранения = НайтиТекСтрокуТаблицыХранения();
    Если СтрокаТаблХранения <> Неопределено Тогда
    СтрокаИндексаХранения = Неопределено;
    ТекСтрокаИндексов = ЭлементыФормы.ИндексыSQL.ТекущаяСтрока;
    КонецЕсли;

    Если ТекСтрокаИндексов <> Неопределено Тогда
    ИндексыХранения = СтрокаТаблХранения.Индексы;
    СтрокаИндексаХранения = ИндексыХранения.Найти(ТекСтрокаИндексов.ИмяИндексаХранения, "ИмяИндексаХранения");
    КонецЕсли;

    Если СтрокаИндексаХранения <> Неопределено Тогда
    ПоляИндексаSQL.Очистить();
    ПоляИндекса = СтрокаИндексаХранения.Поля;
    Для каждого СтрокаПоляИндексаХранения Из ПоляИндекса Цикл
    СтрокаПоляИндексаSQL = ПоляИндексаSQL.Добавить();
    ЗаполнитьЗначенияСвойств(СтрокаПоляИндексаSQL, СтрокаПоляИндексаХранения);
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры

    Процедура ОбновитьИнформациюОТаблице()
    ИмяТекущейСтраницы = ЭлементыФормы.ПанельСвойствТаблицы.ТекущаяСтраница.Имя;
    Если ИмяТекущейСтраницы = "Поля" Тогда
    ОбновитьПоля();
    ИначеЕсли ИмяТекущейСтраницы = "Индексы" Тогда
    ОбновитьИндексы();
    ОбновитьПоляИндекса();
    КонецЕсли;
    КонецПроцедуры

    Процедура ДействияФормыОбновить(Кнопка)
    ОбновитьТаблицы();
    КонецПроцедуры

    Процедура ТаблицыSQLПриАктивизацииСтроки(Элемент)
    ОбновитьИнформациюОТаблице();
    КонецПроцедуры

    Процедура ПанельСвойствТаблицыПриСменеСтраницы(Элемент, ТекущаяСтраница)
    ОбновитьИнформациюОТаблице();
    КонецПроцедуры

    Процедура ИндексыSQLПриАктивизацииСтроки(Элемент)
    ОбновитьПоляИндекса();
    КонецПроцедуры

    Процедура ПриОткрытии()
    ОбновитьТаблицы();
    КонецПроцедуры



    ВОТ КОД ОБРАБОТКИ

    Ниже приведено изображение выполненного результата. Синим помечена именно та таблица кот. нужна.

    Таблица SQL : _AccumRgT6994
    Таблица 1С: "" - не представлена
    Назначение таблицы: ИТОГИ

    Поля:
    Поле SQL Поле 1С
    _Period
    _Fld6988RRef Физлицо
    _Fld6989RRef Организация
    _Fld6990 ПериодВзаиморасчетов
    _Fld6991 СуммаВзаиморасчетов
    _Splitter

    Имя индекса SQL
    _AccumR6994_ByDims_TRRTN
    _AccumR6994_ByDims6993_TR


    Вообщем в двух словах: Я не могу понять пока вот пока чего. Понятно что в данную таблицу идет запись по физлицу и его выплатам, в разрезе периода. Но так как Таблица 1С не представлена
    то нужна ли вообще данная информация для работы типовой конфигурации или, это просто таблица куда идет запись информации и не для чего другого данная таблица не служит.
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Это таблица итогов - если она такая здоровая, значит регистр не выводиться в ноль по каким-то измерениям
  9. TopicStarter Overlay
    Timberwolf
    Offline

    Timberwolf

    Регистрация:
    18 июл 2008
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Скажите, что можно сделать чтоб подчистить данную таблицу, ПРАВИЛЬНО. Или можно просто на языке запроса взять да и удалть записи. Вот пример:
    Delete from БазаДанных.dbo.таблица where _period > '2010-12-31 00:00:00'
  10. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Правильно: это посмотреть, в разрезе каких измерений зависли остатки.
    Посмотрите, что именно это за таблица итогов и сформируете по ней остатки. Тогда станет уже понятнее.

Поделиться этой страницей