Связывание документов в 1С:Предприятие — стандартная операция, с которой регулярно сталкиваются бухгалтеры, кладовщики и программисты. Без правильной привязки документов друг к другу нарушается логическая цепочка операций, теряется прозрачность учета, а в некоторых случаях — блокируются критичные функции программы. Например, невозможно провести оплату по счету, если он не связан с заказом клиента, или списать товар со склада без привязки к накладной.
В этой статье разберем все актуальные способы связывания документов в 1С 8.3 и 8.2 — от ручного указания связей до автоматизированных методов через обработки и программный код. Особое внимание уделим типичным ошибкам, которые приводят к разрыву связей после обновлений или переноса базы, а также нюансам для разных конфигураций: Бухгалтерия 3.0, Управление торговлей 11, ERP 2.5 и Зарплата и управление персоналом.
Если вы ищете решение для конкретной задачи — воспользуйтесь оглавлением или FAQ в конце статьи. Для программистов приведены примеры кода на встроенном языке 1С, а для пользователей — пошаговые инструкции с скриншотами (описания действий).
1. Зачем связывать документы в 1С: бизнес-логика и технические причины
Связь между документами в 1С выполняет две ключевые функции:
- 📊 Финансовая прозрачность: отслеживание цепочки операций (например, "Заказ → Счет → Оплата → Отгрузка") для аудита и отчетности.
- 🔗 Техническая зависимость: некоторые документы нельзя создать или провести без ссылки на "родительский" документ (например,
Реализация товаровтребует привязки кЗаказу клиента). - ⚡ Автоматизация: связи используются для автозаполнения реквизитов (например, в
Счете на оплатуподтягиваются товары изЗаказа). - 📈 Аналитика: по связям строятся отчеты типа "Исполнение заказов" или "Движение денежных средств по договорам".
Без правильных связей возникают ошибки:
- ❌ Дублирование операций: один и тот же товар списывается со склада дважды — по заказу и по накладной.
- ❌ Разрывы в учете: оплата висит "ни за что", так как не привязана к счету.
- ❌ Блокировка проводок: документ не проводится из-за отсутствия обязательной ссылки.
⚠️ Внимание: В конфигурациях на базе БСП 3.1+ (например, Бухгалтерия 3.0 или ERP 2.5) связи документов могут автоматически обновляться при изменении "родительского" документа. В старых версиях (например, 1С 7.7 или УТ 10.3) это требует ручного контроля.
2. Способы связывания документов: от ручного до программного
В 1С есть 4 основных метода создания связей между документами. Выбор зависит от задачи, прав пользователя и версии платформы:
| Способ | Когда использовать | Требуемые права | Ограничения |
|---|---|---|---|
| Ручная привязка (через поле "Основание") | Единичные операции, корректировка связей | Пользовательские (право на редактирование документа) | Трудоемко при большом объеме |
| Автозаполнение (по кнопке "Заполнить") | Стандартные цепочки (Заказ → Счет → Реализация) | Пользовательские | Работает только для типовой логики |
| Обработки (внешние или встроенные) | Массовая привязка, нестандартные связи | Администраторские или "FullAccess" | Требует настройки под конкретную базу |
| Программный код (1С-скрипты) | Интеграции, сложная логика, автоматизация | Полные (конфигуратор) | Ошибки в коде могут нарушить целостность данных |
Рассмотрим каждый метод подробнее.
2.1 Ручная привязка через поле "Основание"
Самый простой способ — указать связь вручную при создании документа. Например, при формировании Счета на оплату из Заказа клиента:
- Откройте документ, который нужно связать (например,
Счет на оплату). - В поле "Основание" нажмите на кнопку выбора (
...). - В открывшемся окне найдите и выберите "родительский" документ (например,
Заказ клиента №123). - Сохраните документ (
Ctrl+Sили кнопка "Записать").
После этого в обоих документах появится взаимная ссылка:
- В
Заказе клиента— в табличной части "Счета на оплату". - В
Счете на оплату— в реквизите "Основание".
⚠️ Внимание: Если поле "Основание" неактивно (заблокировано), проверьте:
- Права пользователя на редактирование этого реквизита.
- Настройки конфигурации: возможно, связь создается автоматически через обработку.
- Статус документа: в некоторых конфигурациях редактировать связи можно только в непроведенных документах.
Поле "Основание" активно для редактирования|
Документ-основание существует и проведен|
У пользователя есть права на оба документа|
Связь не дублирует существующую
-->
2.2 Автозаполнение связей
В типовой логике 1С многие документы создаются на основе других с автоматическим заполнением связей. Например:
- 📄
Счет на оплату→ изЗаказа клиента(кнопка "Создать на основании"). - 📦
Реализация товаров→ изСчета на оплатуилиЗаказа. - 💰
Поступление на расчетный счет→ изСчета на оплату.
Алгоритм:
- Откройте исходный документ (например,
Заказ клиента). - Нажмите кнопку "Создать на основании" (или
F9). - Выберите тип нового документа (например,
Счет на оплату). - Документ создастся с автоматически заполненным полем "Основание" и табличной частью.
В конфигурациях на БСП 3.1+ (например, ERP 2.5) при изменении "родительского" документа связанные документы могут обновляться автоматически (например, корректировка цены в Заказе перенесется в Счет). В старых версиях (УТ 10.3) это требует ручного пересоздания связей.
2.3 Связывание через обработки
Для массовой привязки документов или нестандартных связей используют внешние обработки. Например, если нужно связать 100 счетов с заказами по номеру договора.
Пример обработки для привязки Счетов на оплату к Заказам клиента по номеру:
// Пример кода для обработки (1С 8.3)
Процедура СвязатьСчетаСЗаказами()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетНаОплатуКлиенту.Ссылка КАК Счет,
| ЗаказКлиента.Ссылка КАК Заказ
|ИЗ
| Документ.СчетНаОплатуКлиенту КАК СчетНаОплатуКлиенту
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента
| ПО СчетНаОплатуКлиента.НомерДоговора = ЗаказКлиента.НомерДоговора
|ГДЕ
| СчетНаОплатуКлиента.Основание = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если НЕ ЗначениеЗаполнено(Выборка.Заказ) Тогда
Продолжить;
КонецЕсли;
ДокументСчет = Выборка.Счет.ПолучитьОбъект();
ДокументСчет.Основание = Выборка.Заказ;
ДокументСчет.Записать();
КонецЦикла;
КонецПроцедуры
Готовые обработки можно найти:
- 🔧 На сайте Infostart (раздел "Обработки для 1С").
- 🔧 В каталоге 1С-Рарус.
- 🔧 В стандартных поставках конфигураций (папка
ExtForms).
⚠️ Внимание: Перед массовым связыванием документов через обработку обязательно сделайте резервную копию базы. Ошибки в логике обработки могут привести к дублированию связей или потере данных.
2.4 Программное связывание (для разработчиков)
Для интеграций или сложной логики связи создают через встроенный язык 1С. Например, чтобы при проведении Заказа поставщику автоматически создавался Счет на оплату с привязкой:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
НовыйСчет = Документы.СчетНаОплатуПоставщику.СоздатьДокумент();
НовыйСчет.Основание = ЭтаФорма.Объект.Ссылка;
НовыйСчет.ЗаполнитьНаОсновании(ЭтаФорма.Объект.Ссылка);
НовыйСчет.Записать();
НовыйСчет.Провести();
КонецЕсли;
КонецПроцедуры
Ключевые методы для работы со связями:
Документ.Основание— получение/установка ссылки на "родительский" документ.ЗаполнитьНаОсновании()— автозаполнение реквизитов на основе связанного документа.ПолучитьСвязанныеДокументы()— выборка всех документов, связанных с текущим.
Для отладки связей используйте отчет "Анализ связей документов" (доступен в типовой конфигурации Бухгалтерия 3.0 через меню Отчеты → Стандартные → Анализ связей).
3. Типичные ошибки при связывании документов и как их исправить
Ошибки со связями документов в 1С делятся на технические (сбои платформы, права доступа) и логические (неверная привязка, разрывы цепочек). Рассмотрим самые распространенные:
3.1 Ошибка: "Не удалось установить связь с документом-основанием"
Причины и решения:
- 🔒 Недостаточно прав: Проверьте роль пользователя в
Администрирование → Пользователи. Для связывания нужны права на редактирование обоих документов. - 🗑️ Документ-основание удален: Восстановите его из архива или создайте новый с тем же номером.
- 🔄 Разные версии конфигурации: Если документы созданы в разных релизах, обновите базу до актуальной версии.
- 📝 Документ не проведен: Некоторые связи устанавливаются только для проведенных документов (проверьте статус в журнале).
3.2 Ошибка: "Документ уже имеет основание"
Эта ошибка возникает при попытке перепривязать документ к другому основанию. Решения:
- Удалите текущую связь (очистите поле "Основание").
- Если поле заблокировано, используйте обработку для массового сброса связей:
Процедура СброситьОснования()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.СчетНаОплатуКлиенту";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Документ = Выборка.Ссылка.ПолучитьОбъект();
Документ.Основание = Неопределено;
Документ.Записать();
КонецЦикла;
КонецПроцедуры
3.3 Разрывы связей после обновления или переноса базы
После обновления 1С или миграции на другой сервер связи могут потеряться. Причины:
- 🔄 Изменение структуры метаданных (например, переименование реквизита "Основание" на "ParentDoc").
- 🗃️ Перенос данных без сохранения ссылок (например, через
ВыгрузкаЗагрузкаДанныхXML). - 🔧 Ошибки в правилах конвертации при переходе на новую версию конфигурации.
Как восстановить связи:
- Сравните структуру документов до и после обновления (через
Конфигуратор → Метаданные). - Используйте типовую обработку
"Поиск и восстановление связей"(доступна в Бухгалтерии 3.0 и ERP 2.5). - Для сложных случаев напишите запрос на языке 1С, который пересоздаст связи по уникальным реквизитам (номер, дата, контрагент).
⚠️ Внимание: Если связи потерялись после обновления через 1С:Конвертация данных, проверьте журнал конвертации (%APPDATA%\1C\1Cv8\Log\). Часто там указаны документы с ошибками.
4. Связывание документов в разных конфигурациях 1С
Логика связывания документов зависит от конфигурации. Рассмотрим нюансы для популярных решений:
4.1 Бухгалтерия 3.0
В Бухгалтерии 3.0 связи документов используются для:
- 💰 Автоматического формирования проводок (например, связь
Поступление на расчетный счетиСчет на оплатусоздает проводку Дт51 Кт62). - 📑 Контроля исполнения договоров (отчет "Исполнение договоров контрагентов").
- 🔄 Автозаполнения реквизитов (например, в
Платежном порученииподтягивается назначение платежа изСчета).
Особенности:
- Связи настраиваются в
Настройка параметров учета → Документооборот. - Для связывания
Авансовых отчетовиПоступлений товаровиспользуется реквизит "Расчеты с подотчетными лицами".
4.2 Управление торговлей 11 (УТ 11)
В УТ 11 связи документов критичны для:
- 📦 Логистики: цепочка
Заказ клиента → Резервирование → Отгрузка → Реализация. - 💰 Финансов: связь
Заказ → Счет → Оплата → Возврат. - 📊 Отчетности: отчеты "Анализ продаж" и "Исполнение заказов" строятся по связям.
Типовые ошибки:
- ❌ Разрыв связи между
ЗаказомиРезервированиемприводит к двойному резерву товара. - ❌ Отсутствие связи между
РеализациейиОтгрузкойблокирует формированиеСчета-фактуры.
Для массового связывания используйте обработку "Помощник закрытия месяца" (раздел "Документооборот").
4.3 ERP 2.5
В ERP 2.5 связи документов интегрированы с:
- 🏭 Производством:
Заказ на производство → Отчет производства → Отгрузка готовой продукции. - 🚚 Логистикой:
Заказ поставщику → Поступление → Приходный ордер. - 💼 CRM:
Лид → Коммерческое предложение → Заказ клиента.
Особенности:
- Связи настраиваются в
Настройка ERP → Документооборот и логистика. - Для связывания документов разных подсистем (например,
Заказ клиентаиз CRM иРеализацияиз Бухгалтерии) используйте межсистемные ссылки.
4.4 Зарплата и управление персоналом (ЗУП 3.1)
В ЗУП 3.1 связи документов применяются для:
- 💼 Кадрового учета:
Приказ о приеме → Личная карточка → Трудовой договор. - 💰 Расчета зарплаты:
Начисление зарплаты → Ведомость в банк → Выплата. - 📅 Табельного учета:
График работы → Табель → Начисление.
Типовая проблема: разрыв связи между Начислением зарплаты и Ведомостью в банк приводит к невыплате зарплаты. Решение:
- Проверьте настройки выплаты в
Настройка → Зарплата → Выплата зарплаты. - Используйте обработку
"Проверка и исправление ведомостей".
5. Как проверить корректность связей между документами
После связывания документов обязательно проверьте:
- Целостность связей (нет ли разрывов в цепочке).
- Корректность проводок (если связи влияют на бухучет).
- Отображение в отчетах (например, в "Анализе субконто").
5.1 Стандартные отчеты для проверки
Используйте следующие отчеты (доступны в большинстве конфигураций):
- 📊 "Анализ связей документов" (
Отчеты → Стандартные): показывает все связи для выбранного документа. - 📊 "Движения документа": проверяет, сформировались ли проводки по связи.
- 📊 "Исполнение заказов" (
Продажи → Отчеты): анализирует цепочку от заказа до отгрузки.
5.2 Запросы для проверки связей
Пример запроса для поиска Счетов на оплату без привязки к Заказам клиента:
ВЫБРАТЬ
СчетНаОплатуКлиенту.Ссылка КАК Счет,
СчетНаОплатуКлиенту.Номер КАК НомерСчета,
СчетНаОплатуКлиенту.Дата КАК ДатаСчета
ИЗ
Документ.СчетНаОплатуКлиенту КАК СчетНаОплатуКлиенту
ГДЕ
СчетНаОплатуКлиенту.Основание = ЗНАЧЕНИЕ(Документ.ЗаказКлиента.ПустаяСсылка)
Для проверки обратных связей (например, всех Реализаций по конкретному Заказу):
ВЫБРАТЬ
РеализацияТоваровУслуг.Ссылка КАК Реализация
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Основание = &ЗаказКлиента
5.3 Внешние инструменты для анализа
Для сложных баз используйте:
- 🔍 1С:Аналитика — анализ связей между объектами метаданных.
- 🔍 Infostart: Аудит базы — поиск "висячих" связей и дублей.
- 🔍 Универсальный отчет "Дерево связей" (доступен на Infostart).
⚠️ Внимание: Если в отчете "Анализ связей" документ отображается без связей, но в форме поле "Основание" заполнено, проверьте целостность базы через Тестирование и исправление (Конфигуратор → Администрирование).
6. Автоматизация связывания документов
Ручная привязка документов отнимает время и чревата ошибками. Рассмотрим способы автоматизации:
6.1 Настройка правил автозаполнения
В большинстве конфигураций можно настроить автоматическое заполнение связей при создании документов:
- Откройте
Администрирование → Настройки программы → Документооборот. - Настройте правила для пар документов (например, "При создании
Счета на оплатуизЗаказа клиентаавтоматически заполнять поле Основание"). - Укажите дополнительные условия (например, только для определенных типов договоров).
6.2 Регламентные задания
Для массовой обработки используйте регламентные задания:
- Создайте обработку для связывания документов (см. раздел 2.3).
- Зарегистрируйте ее как регламентное задание в
Администрирование → Регламентные задания. - Настройте расписание (например, ежедневный запуск в 2:00).
Пример кода для регламентного задания:
Процедура ВыполнитьЗадание()
// Код связывания документов (см. раздел 2.3)
СвязатьСчетаСЗаказами();
КонецПроцедуры
6.3 Интеграция с внешними системами
Если документы поступают из внешних систем (например, CRM или ECM), настройте автоматическое связывание через:
- 🔌 Web-сервисы: используйте методы
FindByRefиSetAttributeдля поиска и привязки документов. - 🔌 Обмен данными: в правилах обмена (
Администрирование → Обмен данными) укажите соответствие полей для связей. - 🔌 REST API: для 1С:Fresh или облачных версий.
Пример кода для привязки документа через HTTP-сервис:
Функция СвязатьДокументы(ИдОснования, ИдСвязываемого)
Запрос = Новый HTTPЗапрос("/hs/DocumentLink/SetBase");
Запрос.УстановитьТелоИзСтроки(
"{""baseId"": """ + ИдОснования + """, ""linkedId"": """ + ИдСвязываемого + """}"
);
Ответ = Новый HTTPСоединение("https://your-1c-server.ru").ВыполнитьЗапрос(Запрос);
Возврат Ответ.ПолучитьТелоКакСтроку();
КонецФункции
6.4 Использование бизнес-процессов
В конфигурациях на БСП (например, ERP 2.5 или УТ 11) связи документов можно автоматизировать через бизнес-процессы:
- Создайте бизнес-процесс в
Администрирование → Бизнес-процессы. - Добавьте этап "Связать документы" с условием (например, "Если в
Заказестатус = 'Согласован'"). - Настройте действие: создание
Счета на оплатус привязкой кЗаказу.
Автоматизация связывания документов сокращает ошибки на 70% и ускоряет обработку заказов в 2-3 раза (по данным 1С:Консалтинг).