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

Дублирование записей в справочник

Автор Алексей_1985_06, 10 ноя 2019, 14:44

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

Алексей_1985_06

Добрый день! Знатоки!
Имеется справочник "ЛичныйСостав" с ТЧ "ВоинскиеЗвания", и обработка которая вносит изменения в данную ТЧ. Подскажите пожалуйста, что нужно дописать в коде, чтоб при выполнении обработки, данные (если они уже записаны)невозможно было записать повторно, т.е продублировать...

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


alexandr_ll

Цитата: Алексей_1985_06 от 10 ноя 2019, 14:44
Добрый день! Знатоки!
Имеется справочник "ЛичныйСостав" с ТЧ "ВоинскиеЗвания", и обработка которая вносит изменения в данную ТЧ. Подскажите пожалуйста, что нужно дописать в коде, чтоб при выполнении обработки, данные (если они уже записаны)невозможно было записать повторно, т.е продублировать...

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

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

Алексей_1985_06

Цитата: alexandr_ll от 11 ноя 2019, 06:30
Цитата: Алексей_1985_06 от 10 ноя 2019, 14:44
Добрый день! Знатоки!
Имеется справочник "ЛичныйСостав" с ТЧ "ВоинскиеЗвания", и обработка которая вносит изменения в данную ТЧ. Подскажите пожалуйста, что нужно дописать в коде, чтоб при выполнении обработки, данные (если они уже записаны)невозможно было записать повторно, т.е продублировать...

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

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

Да, спасибо за разумный совет с документом, так и сделал.
Можно по поводу массива по подробнее описать метод решения моего вопроса? Нужно создать многомерный массив? Не совсем понимаю как проверить вхождение строки табличной части в созданный массив?
Буду очень признателен за помощь!

На правильно ли я пути?
Массив = Новый Массив();
Массив[0] = «лейтенант»;
Массив[1] = «старший лейтенант»;
Массив[2] = «капитан»;
Массив[3] = «майор»;
Массив[4] = «подполковник»;
Массив[5] = «полковник»;
Для Каждого ЭлМассив из Массив Цикл
    Если ЭлМассив = //??????;
КонецЦикла;

Не могу дальше реализовать... Запутался...Новичок в этом деле!

alexandr_ll

Цитата: Алексей_1985_06 от 11 ноя 2019, 19:53
Цитата: alexandr_ll от 11 ноя 2019, 06:30
Цитата: Алексей_1985_06 от 10 ноя 2019, 14:44
Добрый день! Знатоки!
Имеется справочник "ЛичныйСостав" с ТЧ "ВоинскиеЗвания", и обработка которая вносит изменения в данную ТЧ. Подскажите пожалуйста, что нужно дописать в коде, чтоб при выполнении обработки, данные (если они уже записаны)невозможно было записать повторно, т.е продублировать...

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

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

Да, спасибо за разумный совет с документом, так и сделал.
Можно по поводу массива по подробнее описать метод решения моего вопроса? Нужно создать многомерный массив? Не совсем понимаю как проверить вхождение строки табличной части в созданный массив?
Буду очень признателен за помощь!

На правильно ли я пути?
Массив = Новый Массив();
Массив[0] = «лейтенант»;
Массив[1] = «старший лейтенант»;
Массив[2] = «капитан»;
Массив[3] = «майор»;
Массив[4] = «подполковник»;
Массив[5] = «полковник»;
Для Каждого ЭлМассив из Массив Цикл
    Если ЭлМассив = //??????;
КонецЦикла;

Не могу дальше реализовать... Запутался...Новичок в этом деле!
Сделать запрос по табличной части  и проверить совпадение реквизитов.

Теги:

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

Рейтинг@Mail.ru

Поиск