Удаление данных напрямую в SQL

26.02.21

Разработка - Инструментарий разработчика

Порой так и хочется грохнуть что нить в скуле, но наталкиваешься на отсутствие понятных и функциональный инструментов. Вроде как что то и есть, но явно писанное для каких то конкретных простых целей. И так очередное творение в данной тематике. Особенности: удаление порциями, отображение готового текста запроса, отбор данных с помощью СКД (в отборе учитываются составные типы и обращения через точку).

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Удаление данных напрямую в SQL:
.epf 35,20Kb ver:1.3
220
220 Скачать (1 SM) Купить за 1 850 руб.

Работу с обработкой можно поделить на 3 части:

1) Выбор объектов для удаления и настройка отборов

2) Формирование текстов запросов

3) Выполнение запросов

Объекты и их настройки

Объекты

Удалить можно следующие объекты:

  • Справочники (+ТЧ, Подчиненные с их ТЧ, Подчиненные подчиненных и тд)
  • Документы (+Движения, Журналы, Последовательности, ТЧ)
  • Регистры сведений (только основная таблица)
  • Регистры накопления (только основная таблица)
  • Регистры бухгалтерии (только основная таблица, +Субконто)
  • Бизнес процессы (+ТЧ, Задачи с их ТЧ - не учитываются вложенные БП)
  • Задачи (+ТЧ)

Регистры расчета пока что не включены в этот список, буду уже смотреть по количеству желающих.

То что указано в скобках тоже удаляется вместе с основным объектом.

Поясню ситуацию с вложенными БП при удалении основного: реализация подобного пока что мне кажется слишком трудоемкой, и возможно не нужной. Анализировать карту маршрута для выявления какой именно БП может быть вложенным - не предлагать, так как мой опыт говорит об использовании совсем не тривиальных схем с переопределением БП. Самый простой способ - это удалять БП с учетом порядка и правильного отбора.

Отборы

Для настройки отборов в таблице есть специальная колонка, проваливаемся туда и получаем полноценный редактор отборов СКД:

Отбор можно делать только по реквизитам (основным, стандартным, общим и тд), по ТЧ нельзя. Отбор можно делать по полям полей (через точку), количество уровней не ограничено. В отборе можно применять любые группировки условий (И, ИЛИ, НЕ).

Поддерживаются следующие виды сравнения:

  • Равно
  • Не равно
  • Больше
  • Больше или равно
  • Меньше
  • Меньше или равно
  • Соответствует шаблону
  • Не соответствует шаблону
  • В списке
  • Не в списке

Другие виды сравнения будут выдавать ошибку при формировании запросов. К сожалению я не нашел простого способа оставить только разрешенные виды, хитрый СКД все равно подставляет свое, поэтому тратить время на написание своего отборщика не стал.

Если кому то нужно сделать отборы "В группе", то для этого сделайте группу отборов "ИЛИ" и добавьте отборы вида Родитель.Родитель.Родитель и тд. Да, этот вариант будет не производительным как у 1С, да и я тут не стал особо заморачиваться с этим, но тем не менее для данной обработки в самый раз.

Составные типы

Отдельно стоит остановиться на составных типах. В обработке учтено практически все что с ними связано). Основная сложность это обработка обращений через точку, аля вида Регистратор.Дата. В данном случае к основной таблице будут соединятся все, которые только может содержать составной тип (собстно как и у 1С). Так же учтено что конечного реквизита может и не быть у некоторых таблиц и их в итоговом запросе не будет: как пример имеем отбор Регистратор.СкладОтправитель, и из 10 документов-регистраторов только 2 имеют конечный реквизит СкладОтправитель, вот именно эти 2 таблицы и будут присоединены к основной.

Можно делать отбор по значению НЕОПРЕДЕЛЕНО.

Сохранение и загрузка настроек

Все сделанные настройки можно сохранить для последующего повторного использования. Это может пригодиться для выполнения регламента подготовки базы для разработки или для удаления в нескольких базах.

Формирование запросов

Для того чтобы получить запросы нужно нажать на кнопку "Получить запросы БД". После этого по всем отмеченным объектам будут сформированы запросы на основании отборов. Сам текст будет размещен в соответствующей колонке. На данном этапе настройку подключения делать не нужно.

Текст запроса содержит в себе:

  • Объявление некоторых переменных, одна из которых это YearOffset, так как на момент формирования оффсет еще не известен, то он закоменчен.
  • Порции запросов на выполнение, разделенных строкой --GO. Чуть позже напишу зачем.
  • Цикл выполнения порции запроса с учетом значения в поле "Размер порции"

По мимо основного объекта, в текст добавляются на удаление еще и зависимые (описаны выше), причем порядок именно такой, что основной объект будет удаляться в самом конце.

При построении отборов с применением даты, учитывается оффсет как равный 0, так и 2000. Пустые даты при этом соответственно подгоняются под него.

Соединения для элементов отборов формируются независимо. Как пример есть 2 элемента отбора Родитель.Родитель и Родитель.Родитель.Родитель, так вот в итоговом тексте запроса будет 2 соединения Родитель.Родитель. Да, одно соединение лишнее, но так было проще сделать. Будем надеется что великий скуль все заоптимизирует).

Если отборов нет, то будет TRUNCATE TABLE. Но так как с объектом удаляются еще и зависимые и они могут содержать в себе не только данные удаляемого, как пример регистр накопления, где может быть несколько регистраторов, то для них данная ситуация учитывается и будет не TRUNCATE зависимого, а удаление по типу объекта.

Сам текст запроса формируется с форматированием, комментами и тд. Так что не придется ломать глаза, разбирая месиво букв.

Если что не нравится в запросе, то можно его и отредактировать, провалившись в соответствующее поле.

Пример текста запроса:

--declare @YearOffset int = ?
declare @RowsDeleted int
--GO

--РегистрНакопления.Продажи
SET @RowsDeleted = 1
WHILE (@RowsDeleted > 0)
	BEGIN
		DELETE TOP (100000) AccumRg53 
		FROM  
			_AccumRg53 AS AccumRg53 with (tablockx)
		
		INNER JOIN --Документ.РеализацияТоваровУслуг
			_Document35 AS Document35 with (nolock)
		ON
			AccumRg53._RecorderRRef=Document35._IDRRef
			AND AccumRg53._RecorderTRef=CAST(35 AS binary(4))
		
		WHERE
			(--Номер
			Document35._Number = '111'
			)

		SET @RowsDeleted = @@ROWCOUNT
	END
--GO

--Документ.РеализацияТоваровУслуг.Товары
SET @RowsDeleted = 1
WHILE (@RowsDeleted > 0)
	BEGIN
		DELETE TOP (100000) Document35_VT45 
		FROM  
			_Document35_VT45 AS Document35_VT45 with (tablockx)
		
		INNER JOIN --Документ.РеализацияТоваровУслуг
			_Document35 AS Document35 with (nolock)
		ON
			Document35_VT45._Document35_IDRRef=Document35._IDRRef
		
		WHERE
			(--Номер
			Document35._Number = '111'
			)

		SET @RowsDeleted = @@ROWCOUNT
	END
--GO

--Документ.РеализацияТоваровУслуг
SET @RowsDeleted = 1
WHILE (@RowsDeleted > 0)
	BEGIN
		DELETE TOP (100000) Document35 
		FROM  
			_Document35 AS Document35 with (tablockx)
		
		WHERE
			(--Номер
			Document35._Number = '111'
			)

		SET @RowsDeleted = @@ROWCOUNT
	END
--GO

Текст запроса можно, даже, выполнять не обработкой, а скопировать в менеджмент студио и выполнить там.

Посмотреть только отмеченные объекты для формирования/выполнения запросов можно по кнопке со стрелкой (рядом с кнопкой получения запросов). Это очень удобно когда их много и они разбросаны по разным коллекциям метаданных.

Выполнение запросов

Перед выполнением необходимо настроить подключение, для этого надо жамкнуть на гиперссылку рядом с кнопкой выполнения. Откроется окно:

Тут же есть кнопка проверки соединения.

Также перед выполнением можно поменять порядок удаления объектов. Находится он в последней колонке и задан только у коллекций. Но можно задать у конкретного объекта, в противном случае будет браться порядок коллекции.

При нажатии на кнопку выполнения производятся следующие действия:

  • Установка соединения
  • Построение запросов с учетом порядка
  • Получение YearOffset за место закоменченного
  • Разбитие текста запроса на порции по разделителю --GO, другими словами выполняется не весь запрос целиком, каждая порция отдельно, при этом первая порция объявления переменных присоединяется ко всем последующим
  • Вывод состояния выполнения с прогресс баром

Все выполнение идет на клиенте и в любой момент можно прервать.

По окончанию выводится информация о длительности и количестве удаленных.

Для уменьшения таблиц итогов регистров и для их актуализации после чистки - выполнить пересчет итогов, реструктуризацию и тд.

Ну и шринкануть базу для получения эффекта)

PS

При проверки на порцию в 100000 объектов мне хватало 700-800мб журнала транзакций, но конечно же все зависит от таблицы.

SQL удаление очистка

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    160072    881    399    

866

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    8046    60    28    

70

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23612    68    45    

117

SALE! 15%

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8500 руб.

10.11.2023    10525    36    27    

62

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15494    35    7    

71

SALE! 35%

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3120 руб.

14.01.2013    188163    1140    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17352    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7751    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Константин С. 672 10.07.17 12:59 Сейчас в теме
Вопросик
Если открыть в КА 1.1, запущенную УФ. Выдает ошибку

Ошибка инициализации модуля: ВнешняяОбработка.УдалениеДанныхБД.Форма.Форма.Форма
по причине:
{ВнешняяОбработка.УдалениеДанныхБД.Форма.Форма.Форма(1482,12)}: Процедура или функция с указанным именем не определена (СтрНайти)
Позиция = <<?>>СтрНайти(Строка, Разделитель);


1С:Предприятие 8.3 (8.3.9.2233)

также проверил на УТ 10, запущенной как УФ.

Как понимаю проблема "старых" конфигураций, ее можно решить?)
2. zarucheisky 10.07.17 13:02 Сейчас в теме
(1)
В Форму обработки добавьте функцию:
Функция СтрНайти(ГдеИскать,ЧтоИскать)
возврат Найти(ГдеИскать,ЧтоИскать);
КонецФункции
3. Константин С. 672 10.07.17 13:16 Сейчас в теме
Это получилось.

Нарисовалось еще

МассивЧастейПоля=<<?>>СтрРазделить(ИмяПоля,"."); //Регистратор.Партнер.Код (Проверка: Толстый клиент (обычное приложение))
4. Константин С. 672 10.07.17 13:38 Сейчас в теме
Решил
МассивЧастейПоля=РазложитьСтрокуВМассивПодстрок(ИмяПоля,".");
5. spezc 793 10.07.17 13:41 Сейчас в теме
Опасная вещь. Для многих будет гранатой в руке.
6. spezc 793 10.07.17 13:41 Сейчас в теме
Но инструмент 100% нужный, спасибо.
7. Константин С. 672 10.07.17 13:53 Сейчас в теме
Нет счастья

ps:
Моя ощибка) нет к той базе подключался.
8. Константин С. 672 10.07.17 14:22 Сейчас в теме
Предложение.
выводить статистику по выбранным объекта, можно с учетом отборов. Сразу понимать объем удаляемых объектов (без подчиненных элементов типа движения у документов)
11. denacid 95 10.07.17 19:19 Сейчас в теме
(8) хм, записал в пожелания
9. smilebringer 10.07.17 18:57 Сейчас в теме
Как обстоят дела со ссылками на удаляемые объекты в таблицах последовательностей, таблицах регистрации обменов, служебных таблицах итогов регистров, таблицах агрегатов? На выходе будут битые ссылки?
12. denacid 95 10.07.17 19:24 Сейчас в теме
(9) Последовательности удаляются вместе с документами. Регистрацию обменов специально не учитывал, при нормальном использовании обмена там записей не должно быть много или вообще не должно быть. По регистрам только основные таблицы - в описании про это сказано.
10. denacid 95 10.07.17 19:18 Сейчас в теме
Старался избегать новомодных функций типа СтрНайти, СтрРазделить, но вижу что несколько упустил, исправлю
13. spectator2z 11.07.17 08:01 Сейчас в теме
В чем конечный замысел данного функционала? Даёт существенный прирост производительности операции удалёния по сравнению с платформенной? Есть замеры?
17. denacid 95 11.07.17 19:02 Сейчас в теме
(13) Удалить 100 000 объектов по одному или разом? тут замеры не нужны)))
19. spectator2z 12.07.17 07:21 Сейчас в теме
(17) Ну можно удалять ни по одному а в транзакции сразу тысяч по 10. Интересно конечно сравнение по скорости.

Кстати есть ли возможность отбора по разделителю данных? У меня области данных в которых есть десятки миллионов записей справочников нси, нужно удалять все данные области.
23. denacid 95 12.07.17 19:45 Сейчас в теме
(19)
Ну можно удалять ни по одному а в транзакции сразу тысяч по 10. Интересно конечно сравнение по скорости.

Ну возьмем к примеру справочник. Удалить мы можем элемент только вот примерно таким кодом:
Объект=Ссылка.ПолучитьОбъект();
Объект.Удалить();
Всего 2 строчки кода, но что стоит за ними: получение объекта - SELECT из SQL всего объекта, ну и DELETE напоследок. Итого имеем 2 запроса к SQL. А теперь мы хотим удалить 5 млн элементов и соответственно перемножаем цифры. И тут я не учитываю что платформа захочет сделать запись в журнал регистрации, может и SQL что нибудь у себя перестроит в этот момент, а так же будет не 2 запроса, а 2 обращения по одному запросу и тд.
24. denacid 95 12.07.17 19:50 Сейчас в теме
(19)
Кстати есть ли возможность отбора по разделителю данных?

Разделитель - это общий реквизит. Отбор и удаление по общим реквизитам предусмотрено, так что можно.
14. wondermaker 11.07.17 08:15 Сейчас в теме
Т.е. итоги по регистру обработка не чистит?

"Для уменьшения таблиц итогов регистров выполнить пересчет итогов, реструктуризацию "

тогда уж писать надо, что не для "уменьшения таблиц итогов", а для их правильного пересчета. Т.к. иначе итоги будут такие дикие, да еще с потерянными ссылками.

Я бы такое рискнул делать только на тестово-разработческих базах
tormozit; +1 Ответить
16. denacid 95 11.07.17 19:00 Сейчас в теме
(14) По формулировке с вами согласен, дополню.
18. denacid 95 11.07.17 19:05 Сейчас в теме
(14)
Я бы такое рискнул делать только на тестово-разработческих базах


Изначально именно для этих целей обработка и создавалась).
15. DoctorRoza 11.07.17 16:57 Сейчас в теме
20. user791868 12.07.17 07:40 Сейчас в теме
Если нужно удалить данные из таблицы БД то тут
DELETE FR OM <имя таблицы > WH ERE <предикат>;

Если нужно выполнить хранимую процедуру то тот нужно знать что за процедуру и какие она использует аргументы в запросе.
Как это делается можно тут по читать https://msdn.microsoft.com/ru-ru/library/ms188332%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396
21. platon_ 10 12.07.17 17:27 Сейчас в теме
Добрый день.
А нарушение лицензионного соглашения с 1С не смущает?

Лицензионное соглашение не позволяет использовать недокументированные фирмой "1С" средства для построения решений на платформе 1С:Предприятие. Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки "1С:Предприятие" (включая ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи.

Во всех остальных случаях лицензионное соглашение позволяет использовать для построения решений только штатные средства платформы. В частности, можно обращаться к данным информационной базы только при помощи объектов "1С:Предприятия", специально предназначенных для работы с данными (запросы, справочники, документы и т.д.). Нельзя обращаться к данным информационной базы напрямую, минуя уровень объектов работы с данными "1С:Предприятия" - например при помощи средств СУБД или при помощи внешних компонент, которые реализуют прямой доступ к СУБД. Это ограничение распространяется на любые действия с данными, в том числе на изменение их структуры, а так же на чтение или изменение самих данных информационной базы или служебных данных "1С:Предприятия".

Данное ограничение необходимо для обеспечения стабильности работы механизмов системы, осуществления поддержки и возможности перехода на новые версии "1С:Предприятия".
22. denacid 95 12.07.17 19:34 Сейчас в теме
(21) Добрый день. Смущает конечно, но иногда по другому никак. Я не заставляю использовать эту обработку как панацею. Если есть возможность все сделать штатными средствами, то лучше так и сделать.
JohnyDeath; 1attimo; +2 Ответить
25. Константин С. 672 22.08.17 18:41 Сейчас в теме
v1.2 - добавил информацию о количестве удаляемых/удаленных

Хм, не подскажите где, в частности какое количество будет удаляться?
26. denacid 95 23.08.17 19:29 Сейчас в теме
(25)
В форме отбора есть кнопка, а также по результату удаления в итоговом сообщении.
27. vladnet 367 14.09.17 23:10 Сейчас в теме
Спасибо огромное) не часто встретишь тут инструмент который настолько бы подходил к искомой задаче (как раз искал чем бы поудалять огромное количество документов)
28. tormozit 7231 15.09.17 07:14 Сейчас в теме
Еще можно делать так. Выбрать ключи строк основной таблицы обычным запросом, полученным из компоновки, во временную таблицу. При этом отловить ее имя через техножурнал. Затем уже удалять строки основной таблицы вместе с подчиненными, получая ключи из временной таблицы. Это позволит меньше писать своего кода. Но потребуется управлять техножурналом.
29. denacid 95 15.09.17 19:09 Сейчас в теме
(28) Мой первый вариант реализации отталкивался от удаления по ключам, и как раз была проблема передачи всего это дела на SQL. Использовать техжурнал как то не догадался, может быть и пошел бы этим путем))) ну что сделано то сделано.
37. tormozit 7231 21.05.23 23:13 Сейчас в теме
30. пользователь 15.01.20 06:25
Сообщение было скрыто модератором.
...
31. setver 05.01.21 06:18 Сейчас в теме
Не выходит каменный цветок
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): [DBNETLIB][ConnectionOpen (ParseConnectParams()).]Недопустимое подключение.

все перерыл, помогите плиз
32. redtram 53 25.02.21 17:41 Сейчас в теме
Невозможно добавить в значение отбора перечисление.
Исправление (добавить после строки 1104 (ЗначениеПоляБД=ПолучитьБинарнуюСтрокуПоИдентификатору(ИдентификаторЗначенияОтбора);):
ИначеЕсли Метаданные.НайтиПоТипу(ТипЗначенияОтбора) <> Неопределено 
					И Метаданные.Перечисления.Содержит(Метаданные.НайтиПоТипу(ТипЗначенияОтбора)) Тогда
					
			Если СтрокаДереваПоля.СоставнойТип Тогда
				ВызватьИсключение "Не тестировалось для составных типов с перечислениями если вообще такое возможно..." + Строка(ИмяПоля);
			КонецЕсли;
			
			СуффиксПоляБД="RRef";

			ЗначениеПоляБД = ЗначениеВСтрокуВнутр(ЗначениеОтбора);
			ЗначениеПоляБД = "0x" + Сред(ЗначениеПоляБД, Найти(ЗначениеПоляБД, ":") + 1, СтрДлина("A097AAA23D5DFA5E490B94230225ACB9"));
Показать
33. denacid 95 26.02.21 20:50 Сейчас в теме
34. Ranetka 23 12.02.22 20:04 Сейчас в теме
Слуште, ваш сервис удаления наверняка прекрасен (скоро будут пробовать и отпишусь) и описание вы такое милое к нему сделали, но блин исправьте плз орфографические ошибки в словах что-нить, как-то, итак и т.д, режет глаз :((
35. Ranetka 23 16.02.22 19:39 Сейчас в теме
Сервис бомбический! Все работает. Задачу решает. Удаление 10 млн элементов справочников штатными средствами заняло бы минимум 4 месяца, обработка их удалила за 10 часов. Спасибо автору. Мое восхищение.
36. alex_2112 02.01.23 15:38 Сейчас в теме
в обычной приложении будет работать?
38. due 390 06.09.23 10:53 Сейчас в теме
А у вас нет версии для 8.1? :)
39. alexbur 28 21.01.24 16:58 Сейчас в теме
Добрый день.

На MSSQL 11 работать будет?
40. urbanist 86 25.02.24 10:10 Сейчас в теме
Добрый день. В целом хорошо и быстро отработала в УТ 11.5. Но, по какой-то причине в упор не хочет удалять реализации товаров и услуг с любым отбором(0 из 0). Созданный скрипт выдает ошибки в SQL:
1. По дате(меньше 01.01.2024):
Сообщение 137, уровень 15, состояние 2, строка 21
Необходимо объявить скалярную переменную "@YearOffset".
2. С пометкой на удаление и другими отборами:
(строк обработано: 0)
Запрос отработан успешно


Причем, другие обработки (для SQL) удаляют,хоть и заметно медленнее.
41. AtoMik 10.07.24 17:31 Сейчас в теме
Добрый день! В целом удаляет, хорошо, конечно пришлось подшаманить, чтобы допилить под удаление Корректировок записей регистров. Но вот в чем подвох...бухгалтер мне присылает отчет, где у него кривые движения по организации, я собираю консоль, висят остатки без регистраторов, в отборе по организации в регистре накопления все пусто. Что делать?
Собрал запрос к регистру на SQL c отбором по организации, все пусто, кривые данные все равно лезут

Делал на скуле пересчет итогов по регистру - не помогло

Куда копать?))
Оставьте свое сообщение