Проверить наличие реквизита у объекта 1с бсп

// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
//
// Параметры:
//  Объект       — Произвольный — объект, у которого нужно проверить наличие реквизита или свойства;
//  ИмяРеквизита — Строка       — имя реквизита или свойства.
//
// Возвращаемое значение:
//  Булево — Истина, если есть.
//
Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт

   КлючУникальности   = Новый УникальныйИдентификатор;
   СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
   ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);

   Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;

КонецФункции

Есть ли реквизит у объекта

Я
   Мандалай

15.05.18 — 15:12

Добрый день.

Как проверить есть ли у объекта реквизит?

Объектом может быть как объект конфигурации (документ, справочник), так и структура и реквизит формы или строка ТЧ.

  

Партнерская программа EFSOL Oblako

   RomanYS

1 — 15.05.18 — 15:13

(0) или Попытка, или анализ типов и дальше либо Свойство() для структуры метаданные для всего остального

   dezss

2 — 15.05.18 — 15:13

Если хочется универсальности, то либо городить кучу условий, либо попытка-исключение)

   Мандалай

3 — 15.05.18 — 15:14

В БСП ничего похожего нет?

   mehfk

4 — 15.05.18 — 15:17

   drei

5 — 15.05.18 — 15:18

(0) Создать структуру с именем реквизита и значением — уникальным идентификатором. Заполнить значение свойств и посмотреть, что изменилось в структуре.

Попытошники, бл.

   Мандалай

6 — 15.05.18 — 15:21

(4)Не то, там объект метаданных. Прежде чем гуглом кидаться надо читать, что в результате поиска.

(5)Идея хорошая, но много букв. Я рассчитывал на что-то готовое.

   GANR

9 — 15.05.18 — 15:27

Объект.Метаданные().Реквизиты.Найти(ТвойРеквизит)

   GANR

17 — 15.05.18 — 15:46

(11) а вот так?

Функция НаличиеСвойстваУОбъекта(Объект, ИмяСвойства)

ИдентификаторОтсутствия = Новый УникальныйИдентификатор;

Структура = новый Структура(ИмяСвойства, ИдентификаторОтсутствия);

ЗаполнитьЗначенияСвойств(Структура, Объект);

Возврат Структура[ИмяСвойства] <> ИдентификаторОтсутствия

конецФункции

   GANR

18 — 15.05.18 — 15:48

Ну еще через Попытку/Исключение можно

   Мандалай

19 — 15.05.18 — 16:06

(17) Ну да, это как раз то, что я хотел, но думал что уже есть готовое решение в БСП или какой-нибудь метод хитрый.

Спасибо. И без всяких там гуглов.

   Базис

20 — 15.05.18 — 16:11

(19) Будь как бобр, сравни скорость обоих вариантов и поведай нам.

   GANR

21 — 15.05.18 — 16:31

(19) В БСП не видел — токо через Попытка/Исключение.

   1sanekmaloi1

22 — 15.05.18 — 16:41

(19)Это и есть готовое решение из типовых конф, всякие УТ ЕРП и т.д.

   Мандалай

23 — 15.05.18 — 16:55

(22)Поиск по конфигурации не дал результатов. ЕРП 2.2.

   Адинэснег

24 — 15.05.18 — 16:58

   Buster007

25 — 15.05.18 — 17:00

а если ИмяСвойства будет реквизит с типом данныеформыколлекция, то что будет?

   AlvlSpb

26 — 15.05.18 — 17:02

(22) Не совсем верно. Для ТЧ в типовых есть функция в общем модуле (например для УТ):

ОбщегоНазначенияУТ.ЕстьРеквизитТабЧастиОбъекта(ИмяРеквизита, МетаданныеОбъекта, ИмяТабЧасти)

   AlvlSpb

27 — 15.05.18 — 17:05

(26) + В других это общ модуль ОбщегоНазначения и функция может называться ЕстьРеквизитТабЧастиДокумента. Возвращает Истину или Ложь проверки наличия конкретного реквизита ТЧ

   Михаил Козлов

28 — 15.05.18 — 17:15

(26)(27) Это касается только метаданных.

   1sanekmaloi1

29 — 15.05.18 — 17:17

(23)А если искать функцию ЕстьРеквизитОбъекта

   AlvlSpb

30 — 15.05.18 — 17:20

(28) Какая разница?! Задача определить наличие или отсутствие реквизита ТЧ. А как это делается вторично

  

AlvlSpb

31 — 15.05.18 — 17:22

(29) ТОже есть Для УТ

ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Объект, ИмяРеквизита)

Привел как пример, что до нас все уже изобрели и нет смысла выдумывать велосипед

Содержание:

1.      Когда возникает необходимость проверить наличие реквизита 1С?

2.      Как можно получить метаданные объекта 1С?  

1.    Когда возникает необходимость проверить наличие реквизита 1С

Потребность проверки наличия реквизита обычно возникает при написании общих, универсальных процедур или функций, к примеру, когда необходимо выполнить ряд однообразных действий, проверить заполнение перед проведением, при этом реквизитный состав обрабатываемых объектов метаданных отличается незначительно (например, в документе, отражающем продажу товара, есть реквизит Склад, а в документе, отражающем перемещение товара – реквизиты Склад-отправитель и Склад-получатель).

В ряде типовых конфигураций 1С предлагается стандартная функция проверки наличия реквизита в объекте (расположена в модуле “ОбщегоНазначения”)

Функция ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта) Экспорт

            Возврат НЕ (МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено);

КонецФункции   

2. Как можно получить метаданные объекта 1С

Однако написать свою функцию также не представляет труда. В первую очередь необходимо получить метаданные объекта 1С одним из способов:

через функцию Метаданные() объекта

пример синтаксиса: СправочникСсылка.Метаданные()

                                    ДокументСсылка.Метаданные()

через свойство глобального контекста Метаданные

пример синтаксиса: Метаданные.Справочники.[ИмяСправочника]

                                    Метаданные.Документы.[ИмяДокумента]

Далее через свойство “Реквизиты” использовать функцию Найти(). В случае, если реквизит не найден, возвращается значение Неопределено.

Пример 1

Метаданные = Контрагент.Метаданные();

Если Метаданные.Реквизиты.Найти(«Ответственный») = Неопределено Тогда

            Возврат Ложь;

Иначе

            Возврат Истина;

КонецЕсли;

Пример 2

Функция ПолучитьОрганизацию(Контрагент, Пользователь)

            Если Метаданные.Справочники.Контрагенты.Реквизиты.Найти(«Организация») <> Неопределено Тогда

                        Возврат Контрагент.Организация;

            Иначе

                        Возврат Пользователь.Организация;

            КонецЕсли;

КонецФункции

Описанный алгоритм подходит для случаев проверки наличия реквизита шапки. Но что делать, когда возникает необходимость определить, существует ли реквизит в табличной части 1С (справочника или документа)? Для этого используется следующая конструкция:

Метаданные.Справочники.<ИмяСправочника>.ТабличныеЧасти.Реквизиты.Найти(<ИмяОбъектаПоиска>).

При обработке таблиц значений также возможно выполнить проверку существования колонки – в этом случае применяется метод Свойство(), с помощью которого, помимо основной функции – получения значения элемента по указанному имени, можно проверить, имеется ли указанного свойство.

Пример синтаксиса:

Если НЕ ТекущаяСтрока.Свойство(«Исключить») ИЛИ НЕ ТекущаяСтрока.Исключить Тогда

            ЗаполнитьЗначенияСвойств(ТаблицаЗагрузки.Добавить(); ТекущаяСтрока);

КонецЕсли;

Специалист компании ООО «Кодерлайн»

Кондренко Анна Сергеевна

 0 

   

Распечатать

1С 8.3 : Функции ЕстьРеквизитДокумента и ЕстьРеквизитОбъекта

При разработке частенько нужно проверить наличие реквизита в документе или справочнике.

Ниже приведены функции позволяющие проверить наличие заданных реквизитов в объектах конфигурации:

Код 1C v 8.х

 // Позволяет определить есть ли среди реквизитов шапки Объекта реквизит с переданным именем.
Функция ЕстьРеквизитОбъекта(ИмяРеквизита, Объект) Экспорт

МетаданныеОбъекта = Объект.Метаданные();
Если МетаданныеОбъекта.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли; 

КонецФункции 

Для документа:

Код 1C v 8.х

 // Позволяет определить есть ли среди реквизитов шапки документа
// реквизит с переданным именем.
//
// Параметры: 
//  ИмяРеквизита - строковое имя искомого реквизита, 
//  МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск.
//
// Возвращаемое значение:
//  Истина - нашли реквизит с таким именем, Ложь - не нашли.
//
Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт

Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда
Возврат Ложь;
Иначе
Возврат Истина;
КонецЕсли; 

КонецФункции

P.S. Посмотрите еще Полезные функции по работе с метаданными

Проверка реквизита, элемента формы на существование



FastCode


1413

11
21
66




Получает значение элемента по указанному имени, а также проверяет, имеется ли указанное свойство

Автор: HostHost

// 1.
СтруктураПараметров.Свойство("ЗначенияРазовыхПоказателей", ЗначенияРазовыхПоказателей)

// 2.
Элементы.Найти("ИсполнителиРабот")

0

0


0

ред. 2 года назад

Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.



  • Шаблоны кода 1С

    База полезных фрагментов кода



  • Секреты TurboConf

    С автором программы



  • Нейросети и AI

    Будущее наступает



  • Лайфхаки 1С

    Полезные советы, база знаний



  • Бубен админа

    Приемы администрирования



  • 1С не всерьез

    Одинесники шутят


Комментарии

См. также

Проверка поля на существование

УдалитьСтарыеРеквизитыИЭлементы (БСП)

УстановитьДоступностьЭлементовФормы (БСП)

ПроверитьКодСправочникаПоОрганизации (БСП)

ПроверкаЗаполненностиРеквизитовОтложеннойОтправки (БСП)

ЗаполнитьДополнительныеРеквизитыВФорме (БСП)

ОбновитьЭлементыДополнительныхРеквизитов (БСП)

РазрешитьРедактированиеРеквизитовОбъекта (БСП)

ОбработатьФайлПослеПроверкиСуществования (БСП)

sale

fastcode_tg

courses_fastcode

courses_fastcode

Previous

Next

Модератору

Универсальные процедуры и функции¶

  • Универсальные процедуры и функции
    • Права и роли
    • Прочее
      • Процедуры и функции общего назначения
      • Проверить, что описание типа состоит из единственного типа значения и совпадает с нужным типом.
      • Функция ЕстьРеквизитОбъекта — проверяет наличие у произвольного объекта реквизита с указанным именем (УТ11.ОбщегоНазначенияУТКлиентСервер)
      • Проверка битых ссылок
      • МенеджерИсторииРаботыПользователя
      • ОтображениеСостояния
      • Очистка окна сообщений
      • Отбор в таблице значений (табличной части) с помощью построителя запроса
      • Запись справочника
      • Запись и проведение документа
      • Проверка на пустую дату
      • Создание пустой таблицы значение на основании табличной части Документа
      • Создание структуры со свойствами, как колонки таблицы, переданной строки
      • Загрузка таблицы/соответствия из макета с помощью построителя отчета
      • Получение прописью месяца в родительном падеже
      • Число прописью
      • Склонения по падежам
      • Варианты преобразования даты из строки (конвертация строки в дату)
      • Генератор случайных чисел
      • Пересохранение книги в Эксель (Excel) с отображением листов
      • Функция ВернутьТолькоЦифры
      • Установить новую ссылку для еще не записанного объекта.
      • Получение документа (паспорт) физического лица
      • Значение реквизита объекта на клиенте и сервере

Права и роли¶

УправлениеДоступом.ЕстьРоль(
ЕстьПраво
ЧтениеРазрешено
ИзменениеРазрешено

Прочее¶

h3. Процедуры и функции общего назначения

Проверить, что описание типа состоит из единственного типа значения и совпадает с нужным типом.¶

// Проверить, что описание типа состоит из единственного типа значения и 
// совпадает с нужным типом.
//
// Возвращаемое значение:
//   Булево      - Совпадает или нет
//
Функция ОписаниеТипаСостоитИзТипа(ОписаниеТипа, ТипЗначения) Экспорт

    Если ОписаниеТипа.Типы().Количество() = 1
       И ОписаниеТипа.Типы().Получить(0) = ТипЗначения Тогда
        Возврат Истина;
    КонецЕсли;

    Возврат Ложь;

КонецФункции

УТ11:

    ОписаниеСвойства.Булево = ОбщегоНазначения.ОписаниеТипаСостоитИзТипа(ТипЗначенияСвойства, Тип("Булево"));

Функция ЕстьРеквизитОбъекта — проверяет наличие у произвольного объекта реквизита с указанным именем (УТ11.ОбщегоНазначенияУТКлиентСервер)¶

#Область МетодыРаботыСРеквизитамиОбъектов

// Проверяет наличие у произвольного объекта реквизита с указанным именем.
//
Функция ЕстьРеквизитОбъекта(Объект, ИмяРеквизита) Экспорт

    КлючУникальности   = Новый УникальныйИдентификатор;
    СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);

    ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);

    Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;

КонецФункции

#КонецОбласти

Проверка битых ссылок¶

ЭтоБитаяСсылка = не ЗначениеЗаполнено(Ссылка.ВерсияДанных);

МенеджерИсторииРаботыПользователя¶

// Добавить событие в историю работы пользователя
ИсторияРаботыПользователя.Добавить(ПолучитьНавигационнуюСсылку(Объект.Ссылка));

ОтображениеСостояния¶

Очистка окна сообщений¶

Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:

ОчиститьСообщения();

Отбор в таблице значений (табличной части) с помощью построителя запроса¶

&НаСервере
Функция ПолучитьКоличествоПодобраноПоСтрокеНаСервере(ИсходнаяНоменклатура)

   ПостроительЗапр = Новый ПостроительЗапроса;
   ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(Объект.НоваяНоменклатура.Выгрузить());
   Отбор = ПостроительЗапр.Отбор.Добавить("ИсходнаяНоменклатура");
   Отбор.ВидСравнения = ВидСравнения.Равно;
   Отбор.Значение = ИсходнаяНоменклатура;
   Отбор.Использование = Истина;
   ПостроительЗапр.Выполнить();
   ПостроительЗапр.Результат.Выгрузить().Итог("Количество");

КонецФункции

Запись справочника¶

Функция ЗаписатьСправочник(ТекущийОбъект,Заголовок="",РежимСообщений="Все",РежимЗагрузки=Ложь) Экспорт

    ДействиеВыполнено  = Ложь;

    ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
    ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);

    Попытка
        Если РежимЗагрузки Тогда
            ТекущийОбъект.ОбменДанными.Загрузка = Истина;
        КонецЕсли; 
        ТекущийОбъект.Записать();
        ДействиеВыполнено = Истина;
        Если ВыводитьИнформацию Тогда
            ТекстСообщения = "Записан справочник """+ТекущийОбъект.Ссылка+""". ";
            СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
        КонецЕсли; 
    Исключение
        ДействиеВыполнено = Ложь;                        
        Если ВыводитьОшибки Тогда
            ТекстСообщения = "Не удалось записать справочник """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
            СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
        КонецЕсли; 
    КонецПопытки;

    Возврат ДействиеВыполнено;
КонецФункции //ЗаписатьПровестиДокумент()

Запись и проведение документа¶

