Как правильно реализовать отображение журнала документов в таблице значений на форме обработки в 1С 7.7?

Программист 1С v7.7
← На главную

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

Основные этапы подготовки выборки документов

Для того чтобы вывести список документов в таблицу значений ТабЖур на форме, нам необходимо правильно инициализировать объект Документ. Важно понимать, что метод ВыбратьДокументы() без параметров попытается выбрать все документы за все время существования базы, что может привести к зависанию системы. Поэтому первым делом мы ограничиваем выборку.

Рассмотрим пример правильного кода для заполнения таблицы:


Функция ЗаполнитьСписокДокументов()
    Док = СоздатьОбъект("Документ");
    // Устанавливаем интервал выборки для оптимизации
    Док.ВыбратьДокументы(НачалоДня(ТекущаяДата()), ТекущаяДата());
    
    ТабЖур.УдалитьСтроки();
    
    Пока Док.ПолучитьДокумент() = 1 Цикл
        ТабЖур.НоваяСтрока();
        ТабЖур.Документ = Док.ТекущийДокумент();
        // Можно добавить другие поля, например, дату или номер
    КонецЦикла;
КонецФункции

Обратите внимание на использование Док.ТекущийДокумент() — это позволяет корректно передать ссылку на объект в ячейку таблицы. Если вы используете журнал, можно применить метод ИспользоватьЖурнал("ИмяВашегоЖурнала", 1), чтобы фильтрация документов соответствовала настройкам конкретного журнала в конфигураторе.

Организация открытия документа из таблицы

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

Реализуем эту функцию в модуле формы:


Процедура ОткрытьВыбранныйДокумент()
    Перем ВыбранныйДок;
    // Определяем текущую строку таблицы
    ИндексСтроки = ТабЖур.ТекущаяСтрока();
    Если ИндексСтроки <> 0 Тогда
        ВыбранныйДок = ТабЖур.ПолучитьЗначение(ИндексСтроки, "Документ");
        Если ПустоеЗначение(ВыбранныйДок) = 0 Тогда
            ОткрытьФорму(ВыбранныйДок);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Рекомендации по оптимизации и архитектуре

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

  1. Актуальность данных: Если вы хотите, чтобы таблица обновлялась автоматически, предусмотрите вызов процедуры заполнения при открытии формы или используйте таймер FormEx, если требуется обновление в реальном времени.
  2. Использование 1С++: Если количество документов велико, стандартный перебор через Пока Док.ПолучитьДокумент() становится медленным. Рекомендуем использовать компоненту 1С++ и объект ПоставщикДанных. Это позволит выполнять прямые SQL-запросы к базе данных, что значительно ускоряет работу с большими списками.
  3. Оформление интерфейса: При работе с сенсорными экранами стандартные элементы управления 1С 7.7 могут быть неудобны. Использование FormEx позволяет значительно расширить возможности стандартной таблицы значений: настроить цвета строк, шрифты, иконки видов документов и комфортный для пальцев размер элементов.

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

← На главную