OksanaYa @ Вчера, 18:01
,
Такая ситуация возникает из-за того, что Вы используете набор записей без отбора (воспринимается системой, как полный набор всех записей), наполняете этот набор одной записью (Ваш новый контрагент) и затем записываете набор (НаборЗаписей.Записать(); ) без параметра. А это для системы равнозначно тому, что вы говорите заменить старый (полный) набор записей на новый набор с Вашей одной записью.
Синтаксис команды записать:
РегистрСведенийНаборЗаписей.<Имя регистра сведений> (InformationRegisterRecordSet.<Имя регистра сведений>)
Записать (Write)
Синтаксис:
Записать(<Замещать>)
Параметры:
<Замещать> (необязательный)
Тип: Булево.
Определяет
режим замещения существующей записи
в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям
Значение по умолчанию: Истина Т.е., чтобы записи не уничтожались при записи нужно сделать любое одно из двух (или, в конкретном частном случае, можно и оба сразу, хотя смысла в этом будет не много
):
1. После строки:
НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
нужно добавить строки отбора:
НаборЗаписей.Отбор.Объект.Установить(Контрагент);
НаборЗаписей.Отбор.Вид.Установить(ВидЕмайл);
Это ограничит перечень заменяемых строк только нашими контрагентом и видом е-мейла, а остальные записи будут жить спокойно.
2. В строке:
НаборЗаписей.Записать();
указать параметр перезаписи "Ложь" (т.к. в этом Вашем конкретном частном случае, этого контрагента в регистре еще нет, и можно его смело дописывать к сужествующим записям, а не обновлять существующего):
НаборЗаписей.Записать(Ложь);
Сообщение отредактировал Vofka - 29.12.17, 10:30