// Процедура выполняет запись/проведение/отмену проведения документа.
//
// Параметры:
//  ТекущийОбъект  – ДокументОбъект,СправочникОбъект.
//  РежимЗаписи    - РежимЗаписиДокумента.
//  Заголовок      - Строка.
//  РежимСообщений - Строка: "Нет","Все","Ошибки".
//
// Возвращаемое значение:
//   ДействиеВыполнено   – Булево.
//
Функция ЗаписатьПровестиДокумент(ТекущийОбъект,РежимЗаписи,Заголовок="",РежимСообщений="Все") Экспорт

    ДействиеВыполнено  = Ложь;

    ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
    ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);

    Если РежимЗаписи = РежимЗаписиДокумента.Запись ИЛИ РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

        Попытка

            ТекущийОбъект.Записать(РежимЗаписиДокумента.Запись);
            ДействиеВыполнено = Истина;
            Если ВыводитьИнформацию Тогда
                ТекстСообщения = "Записан документ """+ТекущийОбъект.Ссылка+""". ";
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
            КонецЕсли; 
        Исключение
            ДействиеВыполнено = Ложь;                        
            Если ВыводитьОшибки Тогда
                ТекстСообщения = "Не удалось записать документ """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
            КонецЕсли; 
        КонецПопытки;

    КонецЕсли; 

    Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

        Попытка

            ТекущийОбъект.Записать(РежимЗаписиДокумента.Проведение);
            ДействиеВыполнено = Истина;
            Если ВыводитьИнформацию Тогда
                ТекстСообщения = "Проведен документ """+ТекущийОбъект.Ссылка+""". ";
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
            КонецЕсли;             
        Исключение
            ДействиеВыполнено = Ложь;                        
            Если ВыводитьОшибки Тогда
                ТекстСообщения = "Не удалось провести документ """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
            КонецЕсли; 
        КонецПопытки;

    КонецЕсли; 

    Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда

        Попытка
            ТекущийОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
            ДействиеВыполнено = Истина;
            Если ВыводитьИнформацию Тогда
                ТекстСообщения = "Отменено проведение документа """+ТекущийОбъект.Ссылка+""". ";
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Информация);
            КонецЕсли;             
        Исключение
            ДействиеВыполнено = Ложь;                        
            Если ВыводитьОшибки Тогда
                ТекстСообщения = "Не удалось отменить проведение документа """+ТекущийОбъект.Ссылка+""". "+ОписаниеОшибки();
                СообщитьОбОшибке(ТекстСообщения,,Заголовок,СтатусСообщения.Важное);
            КонецЕсли; 
        КонецПопытки;

    КонецЕсли; 

    Возврат ДействиеВыполнено;
КонецФункции // ЗаписатьПровестиДокумент()

Проверка на пустую дату¶

Пустая дата

Дата("00010101");
Дата(1, 1, 1);
Дата("00010101000000");
Дата("0001-01-01");

Создание пустой таблицы значение на основании табличной части Документа¶

    Товары = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка().Товары.ВыгрузитьКолонки();

Создание структуры со свойствами, как колонки таблицы, переданной строки¶

СтруктураРез = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаДанных);
// Функция СтрокаТаблицыЗначенийВСтруктуру создает
// структуру со свойствами, как колонки таблицы
// значений передаваемой строки
// и устанавливает этим свойствам значения
// из строки таблицы значений.
// 
// Параметры:
//  СтрокаТаблицыЗначений - СтрокаТаблицыЗначений.
//
// ВозвращаемоеЗначение:
//  Структура
//
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт

    Структура = Новый Структура;
    Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
        Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
    КонецЦикла;

    Возврат Структура;

КонецФункции

Загрузка таблицы/соответствия из макета с помощью построителя отчета¶

Функция ЗаполнитьСоответствиеИзМакета(ИмяМакета)

    Макет = ПолучитьМакет(ИмяМакета);
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Макет.Область());
    ТЗ = ПостроительЗапроса.Результат.Выгрузить();

    Результат = Новый Соответствие;
    Для каждого Стр Из ТЗ Цикл
        Результат.Вставить(Стр.Колонка1, Стр.Колонка2);
    КонецЦикла;

    Возврат Результат;

КонецФункции

Получение прописью месяца в родительном падеже¶

ОбластьТела.Параметры.ДатаУдостоверенияМесяц = Сред(Формат(ДатаУдостоверения, "ДФ=ddMMMM"),3);

Число прописью¶

//
ЧислоПрописью(СтруктураОснований.Сумма, "Л=ru_RU;ДП=Истина", "рубль,рубля,рублей,м,копейка,копейки,копеек,ж,2");

//без дробной части
Числопрописью = ЧислоПрописью(ДанныеПечати.МассаБрутто, "Л=ru_RU; НП=Ложь",",,,,,,,,0")

Склонения по падежам¶

https://spb.koderline.ru/expert/programming/article-sklonenie-v-1s/#jakor6

//Возвращает массив
Массив = ПолучитьСклоненияСтрокиПоЧислу("место", ДанныеПечати.ссылка.г_КоличествоМестТН, "", "ЧС=Количественное", "ПД=Именительный")

Варианты преобразования даты из строки (конвертация строки в дату)¶

Проще всего преобразовать строку вида «20151215204222» используя метод «Дата»:

Дата(«20151215204222»)  // 15.12.2015 20:42:22

Со строкой «15.12.2015 20:42:22» также прекрасно справляется типовой метод:

Дата(«15.12.2015 20:42:22»)  //15.12.2015 20:42:22

Второй вариант, если мы знаем отдельные составляющие даты в строковом формате: год, месяц, день и т.д:

Дата(«2015″,»12″,»15″,»20″,»42″,»22»)  // 15.12.2015 20:42:22

Пример преобразования строки вида «2015-12-15 20:42:22»:

СтроковаяДата = «2015-12-15 20:42:22»;
СтроковаяДата = СтрЗаменить(СтроковаяДата , «-«,»»);
СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»);
НоваяДата = Дата(СтроковаяДата ); // 15.12.2015 20:42:22

Если дата указан так «20:42:22 2015/12/15» можно преобразовать её следующим образом:

СтроковаяДата = «20:42:22 2015/12/15»;
СтроковаяДата = СтрЗаменить(СтроковаяДата , «/»,»»);
СтроковаяДата = СтрЗаменить(СтроковаяДата , «:»,»»);
НоваяДата = Дата(Прав(СтроковаяДата , 8) + Лев(СтроковаяДата ,6));

Генератор случайных чисел¶

        ГСЧ = Новый ГенераторСлучайныхЧисел();
        СлучайноеЧисло = ГСЧ.СлучайноеЧисло(0, 100000);

Пересохранение книги в Эксель (Excel) с отображением листов¶

http://infostart.ru/public/323606/
Код:

Для v8:

ТабДокумент.Записать(ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLS);

Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмяФайла); 
Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
Excel.ActiveWindow.TabRatio = 0.6;         

FullName = Excel.ActiveWorkbook.FullName;            
Excel.DisplayAlerts = false;
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013

//Excel.Visible = 1;       // если нужно поработать дальше с книгой
//Excel.Application.Quit() // если просто выходим

Для v7.7:

ТабДокумент.Записать(ПолноеИмяФайла, "XLS");

Excel = СоздатьОбъект("Excel.Application");
Excel.WorkBooks.Open(ПолноеИмяФайла); 
Excel.Visible = 0; 

Excel.ActiveWindow.DisplayWorkbookTabs = 1; 
Excel.ActiveWindow.TabRatio = 0.6;

FullName = Excel.ActiveWorkbook.FullName;            
Excel.DisplayAlerts = false;
Excel.ActiveWorkbook.SaveAs(FullName, 18); // 18 - xls 97-2003; 51 - xlsx 2007-2013

//Excel.Visible = 1;       // если нужно поработать дальше с книгой
//Excel.Application.Quit() // если просто выходим

Функция ВернутьТолькоЦифры¶

Функция ВернутьТолькоЦифры(прСтрока)

    Рез = "";
    Для п = 1 По СтрДлина(прСтрока) Цикл
        Симв = Сред(прСтрока, п, 1);
        Если Симв>="0" И Симв<="9" Тогда
            Рез = Рез + Симв;
        КонецЕсли;
    КонецЦикла;

    Возврат Рез;

КонецФункции

Установить новую ссылку для еще не записанного объекта.¶

Например, в модуле объекта

    Если ЭтоНовый() Тогда

        СсылкаНаОбъект = ПолучитьСсылкуНового();

        Если Не ЗначениеЗаполнено(СсылкаНаОбъект) Тогда

            СсылкаНаОбъект = Документы.ЗаданиеНаПеревозку.ПолучитьСсылку();
            УстановитьСсылкуНового(СсылкаНаОбъект);

        КонецЕсли;

    Иначе

        СсылкаНаОбъект = Ссылка;

    КонецЕсли;     

Получение документа (паспорт) физического лица¶

#Паспорт #УТ11 ФизЛицо #РегистрСведений.ДокументыФизическихЛиц #Паспорт #Удостоверение

    ПаспортныеДанные = ?(ЗначениеЗаполнено(РезультатШапкаДокументов.Ссылка.Водитель), 
            ФизическиеЛицаУТ.ПолучитьДокументФизическогоЛицаПоУмолчанию(РезультатШапкаДокументов.Ссылка.Водитель,Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ, РезультатШапкаДокументов.Дата),
            "");

Значение реквизита объекта на клиенте и сервере¶

 //На клиенте
 СтрокаТЧ.СерияДатаПроизводства = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(СтрокаТЧ.Серия, "ДатаПроизводства");
//НаСервере
 СтрокаТЧ.СерияДатаПроизводства = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТЧ.Серия, "ДатаПроизводства");

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// Проверяет наличие реквизита у объекта #Лелеко
// Версия: 1.1.4.4.-
// Параметры:
//  Объект  - произвольный - некий объект
//  Реквизит - Строка, Массив, Структура, Соответствие - имя искомого реквизита/реквизитов, в случае не одного имени имена считаются равнозначными и допустимыми, возвращется первое найденное
//      1. Строка             - имя проверяемого реквизита или имена равнозначных реквизитов через ',' (тогда будет возвращен первый найденный, удовлетворяющий условиям)
//      2. Массив             - массив имен реквизитов
//      3. Структура       - структура, содержащая в ключах имена реквизитов
//      4. Соответствие     - соответсвие, содержащее в ключах имена реквизитов
//  ЗначениеРеквизита - Произвольный - (возвращаемый) значение реквизита, если был найден, иначе - неизменное значение            
//  СтрогийТип - Тип, ОписаниеТипов, Строка - дополнительная проверка найденного реквизита на соответсвие типу, если реквизит не соответсвует типу, то он не возвращается, поиск продолжается
//      *. Строка - строка, содержащая имена подлежащих типов через ','
//  ДополнительныеПараметры - Структура - (передаваемый / возвращаемый) 
//      1. {ИмяНайденного, [Строка]} - (возвращаемый) имя найденного реквизита, если был найден, имеет смысл если в качестве искомого выступало более чем одно имя
// Возвращаемое значение:
//   Булево - истина, если реквизит есть, ложь - иначе
Функция ЕстьРеквизитОбъекта(Знач Объект, Знач Реквизит, ЗначениеРеквизита = Неопределено, Знач СтрогийТип = Неопределено, ДополнительныеПараметры = Неопределено) ЭКСПОРТ
    Перем КлючУникальности, ТипРеквизит, ТипСтрогогоТипа, МассивТипов, ЗначениеРеквизитаПоКлючу;
 
    Если Объект = Неопределено Тогда Возврат Ложь; КонецЕсли;
    Если (ДополнительныеПараметры = Неопределено) Тогда ДополнительныеПараметры = Новый Структура; КонецЕсли;
    
    ТипРеквизит = ТипЗнч(Реквизит); // Конвертируем реквизит в структуру
    Если        ТипРеквизит = Тип("Строка")                                                             Тогда Реквизит = Новый Структура(Реквизит);
    ИначеЕсли  ТипРеквизит = Тип("Структура")                                                           Тогда ;
    ИначеЕсли  ТипРеквизит = Тип("ФиксированнаяСтруктура")                                             Тогда Реквизит = Новый Структура(Реквизит);
    ИначеЕсли  ТипРеквизит = Тип("Массив") ИЛИ ТипРеквизит = Тип("ФиксированныйМассив")                Тогда СтарыйРеквизит = Реквизит; Реквизит = Новый Структура; Для Каждого Подреквизит Из СтарыйРеквизит Цикл Если (НЕ Реквизит.Свойство(Строка(Подреквизит))) Тогда Реквизит.Вставить(Строка(Подреквизит)); КонецЕсли; КонецЦикла; 
    ИначеЕсли  ТипРеквизит = Тип("Соответствие") ИЛИ ТипРеквизит = Тип("ФиксированноеСоответствие")    Тогда СтарыйРеквизит = Реквизит; Реквизит = Новый Структура; Для Каждого Подреквизит Из СтарыйРеквизит Цикл Реквизит.Вставить(Строка(Подреквизит.Ключ)); КонецЦикла; 
    Иначе Реквизит = Новый Структура(Реквизит);
    КонецЕсли; 
    
    КлючУникальности = Новый УникальныйИдентификатор;   // Заполняем данные значением ключа уникальности (ЗЗС его перезатрет)
    Для Каждого КлючЗначение Из Реквизит Цикл Реквизит[КлючЗначение.Ключ] = КлючУникальности; КонецЦикла;  
    ЗаполнитьЗначенияСвойств(Реквизит, Объект);           // Заполняем данные из источника
    
    Если СтрогийТип <> Неопределено Тогда // Фишка со строгим контролем типа
        ТипСтрогогоТипа = ТипЗнч(СтрогийТип);
        Если        ТипСтрогогоТипа = Тип("Тип")                   Тогда МассивТипов = Новый Массив(); МассивТипов.Добавить(СтрогийТип); СтрогийТип = Новый ОписаниеТипов(МассивТипов);     // Тип -> МассивТипов -> ОписаниеТипов
        ИначеЕсли  ТипСтрогогоТипа = Тип("ОписаниеТипов")           Тогда ;                                                                                                                // ОписаниеТипов
        ИначеЕсли  ТипСтрогогоТипа = Тип("Массив")                 Тогда СтрогийТип = Новый ОписаниеТипов(СтрогийТип);                                                                  // Массив -> ОписаниеТипов
        ИначеЕсли  ТипСтрогогоТипа = Тип("ФиксированныйМассив")   Тогда СтрогийТип = Новый ОписаниеТипов(Новый Массив(СтрогийТип));                                                         // ФиксированныйМассив -> Массив -> ОписаниеТипов
        ИначеЕсли  ТипСтрогогоТипа = Тип("Строка")                 Тогда СтрогийТип = Новый ОписаниеТипов(СтрогийТип);                                                                  // Строка -> ОписаниеТипов
        Иначе СтрогийТип = Новый ОписаниеТипов(СтрогийТип); 
        КонецЕсли;                                
    КонецЕсли;
    
    Для Каждого КлючЗначение Из Реквизит Цикл
        ЗначениеРеквизитаПоКлючу = КлючЗначение.Значение;
        Если (ЗначениеРеквизитаПоКлючу <> КлючУникальности) Тогда Если (СтрогийТип = Неопределено) ИЛИ СтрогийТип.СодержитТип(ТипЗнч(ЗначениеРеквизитаПоКлючу)) Тогда ЗначениеРеквизита = ЗначениеРеквизитаПоКлючу; Если ДополнительныеПараметры.Свойство("ИмяНайденного") Тогда ДополнительныеПараметры["ИмяНайденного"] = КлючЗначение.Ключ; Иначе ДополнительныеПараметры.Вставить("ИмяНайденного", КлючЗначение.Ключ); КонецЕсли; Возврат Истина; КонецЕсли; КонецЕсли;
    КонецЦикла;
    
    Возврат Ложь;    
КонецФункции

Понравилась статья? Поделить с друзьями:
  • Производственная система компании тойота tps
  • Проверить отзывную компанию форд по вин коду
  • Производственно рекламная компания pro sport
  • Проверить посылку транспортной компании сдэк
  • Производственно строительная компания геодор