Консоль запросов 9000
2026-05-05
Консоль запросов. Обычно это та самая консоль запросов для управляемого приложения, которая шла вместе с конфигурацией и обновлениями на дисках ИТС - Консоль от 1с. И вроде бы вполне себе нормальная консоль, с ее помощью можно собрать запрос и посмотреть результат.
Но нужно отдать должное, она научила писать запросы и иногда просто текстом, потому что в конструкторе писать вложенные запросы или временные таблицы не очень.
Собственно этим я и ограничивался - писал запрос, потом делал обработку, вставлял текст запроса в обработку которая обрабатывала результат запроса.
Какое-то время этого было достаточно, но в итоге времени отнимается больше чем могло бы. А хотелось всего-лишь перебрать полученный результат.
И вот на страничке инфостарта о всех консолях, я решил испробовать Консоль запросов 9000
И это было то, что мне нужно. Там было еще много разных консолей, особенно интересны консоли с запросом к другой БД и графической схемой выполнения запроса. Но я остановился на Консоли запросов 9000.
Писать о том как с ней работать не буду, все об этом написано на Инфостарт и на ГитХабе, поэтому я просто приведу несколько примеров из реальной работы.
Отвязать перемещения от заказов
После свертки базы некоторые документы за прошлый год не снялись с проведения. Среди них были заказы на перемещение, и отменить их проведение нельзя, потому что перемещения созданы уже в текущем году.
Пишем запрос чтобы отобрать перемещения, которые привязаны к заказам за прошлый год. Очищаем заказ, и в каждой строке товаров убираем заказ.
ВЫБРАТЬ
ПеремещениеТоваров.Ссылка КАК Ссылка,
ПеремещениеТоваров.ЗаказНаПеремещение КАК ЗаказНаПеремещение
ИЗ
Документ.ПеремещениеТоваров КАК ПеремещениеТоваров
ГДЕ
ПеремещениеТоваров.ЗаказНаПеремещение.Дата < &Дата
И ПеремещениеТоваров.Проведен = ИСТИНА
И ПеремещениеТоваров.ЗаказНаПеремещение.Проведен = ИСТИНА
Перемещение = Выборка.Ссылка.ПолучитьОбъект();
Перемещение.ЗаказНаПеремещение = Неопределено;
Перемещение.ПеремещениеПоЗаказам = ЛОЖЬ;
Товары = Перемещение.товары;
Для Каждого Строка из Товары Цикл
Строка.ЗаказНаперемещение = Неопределено;
КонецЦикла;
Перемещение.Записать(РежимЗаписиДокумента.Проведение);
В итоге получаем перемещения отвязанные от заказов. + В алгоритме можно Заказы было бы сразу снимать с проведения и помечать на удаление.
Очистка регистра с <объект не найден>
Бывают случаи когда в базе обнаруживаются какие-либо записи с регистратором "Объект не найден". Причин на это хватает. И самым правильным выбором исправления таких записей будет их удаление.
Находим нужный регистр и в условиях ищем номер регистратор = null. Затем для каждого такого регистратора создаем пустой набор записей.
ВЫБРАТЬ РАЗЛИЧНЫЕ ТоварыОрганизаций.Регистратор КАК Регистратор ИЗ РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций ГДЕ ТоварыОрганизаций.Регистратор.Номер ЕСТЬ NULL
НаборЗаписей = РегистрыНакопления.ТоварыОрганизаций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НаборЗаписей.Записывать = Истина;
НаборЗаписей.ОбменДанными.Загрузка = Истина;
Попытка
НаборЗаписей.Записать(Истина);
Исключение
КонецПопытки;
В итоге все записи с битыми ссылками удалятся.
Добавление ставки НДС в номенклатуру
Бывает, что организация продавала без НДС, потом понадобилось добавить НДС, потом поставить другой, и не просто поменять в карточке номенклатуры, а чтобы была история изменений.
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ
Ном = Выборка.Ссылка.ПолучитьОбъект();
Ставки = Ном.ИсторияВидаСтавкиНДС.Добавить();
Ставки.Период = СтроковыеФункцииКлиентСервер.СтрокаВДату("01.04.2026");
Ставки.ВидСтавкиНДС = Перечисления.ВидыСтавокНДС.БезНДС;
Ном.ВидСтавкиНДС = Перечисления.ВидыСтавокНДС.БезНДС;
Ном.ОбменДанными.Загрузка = Истина;
Ном.Записать();
Понятно, что можно это было сделать и в групповом изменении реквизитов, но через запрос делать удобнее и нагляднее.
Вот такая вот консоль, там еще есть разные полезности, но мне пока они не понадобились.
