Особенности нейминга в универсальном случае
Скачал с Инфостарта обработку по очистке базы. Обработка классная, включил ее в свой инструментарий:
Особенно понравился индикатор выполнения, я уже и отвык от него в управляемых формах, а в обычных формах это было must have.
Жаль, конечно, нельзя удалять регистры, ну да ладно.
В процессе очистки документов я столкнулся с ошибкой выполнения вот такого кода:
Запрос = Новый Запрос( "ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоВсего, | СУММА(ВЫБОР | КОГДА " + ДокИмя + ".Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоПроведенных, | СУММА(ВЫБОР | КОГДА " + ДокИмя + ".ПометкаУдаления | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоПомеченныхНаУдаление |ИЗ | Документ." + ДокИмя + " КАК " + ДокИмя);
Если в документе есть табличная часть, которая соответствует имени документа, выдается ошибка.
Я переписал код запроса, чтобы у документа был псевдоним Т (как видите, я по привычке и форматирование поправил):
Запрос = Новый Запрос( "ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоВсего, | СУММА(ВЫБОР | КОГДА Т.Проведен | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоПроведенных, | СУММА(ВЫБОР | КОГДА Т.ПометкаУдаления | ТОГДА 1 | ИНАЧЕ 0 | КОНЕЦ) КАК КоличествоПомеченныхНаУдаление |ИЗ | Документ." + ДокИмя + " КАК Т")
В итоге ошибка пропала, но если в документе вдруг встретится табличная часть с именем Т, ошибка опять вернется. Это маловероятно, но решение не универсально.
Чтобы его сделать универсальным, надо использовать вместо Т уникальный GUID. Тогда гарантированно совпадений не будет.
Я кстати часто, когда мне нужно добавить в таблицу значений колонку для хранения промежуточных данных, использовал идентификатор колонки в виде GUID. Хороший метод, защищает от ненужных совпадений.
Сообщил автору разработки о своем предложении в личку, возможно, возьмет на заметку.
Запрос = Новый Запрос(
«ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоВсего,
| КОЛИЧЕСТВО(ВЫБОР
| КОГДА Проведен
| ТОГДА Ссылка
| КОНЕЦ) КАК КоличествоПроведенных,
| КОЛИЧЕСТВО(ВЫБОР
| КОГДА ПометкаУдаления
| ТОГДА Ссылка
| КОНЕЦ) КАК КоличествоПомеченныхНаУдаление
|ИЗ
| Документ.» + ДокИмя)
да, в данном случае так тоже можно (без алиасов), но я о более общем случае, когда без алиасов не обойтись.