внешняя обработка

1. user1599296 26.10.21 10:54 Сейчас в теме
Коллеги, привет, нужна помощь!
Есть обработка создания документа (документ закрытия договоров). Все отрабатывает. Как в колонку обработки на форму вывести ссылку на документ, который эта обработка создает?
Код ниже:
&НаКлиенте
Процедура Заполнить(Команда)
	Если  ЗначениеЗаполнено(Дата) тогда
		Договоры.Очистить();
		ЗаполнитьНаСервере();
	иначе
		Сообщить("Не выбрана дата!");
	КонецЕсли; 
	ЗаполнитьНаСервере();
КонецПроцедуры




&НаСервере
Процедура ЗаполнитьНаСервере()
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	МАКСИМУМ(ЛТ_ГрафикиПлатежейОбороты.ДатаНачисления) КАК ДатаПлатежа,
	|	ЛТ_ГрафикиПлатежейОбороты.ДоговорЛизинга КАК ДоговорЛизинга
	|ПОМЕСТИТЬ ДЛ
	|ИЗ
	|	РегистрНакопления.ЛТ_ГрафикиПлатежей.Обороты(, , , ) КАК ЛТ_ГрафикиПлатежейОбороты
	|
	|СГРУППИРОВАТЬ ПО
	|	ЛТ_ГрафикиПлатежейОбороты.ДоговорЛизинга
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ИБР_СтатусыДоговоровСрезПоследних.Договоры КАК Договоры,
	|	ИБР_СтатусыДоговоровСрезПоследних.Статусы КАК Статусы
	|ПОМЕСТИТЬ ДЛ_Действуют
	|ИЗ
	|	РегистрСведений.ИБР_СтатусыДоговоров.СрезПоследних КАК ИБР_СтатусыДоговоровСрезПоследних
	|ГДЕ
	|	ИБР_СтатусыДоговоровСрезПоследних.Статусы = ЗНАЧЕНИЕ(Справочник.ИБР_СтатусыДоговоров.Действует)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ДЛ.ДатаПлатежа КАК ДатаПлатежа,
	|	ДЛ.ДоговорЛизинга КАК ДоговорЛизинга,
	|	ДЛ_Действуют.Статусы КАК Статусы
	|ПОМЕСТИТЬ ДЛ_Статус
	|ИЗ
	|	ДЛ_Действуют КАК ДЛ_Действуют
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДЛ КАК ДЛ
	|		ПО (ДЛ.ДоговорЛизинга = ДЛ_Действуют.Договоры)
	|ГДЕ
	|	ДЛ.ДатаПлатежа = НАЧАЛОПЕРИОДА(КОНЕЦПЕРИОДА(&Период, МЕСЯЦ), ДЕНЬ)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ ПЕРВЫЕ 3
	|	ДЛ_Статус.ДоговорЛизинга КАК ДоговорЛизинга,
	|	ДЛ_Статус.ДатаПлатежа КАК ДатаОкончания
	|ИЗ
	|	ДЛ_Статус КАК ДЛ_Статус
	|		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЛТ_ЗакрытиеДоговоров КАК ЛТ_ЗакрытиеДоговоров
	|		ПО ДЛ_Статус.ДоговорЛизинга = ЛТ_ЗакрытиеДоговоров.Основание
	|ГДЕ
	|	ЕСТЬNULL(ЛТ_ЗакрытиеДоговоров.Ссылка, 0) = 0";
	
	Запрос.УстановитьПараметр("Период",Дата);
	ТЗ = Запрос.Выполнить().Выгрузить();
	ЭтаФорма.Договоры.Загрузить(ТЗ);
	
КонецПроцедуры

&НаКлиенте
Процедура Создать(Команда)
		СоздатьНаСервере();
	
		
 КонецПроцедуры

&НаСервере
Процедура СоздатьНаСервере()
	
	Для каждого Стр из Договоры Цикл
		НовыйДокумент = Документы.ЛТ_ЗакрытиеДоговоров.СоздатьДокумент();
		НовыйДокумент.Дата=КонецМесяца(Дата);
		НовыйДокумент.Основание= Стр.ДоговорЛизинга;
		НовыйДокумент.Записать();
		СсылкаНаНовыйДокумент = Документы.ЛТ_ЗакрытиеДоговоров.ПолучитьСсылку(УникальныйИдентификатор);
		
	КонецЦикла;
	Сообщить("Документы созданы");	 
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. -AI- 26.10.21 11:21 Сейчас в теме
(1)
Код ниже:

для начала, оформите код как код, а то сливается всё...
(с помощью кнопки </>)
3. starjevschik 26.10.21 11:28 Сейчас в теме
(1)
НовыйДокумент.Записать();
СсылкаНаНовыйДокумент = Документы.ЛТ_ЗакрытиеДоговоров.ПолучитьСсылку(УникальныйИдентификатор);

это нонсенс. Он же записан, у него своя ссылка
НовыйДокумент.Записать();
        СсылкаНаНовыйДокумент = НовыйДокумент.Ссылка;
Стр.Ссылка = СсылкаНаНовыйДокумент; // записали ссылку в строку таблицы
4. user1599296 26.10.21 11:40 Сейчас в теме
(3)
СсылкаНаНовыйДокумент = НовыйДокумент.Ссылка;
Стр.Ссылка = СсылкаНаНовыйДокумент;


ошибка : поле объекта не обнаружено!
5. -AI- 26.10.21 14:01 Сейчас в теме
(4)
СсылкаНаНовыйДокумент

в какой строке?

если во второй, то "стр.Ссылка", замените на "стр.ИмяПоляТаблицыКудаНадоПоложитьНовуюСсылку"
7. user1599296 26.10.21 15:22 Сейчас в теме
(5) Ругается на "СсылкаНаНовыйДокумент = НовыйДокумент.Ссылка;", пишет "Не найдет объект ссылка".
Пробовала использовать СсылкаНаНовыйДокумент = НовыйДокумент.ПолучитьСсылку, в отладчике в значение приходит "<Объект не найден> (43775:80c6bcee7be3149511ec3657443c07e3)".
8. -AI- 26.10.21 16:41 Сейчас в теме
(7) вы каждый раз пишите неполную или недостоверную информацию....
(иначе зачем я задавал бы уточняющий вопрос про место ошибки?)

например. написали не "ссылка", а "сылка" или "ссылку" и т.д., вот оно и ругается..
либо место кода не то... но вам же лень скопипастить всю процедуру....

в общем, а пас..
9. user1599296 26.10.21 16:50 Сейчас в теме
(8) я считаю , что Вам нормально ответила , пас так пас. Спасибо и на этом.
10. Oldsad 27.10.21 03:06 Сейчас в теме
(9) плохо
для нормального разбора ситуации нужен как минимум копи-паст кода и копи паст ошибки
вы не сделали ни того ни другого
6. starjevschik 26.10.21 14:05 Сейчас в теме
(4) наймите программиста, это обойдется намного дешевле, задача не очень сложная, но если сделать ее неправильно, есть шанс наплодить кучу лишних документов и потом в ней потеряться.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот