Содержание:
1. Получение последних документов в 1С
2. Запрос с временной таблицей
Приветствую, коллеги! В данной статье будет описано, как получать последние документы в 1С из некоторой выборки из регистра двумя способами.
1. Получение последних документов в 1С
У многих разработчиков в 1С часто возникает вопрос: как получать последние (либо первые) документы из конкретной выборки? Данную задачу можно решить не одним, но несколькими способами.
Рассмотрим пример. Пусть есть некоторая первоначальная база 1С:Управление торговлей, редакция 11, из которой необходимо получить последнюю документацию по номенклатурному приходу по специальному регистру «ТоварыНаСкладе». Последним документом в этом контексте имеется ввиду тот документ, который имеет максимальную дату, а именно: последний документ, в котором работал пользователь системы 1С.
Далее приведены запросы для формировки корректного результата. В первом запросе результат – это демонстрационный документ. Если у нас есть только одна номенклатура, то необходимо лишь провести сортировку внутри регистра и избрать первоначальный документ.
Далее представлены примеры запросов:
Рис. 1 Запрос для поиска последнего документа в 1С
Результат будет выведен в виде следующей таблицы с последними сохраненными документами – номенклатурой по регистраторам:
Рис. 2 Таблица с последними сохраненными документами – номенклатура по регистраторам
В таком случае сортировка по умолчанию будет происходить без учета даты документации – учитывается только персональный идентификатор. Таким образом документация, которая была зарегистрирована позже некоторого времени в приходной ордер ЦУ-33, будет в самом начале нашей выборки. Рассмотрим вариант, когда сортировки по порядку не будет:
Рис. 3 Таблица без сортировки по порядку последних документов в 1С
Если необходимо выбрать последние открытые документы в списке с номенклатурой, «ВЫБРАТЬ ПЕРВЫЕ» работать не будет. В таком случае воспользуемся функцией «МАКСИМУМ», как показано в примере запроса ниже:
Рис. 4 Запрос для поиска последних открытых документов
А результат данного запроса будет следующим:
Рис. 5 Результат поиска последних открытых документов
В данном случае конструкция «МАКСИМУМ» разбивает избранную выборку по «GUID» объекта. Данным способом можно воспользоваться в 1С 8 УТ 11 в случае, когда необходимо получить последний сохраненный документ, опираясь на его дату. Так мы получаем список с номенклатурой и, при помощи цикла для всех позиций по отдельности, последний документ в 1С 8 "Управление торговлей" 11. Но данный способ занимает довольно много времени и уменьшает производительность.
2. Запрос с временной таблицей
Сделаем запрос с временной таблицей, при помощи которой будет происходить проверка выборки по большей дате. Эта дата и будет соединять временную выборку с основной. В запросе упорядочим выборки по максимальному регистратору. В таком варианте дата последнего документа будет учитываться. Этот пример показан на демонстрационном примере скриншота ниже:
Рис. 6 Запрос с временной таблицей
Результат будет следующим:
Рис. 7 Результат запроса с временной таблицей
Специалист компании «Кодерлайн»
Айдар Фархутдинов