Содержание:
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. Посмотрите еще Полезные функции по работе с метаданными
Есть ли реквизит у объекта |
Я |
15.05.18 — 15:12
Добрый день.
Как проверить есть ли у объекта реквизит?
Объектом может быть как объект конфигурации (документ, справочник), так и структура и реквизит формы или строка ТЧ.
1 — 15.05.18 — 15:13
(0) или Попытка, или анализ типов и дальше либо Свойство() для структуры метаданные для всего остального
2 — 15.05.18 — 15:13
Если хочется универсальности, то либо городить кучу условий, либо попытка-исключение)
3 — 15.05.18 — 15:14
В БСП ничего похожего нет?
4 — 15.05.18 — 15:17
5 — 15.05.18 — 15:18
(0) Создать структуру с именем реквизита и значением — уникальным идентификатором. Заполнить значение свойств и посмотреть, что изменилось в структуре.
Попытошники, бл.
6 — 15.05.18 — 15:21
(4)Не то, там объект метаданных. Прежде чем гуглом кидаться надо читать, что в результате поиска.
(5)Идея хорошая, но много букв. Я рассчитывал на что-то готовое.
9 — 15.05.18 — 15:27
Объект.Метаданные().Реквизиты.Найти(ТвойРеквизит)
17 — 15.05.18 — 15:46
(11) а вот так?
Функция НаличиеСвойстваУОбъекта(Объект, ИмяСвойства)
ИдентификаторОтсутствия = Новый УникальныйИдентификатор;
Структура = новый Структура(ИмяСвойства, ИдентификаторОтсутствия);
ЗаполнитьЗначенияСвойств(Структура, Объект);
Возврат Структура[ИмяСвойства] <> ИдентификаторОтсутствия
конецФункции
18 — 15.05.18 — 15:48
Ну еще через Попытку/Исключение можно
19 — 15.05.18 — 16:06
(17) Ну да, это как раз то, что я хотел, но думал что уже есть готовое решение в БСП или какой-нибудь метод хитрый.
Спасибо. И без всяких там гуглов.
20 — 15.05.18 — 16:11
(19) Будь как бобр, сравни скорость обоих вариантов и поведай нам.
21 — 15.05.18 — 16:31
(19) В БСП не видел — токо через Попытка/Исключение.
22 — 15.05.18 — 16:41
(19)Это и есть готовое решение из типовых конф, всякие УТ ЕРП и т.д.
23 — 15.05.18 — 16:55
(22)Поиск по конфигурации не дал результатов. ЕРП 2.2.
24 — 15.05.18 — 16:58
25 — 15.05.18 — 17:00
а если ИмяСвойства будет реквизит с типом данныеформыколлекция, то что будет?
26 — 15.05.18 — 17:02
(22) Не совсем верно. Для ТЧ в типовых есть функция в общем модуле (например для УТ):
ОбщегоНазначенияУТ.ЕстьРеквизитТабЧастиОбъекта(ИмяРеквизита, МетаданныеОбъекта, ИмяТабЧасти)
27 — 15.05.18 — 17:05
(26) + В других это общ модуль ОбщегоНазначения и функция может называться ЕстьРеквизитТабЧастиДокумента. Возвращает Истину или Ложь проверки наличия конкретного реквизита ТЧ
28 — 15.05.18 — 17:15
(26)(27) Это касается только метаданных.
29 — 15.05.18 — 17:17
(23)А если искать функцию ЕстьРеквизитОбъекта
30 — 15.05.18 — 17:20
(28) Какая разница?! Задача определить наличие или отсутствие реквизита ТЧ. А как это делается вторично
AlvlSpb
31 — 15.05.18 — 17:22
(29) ТОже есть Для УТ
ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Объект, ИмяРеквизита)
Привел как пример, что до нас все уже изобрели и нет смысла выдумывать велосипед
Вопрос Как определить программно, существует ли у документа требуемый реквизит
С давних времен в типовых конфигурациях для этого существовала специальная функция.
В конфигурациях последних редакций эта функция стала более универсальной и кроме того стала неожиданно оригинальной, даже эстетически восхитительной.
Так, на сегодня, в 2019 г., эта функция называется ЕстьРеквизитИлиСвойствоОбъекта и располагается в общем модуле ОбщегоНазначенияКлиентСервер. Обращение к функции:
ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "ПериодРегистрацииИсправленногоДокумента")
Сама функция проверки выглядит сейчас (2019 год) так:
// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным. // // Параметры: // Объект - Произвольный - объект, у которого нужно проверить наличие реквизита или свойства; // ИмяРеквизита - Строка - имя реквизита или свойства. // // Возвращаемое значение: // Булево - Истина, если есть. // Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт КлючУникальности = Новый УникальныйИдентификатор; СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности); ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект); Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности; КонецФункции
В типовых конфигурациях 1С по состоянию на 2010 г. для этой цели использовалась функция, например, «ЕстьРеквизитДокумента» общего модуля «ОбщегоНазначения» и была построена на получении метаданных. Обращение к функции:
Если ОбщегоНазначения.ЕстьРеквизитДокумента("БанковскийСчет", МетаданныеДокумента) Тогда ...
где «БанковскийСчет» — пример наименования искомого реквизита,
«МетаданныеДокумента«:
МетаданныеДокумента = ДокументОбъект.Метаданные();
Сама функция проверки (расположенная в общем модуле «ОбщегоНазначения«):
// Позволяет определить есть ли среди реквизитов шапки документа // реквизит с переданным именем. // // Параметры: // ИмяРеквизита - строковое имя искомого реквизита, // МетаданныеДокумента - объект описания метаданных документа, среди реквизитов которого производится поиск. // // Возвращаемое значение: // Истина - нашли реквизит с таким именем, Ложь - не нашли. // Функция ЕстьРеквизитДокумента(ИмяРеквизита, МетаданныеДокумента) Экспорт Если МетаданныеДокумента.Реквизиты.Найти(ИмяРеквизита) = Неопределено Тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; КонецФункции // ЕстьРеквизитДокумента()
Next Post
-
v8
-
Программисту 1C
Ср Ноя 10 , 2010
Примеры работы с регистами сведений см. также в Шпаргалке по программированию для системы 1С:Предприятие 8.2 Оглавление 1. Как из регистра сведений «РасчетчикиЗарплатыОрганизации» получить в виде массива всех расчетчиков зарплаты определенного подразделения организации 2. Как добавить запись в непериодический независимый регистр сведений 3. Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты» […]
Breaking News
// Проверяет наличие реквизита или свойства у произвольного объекта без обращения к метаданным.
//
// Параметры:
// Объект — Произвольный — объект, у которого нужно проверить наличие реквизита или свойства;
// ИмяРеквизита — Строка — имя реквизита или свойства.
//
// Возвращаемое значение:
// Булево — Истина, если есть.
//
Функция ЕстьРеквизитИлиСвойствоОбъекта(Объект, ИмяРеквизита) Экспорт
КлючУникальности = Новый УникальныйИдентификатор;
СтруктураРеквизита = Новый Структура(ИмяРеквизита, КлючУникальности);
ЗаполнитьЗначенияСвойств(СтруктураРеквизита, Объект);
Возврат СтруктураРеквизита[ИмяРеквизита] <> КлючУникальности;
КонецФункции
Универсальные процедуры и функции¶
- Универсальные процедуры и функции
- Права и роли
- Прочее
- Процедуры и функции общего назначения
- Проверить, что описание типа состоит из единственного типа значения и совпадает с нужным типом.
- Функция ЕстьРеквизитОбъекта — проверяет наличие у произвольного объекта реквизита с указанным именем (УТ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 ФизЛицо #РегистрСведений.ДокументыФизическихЛиц #Паспорт #Удостоверение
ПаспортныеДанные = ?(ЗначениеЗаполнено(РезультатШапкаДокументов.Ссылка.Водитель), ФизическиеЛицаУТ.ПолучитьДокументФизическогоЛицаПоУмолчанию(РезультатШапкаДокументов.Ссылка.Водитель,Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ, РезультатШапкаДокументов.Дата), "");
Значение реквизита объекта на клиенте и сервере¶
//На клиенте СтрокаТЧ.СерияДатаПроизводства = ОбщегоНазначенияУТВызовСервера.ЗначениеРеквизитаОбъекта(СтрокаТЧ.Серия, "ДатаПроизводства"); //НаСервере СтрокаТЧ.СерияДатаПроизводства = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СтрокаТЧ.Серия, "ДатаПроизводства");