Получить ДокументСсылка в 1С можно несколькими способами, в зависимости от того, откуда вы хотите ее получить и в каком контексте находитесь. Вот основные методы и примеры:
1. Из выбора пользователя (например, из поля выбора, из формы списка):
Описание: Пользователь выбирает документ в поле выбора или в форме списка, и вам нужно получить ссылку на этот документ.
Пример (в обработчике события “ОбработкаВыбора” поля выбора):
Процедура ПолеВыбораОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка. РеализацияТоваровУслуг") Тогда
// Выбран документ "Реализация товаров и услуг"
МояСсылкаНаДокумент = ВыбранноеЗначение;
// Дальнейшие действия с ссылкой на документ
Сообщить("Выбран документ: " + МояСсылкаНаДокумент);
КонецЕсли;
КонецПроцедуры
Пояснения:
ВыбранноеЗначение содержит значение, выбранное пользователем.
ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка. РеализацияТоваровУслуг") проверяет, что выбранный элемент является ссылкой на документ “Реализация товаров и услуг”. Замените РеализацияТоваровУслуг на имя вашего документа.
МояСсылкаНаДокумент = ВыбранноеЗначение — присваивает ссылку на документ переменной МояСсылкаНаДокумент.
2. Из кода (по известным критериям, например, по номеру и дате):
Описание: Вам нужно найти документ в базе данных по известным критериям (например, по номеру и дате) и получить ссылку на него.
Пример:
НомерДокумента = "РТУ-00001";
ДатаДокумента = Дата(2023, 10, 26);
Запрос = Новый Запрос;
Запрос. Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг. Ссылка
|ИЗ
| Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг. Номер = &НомерДокумента
| И РеализацияТоваровУслуг. Дата = &ДатаДокумента";
Запрос. УстановитьПараметр("НомерДокумента", НомерДокумента);
Запрос. УстановитьПараметр("ДатаДокумента", ДатаДокумента);
РезультатЗапроса = Запрос. Выполнить();
Если Не РезультатЗапроса. Пустой() Тогда
Выборка = РезультатЗапроса. Выбрать();
Выборка. Следующий();
СсылкаНаДокумент = Выборка. Ссылка;
// Дальнейшие действия с ссылкой на документ
Сообщить("Найдена ссылка на документ: " + СсылкаНаДокумент);
Иначе
Сообщить("Документ с указанными номером и датой не найден.");
КонецЕсли;
Пояснения:
Создается запрос, который ищет документ “Реализация товаров и услуг” по номеру и дате. Замените РеализацияТоваровУслуг на имя вашего документа.
Запрос. УстановитьПараметр() — устанавливает параметры запроса.
РезультатЗапроса. Выбрать() — получает выборку из результата запроса.
Выборка. Следующий() — переходит к первой записи в выборке.
СсылкаНаДокумент = Выборка. Ссылка — присваивает ссылку на документ переменной СсылкаНаДокумент.
3. Из объекта (например, из документа, который уже открыт):
Описание: У вас есть объект (например, документ, который открыт в форме), и вам нужно получить ссылку на этот объект.
Пример:
// В процедуре обработки события "ПриОткрытии" формы документа
Процедура ПриОткрытии(Отказ)
СсылкаНаДокумент = Объект. Ссылка;
// Дальнейшие действия с ссылкой на документ
Сообщить("Ссылка на текущий документ: " + СсылкаНаДокумент);
КонецПроцедуры
Пояснения:
Объект — это объект данных, который отображается в форме.
Объект. Ссылка — возвращает ссылку на объект.
4. Из табличной части другого документа:
Описание: В табличной части одного документа содержится ссылка на другой документ, и вам нужно получить эту ссылку.
Пример:
// В цикле по строкам табличной части
Для Каждого СтрокаТЧ Из Объект. Товары Цикл
СсылкаНаДокумент = СтрокаТЧ. ДокументОснование; // Предполагаем, что в ТЧ есть колонка "ДокументОснование"
// Дальнейшие действия с ссылкой на документ
Сообщить("Ссылка на документ основание: " + СсылкаНаДокумент);
КонецЦикла;
Пояснения:
Объект. Товары — это табличная часть документа.
СтрокаТЧ. ДокументОснование — это колонка табличной части, содержащая ссылку на другой документ. Замените ДокументОснование на имя вашей колонки.
5. Преобразование строки в ссылку (если у вас есть строковое представление ссылки):
Описание: У вас есть строка, содержащая представление ссылки на документ, и вам нужно преобразовать ее в объект ДокументСсылка.
Пример:
СтрокаПредставленияСсылки = "Документ. РеализацияТоваровУслуг. cc6c671f-44a9-495b-937c-077a3c61d2a4";
Попытка
СсылкаНаДокумент = СтрокаПредставленияСсылки. ПолучитьОбъект(); // Использовать ПолучитьОбъект(), если нужно получить сам объект, а не ссылку
// Дальнейшие действия с ссылкой на документ
Сообщить("Ссылка на документ: " + СсылкаНаДокумент);
Исключение
Сообщить("Не удалось преобразовать строку в ссылку на документ.");
КонецПопытки;
Пояснения:
СтрокаПредставленияСсылки — это строка, содержащая представление ссылки на документ (например, “Документ. РеализацияТоваровУслуг. cc6c671f-44a9-495b-937c-077a3c61d2a4”).
СтрокаПредставленияСсылки. ПолучитьОбъект() — преобразует строку в объект ДокументСсылка.
Важные моменты:
Тип ссылки: Убедитесь, что вы используете правильный тип ссылки (например, ДокументСсылка. РеализацияТоваровУслуг, СправочникСсылка. Номенклатура).
Проверка на NULL: Всегда проверяйте, что полученная ссылка не равна NULL (Пустая ссылка). Это можно сделать с помощью функции ЗначениеЗаполнено().
Обработка ошибок: Предусмотрите обработку ошибок, чтобы в случае возникновения ошибок программа не завершалась аварийно.
Права доступа: Убедитесь, что у пользователя, выполняющего код, есть права на чтение данных из нужного документа.
Отладка: Используйте отладчик для пошагового выполнения кода и анализа значений переменных.
Выбор способа получения ДокументСсылка зависит от конкретной ситуации и контекста, в котором вы работаете.