Как проверить тип значения документа, справочника?
Во-первых, во встроенном языке 1С:Предприятия 8 для работы с одним прикладным объектом реализовано несколько типов. Например, задачи, которые в 1С:Предприятии 7.7 решал тип «Документ» решаются теперь несколькими типами. Они разделены по своему назначению. Тип «ДокументСсылка» используется для хранения ссылок на объект базы данных в реквизитах других объектов. Тип «ДокументОбъект» используется для записи и удаления отдельных документов. Тип «ДокументВыборка» используется для перебора документов, хранящихся в базе данных. Существуют и другие типы данных, предназначенные для работы с документом. При написании модулей используются те типы, которые необходимы для решения конкретных задач.
Во-вторых, в 1С:Предприятии 8 нет двух понятий — «Тип» и «Вид». Для каждого объекта метаданных имеется свой набор типов используемых во встроенном языке для работы с описываемым им прикладным объектом. То есть при использовании конфигурации не будет существовать такого типа как «ДокументСсылка», а будут существовать конкретные типы, например, «ДокументСсылка.Счет», «ДокументОбъект.Счет», «ДокументСсылка.Накладная», и т.д.
Кроме того, в 1С:Предприятии 8 для манипулирования типами используются не их строковые наименования, а специальный тип «Тип». Значение типа Тип может быть получено функцией Тип(), получающей в качестве параметра имя типа.
Чтобы проверить тип значения переменной нужно определить ее тип функцией ТипЗнч() и использовать функцию Тип() для получения типа по имени.
Если ТипЗнч(Основание) = Тип(«ДокументСсылка.ПриходнаяНакладная») Тогда
Как в запросе определить тип документа 1с
Столкнулся с такой проблемой, может кому пригодится.
Если надо отобрать в запросе документы определенного типа то работает такая конструкция:
НужнТип = Тип(«ДокументСсылка.ПередачаМатериаловВЭксплуатацию»);
.
|ГДЕ
| ТИПЗНАЧЕНИЯ(МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор.Ссылка) = &НужнТип
.
Запрос.УстановитьПараметр(«НужнТип», НужнТип);
Правда? :)) спасибо
Хочешь порву щас тебя вообще?
| ТИПЗНАЧЕНИЯ(МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор.Ссылка) = Тип(Документ.передачаМаиериаловвЭксплуатацию)
мля, я тоже наг*внокодил копипастой
где МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор ссылка Документ.ПередачаМатериаловВЭксплуатацию
Можно и так:
ГДЕ МатериалыВЭксплуатацииОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПередачаМатериаловВЭксплуатацию
Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Решение вопросов, возникающие при автоматизации учета с помощью 1С:Предприятие. Паскаль.
Как вывести в запросе данные по определенному виду (типу) документа. 1С:Предприятие 8.2?
30.04.2013 |
Автор Дмитрий
Как вывести в запросе данные по определенному виду (типу) документа. 1С:Предприятие 8.2?
Можно использовать слово ССЫЛКА.
Для 1С:Предприятие 8.2 предусмотрена еще одна конструкция: ТИПЗНАЧЕНИЯ и ТИП.
ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
ПоступлениеТоваровУслуг — это объект (документ), созданный в конфигураторе.
Пример: вывод суммы оборотов по всем счетам для документа вида Поступление товаров и услуг за определенный период.
ВЫБРАТЬ ХозрасчетныйОборотыДтКт.СчетДт, ХозрасчетныйОборотыДтКт.СчетКт, ХозрасчетныйОборотыДтКт.СуммаОборот, ХозрасчетныйОборотыДтКт.Регистратор ИЗ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, Регистратор, , , , , ) КАК ХозрасчетныйОборотыДтКт ГДЕ ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
![]()
Рубрика: 1С:Предприятие 8.2, Новости
Как в запросе определить тип документа 1с
Какой умысел преследовали разработчики платформы, когда в запросах сделали вот это:
ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
Неужели недостаточно было так:
Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
ТИПЗНАЧЕНИЯ(Регистратор) = ТИП(Документ.РеализацияТоваровУслуг) — более широкое, т.к там не только ссылка может быть, а ССЫЛКА получается подмножество
а если тип число?
(1) не фига не понял. Можешь понагляднее объяснить?
ТИПЗНАЧЕНИЯ(Регистратор) = &тип
а вот так можно?
(3) А через ВЫРАЗИТЬ никак нельзя что-ли?
чтобы можно было вот так:
ВЫБРАТЬ
*
ИЗ
РегистрСведений.ДополнительныеСведения
ГДЕ
ТИПЗНАЧЕНИЯ(Значение) = ТИП(Строка)
(7) каким образом?
(7) Не все можно выразить 🙂
(7)
В ВЫРАЗИТЬ есть проверка условия?
(0) А если бы использовали «ССЫЛКА», ты спрашивал бы почему не «тип» ?
Множество типов больше, чем множество ссылок (таблиц).
Возможна передача значения типа Тип как параметр запроса.
ВЫБРАТЬ
ТИПЗНАЧЕНИЯ(Остатки.Регистратор)
ИЗ
РегистрНакопления.УчетНоменклатуры КАК Остатки
ГДЕ
ТИПЗНАЧЕНИЯ(Остатки.Регистратор) = &Тип
(13) всего на 3 типа. из-за этого не стоило и огород городить
(15) Стоило. Хотя изза того, что можно использовать оператор В
+ выборка типа как поля в результате, группировка по типу и тд
(15) на 4 типа. Плюс функционал в (17)
(15)даже не 4, а 6 типов.
(19) не, 7 типов + описание типов и три системных перечисления. Итого уже 11.
(20) null, undefined, ХЗ, уникальный идентификатор + 4 базовых 🙂
(16) однозначная вещь, тем более, что фактически в таблицах есть поля с хранением значений.
Например сравнение на неустановленность значения в поле с множественными типами
(23) тут проще:
ГДЕ
СчетФактура ЕСТЬ NULL
(24) в 1с все поля БД not null. А для составных типов есть поле отвечающее за тип. А вот в нем можно понять установлено значение или нет
(25) все работает, там запрос кривой
(26) >>в 1с все поля БД not null
это ложь
(27) Там не кривой запрос. В итогах прописывается Null, а вот в детальных записях Null нет. Конструкция в 23 работает проверено.
(28) приведи пример
(30) Артикул у группы номенклатуры
(21) Точно. Вспомнил. Поля справочников только для группы или только для элемента. Прошу прощения.
(0) Не достаточно.
1. ТИПЗНАЧЕНИЯ(Поле) В (&СписокТипов)
2. Запросы ниже, как ни парадоксально, совершенно разные
ВЫБРАТЬ * ИЗ Документ.Реализация КАК Док
ГДЕ НЕ ТИПЗНАЧЕНИЯ(Поле) = &Тип
ВЫБРАТЬ * ИЗ Документ.Реализация КАК Док
ГДЕ ТИПЗНАЧЕНИЯ(Поле) <> &Тип
гибкости прибавилось ого-го
ВЫБРАТЬ * ИЗ Документ.Реализация КАК Док
ГДЕ НЕ ТИПЗНАЧЕНИЯ(Док.Товары.Поле) = &Тип
ВЫБРАТЬ * ИЗ Документ.Реализация КАК Док
ГДЕ ТИПЗНАЧЕНИЯ(Док.Товары.Поле) <> &Тип