Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 13:03

Записать новую строку в ТЧ справочника и удалить предыдущую

Автор Алексей_1985_06, 21 окт 2019, 20:35

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Уважаемые специалисты и профи 1С! Доброго времени суток! Помогите пожалуйста, (если есть возможность) необходимо чтоб при выполнении обработки "ЗаменаПаспорта", в справочнике с ТЧ "ПаспортныеДанные" производилась запись новой строки с данными нового паспорта, а строка со старыми данными паспорта - удалилась, при этом данные старого записывались в столбец "СведенияОРанееВыданныхПаспортах" новой созданной строки.  Помогите пожалуйста, что мне нужно дописать в коде,

Смог реализовать следующие:
&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмененияВСправочник = ФамилияИмяОтчество.ПолучитьОбъект(); // получаем ссылку на обьект
НоваяСтрока = ИзмененияВСправочник.ПаспортныеДанные.Добавить(); // Добавляем в ТЧ "ПаспортныеДанные" новую строку
НоваяСтрока.СерияПаспорта = СерияПаспорта;
НоваяСтрока.НомерПаспорта = НомерПаспорта;
НоваяСтрока.ДатаВыдачиПаспорта = ДатаВыдачи;
НоваяСтрока.КемВыданПаспорт = КемВыдан;
НоваяСтрока.КодПодразделения = КодПодразделения;
// Вот здесь не могу понять, как записать данные со старого паспорта: Серию, номер, код и т.д. и потом удалить строку со старыми данными паспорта
НоваяСтрока.СведенияОРанееВыданныхПаспортах = "Серия " + "№ " + "Код " + "Выдан "  ;
ИзмененияВСправочник.Записать();
КонецПроцедуры


&НаКлиенте
Процедура ВнестиИзменения(Команда)
ИзменитьДанныеСправочникаНаСервере();
Закрыть();
КонецПроцедуры

Luzer1C

&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмененияВСправочник = ФамилияИмяОтчество.ПолучитьОбъект(); // получаем ссылку на обьект
НоваяСтрока = ИзмененияВСправочник.ПаспортныеДанные.Добавить(); // Добавляем в ТЧ "ПаспортныеДанные" новую строку
НоваяСтрока.СерияПаспорта = СерияПаспорта;
НоваяСтрока.НомерПаспорта = НомерПаспорта;
НоваяСтрока.ДатаВыдачиПаспорта = ДатаВыдачи;
НоваяСтрока.КемВыданПаспорт = КемВыдан;
НоваяСтрока.КодПодразделения = КодПодразделения;
// Вот здесь не могу понять, как записать данные со старого паспорта: Серию, номер, код и т.д. и потом удалить строку со старыми данными паспорта
СтараяСтрока = ИзмененияВСправочник.ПаспортныеДанные[0];
НоваяСтрока.СведенияОРанееВыданныхПаспортах = "Серия " + СтараяСтрока.СерияПаспорта + "№ " + СтараяСтрока.НомерПаспорта + "Код " + СтараяСтрока.КодПодразделения + "Выдан " + Формат(СтараяСтрока.ДатаВыдачи, "ДФ=dd.MM.yyyy");
ИзмененияВСправочник.ПаспортныеДанные.Удалить(0);
ИзмененияВСправочник.Записать();
КонецПроцедуры
Халамбалам.

Алексей_1985_06

Добрый день! Подскажите что нужно поменять в коде, что б обработка работала при условии что записи в ТЧ ПаспортныеДанные еще нет, при таком варианте кода (если нет еще записей в ТЧ) из обработки не происходит запись данных в ТЧ.


&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()
ИзмененияВСправочник = ФамилияИмяОтчество.ПолучитьОбъект(); // получаем ссылку на обьект
НоваяСтрока = ИзмененияВСправочник.ПаспортныеДанные.Добавить(); // Добавляем в ТЧ "ПаспортныеДанные" новую строку
НоваяСтрока.СерияПаспорта = СерияПаспорта;
НоваяСтрока.НомерПаспорта = НомерПаспорта;
НоваяСтрока.ДатаВыдачиПаспорта = ДатаВыдачи;
НоваяСтрока.КемВыданПаспорт = КемВыдан;
НоваяСтрока.КодПодразделения = КодПодразделения;

СтараяСтрока = ИзмененияВСправочник.ПаспортныеДанные[0];
НоваяСтрока.СведенияОРанееВыданныхПаспортах = "Серия " + СтараяСтрока.СерияПаспорта + "№ " + СтараяСтрока.НомерПаспорта + "Код " + СтараяСтрока.КодПодразделения + "Выдан " + Формат(СтараяСтрока.ДатаВыдачи, "ДФ=dd.MM.yyyy");
ИзмененияВСправочник.ПаспортныеДанные.Удалить(0);
ИзмененияВСправочник.Записать();
КонецПроцедуры

LexaK

попробуйте такой вариант

&НаСервере
Процедура ИзменитьДанныеСправочникаНаСервере()

ИзмененияВСправочник = ФамилияИмяОтчество.ПолучитьОбъект(); // получаем ссылку на обьект
Если ИзмененияВСправочник.ПаспортныеДанные.Количество() > 0 Тогда
//есть данные старого паспорта
лкДанныеПаспорта = ИзмененияВСправочник.ПаспортныеДанные[0];
лкСтарыйПаспорт = "" + лкДанныеПаспорта.СерияПаспорта + лкДанныеПаспорта.НомерПаспорта;
лкПредставление = "Серия " + лкДанныеПаспорта.СерияПаспорта
+ "№ " + лкДанныеПаспорта.НомерПаспорта
+ "Код " + лкДанныеПаспорта.КодПодразделения
+ "Выдан " + Формат(лкДанныеПаспорта.ДатаВыдачи, "ДФ=dd.MM.yyyy");
Иначе
//еще не было паспорта
лкДанныеПаспорта = ИзмененияВСправочник.ПаспортныеДанные.Добавить();
лкСтарыйПаспорт = Неопределено;
лкПредставление = "";
КонецЕсли;

Если лкСтарыйПаспорт = "" + СерияПаспорта + НомерПаспорта Тогда
//доп проверка, почему-то завели тот-же паспорт, выводим сообщение
Сообщить("Внимание! Такой документ уже был заведен.");
Иначе
//сохраняем новые данные
лкДанныеПаспорта.СерияПаспорта = СерияПаспорта;
лкДанныеПаспорта.НомерПаспорта = НомерПаспорта;
лкДанныеПаспорта.ДатаВыдачиПаспорта = ДатаВыдачи;
лкДанныеПаспорта.КемВыданПаспорт = КемВыдан;
лкДанныеПаспорта.КодПодразделения = КодПодразделения;
лкДанныеПаспорта.СведенияОРанееВыданныхПаспортах = лкПредставление;
ИзмененияВСправочник.Записать();
КонецЕсли;

КонецПроцедуры

если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск