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

Обновлено: 04.07.2024

(3) А можно чуть подробнее ?
Вот так может ? Но это работает только для одной записи ? А как же пробежаться по всем ?

3+ Хотя. может и прокатить, вот если как в 2 через ТЗ то точно получится

Перебрать записи можно так

НаборЗаписей = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл

Но надо пробовать, модификация измерений в регистре может не прокатить.

(8)
Не соглашусь. Все работает.

(13)
Не нужно каждый раз записывать набор. Достаточно один раз в конце.

ну в принципе оно было ожидаемо, тогда только вариант 2 через ТЗ (9) А почему ожидаемо, какие препятствия могут возникнуть при изменении записей набора регистра сведений в цикле?

План захвата терргиторий:
1. Создать набор записей
2. Установить отбор по Контрагенту1
3. Выгрузить в таблицу значений
4. Очистить набор записей
5. Записать набор записей
6. В таблице значений заменить значение в колонке контрагент на Контрагент2
7. Создать набор записей
8. Установить отбор по Контрагенту2
9. Загрузить таблицу значений
10. Записать набор записей

AlbinaAAA; Yuri1988; LostMicos; serioga911; user619457_pescha00; ybatiaev; + 6 – Ответить (10) Вот всё верно, так и стоит сделать, при корректировке измерений по другому никак

(10)
План захвата терргиторий:
1. Создать набор записей
2. Установить отбор по Контрагенту1
3. Выгрузить в таблицу значений
4. Очистить набор записей
5. Записать набор записей
6. В таблице значений заменить значение в колонке контрагент на Контрагент2
7. Создать набор записей
8. Установить отбор по Контрагенту2
9. Загрузить таблицу значений
10. Записать набор записей

Вот так без лишнего.

Добрый день, необходимо примерно то же .
Написала так:

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

Для Каждого СтрокаТЧ ИЗ Таблица Цикл
// здесь меняем все, что необходимо
КонецЦикла;
Набор.Загрузить(Таблица);
Набор.Записать(Истина);

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

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

Создать менеджер регистра сведений достаточно просто, например:

Хочу заметить, что работать с менеджером регистра сведений можно или в толстом клиенте, или в серверном контексте. В тонком клиенте код, написанный в этой статье работать не будет!

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

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

Объект РегистрСведенийМенеджерЗаписи позволяет управлять записью регистра сведений и применим только для независимых регистров. Доступ к записи обеспечивается путем присвоения значений полям объекта, которые соответствуют измерениям, ресурсам и реквизитам регистра. В Вашем примере это измерения Период, ВидТоплива и Поставщик, а также ресурс Цена.

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

Переменные, которые присваиваются полям регистра в моем случае это реквизиты управляемой формы 1С.

Относительно периода замечу, что платформа самостоятельно изменит текущую дату на дату начала периода, который установлен в свойстве периодичность регистра сведений (если периодичность месяц, а в период передана дата 21.12.2017, то запишется 01.12.2017).

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

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

В этом случае наш код изменится.

В этом случае мы присваиваем значения ключевым полям (измерениям) и периоду. А после применяем метод Прочитать. Данный метод считывает записи с регистра по указанным ключевым полям (измерениям) и периоду. Если есть записи с данным набором полей, то метод Выбран возвращает Истину, иначе – Ложь. В Вашем примере, если метод Выбран вернул значение Ложь (записей нет), то мы присваиваем значения измерениям и ресурсу и записываем.

Если же нам нужно будет удалить запись с заданным набором измерений, то код немного поменяется.


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


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

можно оплатить вручную:

Разберем один из объектов, при помощи которого можно записывать данные в регистр сведений 1С. Набор записей регистра сведений. Если при помощи менеджера записей регистра сведений мы могли работать в регистре только с одной записью, то при помощи набора можно создавать (удалять, редактировать) любое количество записей.

Для создания набора записи регистра сведений необходимо использовать метод СоздатьНаборЗаписей менеджера регистра сведений.

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();

После выполнения данного метода будет создан набор записей регистра сведений, т.е. переменная НаборЗаписей кода выше имеет тип РегистрСведенийНаборЗаписей.ЦеныНаТопливо. Причем он будет создан абсолютно пустым!

Заметьте, набор записей можно создать или в серверном контексте, или в клиентском контексте, но в режиме толстого клиента. Под тонким клиентом, код приведенный в этой статье работать не будет!

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

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();

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

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
НаборЗаписей . Записать (Ложь);

В этом случае записи (которых нет) из набора не заместят записи из регистра, и данные не очистятся.

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

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();

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

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

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

Регистр сведений

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

Ошибка Запись с такими ключевыми полями существует

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

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

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

МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
Выборка = Справочники . ПоставщикиТоплива . Выбрать ();

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

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

В этом коде мы создадим несколько записей набора, а потом запишем весь наш набор в регистр сведений.


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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


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

можно оплатить вручную:

Читайте также: