Полезные мелочи...

29.05.13

Разработка - Универсальные функции

Буду сюда писать воспоминания...
Возможно и набояню... звиняйте...
Простейшее получение Вида документа по ИД

Адресовано любителям прямых запросов, которые не хотят использовать функций и соединений со своими
таблицами... и не могут ждать появления метода в 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
;
КонецФункции // ЭтоЧисло()
 
Оригинал статьи
http://1c911.by/stati_1s/statya-poleznye-melochi.htm
Изменения и новые публикации смотрите на http://1c911.by/stati-1s.htm

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    657    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1820    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4399    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13286    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10094    malovandrey    2    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18672    2    HAMMER_59    6    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3958 30.07.07 20:50 Сейчас в теме
А вот так не проще будет? :
Код
Функция ЭтоЧисло(Стр)
   Если СтрДлина(Строка(Число(Стр)))=СтрДлина(Стр) Тогда
      Возврат 1; // число
   Иначе
      Возврат 0; // не число
   КонецЕсли;
КонецФункции
Показать полностью

2. CheBurator 3119 30.07.07 21:15 Сейчас в теме
Не проще, потому что не прокатит на строке "0002"
3. Abadonna 3958 30.07.07 21:39 Сейчас в теме
Прошу прощения, немного погорячился...
Нижеприведенная сработает во всех случая, кроме Стр="00001" и т.п.
Хотя можно можно и убрать незначащие нули, но тогда функция получится не проще, чем у автора
4. Abadonna 3958 30.07.07 21:49 Сейчас в теме
А вообще вот так:
Код
Функция ЭтоЧисло(Стр)   
   Стр=СтрЗаменить(Стр,"0",""); // нам неважно, значащий ноль или нет
   Если СтрДлина(Строка(Число(Стр)))=СтрДлина(Стр) Тогда
      Возврат 1;
   Иначе
      Возврат 0;
   КонецЕсли;
КонецФункции
Показать полностью
5. Abadonna 3958 30.07.07 21:54 Сейчас в теме
Для "чистого" нуля надо еще строчеку добавить в самом начале функции
Код
Если Стр="0" Тогда Возврат 1; КонецЕсли;
Показать полностью
6. CheBurator 3119 30.07.07 21:56 Сейчас в теме
Кругом двоешники... ;-)
"9009"
7. CheBurator 3119 30.07.07 22:00 Сейчас в теме
Не, это я двоешник... ;-)
Abadonna; +1 Ответить
8. Abadonna 3958 31.07.07 05:30 Сейчас в теме
Не сильно ты двоечник, не нашел, где я проколося ;)
После
Код
Стр=СтрЗаменить(Стр,"0","");
Показать полностью

надо поставить
Код
Если (Стр="") ИЛИ (Стр=".") Тогда // было что-то типа "00000" или "00.0000"
          Возврат 1;
КонецЕсли;
Показать полностью
9. Abadonna 3958 31.07.07 05:42 Сейчас в теме
А вобщем, вышло почти то же, что и автора, поэтому за беспокойство ему +1
10. Вадимко 214 31.07.07 14:04 Сейчас в теме
Оооо
Началось обсуждение :)
Подкину еще что-нить потом, пока совсем мало времени и голова опухла
11. CheBurator 3119 31.07.07 15:53 Сейчас в теме
Воспользовался "битыми ссылками", работает.
+1
;-)
12. Abadonna 3958 31.07.07 17:06 Сейчас в теме
>Началось обсуждение :)
Вишь как! Мы с Чебуром пообсуждали, мы ж тебе по плюсику и поставили ;)
Кидай чего-нить еще...
13. Lustin_is 11.08.07 15:22 Сейчас в теме
За вид документа спасибки
14. Вадимко 214 14.08.07 16:27 Сейчас в теме
Что-то слабовато с плюсиками... больше боянить не буду :)
15. gero 59 05.09.07 13:09 Сейчас в теме
оригинально, хоть и не то что хотелось. но проголосовать за вот это
Стр = "{" +"""O"""+","+"""0"""+","+"""0"""+","+"""*"""+","+"""0"""+","+"""0"""+","+""" 0 """+"}"
не помешает:)
16. Шухер 23 25.10.07 10:36 Сейчас в теме
Перепутал IdDocDef с DnPrefix
Оставьте свое сообщение