![]() |
|
Соответствие значений табличных частей | ☑ | ||
---|---|---|---|---|
0
gaur777
22.08.17
✎
14:40
|
Добрый день всем!!! Помогите пожалуйста. задача такая:
У меня имеется внешняя обработка. 1 действие - по нажатию кнопки отправляю запрос на сервис. 2 действие - по нажатию 2 кнопки получаю ответ с over количеством записей на форме есть поле ввода (ДокументКонтрагента) имеет тип ДокументСсылка.ДокументКонтрагента Нажимая на него я выбираю нужную мне строку документа с нужными мне значениями реквизита ("НомерМашины" и "ДатаОтправки") Теперь нужно описать условие Если реквизит НомерМашины (из документа) = реквизиту НомерТТН (из внешней обработки) и ДатаОтправки = ДатеТТН (тогда заполняется табличная часть этой строкой) Тоесть нужно отбирать только ту запись запроса, которая соответствует выбранному документу контрагента. |
|||
1
gaur777
22.08.17
✎
14:40
|
Вот скриншот формы внешней обработки - где я получаю ответ:
https://pastenow.ru/4a67d3a046821c452c933089a7c5b657 |
|||
2
Lexey_
22.08.17
✎
14:47
|
(1) а для чего тут скриншот формы?
|
|||
3
gaur777
22.08.17
✎
14:50
|
(2) а не нужен?
подумал, мало ли возникнут вопросы |
|||
4
Lexey_
22.08.17
✎
14:54
|
(3) вопрос-то какой у тебя?
|
|||
5
gaur777
22.08.17
✎
14:58
|
Вот со строчек:
Теперь нужно описать условие Если реквизит НомерМашины (из документа) = реквизиту НомерТТН (из внешней обработки) и ДатаОтправки = ДатеТТН (тогда заполняется табличная часть этой строкой) Тоесть нужно отбирать только ту запись запроса, которая соответствует выбранному документу контрагента. Как мне это реализовать программно? |
|||
6
Lexey_
22.08.17
✎
15:02
|
(5) Если ИмяРеквизитаДокумент.НомерМашины = ИмяРеквизитаТаблица[ИндексНужнойСтроки].НомерТТН .... Тогда
КонецЕсли; |
|||
7
azernot
22.08.17
✎
15:05
|
И сюда продублирую:
Какой тип у "ответа с over количеством записей"? Это табличная часть? Это таблица значений? Это структура? Это результат запроса? Это XDTО? |
|||
8
Lexey_
22.08.17
✎
15:05
|
+(6) либо ЭлементыФормы.ИмяРеквизитаТаблица.ТекущиеДанные.НомерТТН
|
|||
9
gaur777
22.08.17
✎
15:07
|
(6) = ИмяРеквизитаТаблица[ИндексНужнойСтроки]
я вот что-то тут не понял. либо может я неправильно объясняю до того как я получил ответ (тоесть табличная часть не заполнилась ещё) я выбираю нужный мне документ (например с номероммашины А001МО и дата 22.08.17), после чего нажимаю получить ответ И оно из всего списка, который должен заполниться в табличную часть, находит только ту строку где НомерТТН = А001МО и ДатаТТН = 22.08.17 |
|||
10
gaur777
22.08.17
✎
15:08
|
(7) это результат запроса, который получаю с сервиса
|
|||
11
Lexey_
22.08.17
✎
15:11
|
(9) ТаблицаЗначений (ValueTable)
НайтиСтроки (FindRows) Синтаксис: НайтиСтроки(<ПараметрыОтбора>) Параметры: <ПараметрыОтбора> (обязательный) Тип: Структура. Задает условия поиска: ключ структуры определяет имя колонки, по которой будет осуществляться поиск, а значение структуры - искомое значение. Возвращаемое значение: Тип: Массив. Массив строк таблицы значений, соответствующих условиям поиска. Замечание! Массив хранит ссылки на строки таблицы значений, то есть при изменении строки в таблице, значение в массиве тоже будет измененным. Описание: Осуществляет поиск строк таблицы значений, отвечающих заданным условиям поиска. Если в таблице значений добавлены индексы, подбор индекса для поиска осуществляется по точному соответствию состава колонок в индексе и в параметрах поиска, порядок следования колонок значения не имеет. |
|||
12
gaur777
22.08.17
✎
15:14
|
(11) вот это ближе к сути
спасибо сейчас попробую |
|||
13
azernot
22.08.17
✎
15:14
|
(10) Допустим твой "ответ" помещён в переменную РезультатЗапроса.
Самое простое - это тупой перебор НомерМашины = ДокументКонтрагента.НомерМашины; ДатаОтправки = ДокументКонтрагента.ДатаОтправки; Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий Цикл Если НЕ НомерМашины = Выборка.НомерТТН Тогда Продолжить; КонецЕсли; Если НЕ ДатаОтправки = Выборка.ДатаТТН Тогда Продолжить; КонецЕсли; НоваяСтрокаТЧ = МояТЧ.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, Выборка); КонецЦикла; Если это сработает - тогда уже будем рассматривать методы поиска нужного значения в выборке без прямого обхода или ограничение непоредственно в самом запросе, чтобы результат запроса сразу содержал только нужные данные. Но что-то подсказывает мне, что тип твоего "ответа с over количеством записей" нифига не "РезультатЗапроса" |
|||
14
azernot
22.08.17
✎
15:16
|
*(13) Пока Выборка.Следующий() Цикл
|
|||
15
gaur777
22.08.17
✎
15:20
|
(14) ответ XDTO
|
|||
16
azernot
22.08.17
✎
15:23
|
(15) Я так и думал.
Нужно понимать структуру этого XDTO, чтобы чем-то помочь. Можешь ответить в каком тэге в итоге хранится многострочная часть с нужными тебе данными? И вообще, в одной ли многострочной части эти данные? |
|||
17
gaur777
22.08.17
✎
15:26
|
||||
18
azernot
22.08.17
✎
15:29
|
(17) С таким ответом сразу хочется послать куда подальше.
Я подглядел примерную структуру в твоей предыдущей теме В итоге,примерно это должно выглядеть так: НомерМашины = ДокументКонтрагента.НомерМашины; ДатаОтправки = ДокументКонтрагента.ДатаОтправки; Для Каждого СтрокаВСД из ОтветСписок.vetDocument Цикл Если НЕ НомерМашины = СтрокаВСД.waybillDate Тогда Продолжить; КонецЕсли; Если НЕ ДатаОтправки = СтрокаВСД.waybillNumberТогда Продолжить; КонецЕсли; НоваяСтрокаТЧ = МояТЧ.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ, СтрокаВСД ); НоваяСтрокаТЧ .GUIDЦели = СтрокаВСД.purpose.guid; стр.UuidВСД = НоваяСтрокаТЧ .uuid; стр.Статус = НоваяСтрокаТЧ .status; //и т.п. чего надо КонецЦикла; А в ссылке твоей в (17) никто ковыряться не будет. Во всяком случае бесплатно. |
|||
19
gaur777
22.08.17
✎
15:40
|
(18) да я просто подумал именно про этот тег вы и имеете виду. по крайней мере в xdto пакетах, это как указывается
|
|||
20
gaur777
22.08.17
✎
15:42
|
(18) спасибо за помощь, сейчас попробую
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |