Адресовано любителям прямых запросов, которые не хотят использовать функций и соединений со своими
таблицами... и не могут ждать появления метода в MetaDataWork
Вот так можно получить вид документа из IDDOCDEF (полностью штатно):
Стр= "{" +"""O"""+","+"""0"""+","+"""0"""+","+"""*"""+","+"""0"""+","+"""0"""+","+""" 0 """+"}"
; Стр=
СтрЗаменить(
Стр, "*",
Строка(
Вид))
;//Вид - это что-то вроде 3508, тот что в DD и DDS (десятичное число)
Вид=
ЗначениеИзСтрокиВнутр(
Стр).
Вид()
;//А вот это уже идентификатор :)
Аккуратнее с однотипными группировками в SQL
Казалось бы безобидный запрос работает под SQL некорректно из-за того, что разные реквизиты ссылаются на один и тот же справочник. По отдельности работать будет (а также если перенести вторую группировку вперед и поставить между свойствами еще какую-то группировку)
Можете попробовать
Вот пример для ТиС:
ЗначениеСвойства = Справочник.Контрагенты.ОсновноеСвойство.ЗначениеСвойства;
ЗначениеСвойства1 = Справочник.Контрагенты.ОсновноеСвойство1.ЗначениеСвойства;
Группировка ЗначениеСвойства;
Группировка ЗначениеСвойства1;
Вот просто отсебятина:
|Организация = Справочник.МестаХранения.Организация;
|Организация1 = Справочник.МестаХранения.Организация1;
|Группировка Организация;
|Группировка Организация1;
Тип реквизитов Организация и Организация1 - "Справочник.Контрагенты"
Как найти битую ссылку?
Это знакомое
А вот так можно, например:
Если (
ПустоеЗначение(
Док.
Докум) = 0)
и(
Док.
Докум.
Выбран() = 0) Тогда
Сообщить("В документе " +
Док+ " есть битая ссылка")
;КонецЕсли
;
ЗЫ. Аккуратно с непосредственным удалением объектов
Как узнать является ли строка числом?
Примерчики...
"0004" - число, "440ф0" - не число, "43.045" - число, "-33" - число, "5453.54.4" - не число и т.п.
В процессе интереснейшего обсуждения на риалнете http://abelov.com/forum/f.php?ac=ar&ak=35693#0
родил вот такую простенькую но вполне работоспособную функцию:
Функция
ЭтоЧисло(Знач
ТекСтр)
ТекСтр=
СокрЛП(
ТекСтр)
; ТекСтр=
СтрЗаменить(
ТекСтр,"0","9")
;Если (
СтрДлина(
Число(
ТекСтр)) <>
СтрДлина(
ТекСтр))
или((
СтрДлина(
ТекСтр) = 1)
и(
Найти("0123456789",
ТекСтр) = 0)) Тогда Возврат 0
;КонецЕсли
;Возврат 1
;КонецФункции // ЭтоЧисло()