Открытие документов в 1С 8.3: через меню, код и Конфигуратор
Содержание
Открыть документ в 1С 8.3 можно четырьмя разными путями, и выбор зависит от того, кто вы и зачем документ понадобился. Бухгалтер ищет нужную накладную в журнале раздела. Пользователь без прямой ссылки на список вызывает документ через команду Все функции. Программист открывает форму документа из кода методом ОткрытьФорму. Разработчик правит саму форму в Конфигураторе.
Ниже — каждый из этих способов с точными путями меню для интерфейса «Такси» (платформа 8.3.2x и новее) и рабочими примерами кода. Пути приведены для типовых конфигураций на управляемых формах; названия разделов в вашей базе могут слегка отличаться, но логика одинакова.
Поиск документа в журнале и списке раздела
Самый частый сценарий — найти уже существующий документ. В «Такси» документы сгруппированы по разделам в левой панели. Логика простая: тип документа определяет раздел.
Типичные маршруты в «1С:Бухгалтерии 3.0»:
- 📄 Реализация, счета, акты — раздел
Продажи. - 📦 Поступление товаров
и услуг — раздел
Покупки. - 💳 Платёжки и выписки — раздел
Банк и касса. - 🧾 Авансовые отчёты — раздел
Банк и кассаилиПокупки.
Откройте раздел, выберите нужный журнал (например, Продажи → Реализация (акты, накладные, УПД)) — откроется список документов. Чтобы открыть конкретный документ, выделите строку и нажмите Enter либо дважды кликните по ней.
Если документов много, не листайте список вручную. Нажмите кнопку поиска (значок лупы над списком) или Ctrl+F и введите номер, сумму или часть названия контрагента — список отфильтруется по вхождению.
Как отсортировать и отфильтровать список
Клик по заголовку колонки сортирует список по этому полю. Повторный клик меняет направление. Для более точного отбора откройте настройку списка через кнопку Ещё → Настроить список над таблицей — там задаются отборы по периоду, организации, контрагенту и статусу проведения.
Непроведённые документы в списке обычно помечены — у них нет зелёной «галочки» проведения в служебной колонке. Это удобный способ быстро найти черновики, которые забыли провести.
Открытие документа через команду «Все функции»
Бывает, что нужного журнала нет в панели разделов — его скрыли при настройке интерфейса, либо документ служебный. Тогда помогает команда Все функции: она даёт прямой доступ ко всем объектам базы, минуя настроенное меню.
По умолчанию команда спрятана. Включается один раз:
- Откройте
Главное меню(значок со стрелкой вниз в левом верхнем углу). - Выберите
Сервис → Параметры. - Поставьте флажок
Отображать команду «Все функции»и нажмитеОК.
После этого Главное меню → Все функции → Документы открывает полный список видов документов базы. Выбираете нужный вид — открывается его список, дальше как обычно.
Все функции показывает даже те документы, которые скрыты от пользователя намеренно. Доступ к самим данным всё равно ограничен ролями: если роль не даёт права на вид документа, список откроется пустым или с ошибкой доступа.
Этот же путь выручает, когда нужно открыть документ, которого вы не видите в своём интерфейсе, но знаете его тип, — например, регламентный или технический документ конфигурации.
Программное открытие формы документа
Если документ нужно открыть из кода — по кнопке обработки, из другой формы, по ссылке — используется клиентский метод ОткрытьФорму. Он работает в контексте управляемого приложения.
Открыть форму существующего документа по ссылке
Форме объекта передаётся структура с ключом Ключ, значение которого — ссылка на документ:
&НаКлиенте
Процедура ОткрытьДокумент(Ссылка)
ПараметрыФормы = Новый Структура("Ключ", Ссылка);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
Первый параметр — полное имя формы в формате Документ.<ИмяВида>.ФормаОбъекта. Имя вида документа берётся из дерева конфигурации, без пробелов и ровно так, как объект назван в метаданных.
Открыть документ, не зная имени его формы
Когда у вас на руках только ссылка, а имя формы заранее неизвестно, проще вызвать ПоказатьЗначение. Метод сам находит основную форму объекта и открывает её:
&НаКлиенте
Процедура ОткрытьПоСсылке(Ссылка)
ПоказатьЗначение(, Ссылка);
КонецПроцедуры
Первый параметр (описание оповещения о закрытии) здесь не нужен — оставляем пустым. Это универсальный способ: он одинаково открывает документ, элемент справочника или любую другую ссылку.
Устаревший синхронный метод ОткрытьЗначение из версии 8.2 в новых конфигурациях лучше не применять — в режиме управляемого приложения он выдаёт предупреждение или не работает. Используйте асинхронный ПоказатьЗначение.
Открыть новый, ещё не записанный документ
Чтобы открыть форму нового документа, вызовите ОткрытьФорму без параметра Ключ — платформа создаст новый объект:
&НаКлиенте
Процедура СоздатьНовый()
ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта");
КонецПроцедуры
Можно сразу заполнить реквизиты
шапки, передав их через параметр ЗначениеКопирования или собственную структуру заполнения — но это уже зависит от того, как написана форма конкретного документа.
Найти документ по номеру и открыть
Если есть номер, но нет ссылки, сначала найдите объект на сервере, потом откройте форму на клиенте:
&НаСервере
Функция НайтиПоНомеруНаСервере(Номер)
Возврат Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Номер);
КонецФункции
У метода НайтиПоНомеру есть второй необязательный параметр — интервал дат. Он нужен, когда нумерация документов периодическая (например, сбрасывается каждый год) и один и тот же номер может встретиться в разных периодах. Без интервала метод вернёт первый найденный документ, что в такой базе может оказаться не тем, который вы искали.
Открытие формы документа в Конфигураторе
Разработчику нужна не сама запись, а структура документа: его реквизиты, табличные части и формы. Это уровень Конфигуратора, а не режима «Предприятие».
Открытие базы в Конфигураторе само по себе безопасно и монопольного доступа не требует. Монопольный режим нужен только для изменения структуры данных (обновление конфигурации БД), загрузки .dt, тестирования и исправления. Пока вы просто смотрите формы и код, пользователи продолжают работать.
Порядок действий:
- Запустите базу в режиме
Конфигуратор. - Откройте дерево конфигурации:
Конфигурация → Открыть конфигурацию. - Разверните ветку
Документыи найдите нужный вид документа. - Разверните его подветку
Формы. - Дважды кликните по форме (
ФормаОбъекта,ФормаСпискаи т. д.) — она откроется в редакторе форм.
В редакторе вы видите три связанных области: дерево элементов формы, реквизиты формы и модуль с кодом. Здесь же, в ветке самого документа, доступны его реквизиты и табличные части.
Если конфигурация на поддержке и закрыта от изменений, объекты видны, но недоступны для правки. Чтобы менять типовую форму без снятия с поддержки, используйте расширение конфигурации — отдельный механизм, появившийся в платформе 8.3.6, который накладывается поверх основной конфигурации и не ломает обновления.
Переход к документу из связанного объекта
Часто документ ищут не по номеру, а «от соседа»: есть оплата — нужен счёт, по которому она прошла; есть реализация — нужна связанная с ней счёт-фактура. Листать журналы в таком случае бессмысленно, в 1С для этого есть прямые переходы.
Структура подчинённости. Откройте любой документ цепочки и вызовите команду Ещё → Структура подчинённости в его командной панели. Платформа построит дерево: вверху документ-основание, ниже — всё, что введено на его основании. По любому узлу дерева двойной клик открывает соответствующий документ. Это самый быстрый способ пройти всю цепочку «заказ → реализация → счёт-фактура → оплата», не возвращаясь в журналы.
Ввод на основании. Обратная задача — из текущего документа создать и открыть связанный. Кнопка Создать на основании в командной панели предлагает список допустимых видов документов; выбор сразу открывает форму нового документа с перенесёнными реквизитами.
Если нужно понять, какие движения сформировал проведённый документ, нажмите в его форме кнопку отчёта о движениях (в «1С:Бухгалтерии» — Дт/Кт). Отдельно искать регистры не нужно — отчёт откроется прямо из документа.
Работа с новыми и непроведёнными документами
«Новый документ» и «временный документ» в 1С — разные вещи, и путаница между ними порождает ошибки.
Новый документ — это объект, который ещё не сохранён в базе. Пока вы не нажали Записать, его не существует для других пользователей и отчётов. Создать его программно:
&НаСервере
Процедура СоздатьИЗаписать()
НовыйДок = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
НовыйДок.Дата = ТекущаяДата();
// ... заполнение реквизитов и табличных частей ...
НовыйДок.Записать();
КонецПроцедуры
Записан, но не проведён — документ уже в базе, у него есть ссылка и номер, но он не сформировал движения по регистрам. В учёте его ещё нет. Разница между двумя действиями принципиальна:
| Действие | Что происходит | Движения по регистрам |
|---|---|---|
Записать | Документ сохраняется в базе, появляется ссылка и номер | Нет |
Провести | Документ записывается и формирует движения | Да |
Открыть такой черновик можно любым из описанных выше способов — он полноценно существует в базе. В списке он помечен как непроведённый.
Реквизит ПометкаУдаления и статус проведения — это разные состояния. Помеченный на удаление документ всё ещё открывается и даже может быть проведён, пока его физически не удалили через Все функции → Стандартные → Удаление помеченных объектов.
Ошибки при открытии документа и что с ними делать
Открытие документа срывается по трём основным причинам: битая ссылка, нехватка прав и ошибка самой формы. Разберём симптомы и действия.
НайтиПоНомеру или запрос действительно возвращает объект, а не пустую ссылку. Перед обращением к реквизитам проверяйте Ссылка.Пустая().Администрирование → Настройки пользователей и прав → Пользователи и состав ролей для нужного вида документа. Это настройка прав, а не ошибка платформы.ПриОткрытии или ПриСозданииНаСервере. Текст ошибки указывает модуль и строку. Открывайте форму в Конфигураторе и смотрите код по указанному номеру строки; если конфигурация типовая и вы её не меняли — проблема могла прийти с некорректным обновлением./ClearCache в командной строке запуска 1cv8, либо удалив временные файлы пользователя.Прежде чем удалять временные файлы или чистить кэш 1cv8, убедитесь, что закрыты все сеансы этого пользователя с базой. Чистка кэша при открытой базе может привести к повторной ошибке и не поможет.
Если документ не найден поиском, хотя он точно есть
Проверьте три вещи, именно в этом порядке:
- Отбор в списке. В списке мог остаться скрытый отбор по периоду или организации. Сбросьте настройки списка через
Ещё → Установить стандартные настройки. - Период. Многие журналы по умолчанию показывают только последние дни или текущий месяц. Расширьте период отбора на нужный диапазон.
- Права. Если документ виден коллеге, но не вам — дело в разнице ролей, а не в самом документе.
Частые вопросы
Чем `ОткрытьФорму` отличается от `ПоказатьЗначение`?
ОткрытьФорму требует точное имя формы и позволяет передать любые параметры — это гибкий инструмент для своих обработок. ПоказатьЗначение сам определяет основную форму объекта по ссылке и открывает её без лишних параметров. Когда на руках только ссылка — проще ПоказатьЗначение.Как открыть документ, если его журнала нет в панели разделов?
Все функции (Главное меню → Сервис → Параметры, флажок Отображать команду «Все функции»), затем Главное меню → Все функции → Документы и выберите нужный вид. Доступ к данным всё равно ограничен вашими ролями.Почему при открытии пишет «Недостаточно прав»?
Можно ли открыть документ по его номеру из кода?
НайтиПоНомеру. Если нумерация в базе периодическая, передавайте вторым параметром интервал дат — иначе рискуете получить документ с тем же номером из другого периода.Открытие базы в Конфигураторе выгонит пользователей из базы?
.dt или тестирования и исправления.