Такое ощущение, что малые дети начали что-то делать, потом у них возникли трудности, они расстроились и бросили все, как есть.

Программная работа с регистрами сведений
Регистры сведений в 1С — это прикладные объекты конфигурации для хранения данных в структурированном виде (в разрезе измерений). Например, в регистре сведений можно хранить курсы валют в разрезе валют, цены номенклатуры в разрезе номенклатур, ФИО физических лиц в разрезе физических лиц и т.д.
При проектировании разработчик указывает необходимость хранения данных в разрезе времени и минимальную периодичность, с которой записи будут храниться в регистре:
Регистры сведений, для которых указана периодичность, называются периодическими.
Изменение данных в регистре может осуществляться как вручную, так и при помощи документов. Режим записи в регистр определяет разработчик на этапе проектирования:
Физически регистр сведений представляет собой таблицу, в которой хранятся следующие данные:
- измерения — описывают разрезы, в которых хранится информация;
- период — поле, используемое для разворота данных по времени. Поле добавляется автоматически при указании свойства «Периодичность», отличного от «Непериодический»;
- регистратор — поле, используемое для хранения документа, с которым связана запись. Поле добавляется автоматически при указании свойства «Режим записи» в значение «Подчинение регистратору»;
- ресурсы — непосредственно хранят информацию для комбинации измерений;
- реквизиты — дополнительная произвольная информация, относящаяся к конкретной записи регистра.
Для всех регистров сведений обеспечивается контроль уникальности записей, т.е. в регистре не может быть двух одинаковых записей. Одинаковыми считаются записи, у которых совпадают значения измерений, период (если регистр периодический) и регистратор (если регистр подчинен регистратору).
1C Очистить Регистр Сведений Версии Объектов
- Выбрать(Отбор, Порядок) — выбирает записи с указанным отбором;
- ВыбратьПоРегистратору(Регистратор) — выбирает все записи указанного регистратора;
- Получить(Отбор) — получает ресурсы записи с отбором по всем измерениям.
Добавление записей
Программно добавить записи в регистр сведений можно при помощи:
Объект МенеджерЗаписи можно использовать только для работы с независимыми регистрами. Причем можно обрабатывать только одну запись. Объект предназначен в основном для интерактивной работы, но программно с ним также можно работать. На системном уровне МенеджерЗаписи использует объект НаборЗаписей .
Общая схема добавления записей в регистр сведений при помощи объекта НаборЗаписей выглядит так:
- создание объекта НаборЗаписей ;
- наложение отборов на измерения, период (если регистр периодический) и регистратора (если регистр подчинен регистратору);
- добавление и заполнение значений полей записей;
- запись набора записей.
Общая схема добавления записей в регистр сведений при помощи объекта МенеджерЗаписи выглядит так:
Промокоды на Займер на скидки
Такое ощущение, что малые дети начали что-то делать, потом у них возникли трудности, они расстроились и бросили все, как есть.

Как запретить удаление записи регистра сведений 1С по условию
//Проверим, что это удаление
Если ЭтотОбъект . Количество ( ) = 0 И ЭтотОбъект . Модифицированность ( ) = Истина Тогда
//Создадим менеджер записи регистра сведений
МЗ = РегистрыСведений . НашРегистр . СоздатьМенеджерЗаписи ( ) ;
//Заполним измерения в менеджере записи по данным отбора
Для каждого ЭлементОтбора из ЭтотОбъект . Отбор Цикл
МЗ [ ЭлементОтбора . Имя ] = ЭлементОтбора . Значение ;
КонецЦикла ;
//Получим запись по заполненным измерениям
МЗ . Прочитать ( ) ;
//Дальше можно проверять любые условия. В менеджере записи теперь
//заполнены все измерения, ресурсы и реквизиты
Отказ =? ( МЗ . Ресурс 1 = «Какое-то значение» , Истина , Ложь ) ;
Этот вариант работает для непериодического регистра сведений. Для периодических регистров нужно в менеджер записи добавить еще и период.
Отбор в наборе записей регистра сведений 1С |
Как программно запретить удаление записи регистра сведений 1С : 2 комментария
Можно также в форме списка регистра сведений сделать так
&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)
ТекСтрока=Элементы.Список.ТекущиеДанные;
//далее проводить анализ реквизитов записи через ТекСтрока. или ТекСтрока[ ]
//и при необходимости
Отказ=Истина;
КонецПроцедуры
Михаил, да, такой способ должен сработать. Но у него есть одно важное ограничение: он будет работать только при удалении записи из формы списка регистра. А если запись удаляется из какой-то другой формы, или вообще программно, то запрет уже не сработает.
А процедура ПередЗаписью() модуля набора записей регистра сведений хороша тем, что вызывается при любой попытке сохранения/удаления записи регистра в базе данных.
При последовательном обновлении запускаются специализированные обработчики, которые могут исключить данную ошибку автоматически.

Регистры сведений. История одного «велосипеда»
В свое время, когда я достаточно много занимался собеседованиями кандидатов на должность разработчика 1С, я нашел для себя пару-тройку совсем простых вопросов. Послушав ответы на эти вопросы можно было моментально представить себе уровень кандидата.
Один из вопросов звучал безобидно и просто: «Что такое регистр сведений?» Тем удивительнее было наблюдать, как многие буквально спотыкались об него. Впечатление было такое, как будто человек шел, шел и не заметил стеклянную дверь. Тогда-то я впервые задумался о том, что не так с этим изобретением.
В теории (да и в практике тоже) баз данных это обыгрывается элементарно. Первичный ключ может быть простым, если у нас отношения подчинения (первый случай) или составным, если у нас отношения равноправия (второй случай). Это решение логично, изящно и настолько просто, что попытки найти здесь «свой путь», несомненно должны проходить по разряду «изобретений велосипеда».
Есть такая задача, которая называется «получение последних значений». Например, у вас в базе имеется следующая информация о закупочных ценах:
Тогда последние цены конкретных товаров у конкретных поставщиков будут следующие:
А последние цены просто товаров, без учета поставщиков:
Получается такое в результате достаточно нехитрой операции группировки и получения максимальных дат, а затем соединения с исходной таблицей. Может применяться к любому набору данных, в котором есть поле типа «Дата».
01.08.2024 00:00:00 78364732678365738465734, Вилка, 155 р.
01.08.2024,00:00:00 78364732678365753438478, Ложка, 191 р.
Но разработчики посчитали, что достаточно будет хранить даты с точностью до секунды. И перед ними встала другая задача. Какой результат выдавать, в случае если запрос к их регистру сведений строится по неполному набору ключевых полей, как это было показано выше. Можно было бы выдавать результат:
Как видите, результат не только потерял уникальность, он еще и перестал выдавать последние записи. Он лишен вообще какого-либо смысла. Такое ощущение, что малые дети начали что-то делать, потом у них возникли трудности, они расстроились и бросили все, как есть.
На самом деле все это не так смешно, как я здесь описываю. Потому что в реальности происходит следующее. Вы сталкиваетесь с задачей получения последних записей по неполному набору «измерений». Открываете документацию. В описании виртуальной таблицы среза последних читаете:
«Предназначена для получения наиболее поздних записей регистра сведений на указанную дату (включительно). Включает только активные записи. По каждой комбинации измерений будет найдена наиболее поздняя запись, но не более поздняя, чем указанная дата.»
Несколько конкретных примеров обработки регистров сведений (1С: Программисту: Регистры сведений) — 1C-h
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы