|
Конвертация данных | ☑ | ||
---|---|---|---|---|
0
стаканыч
12.09.14
✎
17:38
|
Такая задача : два документа выгружаются в один. Первый документ содержит все данные, а второй документ дозаполняет реквизиты. Я сделал ПКО для них, у второго документа сделал правило :
Запрос = Новый Запрос(); Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 |СписаниеСоСчета.Ссылка | ИЗ |Документ.СписаниеСоСчета КАК СписаниеСоСчета | ГДЕ |СписаниеСоСчета.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.ДокументОснование); РезультатПоискаДокументов = Запрос.Выполнить(); Если НЕ РезультатПоискаДокументов.Пустой() Тогда ВыборкаПоискаДокументов = РезультатПоискаДокументов.Выбрать(); Если ВыборкаПоискаДокументов.Следующий() Тогда СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; КонецЕсли; Иначе Отказ=Истина; КонецЕсли; Отрабатывает как то криво, создается еще один документ с реквизитом из второго документа. Что не так делаю, подскажите? |
|||
1
стаканыч
12.09.14
✎
17:38
|
Правило это находится в Поля поиска
|
|||
2
стаканыч
12.09.14
✎
18:21
|
Кто в пятницу вечером работает - тот молодец!
|
|||
3
Мимохожий Однако
12.09.14
✎
18:24
|
Как вариант: использовать произвольный запрос в Алгоритмах.
|
|||
4
стаканыч
12.09.14
✎
18:30
|
(3) а не то же самое? поиск работает ( документ меняет реквизит ), но и создается пустой документ, как бы этот хвост отрубить
|
|||
5
ArchLord
12.09.14
✎
18:36
|
хм, нечто похожее я тоже делал все ок было, правда я еще ПрекратитьПоиск = Истина; дописываю всегда
ПрекратитьПоиск - булево. Если Истина, то поиск объекта прекращается, в зависимости от того СсылкаНаОбъект заполнена или нет создается новый объект. |
|||
6
Мимохожий Однако
12.09.14
✎
18:37
|
Попробуй Отказ=Истина; для не нового документа после заполнения реквизитов.
|
|||
7
стаканыч
12.09.14
✎
18:40
|
(5) в конец кода из (0) добавил - нет изменений
|
|||
8
стаканыч
12.09.14
✎
18:43
|
(6) по идее документ всегда не новый.. куда конкретнее добавить отказ?
|
|||
9
Мимохожий Однако
12.09.14
✎
18:48
|
(8)Так, где создаешь документ, который, судя по всему уже найден.
|
|||
10
Мимохожий Однако
12.09.14
✎
18:48
|
*так, где..
|
|||
11
Мимохожий Однако
12.09.14
✎
18:48
|
Блин.. *там,где..
|
|||
12
стаканыч
12.09.14
✎
18:50
|
Я его не создаю, я его нахожу и затем
СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; Откуда новый документ то. |
|||
13
стаканыч
15.09.14
✎
10:09
|
Остался я там же, где и был. Помогите
|
|||
14
стаканыч
15.09.14
✎
10:10
|
Выяснилось, что ничего не находит :)
|
|||
15
vicof
15.09.14
✎
10:46
|
(0) Делай произвольный запрос в ПВД, получай там какие нужно данные, и результат запроса присваивай переменной ВыборкаДанных. Настраивай ПКО и ПКС, профит.
|
|||
16
probably
15.09.14
✎
10:54
|
А ты документ где ищешь?
В приемнике? У тебя в условии чушь, по-моему написана. Что и где ты ищешь? |
|||
17
Ymryn
15.09.14
✎
10:56
|
А как ты получаешь
СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; если у тебя выше Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект.ДокументОснование); ? У тебя изначально документ на другой должен спозиционироваться, а потом ты исправляешь? Плюс, это когда выполняется, какой обработчик? |
|||
18
Naumov
15.09.14
✎
11:13
|
(0) Вообще при таких задачах делают ПВД с произвольной выборкой, в которой готовят объект к выгрузке в нужном виде сразу.
Довыгрузка при помощи правил не слишком хорошая идея. |
|||
19
стаканыч
15.09.14
✎
11:42
|
(16) (17) тут смысл в том, что я сначала беру из СсылкаНаОбъект документ основание, и в этот объект гружу ( СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; )
т.е. подменяю ссылку на значение реквизита этой ссылки |
|||
20
стаканыч
15.09.14
✎
11:43
|
(18) я посмотрел типовые правил УТ-БП , там есть документ ПлатежноеПоручениеИсходящее , грузит из ДокументСсылка.СписаниеСРасчетногоСчета в ДокументСсылка.ПлатежноеПоручениеИсходящее
Реализовано кодом : Если ТипЗнч(СвойстваПоиска) = Тип("Соответствие") И СвойстваПоиска.Получить("{УникальныйИдентификатор}") <> Неопределено И ТипЗнч(СвойстваПоиска["{УникальныйИдентификатор}"]) = Тип("Строка") Тогда СсылкаДляПоискаАккредитивПереданный = Неопределено; СсылкаДляПоискаИнкассовоеПоручениеПолученное = Неопределено; СсылкаДляПоискаПлатежноеТребованиеПолученное = Неопределено; СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств = Неопределено; Попытка СсылкаДляПоискаАккредитивПереданный = Документы.АккредитивПереданный.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойстваПоиска["{УникальныйИдентификатор}"])); СсылкаДляПоискаИнкассовоеПоручениеПолученное = Документы.ИнкассовоеПоручениеПолученное.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойстваПоиска["{УникальныйИдентификатор}"])); СсылкаДляПоискаПлатежноеТребованиеПолученное = Документы.ПлатежноеТребованиеПолученное.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойстваПоиска["{УникальныйИдентификатор}"])); СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств = Документы.ПлатежныйОрдерСписаниеДенежныхСредств.ПолучитьСсылку(Новый УникальныйИдентификатор(СвойстваПоиска["{УникальныйИдентификатор}"])); /////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Удалось создать УникальныйИдентификатор из ключа соответствия СвойстваПоиска["{УникальныйИдентификатор}"] // /////////////////////////////////////////////////////////////////////////////////////////////////////////////// Исключение СсылкаДляПоискаАккредитивПереданный = Неопределено; СсылкаДляПоискаИнкассовоеПоручениеПолученное = Неопределено; СсылкаДляПоискаПлатежноеТребованиеПолученное = Неопределено; СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств = Неопределено; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // НЕ удалось создать УникальныйИдентификатор из ключа соответствия СвойстваПоиска["{УникальныйИдентификатор}"] // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// КонецПопытки; Если СсылкаДляПоискаАккредитивПереданный <> Неопределено ИЛИ СсылкаДляПоискаИнкассовоеПоручениеПолученное <> Неопределено ИЛИ СсылкаДляПоискаПлатежноеТребованиеПолученное <> Неопределено ИЛИ СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств <> Неопределено Тогда ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //==========================================================================================================================================================================// // Удалось создать УникальныйИдентификатор из ключа соответствия СвойстваПоиска["{УникальныйИдентификатор}"] // //==========================================================================================================================================================================// // Необходимо для поддержания цепочек документов расчетов // // Выполняется аналогичный поиск конвертации по внутреннему идентификатору в таблицах документов // // Документ.РеализацияОтгруженныхТоваров И Документ.ПередачаОС // // Выполняется в следствии следующих условий. // // Документы в Бухгалтерии предприятия: // // - "Передача ОС" // // - "Реализация отгруженных товаров" // // - "Реализация товаров и услуг" // // при выгрузке в Управление торговли, конвертируются в один тип документа "Реализация товаров и услуг". // // При обратной выгрузке по ссылке, выше указанных документов "Передача ОС" и "Реализация отгруженных товаров", в БП выгрузится пустая ссылка "Реализации товаров и услуг", // // так как в направлении выгрузки из УТ в БП нет возможности определить тип документа источника в следствии этого нет соответствующих правил конвертаций. // // // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Запрос = Новый Запрос(); Запрос.Текст = " |ВЫБРАТЬ ПЕРВЫЕ 1 | АккредитивПереданный.Ссылка КАК Ссылка |ИЗ | Документ.АккредитивПереданный КАК АккредитивПереданный |ГДЕ | АккредитивПереданный.Ссылка = &СсылкаДляПоискаАккредитивПереданный |ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ ПЕРВЫЕ 1 | ИнкассовоеПоручениеПолученное.Ссылка КАК Ссылка |ИЗ | Документ.ИнкассовоеПоручениеПолученное КАК ИнкассовоеПоручениеПолученное |ГДЕ | ИнкассовоеПоручениеПолученное.Ссылка = &СсылкаДляПоискаИнкассовоеПоручениеПолученное |ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ ПЕРВЫЕ 1 | ПлатежноеТребованиеПолученное.Ссылка КАК Ссылка |ИЗ | Документ.ПлатежноеТребованиеПолученное КАК ПлатежноеТребованиеПолученное |ГДЕ | ПлатежноеТребованиеПолученное.Ссылка = &СсылкаДляПоискаПлатежноеТребованиеПолученное |ОБЪЕДИНИТЬ ВСЕ |ВЫБРАТЬ ПЕРВЫЕ 1 | ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка КАК Ссылка |ИЗ | Документ.ПлатежныйОрдерСписаниеДенежныхСредств КАК ПлатежныйОрдерСписаниеДенежныхСредств |ГДЕ | ПлатежныйОрдерСписаниеДенежныхСредств.Ссылка = &СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств |"; Запрос.УстановитьПараметр("СсылкаДляПоискаАккредитивПереданный", СсылкаДляПоискаАккредитивПереданный); Запрос.УстановитьПараметр("СсылкаДляПоискаИнкассовоеПоручениеПолученное", СсылкаДляПоискаИнкассовоеПоручениеПолученное); Запрос.УстановитьПараметр("СсылкаДляПоискаПлатежноеТребованиеПолученное", СсылкаДляПоискаПлатежноеТребованиеПолученное); Запрос.УстановитьПараметр("СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств", СсылкаДляПоискаПлатежныйОрдерСписаниеДенежныхСредств); РезультатПоискаДокументов = Запрос.Выполнить(); Если НЕ РезультатПоискаДокументов.Пустой() Тогда ВыборкаПоискаДокументов = РезультатПоискаДокументов.Выбрать(); Если ВыборкаПоискаДокументов.Следующий() Тогда СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; Параметры.ДокументыЗагруженныеИзНесоовпадающихТиповДокументов.Добавить(СсылкаНаОбъект); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
21
Naumov
15.09.14
✎
12:03
|
(20) И какие выводы сделал?
Правда описанное - задача наоборот. один документ выгружается в два разных. |
|||
22
Naumov
15.09.14
✎
12:03
|
но смысл примерно тот же.
|
|||
23
стаканыч
15.09.14
✎
12:30
|
(21) я вывод сделал из этой строки
СсылкаНаОбъект = ВыборкаПоискаДокументов.Ссылка; Пытаюсь также подменить СсылкаНаОбъект |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |