&НаСервере
Функция ПодключитьБазуНаСервере(Соединение = "")
Объект.ФайловаяБазаДанных=Ложь;
Объект.Сервер="srv1с";
Объект.База="buh";
Объект.ИмяПользователя="Obmen";
Объект.Пароль="1qaz";
// Подключение к 1С
Если Объект.ФайловаяБазаДанных Тогда
СтрокаПодключения = "file='" + Объект.ПутьКБазе + "'; usr='" + Объект.ИмяПользователя + "'; pwd='" + Объект.Пароль + "';";
Иначе
СтрокаПодключения = "srvr='" + Объект.Сервер + "'; ref='" + Объект.База + "'; usr='" + Объект.ИмяПользователя + "'; pwd='" + Объект.Пароль + "';";
КонецЕсли;
Попытка
V8 = Новый COMObject("V83.COMConnector");
Соединение = V8.Connect(СтрокаПодключения);
ЕстьСоединение = Истина;
Исключение
ЕстьСоединение = Ложь;
Сообщить(ОписаниеОшибки());
КонецПопытки;
Возврат Соединение;
КонецФункции
&НаСервере
Процедура ОбновитьДанныеПлатежейНаСервере()
Соединение = ПодключитьБазуНаСервере();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Ссылка КАК Ссылка,
|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа КАК ОснованиеПлатежа,
|ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.Сумма КАК Сумма
|ИЗ
|Документ.ПоступлениеБезналичныхДенежныхСредств.РасшифровкаПлатежа КАК ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа
|ГДЕ
|НЕ ПоступлениеБезналичныхДенежныхСредствРасшифровкаПлатежа.ОснованиеПлатежа ССЫЛКА Документ.ЗаказКлиента";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
УИД = ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор();
СсылкаНаДок = Соединение.Документы.ПоступлениеНаРасчетныйСчет.ПолучитьСсылку(Соединение.NewObject("УникальныйИдентификатор",Строка(УИД)));
//Сообщить(СсылкаНаДок.Номер);
Для каждого СтрокаИсточник Из СсылкаНаДок.РасшифровкаПлатежа Цикл
//Сообщить("Счет: "+Строка(СтрокаИсточник.СчетНаОплату.Номер));
УИД = Соединение.String(СтрокаИсточник.СчетНаОплату.УникальныйИдентификатор());
текДок= Документы.ЗаказКлиента.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД));
Если ЗначениеЗаполнено(текДок) Тогда
Сообщить(текДок);
текОбъект=ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
текОбъект.РасшифровкаПлатежа[0].ОснованиеПлатежа= текДок;
текОбъект.РасшифровкаПлатежа[0].Заказ= текДок;
текОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьДанныеПлатежей(Команда)
ОбновитьДанныеПлатежейНаСервере();
КонецПроцедуры
В процессе разработки интеграции с 1С часто возникает необходимость написать вычисления на языке 1С или языке запросов 1С, а также отладить их. Для написания таких вычислений удобно использовать готовые обработки 1С, рассмотрим их в этой статье.
Скачать архив с обработками можно по ссылке: Полезные обработки 1С.zip
Чтобы запустить обработку:
1. Запустите «1С Предприятие» в режиме «Обычное приложение». Для этого используйте дополнительный параметр запуска:
/RunModeOrdinaryApplication
2. В меню Файл выберите пункт Открыть и в открывшемся окне выберите нужный файл.
Обработка «Поиск объекта 1С по GUID»
Обработка позволяет:
- определить GUID любого объекта 1С (записи справочника, документа и пр.);
- по заданному GUID найти ссылку на объект 1С (запись справочника документа и пр.).
Чтобы определить GUID объекта 1С:
1. Запустите обработку «Поиск ссылки по GUID».
2. В поле Ссылка нажмите на кнопку T, выберите тип объекта.
3. Нажмите на кнопку и выберите объект 1С. Если необходимо выбрать другой объект, очистите значение по кнопке .
4. Нажмите на кнопку Показать GUID. В результате в поле GUID отобразится уникальный идентификатор объекта 1С.
Чтобы определить ссылку на объект 1С, введите уникальный идентификатор объекта в поле GUID и нажмите на кнопку Найти ссылку. Таким образом в поле Ссылка отобразится найденный объект из базы данных. Кнопка позволяет открыть карточку текущего объекта.
Обработка «Консоль запросов»
Обработка позволяет составить и выполнить запрос на языке запросов 1С. Используется для написания вычислений в событии коннектора «При выгрузке из 1С».
Рассмотрим, как выполняется обработка на примере запроса по получению юридического адреса контрагента:
1. Запустите обработку «Консоль запросов».
2. В основное окне обработки добавьте текст запроса:
ВЫБРАТЬ
КИ.Представление КАК Адрес
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КИ
ГДЕ
КИ.Объект = &Объект
И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
Запрос можно составить самостоятельно или с помощью конструктора запросов (пункт контекстного меню Конструктор запросов):
В тексте запроса, как правило, используются параметры. В нашем примере используется параметр &Объект, через который в запрос передается ссылка на запись справочника Контрагенты. Значения параметров задаются в левом нижнем окне обработки.
3. Чтобы выполнить запрос, нажмите кнопку Выполнить (F7). Результат выполнения запроса отобразится в правом нижнем окне.
Обработка «Выполнение произвольного кода»
Обработка позволяет быстро проверить вычисления на языке 1С, не создавая новую обработку в конфигурации 1С.
Чтобы проверить вычисление:
1. Запустите обработку «Выполнение произвольного кода».
2. В окне редактора напишите код вычислений:
3. Для выполнения кода нажмите на кнопку Выполнить.
Ниже рассмотрим примеры использования обработки «Выполнение произвольного кода».
Пример 1
Необходимо написать вычисления для события коннектора «При выгрузке из 1С» по получению юридического адреса контрагента. Текст события представляет собой xml-текст, в котором задаются вычисляемые реквизиты 1С. Подробнее см. в справке Коннектор к «1С:Предприятие 8» События и фильтры.
Ранее с помощью обработки «Консоль запросов» мы создали и отладили запрос:
ВЫБРАТЬ
КИ.Представление КАК Адрес
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КИ
ГДЕ
КИ.Объект = &Объект
И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
Теперь нужно написать вычисления на языке 1С, в которых нужно выполнить этот запрос и вернуть результат в виде строки.
Для отладки вычислений добавьте определение переменной Источник:
Источник = Справочники.Контрагенты.НайтиПоКоду("000000007");
И вывод результата:
Сообщить(Значение);
В событие «При выгрузке из 1С» эти строки переносить не нужно, т.к. переменная Источник в событии является предопределенной и будет заполняться автоматически.
В итоге событие «При выгрузке из 1С» будет выглядеть следующим образом:
<Свойства>
<Свойство>
<Код>60</Код>
<Наименование>Выч_ЮридическийАдрес</Наименование>
<Порядок>60</Порядок>
<Источник/>
<Приемник Имя="Выч_ЮридическийАдрес" Вид="Реквизит" Тип="Строка"/>
<ПриВыгрузке>Запрос = Новый Запрос("ВЫБРАТЬ
| КИ.Представление КАК Адрес
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
|ГДЕ
| КИ.Объект = &Объект
| И КИ.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
| И КИ.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)");
Запрос.УстановитьПараметр("Объект", Источник);
Выборка = Запрос.Выполнить().Выбрать();
Значение = ?(Выборка.Следующий(), СокрЛП(Выборка.Адрес), "");
</ПриВыгрузке>
</Свойство>
</Свойства>
Пример 2
Необходимо на форму 1С добавить кнопку, при нажатии на которую будет запускаться сценарий DIRECTUM. В сценарий требуется передать один параметр. При завершении сценария получить результат его выполнения.
Для этого выполните отладку вычисления, в котором запускается сценарий DIRECTUM по кнопке из 1С:
Обработка «Регистрация изменений для обмена»
Обработка включена в большинство конфигураций 1С. С ее помощью можно просматривать или редактировать записи о регистрации объектов в плане обмена 1С, в том числе:
- просматривать список метаданных, участвующих в обмене;
- просматривать список объектов, для которых зарегистрированы изменения;
- добавлять и снимать регистрацию для объектов, а также использовать запросы для выбора данных;
- просматривать данные в формате XML.
Рассмотрим возможности обработки наглядно в 1С:
1. Запустите обработку «Регистрация изменений для обмена».
2. В верхнем поле выберите узел обмена, например, DIRECTUM.
В результате в нижней области отобразятся все объекты, включенные в План обмена. В колонке Авторегистрация – текущее состояние авторегистрации изменений и количество зарегистрированных в данный момент объектов.
К объектам можно применить действия:
Обработка «Выгрузка и загрузка данных XML»
Универсальная обработка позволяет выполнить полную или частичную выгрузку данных информационной базы в xml-файл. Обработку можно использовать для миграции данных из 1С.
Сценарии использования обработки:
- Выгрузка записей справочника из одной базы и загрузка в другую. Разработка в базах должна быть идентичной.
- Выгрузка записей справочника в качестве резервной копии. Если в процессе работы со справочником записи затерлись либо были удалены, то их можно восстановить из xml-файла.
- Выгрузка данных в xml-файл для последующей миграции этих данных в систему DIRECTUM с помощью заказной разработки.
Обработка может выгружать записи объектов:
- Константы;
- Справочники;
- Документы;
- Последовательности;
- ПланыВидовХарактеристик;
- ПланыСчетов;
- ПланыВидовРасчета;
- РегистрыСведений;
- РегистрыНакопления;
- РегистрыБухгалтерии;
- РегистрыРасчета;
- БизнесПроцессы;
- Задачи;
- ПланыОбмена.
Особенности обработки:
- Фильтр можно накладывать на любой из реквизитов справочника. Например, настроить фильтрацию по справочнику Внутренние документы по полю ВидДокумента = Договор.
- Вместе с основным справочником можно выгружать связанные записи других справочников. Например, настроить выгрузку, чтобы вместе с внутренними документами выгружались связанные записи справочника Корреспонденты.
Обработка «Массовая регистрация изменений для обмена»
Обработку удобно использовать при тестировании интеграции с 1С.
Обработка позволяет зарегистрировать в плане обмена нужное количество записей для указанного справочника:
1. Запустите обработку «Массовая регистрация изменений для обмена».
2. Выберите необходимый справочник и нажмите на кнопку Выполнить.
Способ может быть не самый лучший, но работает. Если мы знаем, в каких метаданных мы ищем, то все предельно просто:
Создаем уникальный идентификатор с имеющимся у нас текстом ГУИДа и пользуемся замечательной функцией «ПолучитьСсылку».
ГУИД = Новый УникальныйИдентификатор(СтрокаГУИД); НайденнаяСсылка = <НашиМетаданные>.<НашаТаблица>.ПолучитьСсылку(ГУИД);
Если мы не знаем, к каким метаданным относится объект с нашим ГУИДом, то придется перебрать все метаданные и таблицы. Как правило задача эта довольно своеобразная, но если уж вам понадобилось искать объект по всей базе по ГУИДу, то элементарная база у вас есть, а написать алгоритм для обхода всех метаданных для вас труда не составит.
Найти документ по гуиду |
Я |
03.12.12 — 15:55
Народ, есть гуид элемента документа. В базе есть к примеру 3 типа документов, они объедененны в общий журнал. Вопрос такой как зная гуид выцепить ссылку на документ, предварительно не зная что это за документ.
Как я понимаю таблица всех документов едина (номер дата и т.д), есть доп тпблицы по типам доков согласно их реквизитов, и соответственно в главной таблице (по которой и строиться журнал) в единой колонке прописаны гуиды всех документов в независимости от типов. Но как запрос на родном языке сделать?
1 — 03.12.12 — 15:56
нет общего журнала в 8-ке
2 — 03.12.12 — 15:57
Если только гуид — то придется перебирать все виды документов
3 — 03.12.12 — 15:58
в смысле нет, как тогда реализация журнала происходит (я думал как в 77)
4 — 03.12.12 — 15:58
(1) Журнал в 8-ке — отдельная таблица в БД.
Не зная тип — не вытащить имхо
5 — 03.12.12 — 15:59
Ну у кого какие идеи?
6 — 03.12.12 — 15:59
(0) Так чего куда есть?
7 — 03.12.12 — 16:01
?
8 — 03.12.12 — 16:03
(7) Выражай свои мысли яснее.
Уникальный идентификатор в таблице без типа?
9 — 03.12.12 — 16:05
Для каждого Док из Метаданные.ЖурналыДокументов.ДокументыКонтрагентов.РегистрируемыеДокументы Цикл
Если Найти(Документы[Док.Имя].ПолучитьСсылку(Новый УникальныйИдентификатор(«f869770e-5e1a-11e1-a1ec-2c41388785b0»)), «Объект не найден») = 0 Тогда
// подходит
КонецЕсли;
КонецЦикла;
10 — 03.12.12 — 16:06
Вспомним 77.
Таблица 1SJOURN есть колонка IDJOURNAL (на новый лад должна быть УникИд) и колонка DNPREFIX (Тип дока), ну и другие
11 — 03.12.12 — 16:06
(2) Перебрать все документы создать ссылку по каждому с нужным UUID и запихать в массив и выбрать {чего надо} из {таблица} где {колонка c ссылками} В (&МассивСсылок)
12 — 03.12.12 — 16:06
Я то без цикла хотел
13 — 03.12.12 — 16:07
(10) Забудь про клюшки
14 — 03.12.12 — 16:07
(12) Не выйдет, хотя можно и без цикла
15 — 03.12.12 — 16:09
Вот фигня, а я так надеелся что зная гуид определим и ссылку и тип и т.д не ищя в каждом доке этот гуид.
16 — 03.12.12 — 16:09
(14) Массив ссылок все равно в цикле будет собираться
17 — 03.12.12 — 16:09
(15) В гуиде нет типа. Тип есть в ссылке
18 — 03.12.12 — 16:09
(15) а если по данному ГУИДу будет две ссылки на разные типы документов?
19 — 03.12.12 — 16:10
(17) а как же оно сортирует по виду документа?
20 — 03.12.12 — 16:10
(17) В ссылке есть тип. По нему и сортирует. Потом уже по гуиду
21 — 03.12.12 — 16:12
Я думаю что таблица всех ссылок и других общих реквизитов документов для всех документов одна, и поэтому гуиды там не повторяться
22 — 03.12.12 — 16:12
чтобы не искать этот ГУИД в каждом доке — подцепи таблицу журнала документов как внешний источник данных и ищи уже по этой таблице. найдёшь все ссылки, соответствующие твоему ГУИДу, а там (если их несколько встретиться) уже сам разбирайся, какая именно тебе будет нужна
23 — 03.12.12 — 16:12
(21) Гуиды могут повторяться для разных типов.
24 — 03.12.12 — 16:13
Все нафиг щаз залезу в SQLServer и проверю
26 — 03.12.12 — 16:13
(21) В восьмерке все обстоит несколько по другому.
27 — 03.12.12 — 16:13
(10) взялся за снеговика — забывай про клюшки…
28 — 03.12.12 — 16:15
Кстати, можно получить структуру хранения, сгенерить вьюху для «общего журнала», и искать по ней
29 — 03.12.12 — 16:17
«Нельза лепить снеговика с клюшками в голове»(классика)
30 — 03.12.12 — 16:18
В журнале есть колонки _DocumentTRef (тип) и _DocumentRRef (гуид). Так что моя теория была правильной, только в отличии от 77 доки объедененны в общию таблицу не изначально, а при помощи журнала.
31 — 03.12.12 — 16:18
лучший способ получить структуру хранения — непосредственно в SQL, ибо даже встроенная команда не даёт всех полей, которые там есть, да и имена у тех, которые она предоставляет не совсем соответствуют истинным именам, что хранятся в самом SQL
32 — 03.12.12 — 16:20
(30) да, сочетание Тип+ГУИД=Уникальность. А одного ГУИДа для уникальности маловато, потому и определить ссылку только по нему можно если других типов документов с аналогичным ГУИДом не встретишь
33 — 03.12.12 — 16:22
В SQL вообще ограничений нет в этой таблице, походу на уровне 1С изначально проверяется.
34 — 03.12.12 — 16:22
«щаз залезу в SQLServer и проверю»(24)
«Так что моя теория была правильной»(30)
Жду продолжения саморазоблачения
35 — 03.12.12 — 16:23
Я не так выразился, имелось в виду что гуид и тип лежат в отдельных колонках.
36 — 03.12.12 — 16:25
(32) > сочетание Тип+ГУИД=Уникальность
Неверное утверждение. ГУИД сам по себе уникален в принципе в неограниченных пределах. )
37 — 03.12.12 — 16:29
(23) Тоже неверно. ГУИДы не могут повторяться.
38 — 03.12.12 — 16:31
(37) Да запросто — вопрос не раз уже поднимался. Возьми установи ссылку нового с одним ид разным документам и убедись.
39 — 03.12.12 — 16:32
(37) Могут. Сделать это самому легко, дождаться пока платформа выкинет такой фокус — сложно
40 — 03.12.12 — 16:33
(35) Все верно. Тип+ГУИД = Ссылка в терминах 1С.
41 — 03.12.12 — 16:34
(38) Это можно сделать только преднамеренно. Ну а специально можно сделать что угодно. )
42 — 03.12.12 — 16:34
(40) Это только для составных полей. Не надо путать.
43 — 03.12.12 — 16:34
(41) Вероятность такая есть всегда и отбрасывать ее нельзя.
44 — 03.12.12 — 16:36
(42) Что значит путать ? Для простых ссылочных полей тип заранее определен что не противоречит Ссылка = Тип+ГУИД.
45 — 03.12.12 — 16:36
(43) Отбрасывать её можно, потому что она крайне низкая.
46 — 03.12.12 — 16:36
(45) Нельзя отбрасывать — ложка дегтя портит бочку меда.
47 — 03.12.12 — 16:37
(44) Ссылка есть ссылка. Тип добавлен для определения таблицы поиска. Вы смешиваете сущности.
48 — 03.12.12 — 16:38
(46) Вы каску носите? Ведь есть вероятность падения метеорита и он может попасть в голову )
49 — 03.12.12 — 16:39
(47) Что ты мне вообще доказываешь? Что ссылка на уровне платформы не содержит тип ? Или что при хранении в таблицах не содержит тип ?
50 — 03.12.12 — 16:39
(47) по ссылке можно определить ТИП, по ГУИДу нельзя, это же аксиомы, что тут спорить? 1с не отбрасывает никакие даже маловероятные события, из-за чего отказываются от хороших механизмов, например v8: РАУЗ. Ключи Аналитики. РИБ. посты 116-117
51 — 03.12.12 — 16:40
(48) Если хожу по стройке — обязательно одену.
52 — 03.12.12 — 16:40
(49) Я доказываю, что ГУИД сам по себе уникален. Ссылка в себе не содержит тип. Тип хранится в отдельном поле и только для составных полей.
53 — 03.12.12 — 16:41
(52) Он уникален в пределах одной Таблицы (читай Типа)
54 — 03.12.12 — 16:43
(52) ГУИД ни разу не уникален, он лишь стремится к уникальности.
(52) Платформа оптимизирует хранение для простых ссылочных. Не более того. При этом есть четкое понимание о типе.
55 — 03.12.12 — 16:43
(53) Да что же вы блин. Это же основы. Рамки уникальности шире всех баз. За это собственно 1С и критиковали при выходе 8-ки.
56 — 03.12.12 — 16:44
(54) Статистически уникален. 2 в степени 128.
57 — 03.12.12 — 16:45
Так ладно, буду искать другой способ, где входными данными будет являться не только гуид но и тип.
58 — 03.12.12 — 16:46
(56) Удачи тебе с таким подходом. Наступишь на грабли — не говори что был непредупрежден.
59 — 03.12.12 — 16:50
(55) ГУИДу 8-ки далеко до тех же сидов винды. в 1с берётся значение и инкреминируется на 1, что само собой может породить дубли чаще чем кажется
60 — 03.12.12 — 16:51
нифига из гуида в 1с можно время записи вычислить
61 — 03.12.12 — 16:51
(58) Спасибо за одолжение )
(57) Из-за особенностей реализации получения ГУИДа по его части можно с достаточно высокой долей вероятности определить тип ссылки. Но предварительно надо проанализировать ГУИДы существующих ссылок.
62 — 03.12.12 — 16:51
(60) точность фиговая
63 — 03.12.12 — 16:52
(60) Для какой из распределенных баз, с учетом что они могут находится на разных серверах с разным системным временем ?
64 — 03.12.12 — 16:57
«Попкорн приготовил»(с)
65 — 03.12.12 — 16:57
(64) кинь свою долю в общий котёл лучше
66 — 03.12.12 — 16:59
67 — 03.12.12 — 17:00
(65) Нет, не буду. Много «вкидывать» придется — к каждому топику этой ветки
68 — 03.12.12 — 17:00
(66) Хех, ты так и не понял смысла вопроса в (63)
69 — 03.12.12 — 17:03
(66) на партнёрсом форуме САМ главный 1сник отвечал, что ГУид используется для того, для чего его придумали, и тянуть оттуда время есть моветон и всех отлучат от 1с за такое
70 — 03.12.12 — 17:09
Чо не понятного, время высчитывает служба Администратор Сервера 1С, берёт она с компа где находится.
71 — 03.12.12 — 17:10
(66) см. (59)
если не веришь, запусти СообщитьНовый уникль
72 — 03.12.12 — 17:10
(71)
Сообщить(Новый уникальныйИдентификатор);
Сообщить(Новый уникальныйИдентификатор);
Сообщить(Новый уникальныйИдентификатор);
73 — 03.12.12 — 17:11
Функция ДокументПоGUID(УникальныйИдентификаторДокумента)
РегистрируемыеДокументы = Метаданные.ЖурналыДокументов.СкладскиеДокументы.РегистрируемыеДокументы;
Для каждого ОбъектМетаданных из РегистрируемыеДокументы Цикл
МенеджерДокументов = Документы[ОбъектМетаданных.Имя];
СсылкаНаОбъект = МенеджерДокументов.ПолучитьСсылку(УникальныйИдентификаторДокумента);
ОбъектПоСсылке = СсылкаНаОбъект.ПолучитьОбъект();
Если ОбъектПоСсылке <> Неопределено Тогда
Возврат СсылкаНаОбъект;
КонецЕсли;
КонецЦикла;
Возврат Неопределено;
КонецФункции
74 — 03.12.12 — 17:12
(73) 1с не одобряет, нет 100% вероятности
75 — 03.12.12 — 17:12
(кинул свою долю) Посмотрите в своей конфе на процедуру ПриНачалеРаботыСистемы() и вызов ПроверкаРазницыВремениКлиент.ВыполнитьПроверку()… и скажите хором — «Время — понятие относительно»(с)
76 — 03.12.12 — 17:19
Пусть идентификаторы делают уникальней ]:->.
77 — 03.12.12 — 17:19
(76) to (74)
78 — 03.12.12 — 17:22
(73) Метод в (9) будет быстрее, ибо не создается лишний объект. Единственно — привязан к языку
79 — 03.12.12 — 17:23
Найти и «Объект не найден» — быдлокод)
80 — 03.12.12 — 17:24
(79) + у нас так сделали проверку на справочники, и вот веть — были элементы и с таким названием, Объект не найден
81 — 03.12.12 — 17:25
(79) Привязка к ИД в любом случае будет быдлокодом. На ней серьезные вещи строит не стоит. А для всякой некритичной ерунды — пусть будет то что быстрее.
82 — 03.12.12 — 17:26
(81) в РИБ базах иногда нужно к ИД привязыватся, не вижу быдлокода, от задачи зависит
83 — 03.12.12 — 17:33
(82) Помимо прочего метод в (72) имеет и другой минус — не все типы имеют метод ПолучитьОбъект. Например перечисления.
84 — 03.12.12 — 17:45
Вообще через УстановитьСсылкуНового можно установить, что угодно, хоть свой вариает Гуида.
Если пользоваться генератором Гуида, то он будет уникальным так как например зависит от сетевой карты, времени.
http://cppclub.newmail.ru/articles/insidecom09.html
wiki:GUID
GUID хорош прежде всего при обмене данными без всяких суффиксов префиксов и может объединяться с любыми учетными системами.
85 — 03.12.12 — 17:49
(84)>(59), гуид 1с это не совсем гуид
86 — 03.12.12 — 17:54
Если GUID генерируется инкрементом на 1 — это, скорее, недочет разработчиков платформы, а не тех, кто на ней программирует. Уникальный идентификатор, должен быть уникальным и точка.
87 — 03.12.12 — 18:15
(85) То есть ты утверждаешь что гуид для ссылок отличен от Новый уникальныйИдентификатор? Дай ссылку на алгоритм и особенно для распределенных баз.
88 — 03.12.12 — 18:27
(86) а он и уникален, никто не говорил, как платформа реализует это условие.
89 — 03.12.12 — 18:31
87+ Да проверил действительно увеличивают на единицу.
v8: ГУИД 1С8
Но здесь есть смысл, в том, если привязка к компьютеру будет уникальной, а значит и будет уникальна на другом компьютере. Надо смотреть алгоритм. С другой стороны смешно экономить на формировании гуида
90 — 03.12.12 — 18:35
89+ Функция ДатаСозданияСсылки(Ссылка)
ГУИД = Ссылка.УникальныйИдентификатор();
Строка16 = Сред(ГУИД, 16, 3) + Сред(ГУИД, 10, 4) + Сред(ГУИД, 1, 8);
Разрядность = СтрДлина(Строка16);
ЧислоСек = 0;
Для Позиция = 1 По Разрядность Цикл
ЧислоСек = ЧислоСек + Найти(«123456789abcdef»,Сред(Строка16,Позиция,1))*Pow(16,Разрядность — Позиция);
КонецЦикла;
ЧислоСек = ЧислоСек / 10000000;
Возврат Дата(1582, 10, 15, 04, 00, 00) + ЧислоСек;
КонецФункции
Генерация Гуида 1С
531923ce-3d55-11e2-8afe-c86000c70663
531923cf-3d55-11e2-8afe-c86000c70663
GANR
91 — 03.12.12 — 18:40
(59) ГЫЫЫЫ…
Инкремент — экскримент.
Пример поиска:
ГУИД = "4b9c2fa7-3824-11ea-ab9e-38d547def818";
ОбъектСсылка = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(ГУИД));
сообщить(ОбъектСсылка);
если объект не найден:
<Объект не найден> (206:ab9e38d547def81811ea38244b9c2fa7)
если объект найден (наименование объекта):
Желтый НМ 0,05кг
Рубрики
- Все
- CRM
- Битрикс24
- Frameworks
- Laravel
- Bootstrap 4
- React Native
- CMS
- OpenCart 3
- WordPress
- Функции
- Авторские функции
- 1С-Битрикс
- MODX
- АТС
- Asterisk
- OS
- Linux
- Fedora
- Linux Mint
- Manjaro
- Rocky Linux
- CentOS
- Debian
- Ubuntu
- Windows
- macOS
- Linux
- Контейнеризация
- Docker
- Программирование
- 1C
- Javascript
- Node JS
- PHP
- Python
- Android Studio
- Web
- Библиотеки
- Базы данных
- MySQL
- 1С
- Плагины DW
- WordPress
- Редакторы и IDE
- PHPStorm
- VS Code
- Sublime Text 3
- Notepad++
- Софт
- Blockchain
Свежие комментарии
Пн | Вт | Ср | Чт | Пт | Сб | Вс |
---|---|---|---|---|---|---|
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 |