Получение измененных и удаленных данных узла плана обмена
К таблицам изменений планов обмена можно строить запросы. И если данные удалить, то в таблице изменений ссылка будет заполнена (<Объект не найден ...>), а в данных этой ссылки не будет (NULL). Пример запроса:
К таблицам изменений планов обмена можно строить запросы. И если данные удалить, то в таблице изменений ссылка будет заполнена (<Объект не найден ...>), а в данных этой ссылки не будет (NULL). Пример запроса:
ВЫБРАТЬ
НоменклатураИзменения.Ссылка КАК Ссылка,
НоменклатураИзменения.Ссылка.Ссылка КАК Ссылка1
ИЗ
Справочник.Номенклатура.Изменения КАК НоменклатураИзменения
ГДЕ
НоменклатураИзменения.Узел = &Узел
//И НоменклатураИзменения.Ссылка.Ссылка ЕСТЬ NULL
Результат:Первый - Первый
<Объект не найден> (92852:832900155d00f10711eb173504f418ec) - <NULL>
Четвертый - Четвертый
#ПланОбмена #интеграция #РегистрацияИзменений #запросыПросмотр содержимого временных таблиц в отладке
Если остановиться в отладке после выполнения запроса и выполнить метод
Для старых версий платформы можно в отладке поменять текст запроса на
#ВременныеТаблицы #запросы #отладка #1с
Если остановиться в отладке после выполнения запроса и выполнить метод
Запрос.ВыполнитьПакетСПромежуточнымиДанными()
, получим массив с результатами всех входящих в пакет запросов (в т.ч. временных таблиц).Для старых версий платформы можно в отладке поменять текст запроса на
ВЫБРАТЬ * ИЗ {НазваниеВременнойТаблицы}
. Подробнее тут.#ВременныеТаблицы #запросы #отладка #1с
АВТОНОМЕРЗАПИСИ()
Функция языка запросов для формирования поля с уникальным, последовательно возрастающим значением (ключевое поле) во временной таблице.
Особенности:
1|Не гарантируется, что начальное значение счетчика будет равно 1 для любой временной таблицы
2|Не поддерживается в запросах, которые не формируют временную таблицу
3|Не поддерживается в запросах, содержащих ОБЪЕДИНИТЬ на верхнем уровне
4|Не поддерживается в выражениях языка запросов
Пример запроса | Подробнее на ИТС
#запросы #ЯзыкЗапросов #1С
Функция языка запросов для формирования поля с уникальным, последовательно возрастающим значением (ключевое поле) во временной таблице.
Особенности:
1|Не гарантируется, что начальное значение счетчика будет равно 1 для любой временной таблицы
2|Не поддерживается в запросах, которые не формируют временную таблицу
3|Не поддерживается в запросах, содержащих ОБЪЕДИНИТЬ на верхнем уровне
4|Не поддерживается в выражениях языка запросов
Пример запроса | Подробнее на ИТС
#запросы #ЯзыкЗапросов #1С
Вариант синтаксиса ВЫБОР в языке запросов 1С
Можно писать ВЫБОР так:
Можно писать ВЫБОР так:
ВЫБОРа можно так:
КОГДА &ДанныеОтчета = 1
ТОГДА ДенежныеСредства.СуммаПриход
КОГДА &ДанныеОтчета = 2
ТОГДА ДенежныеСредства.СуммаУпрПриход
КОГДА &ДанныеОтчета = 3
ТОГДА ДенежныеСредства.СуммаРеглПриход
КОНЕЦ КАК СуммаПриход
ВЫБОР &ДанныеОтчета
КОГДА 1
ТОГДА ДенежныеСредства.СуммаПриход
КОГДА 2
ТОГДА ДенежныеСредства.СуммаУпрПриход
КОГДА 3
ТОГДА ДенежныеСредства.СуммаРеглПриход
КОНЕЦ КАК СуммаПриход,
@yellow_pad | #1С #Запросы #ЯзыкЗапросов1С #ВЫБОРСовместное использование УПОРЯДОЧИТЬ ПО и РАЗЛИЧНЫЕ
В поля выборки запроса неявно включаются поля упорядочивания, автоматически. В результате конструкция
Рекомендация ССиМ: Если в запросе используется конструкция РАЗЛИЧНЫЕ, упорядочивание следует выполнять только по полям, включенным в выборку (в секции ВЫБРАТЬ) [ссылка]
@yellow_pad | #1С #Запросы #Упорядочить #Различные
В поля выборки запроса неявно включаются поля упорядочивания, автоматически. В результате конструкция
РАЗЛИЧНЫЕ
того же запроса может вернуть дублирующиеся строки, т.к. группировка произойдет по всем полям, в том числе по неявным.Рекомендация ССиМ: Если в запросе используется конструкция РАЗЛИЧНЫЕ, упорядочивание следует выполнять только по полям, включенным в выборку (в секции ВЫБРАТЬ) [ссылка]
@yellow_pad | #1С #Запросы #Упорядочить #Различные
Проверка на пустой результат выполнения запроса (викторина)
Программисты 1С делятся на две категории - те, кто делают проверку
Более того, я встречал в проектах конвенции разработки, обязующие всегда выполнять проверку на
Как правильно поступить в данной ситуации?
PS. естественно, полученные данные будут обрабатываться дальше по коду
@yellow_pad | #1С #Запросы #Пустой #ССиМ #Викторина
Программисты 1С делятся на две категории - те, кто делают проверку
РезультатЗапроса.Пустой()
и те, кто не делает.Более того, я встречал в проектах конвенции разработки, обязующие всегда выполнять проверку на
Пустой()
либо наоборот, запрещающие такую проверку.Как правильно поступить в данной ситуации?
PS. естественно, полученные данные будут обрабатываться дальше по коду
@yellow_pad | #1С #Запросы #Пустой #ССиМ #Викторина
Проверка на пустой результат запроса (продолжение)
В комментариях к предыдущей записи были упоминания о рекомендациях от 1С о необходимости проверки на
ССИМ: Проверка на пустой результат выполнения запроса
п.1: Если нам не нужны данные выборки (или выгрузки) результата запроса, а нужно только проверить на наличие данных, не надо получать выборку, надо проверять на
п.2: Если мы планируем обрабатывать результат запроса - вызов метода
ССиМ: Оптимизация использования оперативной памяти
Приведен пример кода с проверкой на
Типовые конфигурации
Скриншот из предыдущего поста - из типовой конфигурации 1С:ДО. Конечно, типовые конфигурации - не эталон, но в данном примере 1С проверку на
Моё мнение: если результат запроса пустой, то и в память при выборке будет помещено около нуля данных. Я за то, чтобы в коде было меньше лишних строк, и придерживаюсь стандарта о проверке на пустой результат. От себя добавлю, что неплохо в запросы, проверяющие наличие данных добавлять ограничение
PS Фрагмент
@yellow_pad | #1С #Запросы #Пустой #ССиМ
В комментариях к предыдущей записи были упоминания о рекомендациях от 1С о необходимости проверки на
РезультатЗапроса.Пустой()
, но ссылок так никто и не привел. Ниже ссылки на рекомендации вендора, которые я нашел. Если есть какие-то еще рекомендации вендора - поделитесь, пожалуйста, в комментариях.ССИМ: Проверка на пустой результат выполнения запроса
п.1: Если нам не нужны данные выборки (или выгрузки) результата запроса, а нужно только проверить на наличие данных, не надо получать выборку, надо проверять на
Пустой()
, чтобы не загружать в память данные, которые нам не нужны.п.2: Если мы планируем обрабатывать результат запроса - вызов метода
Пустой()
не требуется.ССиМ: Оптимизация использования оперативной памяти
Приведен пример кода с проверкой на
Пустой()
, но сам стандарт не имеет отношения к этой проверке. Он говорит о том, что большую по объему выдачу нужно разделять на порции, чтобы не загружать в память сразу все данные. А проверка на Пустой()
добавлена для прерывания бесконечного цикла, и на ней в стандарте никакого акцента нет.Типовые конфигурации
Скриншот из предыдущего поста - из типовой конфигурации 1С:ДО. Конечно, типовые конфигурации - не эталон, но в данном примере 1С проверку на
Пустой()
не сделали. Это и привело меня к поискам стандартов, т.к. в проекте с сонаром требуют "обязательно проверять на Пустой()
".Моё мнение: если результат запроса пустой, то и в память при выборке будет помещено около нуля данных. Я за то, чтобы в коде было меньше лишних строк, и придерживаюсь стандарта о проверке на пустой результат. От себя добавлю, что неплохо в запросы, проверяющие наличие данных добавлять ограничение
ПЕРВЫЕ 1
.PS Фрагмент
РезультатЗапроса.Пустой() = 0
я естественно пропустил с копипастой, о чем сразу написал в комментариях. Извиняюсь, вопрос был не о нём.@yellow_pad | #1С #Запросы #Пустой #ССиМ
Для чего нужно ключевое слово АВТОУПОРЯДОЧИВАНИЕ в запросах и когда его рекомендуется использовать?
Варианты для обсуждения в комментариях...
@yellow_pad | #1С #СобесПо1С #Запросы
Варианты для обсуждения в комментариях...
@yellow_pad | #1С #СобесПо1С #Запросы