Как изменить ссылку в 1с
В других языках с данными, полученными из базы данных обычно работают «как с таблицей». В 1С такое тоже возможно – выполнить запрос, получить «в ответ» таблицу и работать с ней.
Работа с объектом 1С ведется тогда, когда требуется создать объект 1С или изменить существующий. В остальных случаях (например поиск объекта 1С, использование его в другом объекте 1С) – используется ссылка 1С на объект 1С.
Создание объектов 1С
Объект 1С можно создать с помощью оператора Новый, при этом вызывается конструктор данного типа, если у типа несколько конструкторов – он выбирается по указанным параметрам:
Переменная1 = Новый СписокЗначений();
Менеджеры для получения объектов 1С из базы данных
Если требуется создать объект 1С, связанный с данными в базе данных (то есть фактически получить его из базы данных), вместо использования оператора Новый, используются менеджеры.
Почти для каждого вида метаданных (отображенного в дереве метаданных в окне конфигурации, см. выше) доступен одноименный менеджер, который позволяет получить значение из базы данных по признаку или создать новое для записи в базу данных.
Например:
Переменная1 = Справочники.ИмяСправочника.СоздатьЭлемент();
Переменная1 = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
Ссылки 1С и объекты 1С
Работа с объектами 1С, связанными с данными в базе данных может вестись двумя способами – с помощи «ссылки 1С на данные» и объекта 1С.
Ссылка 1С – это данные, доступные только для чтения. Объект 1С – это данные, доступные для чтения, изменения и записи. Работа со ссылкой 1С производится гораздо быстрее, чем с объектом 1С.
Ссылка 1С на данные получается с помощью функций вида:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию()
Объект 1С можно получить из ссылки 1С или создать с нуля:
СправочникОбъект = СправочникСсылка.ПолучитьОбъект();
СправочникОбъект = Справочники.ИмяСправочника.СоздатьЭлемент();
Пустая ссылка 1С
Ссылка может быть пустой, это значит, что создан «пустой» экземпляр объекта 1С, который не связан с данными.
СправочникСсылкаПустая = Справочники.ИмяСправочника.ПустаяСсылка();
Также ссылку 1С можно проверить на заполненность:
Если СправочникСсылка.Пустая() Тогда
//…
КонецЕсли
Уникальный идентификатор (GUID)
Узнать идентификатор можно с помощью универсального метода любого объекта 1С ссылочного типа:
СправочникСсылка = Справочники.ИмяСправочника.НайтиПоНаименованию("Наименование");
GUID = СправочникСсылка.УникальныйИдентификатор();
Возвращаемое значение данного метода имеет специальный тип. Если необходимо сравнивать значение со строкой, не забудьте преобразовать его к строке с помощью Строка(Параметр).
GUID назначается в момент первой записи объекта 1С. Уже до записи можно узнать GUID, который будет назначен объекту 1С при записи:
Также перед записью можно назначить свой GUID. Это бывает полезным, например, при обмене данными:
При работе со значениями, возможно столкнуться со следующими способами хранения и доступа к данным:
- Переменная – созданная в модуле программистом, нетипизированная
- Реквизит объекта 1С (справочника, документа), добавленный в конфигураторе – хранится в базе данных, строго типизирован
- Реквизит формы – поле на форме, строго типизирован.
Поле на форме показывает «какие-то данные». Данные могут быть напрямую связаны с реквизитом объекта 1С (указаны в свойстве поля формы ПутьКДанным).
Также форма может иметь свои реквизиты, они не записываются в базу данных, их устанавливает программист в процедурах и функциях модуля формы (обычно в процедуре обработчике ПриОткрытии формы).
Доступ к значениям именованных свойств объектов 1С
У многих объектов 1С есть свойства, которые имеют наименования.
Например:
- элемент справочника имеет реквизиты с наименованиями
- форма имеет реквизиты с наименованиями
- у таблицы есть колонки с наименованиями
- у строки таблицы есть поля с такими же наименованиями, как колонки у таблицы.
Если у объекта 1С есть свойства (реквизиты, колонки и т.п.), у которых есть наименования, то к ним можно обращаться двумя способами.
Если в наличии имеются два объекта 1С с именованными свойствами и нужно скопировать их значения, удобно использовать процедуру
ЗаполнитьЗначенияСвойств(КудаКопировать, ОткудаКопировать)
которая копирует значения всех свойств, имена которых совпадают, пример:
скачал обработку. нужно было заменить в базе один счет бухгалтерского учета на другой. Во первых при выборе счета в шапке он в табличной части дает выбрать только субконто этого счета а не счет замены. с этим поборолся. Но при замене счет на счет выдает ошибку
//////////////////////////////
: Итератор для значения не определен
Для Каждого СтандартнаяТабличнаяЧасть Из СсылочныйТипРеквизиты.СтандартныеТабличныеЧасти Цикл
//////////////////////////////
работаю на конфигурации БП (3.0.51.14)
платформа 1С:Предприятие 8.3 (8.3.10.2375)
что посоветуете мне?
Спасибо за обнаруженные ошибки.Недочет с установкой типа для ссылок поиска исправил. Ошибка с обработкой стандартных табличных частей исправлена. Новая версия обработки доступна для скачивания.
Коллеги, добрый вечер!
Подскажите пожалуйста, в чём преимущество данной обработки перед штатной "ПоискИЗаменаЗначений83"?
(4) В этом решении объект, в котором нужно заменить ссылку, сериализуется в XML, а по сути преобразуется в строку. В строке происходит замена ссылки, после чего выполняется обратный процесс - XML-образ записывается в таблицу базы данных. Таким образом, не используется объектная модель доступа к данным. Кроме того, данные для выборки в некоторых случаях считываются запросами за один раз. Процесс замены ссылок по сравнению со штатной обработкой должен проходить быстрее, хотя замеров не делал. При попытке повторного скачивания просит ещё старта ни. Как бы получить исправленное бесплатно? к сожалению, опять небольшой косяк. Замена счета бух учета на счет не происходит. Хотя вышеописанные косячки поправлены. что делать? (7) Опишите метаданные тестового объекта, в котором ожидается замена, но ее не происходит. (7) Проверил, счет будет заменен, но только в тех объектах, в которые он входит как элемент метаданных. Если обратиться к описанию метаданных регистра бухгалтерии, то оно не содержит свойств типа "План счетов", как мы привыкли видеть это в журнале проводок. Эту проблему можно решить только переписыванием алгоритма обработки записей регистра бухгалтерии. Кстати, то же справедливо для замены вида расчета в регистре расчета. По возможности исправлю эти недочеты. Спасибо за успешное тестирование. В описании разработки написано, что происходит замена объектов, в том числе плансчетов. По факту этого не происходит в проводках документов. На какой конфигурации я тестировал я писал выше. Предлагаю вам доработать обработку или вернуть денюжку(10) Справедливо. Алгоритм обработки проводок исправлю, и, если обработка будет вами востребована, просто скачаете ее.
P.S. Скачал одну из ваших разработок.
(10) Внесены исправления в обработку регистров бухгалтерии и регистров расчета. (13) В синтакс-помощнике написано, что функция Найти() является устаревшей, и рекомендуется использовать функцию СтрНайти().Что за ошибка была?
помоему эта конструкция затирает все что есть РС,
Вот запрос кот. генерирется в процедуре ПодготовитьТекстЗапросаПоРегиструСНезависимойЗаписью:
Доработайте обработку.
Просмотры 10147
Загрузки 87
Рейтинг 7
Создание 26.05.17 15:29
Обновление 12.02.19 11:59
№ Публикации 627311
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
Перенос данных КА 1.1 / УПП 1.3 => БП 3.0 (перенос остатков, документов и справочников из "1С:Комплексная автоматизация 1.1" / УПП 1.3 в "1С:Бухгалтерия 3.0")См. также
Универсальный редактор данных (УРД) Промо
Универсальный редактор данных (УРД) - это лучший инструмент в своем классе, который позволяет редактировать реквизиты и движения объектов
1 стартмани
27.08.2021 5971 124 Adeptus 51
Конвертация любых адресов, написанных в свободной форме, к ФИАС
Допустим у нас есть база с адресами клиентов, и написаны они могут быть как душе угодно. С опечатками, без индексов, без разделителей, в совершенно любом формате. Вот было бы здорово иметь функцию, которая одним нажатием кнопки преобразует любую белиберду к строгому представлению адреса по ФИАС? Восстановит индекс, исправит опечатки и вернёт на 100% валидный адрес. Для всех, кто мечтательно сказал "ДА!", выкладываю данную обработку.
2 стартмани
30.06.2020 7676 68 XilDen 15
CF & SQL : конструктор прямых запросов к БД 1С
Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.
1 стартмани
02.10.2019 30890 297 dmitrydemenew 63
Модель объекта
Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
1 стартмани
30.06.2019 16834 1 vadim1980 5
Удаление и/или копирование сохраненных в 1С настроек (например настроек печати табличных форм) Промо
Иногда нужно удалить сохраненную в 1С "покореженную" настройку или скопировать "удачную" другому пользователю.
1 стартмани
01.09.2012 66874 1378 AnryMc 46
1 стартмани
13.05.2019 38796 155 Diversus 44
Редактор объектов информационной базы 8.3
Универсальная внешняя обработка для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.57 от 09.10.2021
2 стартмани
23.01.2019 43306 486 ROL32 50
Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)
В обработке есть справка, в которой описан порядок работы с обработкой.
Обработка позволяет указать ключевые поля элементов справочника для поиска дублей, выбрать правильные элементы.
Выполнить замену ссылок неправильных элементов на правильные. Пометить на удаление и удалить объекты из базы данных с проверкой ссылочной целостности.
Можно указать режим замены ссылок: Режим "Обмена данными", выполнение в единой транзакции.
Работать можно сразу с несколькими справочниками, настроив для каждого правила поиска дублей, условие правильности элемента.
Для замены ссылок используется функция из типовой универсальной обработки ("Поиск и замена значений") несколько переработанная.
На вложенных скринах указан порядок работы с обработкой.
1. Настройка правил поиска дублей.
2. Запуск поиска дублей.
3. Поиск связанных данных (где используются ссылки наших задвоенных объектов).
4. Выполнение замены неправильных ссылок на правильные ссылки.
5. Пометка удаление неправильных ссылок.
6. Удаление неправильных объектов.
ДОРАБОТКИ
10.03.2012. Сделан удобный выбор объекта метаданных в настройке поиска дублей.
18.07.2012. Версия 1.0.1.4.
1. При записи набора регистра бухгалтрерии в режиме обмена данных ( ОбменДанными.Загрузка = Истина ) есть фича:
если не ведется учет по измерению ("по подразделению"), но в записи установить значение (например, Подразделение.ПустаяСсылка), то не смотря на то, что учет по подразделению не ведется, записывается значение установленное в наборе.
Напротив, если ОбменДанными.Загрузка = Ложь, то в таком случае значение автоматически обNULLяется.
В результате такого поведения при заменах ссылок в регистрах бухгалтерии могли возникать ошибки, если замена велась с отключенным режимом записи (ОбменДанным.Загрузка = Истина).
Исправляется перезаписью записей регистра в режиме ОбменДанными.Загрузка = Ложь.
2. Внесены поправки по замечаниям.
3. Добавлены дополнительные настройки. Таблица ошибок. Ведение журнала регистрации.
4. Добавлена конфигурация с модулями замены, с возможностью вынесения процедуры выполнения замены на сервер, появилась возможность запуска выполнения замены в фоновом режиме. (см. конфигурации "ВыполнениеЗаменыСсылочныхЭлементов.cf" и "ИндикаторФоновогоЗадания.cf").
Конфигурация "ИндикаторФоновогоЗадания.cf" для клиент-серверного режима.
14.08.2012. Версия 1.0.1.5.
1. Добавлена замена ссылок в общих реквизитах объектов.
2. Исправлены найденные ошибки (см. комментарий 17).
27.11.2012. Версия 2.1.1.10.
1. Переписано ядро механизма выполнения замены ссылок. Повышена стабильность программы, скорость выполнения, оптимальное использование оперативной памяти. При выполнение замены ссылок в больших объемах данных могла возникать ошибка "Нехватка памяти" или выполнение могло проходить слишком медленно.
2. Добавлены новые настройки: Параметры обмена данными, фонового задания, уровней транзакции, контекста выполнения.
3. Усовершенствован механизм индикации хода выполнения обработки.
4. Написана справка для обработки.
11.12.2012. Версия 2.1.1.11.
1. Оптимизированы алгоритмы обработки замены ссылок в движениях документа.
2. Добавлен механизм хранения описаний ошибок (исключений) с возможностью прерывания выполнения обрабоки замены ссылок при накоплении заданного количества исключений.
24.12.2012. Версия 2.1.1.12.
1. Добавлена возможность подключать обработчики для событий обработки замены ссылок. События обработки замены:
- "инициализация дополнительных параметров" - в клиент-серверном варианте выполняется дважды, один раз на клиентской стороне, другой на серверной;
- "перед выполнением замены ссылок" - выполняется один раз перед выполнением всех замен;
- "перед полученим объекта" - выполняется перед получением объекта, в котором необходимо выполнить замены, из базы данных;
- "перед записью объекта" - выполняется перед записью объекта, с уже выполненными заменами, в базу данных;
- "после выполнения замен" - выполняется один раз после выполнения замены всех ссылок.
17.03.2014. Версия 2.1.2.7.
- оптимизация интерфейсных механизмов;
- добавлено автосохранение значений элементов формы (текущих настроек);
- изменен формат файла настроек.
29.04.2014. Версия 2.1.2.7.
- реализована возможность добавлять в ключ поиска дублей строковое поле неограниченной длины (такое поле приводится к ограниченному полю длиной в 1000 символов);
- незначительные исправления и улучшения (если замена ссылки производилась на ту же ссылку, то функция замены уходила в бесконечный цикл) .
26.09.2014. Версия 2.3.1.1.
- добавлена управляемая форма для замены ссылок в объектах базы данных;
- незначительные исправления и улучшения (реализована замена в регистрах с регистратором-битой ссылкой, повышена стабильность кода) .
01.12.2014. Версия 2.3.1.3.
- добавлена возможность включения привилегированного режима (выполнение замены с полными правами);
В обработке есть справка, в которой описан порядок работы с обработкой.
Обработка позволяет указать ключевые поля элементов справочника для поиска дублей, выбрать правильные элементы.
Выполнить замену ссылок неправильных элементов на правильные. Пометить на удаление и удалить объекты из базы данных с проверкой ссылочной целостности.
Можно указать режим замены ссылок: Режим "Обмена данными", выполнение в единой транзакции.
Работать можно сразу с несколькими справочниками, настроив для каждого правила поиска дублей, условие правильности элемента.
Для замены ссылок используется функция из типовой универсальной обработки ("Поиск и замена значений") несколько переработанная.
На вложенных скринах указан порядок работы с обработкой.
1. Настройка правил поиска дублей.
2. Запуск поиска дублей.
3. Поиск связанных данных (где используются ссылки наших задвоенных объектов).
4. Выполнение замены неправильных ссылок на правильные ссылки.
5. Пометка удаление неправильных ссылок.
6. Удаление неправильных объектов.
ДОРАБОТКИ
10.03.2012. Сделан удобный выбор объекта метаданных в настройке поиска дублей.
18.07.2012. Версия 1.0.1.4.
1. При записи набора регистра бухгалтрерии в режиме обмена данных ( ОбменДанными.Загрузка = Истина ) есть фича:
если не ведется учет по измерению ("по подразделению"), но в записи установить значение (например, Подразделение.ПустаяСсылка), то не смотря на то, что учет по подразделению не ведется, записывается значение установленное в наборе.
Напротив, если ОбменДанными.Загрузка = Ложь, то в таком случае значение автоматически обNULLяется.
В результате такого поведения при заменах ссылок в регистрах бухгалтерии могли возникать ошибки, если замена велась с отключенным режимом записи (ОбменДанным.Загрузка = Истина).
Исправляется перезаписью записей регистра в режиме ОбменДанными.Загрузка = Ложь.
2. Внесены поправки по замечаниям.
3. Добавлены дополнительные настройки. Таблица ошибок. Ведение журнала регистрации.
4. Добавлена конфигурация с модулями замены, с возможностью вынесения процедуры выполнения замены на сервер, появилась возможность запуска выполнения замены в фоновом режиме. (см. конфигурации "ВыполнениеЗаменыСсылочныхЭлементов.cf" и "ИндикаторФоновогоЗадания.cf").
Конфигурация "ИндикаторФоновогоЗадания.cf" для клиент-серверного режима.
14.08.2012. Версия 1.0.1.5.
1. Добавлена замена ссылок в общих реквизитах объектов.
2. Исправлены найденные ошибки (см. комментарий 17).
27.11.2012. Версия 2.1.1.10.
1. Переписано ядро механизма выполнения замены ссылок. Повышена стабильность программы, скорость выполнения, оптимальное использование оперативной памяти. При выполнение замены ссылок в больших объемах данных могла возникать ошибка "Нехватка памяти" или выполнение могло проходить слишком медленно.
2. Добавлены новые настройки: Параметры обмена данными, фонового задания, уровней транзакции, контекста выполнения.
3. Усовершенствован механизм индикации хода выполнения обработки.
4. Написана справка для обработки.
11.12.2012. Версия 2.1.1.11.
1. Оптимизированы алгоритмы обработки замены ссылок в движениях документа.
2. Добавлен механизм хранения описаний ошибок (исключений) с возможностью прерывания выполнения обрабоки замены ссылок при накоплении заданного количества исключений.
24.12.2012. Версия 2.1.1.12.
1. Добавлена возможность подключать обработчики для событий обработки замены ссылок. События обработки замены:
- "инициализация дополнительных параметров" - в клиент-серверном варианте выполняется дважды, один раз на клиентской стороне, другой на серверной;
- "перед выполнением замены ссылок" - выполняется один раз перед выполнением всех замен;
- "перед полученим объекта" - выполняется перед получением объекта, в котором необходимо выполнить замены, из базы данных;
- "перед записью объекта" - выполняется перед записью объекта, с уже выполненными заменами, в базу данных;
- "после выполнения замен" - выполняется один раз после выполнения замены всех ссылок.
17.03.2014. Версия 2.1.2.7.
- оптимизация интерфейсных механизмов;
- добавлено автосохранение значений элементов формы (текущих настроек);
- изменен формат файла настроек.
29.04.2014. Версия 2.1.2.7.
- реализована возможность добавлять в ключ поиска дублей строковое поле неограниченной длины (такое поле приводится к ограниченному полю длиной в 1000 символов);
- незначительные исправления и улучшения (если замена ссылки производилась на ту же ссылку, то функция замены уходила в бесконечный цикл) .
26.09.2014. Версия 2.3.1.1.
- добавлена управляемая форма для замены ссылок в объектах базы данных;
- незначительные исправления и улучшения (реализована замена в регистрах с регистратором-битой ссылкой, повышена стабильность кода) .
01.12.2014. Версия 2.3.1.3.
- добавлена возможность включения привилегированного режима (выполнение замены с полными правами);
Читайте также: