Имеются записи с одинаковыми измерениями 1с

Содержание
  1. Объекты доступа документов
  2. Ошибки неуникальности записей в 1С
  3. Инструкция по свертке неуникальных записей:
  4. Права доступа в 1С:Предприятии 8
  5. Связанные права
  6. Алфавитный список прав доступа 1С:Предприятия
  7. Программная работа с регистрами сведений
  8. Предназначение регистра сведений
  9. Добавление записей
  10. Изменение записей
  11. Чтение записей
  12. Удаление записей
  13. Очистка регистра сведений
  14. Как работает механизм регистрации изменений
  15. Механизм сопоставления данных при обмене через универсальный формат
  16. Сопоставление объектов
  17. Настройка полей таблицы сопоставления
  18. Получение данных из другой программы
  19. Порядок сопоставления объектов
  20. Варианты идентификации объектов при получении
  21. Объект 1С «Регистры сведений»
  22. Функциональные возможности регистра сведений
  23. Структура объекта 1С «Регистры сведений»
  24. Периодичность регистра сведений 1С
  25. Подчинение регистратору
  26. Свойство «Режим записи»может быть в значении:
  27. Уникальность записей регистра сведений
  28. Свойства измерения регистра сведений
  29. Программная запись в регистр сведений 1С

Объекты доступа документов

Имеются записи с одинаковыми измерениями 1с

При обновлении конфигурации периодически может возникать ошибка «Записи регистра сведений стали неуникальными» или «Имеются записи с одинаковыми измерениями«
Эта ошибка означает, что при обновлении изменился состав измерений регистра сведений.

Одним из базовых принципов работы регистра сведений является требование, что каждому набору значений измерений регистра сведений соответсвует один и только один набор значений реквизитов. Допустим, в нашей конфигурации есть регистр ответственных лиц по складам в разрезе складов и помещений.

В очередном релизе разработчик решает, что такая детализация ответственности избыточна и оставляет только возможность указания ответственного по складу.

Однако у пользователя в этом регисте указано, что для «Главного склада» за помещение «Продукты» отвечает Иванов, а за помещение «Холодильники» — Петров. При обновлении информационной базы платформа должна оставить только одну запись с ответственным. Но она не может решить за пользователя, кого поставить ответственным за «Главный склад» вцелом (Иванова или Петрова). Поэтому выдается сообщение об ошибке.

В зависимости от конкретной ситуации, сообщение может звучать как «Записи регистра сведений стали неуникальными» либо «Имеются записи с одинаковыми измерениями«.

Смысл сообщения одинаков.

Это сообщение означает, что в новой структуре регистров образовалось несколько записей с одним набором измерений и их нужно свернуть в одну.

Для решения проблемы удаляем одну из записей, чтобы 1С однозначно знала, что за «Главный склад» отвечает Иванов.

Ошибки неуникальности записей в 1С

В типовых конфигурациях в большинстве случаев эта проблема решается разработчиком программно. Т.е. обновление конфигурации само при необходимости сворачивает записи регистра.

Однако в некоторых случаях (например, если выполняется обновление с пропуском части релизов, или конфигурация доработана) данные могут не свернуться и их нужно свернуть самостоятельно. Для того, чтобы определить, что именно изменилось, выполняем режим «Конфигурация» — «Сравнить конфигурации».

И сравниваем основную конфигурацию с конфигурацией базы данных. При таком сравнении мы однозначно можем определить, какие именно поля удалены или изменились.

После этого консолью запросов находим неуникальные записи и удаляем их. Если записей немного, то удалить дубли можно и вручную. Если много, то проще это сделать программно. Предлагаю простую обработку, решающую данную задачу.

Инструкция по свертке неуникальных записей:

1. Открыть обработку. 2. Выбрать регистр сведений, в котором появились неуникальные записи. 3. Отметить измерения которые будут удалены при обновлении.

4. Нажать « дубли».

Обработка найдет дублирующиеся строки и свернет их в одну строку.
После этого обновление конфигурации пройдет корректно.

Также можно просто проверить наличие дублей без изменения данных

Read Full Article

Права доступа в 1С:Предприятии 8

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

Основные (неинтерактивные) – проверяются всегданезависимо от способа обращения к объектам информационной базы.

Интерактивные – проверяются при выполнении интерактивных операций (например, операция «Установить пометку удаления»).

Нужно учитывать, что проверку интерактивных прав можно обойти, создав, например, при конфигурировании форму самостоятельно и заменив стандартные команды своими, а проверку неинтерактивных прав нельзя обойти ни при каких обстоятельствах. Неинтерактивными правами защищается характерная для объекта фундаментальная функциональность, за это отвечают, например, такие права, как: «Добавление», «Чтение», «Изменение», «Удаление».

Для построения защищенных прикладных решений достаточно управлять только 4-мя основными правами доступа — «Добавление», «Чтение», «Изменение» и «Удаление».

Система 1С:Предприятие допускает проверку прав из встроенного языка. Например при добавлении команд к формам разработчик должен дополнительно позаботиться о проверке соответствующих интерактивных прав.

Пример проверки прав из языка:

Копировать в буфер обменаПроцедура КнопкаНажатие(Элемент) Разрешено = ПравоДоступа(«ИнтерактивноеУдаление», Метаданные.Документы.Документ1);ЕслиНе Разрешено Тогда Предупреждение («Удалять не разрешено»);// … необходимые действияКонецЕсли// … необходимые действияКонецПроцедуры

При этом нужно помнить о том, что у будущего пользователя конфигурации соответствующие интерактивные и неинтерактивные права к тому или иному объекту могут различаться. Например, может быть разрешено право на «Удаление» и запрещено право «Интерактивное удаление».

Проверка прав объектов производится только в режиме «1С:Предприятие».
При попытке выполнить неразрешенную операцию выдается сообщение об ошибке «Нарушение прав доступа!», и производится отмена всех начатых транзакций.

Проверка основных и интерактивных прав используется расширениями формы, табличного поля и поля ввода (расширение формы определяется ее основным реквизитом, а табличного поля и поля ввода — типом редактируемых данных). Благодаря этому, если не установлено право «Просмотр», то форма списка или форма объекта не откроется, и будет выдано стандартное сообщение о нарушении прав доступа.

Рассмотрим проверку прав расширениями формы, табличного поля и поля ввода на примере документа:

  • При открытии формы документа проверяется право «Просмотр», после чего, если это форма нового объекта, то проверяется право «ИнтерактивноеДобавление», а если нет — право «Редактирование». Если выполняется запись с проведением, то проверяются права «ИнтерактивноеПроведение»,  «ИнтерактивнаяОтменаПроведения» или «ИнтерактивноеПроведениеНеОперативное», в зависимости от режима записи.
  • Расширение табличного поля для журнала документов при открытии формы, в которой журнал установлен основным реквизитом, проверяет, что право «Просмотр» установлено хотя бы у одного документа журнала. При проведении документов из журнала проверяются права «ИнтерактивнаяОтменаПроведения», «ИнтерактивноеПроведение» и «ИнтерактивноеПроведениеНеОперативное». При удалении документов проверяется право «ИнтерактивноеУдаление», а при установке/снятии пометки на удаление проверяются права «ИнтерактивнаяПометкаУдаления» и «ИнтерактивноеСнятиеПометкиУдаления». При добавлении нового документа, после выбора его типа, расширение табличного поля журнала документов проверяет право «ИнтерактивноеДобавление».
  • Поле ввода для документа проверяет только право «ВводПоСтроке».

Связанные права

Часть прав в системе 1С:Предприятия связаны друг с другом. Это означает, что основные права доступа, такие как «Чтение», «Изменение», «Добавление» и «Удаление» и некоторые другие могут влиять на права, отвечающие за такие операции с объектом, которые, в конечном счете, приведут к простейшим операциям. Например, нельзя разрешить право «Изменение», не выдав право «Чтение».

Интерактивные права напрямую зависят от их неинтерактивных аналогов, т.е. право «Интерактивное удаление» зависит от права «Удаление».

На практике при конфигурировании это выглядит так, что при разрешении интерактивных прав аналогичные им неинтерактивные будут автоматически разрешены, и, наоборот, при снятии неинтерактивных прав соответствующие им интерактивные автоматически будут сброшены.

Допускается лишь установка неинтерактивного права и сброс интерактивного, но не наоборот. Например, нельзя разрешить интерактивное право «Интерактивное удаление» и запретить неинтерактивное «Удаление».

Зависимость прав может выстраиваться в сложные цепочки, например, у объекта «Документ» право «Интерактивная отмена проведения» зависит от прав «Отмена проведения» и «Просмотр» одновременно, где первое зависит от «Изменение», которое, в свою очередь, зависит от права «Чтение» (см. рисунок).

Ключевым является право «Чтение», при его отсутствии автоматически пропадают любые другие права на доступ к объекту.

Алфавитный список прав доступа 1С:Предприятия

Право доступаОписание
AutomationРазрешает использование 1С:Предприятие в режиме automation.
АдминистрированиеРазрешает административные действия, например, ведение списка пользователей или открытие конфигурации.
АктивныеПользователиРазрешает просмотр списка активных пользователей. Это право может использоваться при организации «гостевого входа» в прикладном решении.
ВводПоСтрокеРазрешает использование режима ввода по строке для различных объектов.
ВнешнееСоединениеРазрешает использование 1С:Предприятия через COM соединение.
ДобавлениеРазрешает добавление объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ЖурналРегистрацииРазрешает просмотр журнала подключений и протоколов работы
ИзменениеРазрешает изменение объектов данного вида. Проверяется на уровне объекта и на уровне БД.
ИнтерактивнаяОтменаПроведенияРазрешает интерактивную отмену проведения
ИнтерактивнаяПометкаУдаленияРазрешает интерактивную установку пометки удаления
ИнтерактивноеДобавлениеРазрешает интерактивное добавление объектов данного вида
ИнтерактивноеОткрытиеВнешнихОбработокРазрешает открытие внешних обработок стандартными командами меню
ИнтерактивноеПроведениеРазрешает интерактивное проведение документов данного вида
ИнтерактивноеПроведениеНеОперативноеРазрешает интерактивное проведение (стандартными командами форм) документа в неоперативном режиме
ИнтерактивноеСнятиеПометкиУдаленияРазрешает интерактивное снятие пометки на удаление
ИнтерактивноеУдалениеРазрешает интерактивное непосредственное удаление
ИнтерактивноеУдалениеПомеченныхРазрешает интерактивное удаление помеченных объектов
ИспользованиеРазрешает использование обработки, отчета, интерфейса
МонопольныйРежимРазрешает переключение в монопольный режим при работе в режиме 1С:Предприятия.
ОтменаПроведенияРазрешает отмену проведения документов
ПроведениеРазрешает проведение документов
ПросмотрРазрешает просмотр объектов (например, в списках)
РедактированиеРазрешает редактирование объекта
УдалениеРазрешает удаление
УправлениеИтогамиРазрешает управление итогами регистра бухгалтерии и регистра накопления — установку периода, по который рассчитаны итоги, и пересчет итогов
ЧтениеРазрешает чтение данных из информационной базы

Источник: https://printscanner.ru/obekty-dostupa-dokumentov/

Программная работа с регистрами сведений

Имеются записи с одинаковыми измерениями 1с

Регистры сведений в 1С предназначены для хранения произвольных данных в разрезе нескольких измерений и, при необходимости, в разрезе времени. Рассмотрим подробнее работу с этим прикладным объектом.

Предназначение регистра сведений
Добавление записей
Изменение записей
Чтение записей
Удаление записей
Очистка регистра сведений

Предназначение регистра сведений

Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.

При проектировании разработчик указывает необходимость хранения данных в разрезе времени и минимальную периодичность, с которой записи будут храниться в регистре:

Регистры сведений, для которых указана периодичность, называются периодическими.

Изменение данных в регистре может осуществляться как вручную, так и при помощи документов. Режим записи в регистр определяет разработчик на этапе проектирования:

Физически регистр сведений представляет собой таблицу, в которой хранятся следующие данные:

  • измерения — описывают разрезы, в которых хранится информация;
  • период — поле, используемое для разворота данных по времени. Поле добавляется автоматически при указании свойства «Периодичность», отличного от «Непериодический»;
  • регистратор — поле, используемое для хранения документа, с которым связана запись. Поле добавляется автоматически при указании свойства «Режим записи» в значение «Подчинение регистратору»;
  • ресурсы — непосредственно хранят информацию для комбинации измерений;
  • реквизиты — дополнительная произвольная информация, относящаяся к конкретной записи регистра.

Для всех регистров сведений обеспечивается контроль уникальности записей, т.е. в регистре не может быть двух одинаковых записей. Одинаковыми считаются записи, у которых совпадают значения измерений, период (если регистр периодический) и регистратор (если регистр подчинен регистратору).

Добавление записей

Программно добавить записи в регистр сведений можно при помощи:

  • объекта НаборЗаписей;
  • объекта МенеджерЗаписи.

Объект МенеджерЗаписи можно использовать только для работы с независимыми регистрами. Причем можно обрабатывать только одну запись. Объект предназначен в основном для интерактивной работы, но программно с ним также можно работать. На системном уровне МенеджерЗаписи использует объект НаборЗаписей.

Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:

  1. создание объекта НаборЗаписей;
  2. наложение отборов на измерения, период (если регистр периодический) и регистратора (если регистр подчинен регистратору);
  3. добавление и заполнение значений полей записей;
  4. запись набора записей.

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

Установить(ИмяПодсистемы); // Этап 2
// Этап 3
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.ИмяПодсистемы = ИмяПодсистемы;
НоваяЗапись.Версия = НомерВерсии;
НаборЗаписей.

Записать(); // Этап 4

// Добавление записи в независимый периодический регистр сведений
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1
// Этап 2
НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Отбор.Период.

Установить(НачалоДня(ТекущаяДата()));
// Этап3
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ТекущаяДата();
НоваяЗапись.Валюта = Доллар;
НоваяЗапись.Курс = 57.92;
НоваяЗапись.Кратность = 1;
НаборЗаписей.

Записать(); // Этап 4

Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:

  1. создание объекта МенеджерЗаписи;
  2. заполнение значений полей записи;
  3. запись записи.

// Добавление записи в независимый непериодический регистр сведений
Запись = РегистрыСведений.ВерсииПодсистем.СоздатьМенеджерЗаписи(); // Этап 1

// Этап 2
Запись.ИмяПодсистемы = ИмяПодсистемы;
Запись.Версия = НомерВерсии;

Запись.Записать(); // Этап 3

// Добавление записи в независимый периодический регистр сведений
Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); // Этап 1

// Этап 2
Запись.Период = ТекущаяДата();
Запись.Валюта = Доллар;
Запись.Курс = 57.92;
Запись.Кратность = 1;

Запись.Записать(); // Этап 3

Изменение записей

Изменять существующие записи регистров сведений возможно при помощи объектов НаборЗаписей и МенеджерЗаписи. Ограничения объекта МенеджерЗаписи были описаны в разделе Добавление записей.

Общая схема редактирования записей регистров сведений:

  1. создание объекта НаборЗаписей или МенеджерЗаписи;
  2. наложение отборов;
  3. чтение записей базы данных, соответствующих наложенным отборам;
  4. редактирование прочитанных записей;
  5. запись отредактированных записей.

// Редактирование записей с использованием объекта НаборЗаписей
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); // Этап 1
// Этап 2
НаборЗаписей.Отбор.Период.

Установить(ДатаКурса);
НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Прочитать(); // Этап 3
Для Каждого Запись Из НаборЗаписей Цикл
     Запись.Курс = 57.

84; // Этап 4
КонецЦикла;
НаборЗаписей.Записать(); // Этап 5

// Редактирование записей с использованием объекта МенеджерЗаписи
Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); // Этап 1
// Этап 2
Запись.Период = ДатаКурса;
Запись.

Валюта = Доллар;
Запись.Прочитать(); // Этап 3
Если Запись.Выбран() Тогда // Проверка, что запись существует
     Запись.Курс = 57.92; // Этап 4
     Запись.

Записать(); // Этап 5
КонецЕсли;

Чтение записей

Чтение информации из базы данных рекомендуется выполнять при помощи запросов. Данный способ обеспечивает гибкое применение отборов и группировок, а также возможность выбора записей из нескольких таблиц.

Запрос = Новый Запрос;
Запрос.Текст =«ВЫБРАТЬ|    КурсыВалют.Период,|    КурсыВалют.Валюта,|    КурсыВалют.Курс|ИЗ

|    РегистрСведений.КурсыВалют КАК КурсыВалют»;

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// обход результата выполнения запроса
КонецЦикла;

Для периодических регистров сведений есть возможность получить наиболее поздние записи, период которых меньше указанной даты — срез последних, и наиболее ранние записи, период которых больше указанной даты — срез первых.

Для получения среза первых и среза последних запросом необходимо использовать одноименные виртуальные таблицы, в параметрах которых сразу можно задать дату среза и отборы. Отборы, если они необходимы, рекомендуется накладывать именно в параметрах виртуальных таблиц, т.к.

это позволяет ускорить выполнение запроса.

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период МЕНЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос;
Запрос.

Текст =
«ВЫБРАТЬ
|    КурсыВалютСрезПоследних.Период,
|    КурсыВалютСрезПоследних.Валюта,
|    КурсыВалютСрезПоследних.Курс
|ИЗ
|    РегистрСведений.КурсыВалют.

СрезПоследних(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПоследних»;

Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта);
Запрос.УстановитьПараметр(«Период», ВыбраннаяДата);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    // обход результата выполнения запроса
КонецЦикла;

// Получение записи, у которой валюта равна значению из переменной «ВыбраннаяВалюта» и период БОЛЬШЕ или равен значению из переменной «ВыбраннаяДата»
Запрос = Новый Запрос;
Запрос.

Текст =
«ВЫБРАТЬ
|    КурсыВалютСрезПервых.Период,
|    КурсыВалютСрезПервых.Валюта,
|    КурсыВалютСрезПервых.Курс
|ИЗ
|    РегистрСведений.КурсыВалют.

СрезПервых(&Период, Валюта = &Валюта) КАК КурсыВалютСрезПервых»;

Запрос.УстановитьПараметр(«Валюта», ВыбраннаяВалюта);
Запрос.УстановитьПараметр(«Период», ВыбраннаяДата);

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// обход результата выполнения запроса
КонецЦикла;

Кроме чтения запросом возможно использование методов объектной модели.

Для непериодических регистров сведений:

  • Выбрать(, ) — выбирает записи с указанным отбором;
  • ВыбратьПоРегистратору() — выбирает все записи указанного регистратора;
  • Получить() — получает ресурсы записи с отбором по всем измерениям.

Для периодических регистров сведений:

  • Выбрать(, , , ) — выбирает записи с указанным отбором, у которых период находится между и ;
  • ВыбратьПоРегистратору() — выбирает все записи указанного регистратора;
  • Получить(, ) — получает ресурсы записи с отбором по всем измерениям и периоду;
  • ПолучитьПервое(, ) — получает ресурсы наиболее ранней записи, соответствующей указанным периоду и отбору;
  • ПолучитьПоследнее(, ) — получает ресурсы наиболее поздней записи, соответствующей указанным периоду и отбору;
  • СрезПервых(, ) — получает таблицу наиболее ранних записей, соответствующую указанным периоду и отбору;
  • СрезПоследних(, ) — получает таблицу наиболее поздних записей, соответствующую указанным периоду и отбору.

Удаление записей

Для удаления записи(записей) в независимом регистре сведений необходимо:

  1. создать набор записей;
  2. наложить требуемые отборы на измерения и период (если регистр периодический);
  3. записать набор записей без предварительного чтения.

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Валюта.Установить(Доллар);
НаборЗаписей.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));

НаборЗаписей.Записать();

Для удаления записей в подчиненном регистре сведений необходимо:

  1. создать набор записей;
  2. наложить отбор на регистратора;
  3. записать набор записей без предварительного чтения.

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

Очистка регистра сведений

Для удаления всех записей в независимом регистре сведений достаточно записать набор записей этого регистра без установки отборов:

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать();

Запись в регистр сведений, подчиненный регистратору, возможна только при установке отбора по регистратору, поэтому для очистки таких регистров необходимо:

  1. получить перечень ссылок всех регистраторов регистра сведений;
  2. последовательно записать пустой набор записей с отбором по регистраторам из пункта 1.

Запрос = Новый Запрос(«ВЫБРАТЬ
| ЦеныНоменклатуры.Регистратор
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры»);

Выборка = Запрос.Выполнить().Выбрать();

НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
     НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
     НаборЗаписей.Записать();
КонецЦикла;

Источник: https://pro1c8.ru/programmnaya-rabota-registr-svedenij/

Как работает механизм регистрации изменений

Механизм регистрации изменений используется для обмена данными. При выполнении обмена из базы-источника в базу-приемник передаются не все данные, а только те, для которых были зарегистрированы изменения. В 1С регистрация изменений доступна для следующих объектов: константа, справочник, документ…

Источник: https://tokmakov.msk.ru/articles/item/8

Механизм сопоставления данных при обмене через универсальный формат

Имеются записи с одинаковыми измерениями 1с

Механизм сопоставления данных предназначен  для решения задачи синхронизации данных между базой источника и базой приемника при обмене

Внутренние идентификаторы объектов

В идеальном случае данные синхронизируемых приложений могли бы сопоставляться по уникальным внутренним идентификаторам объектов (GUID).

Но для этого необходимо, чтобы добавление данных, подлежащих синхронизации, осуществлялся только в одном приложении, а в другом эти данные появлялись исключительно в результате синхронизации.

В этом случае GUID в двух приложениях у одинаковых объектов будут одинаковыми, и по ним можно будет однозначно сопоставить объекты.

На практике соблюдать данное требование не всегда возможно, особенно в случае настройки синхронизации между приложениями, работа в которых велась независимо. Это связано с тем, что у двух одинаковых объектов, созданных параллельно в каждом приложении, будет два разных GUID.

В некоторых случаях данные не могут быть сопоставлены по GUID по причине его отсутствия (особые случаи, которые не рассматриваются в данной статье).

Публичные идентификаторы объектов

Для успешного сопоставления объектов с разными GUID должно быть место для хранения информация об их соответствии. Таким местом является регистр сведений Публичные идентификаторы синхронизируемых объектов (далее РПИ).

Рис. 1 Регистр сведений Публичные идентификаторы синхронизируемых объектов

Структура регистра представлена в таблице:

ИзмеренияТипНазначение
Узел информационной базыПланОбменаСсылкаСсылка на узел плана обмена (настройку обмена), для которой хранится соответствие.
СсылкаСправочникСсылка,ПланВидовХарактеристикСсылка,ДокументСсылкаСсылка на объект текущего приложения.
ИдентификаторСтрока (36)GUID объекта, полученного от приложения-корреспондента.

Для сопоставления  данных двух программ предназначена в БСП 2.3 обработка  “Сопоставление объектов информационных баз” для непосредственного использования при синхронизации данных

Рис 2. Основная форма обработки “Сопоставление объектов информационных баз”

Список открывается по команде Выполнить сопоставление на странице Сопоставление данных Помощника интерактивной синхронизации данных. Также можно дважды щелкнуть мышью по строке, в которой обнаружены проблемы сопоставления данных.

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

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

Сопоставление объектов

  • Нажмите Сопоставить автоматически (рекомендуется), выберите поля для сопоставления с помощью флажков. Некоторые поля выбраны программой по умолчанию. Для того чтобы подтвердить свой выбор, нажмите Выполнить сопоставление. После поиска программа выводит на просмотр сопоставленные ею данные. Для подтверждения нажмите Применить.
  • После автоматического сопоставления можно оставшиеся объекты сопоставить вручную или изменить сопоставление объектов. Выделите нужные объекты двух баз, нажмите Отменить соответствие, для того чтобы попытаться сопоставить объекты вручную, нажмите Установить соответствие для того чтобы сопоставить объекты.
  • Для подтверждения нажмите Записать и закрыть.

Настройка полей таблицы сопоставления

  • Нажмите Колонки, чтобы добавить поля в колонки списка. С помощью флажков можно отметить дополнительные поля, для подтверждения нажмите Применить.

Получение данных из другой программы

  • Для того чтобы получить данные из другой программы, нажмите Еще –  Загрузить данные из другой программы.

Порядок сопоставления объектов

  • Рекомендуется выполнять сопоставление и загрузку данных с учетом ссылочных связей. Особенно, если поле используется для сопоставления объектов.
  • Например, в конфигурации имеется справочник договоров контрагентов, который подчинен справочнику контрагентов. Сопоставление договоров контрагентов выполняется по справочнику-владельцу, т.е. по справочнику контрагентов. Следовательно, для правильного сопоставления данных необходимо сначала сопоставить и загрузить справочник контрагентов, а затем – справочник договоров контрагентов.
  • В противном случае поля таблицы сопоставления могут содержать фиктивные ссылки вида: (26:a0b9001b24e002fe11da347dd41412).
  • Фиктивная ссылка указывает на объект в текущей информационной базе, который еще не был загружен из сообщения обмена.

Записи в РПИ создаются и на стороне отправителя при подтверждении получения данных корреспондентом через механизм квитирования. В поле Идентификатор в таких записях устанавливается исходный идентификатор объекта.

Регистрация таких записей необходима для того, чтобы при получении других данных от корреспондента можно было понимать, что данный объект должен быть исключен из процедуры поиска по полям и по уникальному идентификатору.

Варианты идентификации объектов при получении

Порядок автоматического сопоставления объектов при получении, содержится в правилах конвертации объектов (ПКО), предназначенных для получения данных. Правила ПКО находятся в общем модуле  МенеджерОбменаЧерезУниверсальныйФормат

Рис 3 Разделы общего модуля МенеджерОбменаЧерезУниверсальныйФормат

Отметим, что в общем модуле  МенеджерОбменаЧерезУниверсальныйФормат  находятся все компоненты (правила обработки данных, правила конвертации объектов и т.д.

), определяющие прикладную логику обработки данных в процессе их получения, либо отправки . Программный код этого модуля   создается автоматически с помощью  приложения “Конвертация данных, редакция 3.0”  на основе настроенных правил обмена.

Программный код модуля можно создавать вручную, но требует от разработчика большого мастерства.

Вариант автоматического сопоставления (идентификации) объектов при получении задается с помощью свойства ВариантИдентификации ПКО

Рис 4. Настройки идентификации в модуле менеджера

Существуют 3 варианта ( 3 значения)  идентификации объекта

  1. ПоУникальномуИдентификатору –идентификация по GUID,
  2. СначалаПоУникальномуИдентификаторуПотомПоПолямПоискаидентификация по GUID и полям поиска,
  3. ПоПолямПоиска –идентификация по полям поиска,

Рис 5. Настройки идентификации в КД3.0.

Еще одним свойством, определяющим логику сопоставления, является массив полей поиска, определяемый в свойстве ПоляПоиска ПКО.

Алгоритм поиска по полям 

Происходит последовательное применение вариантов поиска, заданных в свойстве ПоляПоиска ПКО, используемого при загрузке объекта.

Ограничение.
При сопоставлении на этапе анализа данных применяется только 1-й вариант поиска – ПоУникальномуИдентификатору

Переход к следующему варианту осуществляется в двух случаях:

  1. У загружаемого объекта не заполнено какое-либо из полей, которое указано в варианте поиска.
  2. Вариант поиска не дал результата.

Если в загружаемом объекте есть информация об исходном GUID и вариант идентификации для объекта “По GUID” или “По GUID и полям поиска”, то поиск выполняется среди всех объектов заданного типа, кроме тех, для которых в РПИ уже установлены соответствия.

В остальных случаях поиск осуществляется среди всех объектов информационной базы соответствующего типа.

Особенности.
При сопоставлении на этапе анализа данных у загружаемых объектов не проверяется заполнение полей, участвующих в поиске.

На этапе анализа данных соответствие будет установлено только в том случае, когда для одного объекта отправителя был найден один объект получателя.

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

На этапе загрузки данных вариант поиска Номер + Дата для документов работает следующим образом: номер искомого документа проверяется на точное соответствие, дата определяет интервал, в котором проводится поиск по номеру.

Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.

На этапе анализа данных этот вариант поиска будет работать как обычно: оба поля будут проверяться на точное соответствие.

Источник: https://master1c8.ru/platforma-1s-predpriyatie-8/rukovodstvo-razrabottchika/glava-15-mehanizm-obmena-dannh/mehanizm-sopostavleniya-dannh-pri-obmene-tcherez-universalyny-format/

Объект 1С «Регистры сведений»

Имеются записи с одинаковыми измерениями 1с

Объект 1С «Регистры сведений» — это прикладные объекты конфигурации, которые позволяют хранить в прикладном решении произвольные данные в разрезе нескольких измерений.

Например, в регистре сведений можно хранить курсы валют в разрезе валют, или цены предприятия в разрезе номенклатуры и типа цен.

Функциональные возможности регистра сведений

Основными функциональными возможностями, которые предоставляет регистр сведений разработчику, являются:

  • создание, изменение и удаление записей;
  • выбор записей в заданном интервале по заданным критериям;
  • выбор записей по регистратору;
  • получение значений ресурсов записей, соответствующих указанному периоду и значениям измерений;
  • получение значений ресурсов наиболее ранних и наиболее поздних записей регистра, соответствующих указанному периоду и значениям измерений.

Структура объекта 1С «Регистры сведений»

Информация в регистре сведений хранится в виде записей, каждая из которых содержит:

  1. значения измерений регистра (описывают разрезы, в которых хранится информация);
  2. соответствующие им значения ресурсов (непосредственно содержат хранимую информацию).

Отсюда

Например, регистр сведений цены товаров может иметь следующую структуру:

где «Вид цен» может иметь значения «Оптовая», «Розничная», и т.д.

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

Периодичность регистра сведений 1С

Одной из возможностей регистра сведений является хранение данных не только в разрезе указанных измерений, но и в разрезе времени.

Данное свойство позволяет добавить к списку измерений регистра дополнительное измерение — «Период».

Использование периодичности регистра сведений позволяет не просто хранить статические данные, но и отслеживать их актуальность на определенную дату или изменение во времени.

Разработчик может указать минимальную периодичность, с которой записи будут заноситься в регистр:

Периодичность может принимать следующие значения:

  • Непериодический;
  • В пределах секунды;
  • В пределах дня;
  • В пределах месяца;
  • В пределах квартала;
  • В пределах года.

В этом случае к каждой записи регистра будет добавляться поле «Период», хранящее дату, которой были внесены записи в регистр.

При выборе периодичности, отличной от варианта «Непериодический», система будет контролировать уникальность записей в пределах заданного промежутка времени. Если запись не уникальна, система 1C выдаст сообщение «Запись с такими ключевыми полями существует!» и не даст произвести запись в базу данных.

Например, периодический регистр сведений «Цены товаров» может не только хранить информацию о том, какова цена на определенную номенклатуру сейчас, но и о том, как она изменялась в прошлом (или будет изменяться в будущем).

Особенность периодического регистра сведений:

  • Возможность получать готовые значения «Срез первых» и «Срез последних». Эта информация позволяет очень быстро получить из базы данных информацию о последнем (первом) установленном значении на определенную дату.

Подчинение регистратору

Внесение изменений в регистр сведений может выполняться:

  1. вручную;
  2. при помощи документов.

В случае, когда изменения в регистр сведений вносятся с помощью документов, к каждой записи регистра добавляется специальное поле, в котором хранится информация о регистраторе — документе, с которым связана эта запись.

Какой именно режим записи будет использоваться данным регистром сведений указывается разработчиком в процессе создания прикладного решения:

Свойство «Режим записи»может быть в значении:

  1. «Независимый» — записи можно произвести как программно, так и из формы списка регистра сведений;
  2. «Подчинение регистратору» — обязательно указание документа-регистратора записи.

Использование режима записи «Подчинение регистратору» необходимо в случае, когда логика работы прикладного решения требует того, чтобы изменения, выполняемые в регистре сведений, были жестко связаны с документами, фиксирующими факты хозяйственной деятельности.

Например, изменение цен компании может производиться только определенным кругом лиц, и каждое такое изменение должно сопровождаться «бумажным» документом. В этом случае можно использовать режим подчинения регистратору, при котором изменение цен может быть выполнено только специальным документом — «Изменение цен товаров».

Уникальность записей регистра сведений

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

В общем случае в формировании ключа записи будут участвовать значения регистратора, периода и значения измерений.

Таким образом, например, в непериодическом регистре сведений «Цены товаров» с независимым режимом записи не может существовать двух записей о розничной цене конфет ассорти.

Точно так же, как в периодическом регистре сведений «Цены товаров», подчиненном регистратору, не может существовать двух записей о розничной цене конфет ассорти, внесенных одной и той же датой, одним и тем же документом «Изменение цен товаров».

Свойства измерения регистра сведений

Особое внимание следует обратить на флаги «Ведущее» и «Основной отбор» палитры свойств измерений регистра сведений.

  • Ведущее —  свойство измерения, указывающее на то, что без значения этого измерения запись регистра не имеет смысл. Установка флага означает что система при удалении значения из измерения удаляет еще и запись регистра с «Ведущим» измерением. Может быть установлено только одно измерение.
  • Основной отбор — если регистр независимый, то по этим измерениям будет устанавливаться регистрация изменений для плана обмена. Аналогично использование «Основной отбор» по периоду включает основной отбор для периода периодических регистров.

Программная запись в регистр сведений 1С

Добавить новые записи в регистр сведений можно двумя способами:

  1. с помощью менеджера записи (для одиночной записи);
  2. с помощью набора записей (для двух и и более записей).

Примеры отсюда:

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»); НоваяЗапись.Период = Дата(31,12,2016); НоваяЗапись.Курс = 100; НоваяЗапись.Кратность = 1; НоваяЗапись.Записать();

НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию(«USD»);НоваяЗапись.Период = Дата(31,12,2016);НоваяЗапись.Кратность = 1;

Источник: https://flagman.top/about-business/ehkzamen-1s/obekt-1s-registry-svedenij

Самая полезная информация
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: