![]() |
![]() |
|
Типы данных параметра запроса ↓ (Волшебник 12.08.2025 11:36) ангел, YaFedor, arsik, Fish, phabeZ, formista2000, rittchie, Ненавижу 1С, Волшебник, d4rkmesa, Вадим33, Timon1405, vis, alexxx961503, Prog_man, lexushka, RomanYS, okmail, Valdis2007, Мультук, Гипервизор, DiMel_77, ndrv, kubik_live, Бычье сердце, boozin, Saval1986, denk32, ads55, youalex, Amfiaray
| ☑ | ||
---|---|---|---|---|
0
formista2000
12.08.25
✎
10:28
|
Пытаюсь определить тип данных параметра запроса, но выдаёт ошибку. Параметром может быть документ любого из двух типов. Конструкции типа ССЫЛКА, а также ТИПЗНАЧЕНИЯ = ТИП отрабатывают только если заданный параметр того типа, на который идёт проверка, проверка на другой тип выдаёт ошибку.
Задача - выразить параметр как определённый тип, чтобы обратиться к одинаковому реквизиту обоих типов документов. Есть ли рецепт? Спасибо! |
|||
1
arsik
гуру
12.08.25
✎
12:42
|
(0) Пример-то покажи. Мне ничего пока непонятно
|
|||
2
Волшебник
12.08.25
✎
10:30
|
Должна работать конструкция:
ТИПЗНАЧЕНИЯ(&П) = ТИП(Документ.ИмяДок) |
|||
3
Fish
гуру
12.08.25
✎
10:40
|
(0) Надо строить запрос так, чтобы работал с любым типом, не выдавая ошибки.
|
|||
4
arsik
гуру
12.08.25
✎
10:41
|
(3) Прям чат жипити
|
|||
5
formista2000
12.08.25
✎
10:41
|
выбрать выбор когда типзначения(&док) = тип(документ.Счет) тогда выразить(&док как документ.Счет)
когда типзначения(&док) = тип(документ.Накладная) тогда выразить(&док как документ.Накладная) конец док если параметр типа документ.Счет, то ошибка при ВЫРАЗИТЬ(&док как документ.Накладная), и наоборот. |
|||
6
YaFedor
12.08.25
✎
10:43
|
(5) В Выбор же есть Иначе, в него и пихай второй выбор Когда
|
|||
7
Fish
гуру
12.08.25
✎
10:46
|
(5) А зачем вообще это выразить? Оно тут явно лишнее.
|
|||
8
formista2000
12.08.25
✎
10:47
|
(6) мимо
|
|||
9
formista2000
12.08.25
✎
10:50
|
(7) Чтобы обратиться к реквизиту. Реквизит называется одинаково в обоих типах документов. Например, "Контрагент".
+ иначе выдаёт ошибку "Поле не найдено". |
|||
10
Fish
гуру
12.08.25
✎
10:50
|
(9) А почему сразу Контрагента не передать параметром?
|
|||
11
formista2000
12.08.25
✎
10:51
|
(10) красоты хочется
|
|||
12
Ненавижу 1С
гуру
12.08.25
✎
10:55
|
ВЫБРАТЬ
Док.ФизическоеЛицо КАК ФизЛицо ИЗ Документ.ПриемНаРаботу КАК Док ГДЕ Док.Ссылка = &док ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Док.ФизическоеЛицо КАК ФизЛицо ИЗ Документ.Увольнение КАК Док ГДЕ Док.Ссылка = &док |
|||
13
formista2000
12.08.25
✎
11:01
|
(12) Оно! Спасибо преогромнейшее!
|
|||
14
Волшебник
12.08.25
✎
11:02
|
(12) хрень какая-то
|
|||
15
Ненавижу 1С
гуру
12.08.25
✎
11:06
|
(14) согласен, но так хотел заказчик
|
|||
16
formista2000
12.08.25
✎
11:13
|
(14) (15) Ничего вы не понимаете! То что надо!
|
|||
17
Fish
гуру
12.08.25
✎
11:15
|
(16) Некрасиво же.
|
|||
18
Волшебник
12.08.25
✎
11:16
|
(15) Ему надо объяснить, что он
|
|||
19
ангел
12.08.25
✎
11:19
|
(18) Все верно. Потом кто-то другой откроет этот код и скажет "абзац...что за дурак писал"!
|
|||
20
formista2000
12.08.25
✎
11:19
|
(17) Всё красиво! Не хочу параметры плодить.
(18) Чогой-то? Есть ещё варианты решения? |
|||
21
ангел
12.08.25
✎
11:21
|
(20) Контекст задачи не совсем понятен чтобы предложить варианты.
|
|||
22
Волшебник
12.08.25
✎
11:22
|
(20) Делайте запрос сразу к нужной таблице
|
|||
23
Волшебник
12.08.25
✎
11:23
|
Или вообще не делайте запрос:
док.ФизическоеЛицо выдаст требуемое |
|||
24
ангел
12.08.25
✎
11:26
|
(20) Может быть есть регистр Сведений, например "Кадровые документы" или что-то еще ?
Какой контекст? Получен документ по ссылке ? Дальше что? Помещение в ВТ ? |
|||
25
ангел
12.08.25
✎
11:31
|
(23)
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДокументСсылка, "ФизическоеЛицо") |
|||
26
Ненавижу 1С
гуру
12.08.25
✎
11:28
|
ОбщегоНазначения.ЗначениеРеквизитаОбъекта
|
|||
27
Ненавижу 1С
гуру
12.08.25
✎
11:35
|
(18) кому и зачем надо?
|
|||
28
Волшебник
12.08.25
✎
11:37
|
(26) Это ж извращение.
Здесь достаточно док.ФизическоеЛицо |
|||
29
formista2000
12.08.25
✎
11:41
|
(22) Как например?
|
|||
30
ангел
12.08.25
✎
12:39
|
(29)
Запрос = Новый Запрос( "ВЫБРАТЬ Док.ФизическоеЛицо КАК ФизЛицо ИЗ Документ.ПриемНаРаботу КАК Док ГДЕ Док.Ссылка = &док"); Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.Увольнение") Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.ПриемНаРаботу, "Документ.Увольнение"); КонецЕсли; ___________________________ Как вариант. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |