Можно ли как-то получить ссылку ещё не записанного документа?
В синт. помощнике есть методы:
Но не получилось у меня их склеить так чтобы добиться нужного результата.
Создаю документ:
Затем мне нужно без записи получить ссылку на этот документ:
Подскажите пожалуйста как это сделать?
ПолучитьСсылкуНового()
ПолучитьСсылку()
Новый УникальныйИдентификатор
Но не получилось у меня их склеить так чтобы добиться нужного результата.
Создаю документ:
НовыйДокумент = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
Затем мне нужно без записи получить ссылку на этот документ:
Переменная = НовыйДокумент.Ссылка;
Подскажите пожалуйста как это сделать?
По теме из базы знаний
- Спуск на уровень СУБД
- Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария
- Разработка и сценарное тестирование с Vanessa-ADD. Практические примеры сценариев. Шаги встроенной библиотеки
- Тонкости и подводные камни работы типового модуля интеграции Битрикс24 и 1С (Часть 2)
- Как стать автором курсов, и чем поможет Инфостарт
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(8) djd.sf, не могу сейчас привести конкретный пример, в (5) написал по этому поводу.
Давайте остановимся на следующем мотиве: "просто ради общеобразовательных целей" =)
Ну увидел методы, а воспользоваться не получилось - вот и спросил.
Спасибо всем за обсуждение.
Давайте остановимся на следующем мотиве: "просто ради общеобразовательных целей" =)
Ну увидел методы, а воспользоваться не получилось - вот и спросил.
Спасибо всем за обсуждение.
(1) nodalt, (2) andrewks,
1C - это не ЯП ООП.
Здесь ссылка имеет одно единственное значение - по ней идентифицируется объект в базе.
Если нет объекта в базе - нет и ссылки на него.
Все остальное - это не ссылка, а игры с цифрами.
(4) sergey198,
не путайте 1сников, ваша "ПолучитьСсылкуНового" получает пустое место, а не ссылку - по ней потом НИЧЕГО не найдешь, если объект не сохранен в базе.
1C - это не ЯП ООП.
Здесь ссылка имеет одно единственное значение - по ней идентифицируется объект в базе.
Если нет объекта в базе - нет и ссылки на него.
Все остальное - это не ссылка, а игры с цифрами.
(4) sergey198,
не путайте 1сников, ваша "ПолучитьСсылкуНового" получает пустое место, а не ссылку - по ней потом НИЧЕГО не найдешь, если объект не сохранен в базе.
(3) andrewks, да сам пока не знаю, нужна ли она мне. Методы увидел, попробовал - не получается. Вот и захотелось узнать. Но бывают такие ситуации, когда программно создаёшь объект, потом показываешь форму объекта пользователю и он уже решает: записывать или нет. А в промежутке между принятием решения нужна ссылка. Может быть это неправильно или не оптимально, но всё же ...
(5) ну, тогда смею предположить что-то типа такого(в качестве шутки;))):
НачатьТранзакцию();
/////// Запись объектов
//////
ТекстВопроса= "Сохранить?";
Ответ = Вопрос((ТекстВопроса), РежимДиалогаВопрос.ДаНет, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
ОтменитьТранзакцию();
Возврат;
КонецЕсли;
ЗафиксироватьТранзакцию();
ЗЫ, Но что-то мне кажется, что все это извращение. Если это пакетная запись (и скорее всего на стороне сервера) от клиента мало, что зависит. Объекты по-любому надо записать. Потом их можно удалить. Если же речь об одном объекте, то не проще сначала спросить пользователя, потом записать?
НачатьТранзакцию();
/////// Запись объектов
//////
ТекстВопроса= "Сохранить?";
Ответ = Вопрос((ТекстВопроса), РежимДиалогаВопрос.ДаНет, 0);
Если Ответ = КодВозвратаДиалога.Нет Тогда
ОтменитьТранзакцию();
Возврат;
КонецЕсли;
ЗафиксироватьТранзакцию();
ЗЫ, Но что-то мне кажется, что все это извращение. Если это пакетная запись (и скорее всего на стороне сервера) от клиента мало, что зависит. Объекты по-любому надо записать. Потом их можно удалить. Если же речь об одном объекте, то не проще сначала спросить пользователя, потом записать?
Если Документ.ЭтоНовый() Тогда
// Получаем возможно уже установленную ранее ссылку нового
СсылкаНаОбъект = Документы.ПолучитьСсылкуНового();
Если ЗначениеНеЗаполнено(СсылкаНаОбъект) Тогда
// Если ссылка нового пустая, то запрашиваем ее у менеджера и устанавливаем
СсылкаНаОбъект = Документы.РеализацияТоваровУслуг.ПолучитьСсылку();
Документ.УстановитьСсылкуНового(СсылкаНаОбъект);
КонецЕсли;
Иначе
СсылкаНаОбъект = Документ.Ссылка;
КонецЕсли;
// Получаем возможно уже установленную ранее ссылку нового
СсылкаНаОбъект = Документы.ПолучитьСсылкуНового();
Если ЗначениеНеЗаполнено(СсылкаНаОбъект) Тогда
// Если ссылка нового пустая, то запрашиваем ее у менеджера и устанавливаем
СсылкаНаОбъект = Документы.РеализацияТоваровУслуг.ПолучитьСсылку();
Документ.УстановитьСсылкуНового(СсылкаНаОбъект);
КонецЕсли;
Иначе
СсылкаНаОбъект = Документ.Ссылка;
КонецЕсли;
или, иными словами, ценность полученной т.н. "новой ссылки" (гуида) практически нулевая, за исключением случаев, когда нам нужно создать новый документ с заданной ссылкой (гуидом), или изменить ссылку существующего документа на другую
Приведу пример, когда тема очень пригодилась.
При обменах между базами может прилететь в реквизите документа несуществующая ссылка (например, это контрагент). Ситуация ошибочная, требует исправления, но случается.
Документ с битой ссылкой контрагента не проводится, но пытается, потому что ОбработкаЗаполнения() при этом ошибок не выдает, что реквизит "Контрагент" по факту не заполнен.
Как вариант, добавляем проверку реквизита методом СсылкаСуществует() из БСП (или другой по желанию)
И вот теперь для тестирования этой проверки необходимо, чтобы существовал документ с несуществующей ссылкой. Либо ждать, когда он появится, либо сделать самому и протестировать (ясен пень на копии для разработки)
При обменах между базами может прилететь в реквизите документа несуществующая ссылка (например, это контрагент). Ситуация ошибочная, требует исправления, но случается.
Документ с битой ссылкой контрагента не проводится, но пытается, потому что ОбработкаЗаполнения() при этом ошибок не выдает, что реквизит "Контрагент" по факту не заполнен.
Как вариант, добавляем проверку реквизита методом СсылкаСуществует() из БСП (или другой по желанию)
И вот теперь для тестирования этой проверки необходимо, чтобы существовал документ с несуществующей ссылкой. Либо ждать, когда он появится, либо сделать самому и протестировать (ясен пень на копии для разработки)
(18)при перекрестной записи ссылок годная штука, в одном объекте генерим и сразу фиксируем ссылку, а второй заполняем по этой ссылке позже. Второй момент - если процесс заведения/изменения элементов стратегически важного справочника (номенклатура или контрагенты частенько попадают в такое) реализуется через бизнес-процесс (опционально документ), который фактические изменения пишет когда все кто есть в процессе согласуют. Для создаваемых элементов удобнее в таком случае ссылки генерировать заранее и тащить в процессе до момент его завершения. По завершении - остается прямая связь процесса создавшего нечто с этим нечто.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот