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

Помогите с дублированием записей в ТЧ

Автор Алексей_1985_06, 22 дек 2019, 18:52

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

Алексей_1985_06

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

Конфигурация самописная, УФ 8.3

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


Jenek0110

Цитата: Алексей_1985_06 от 22 дек 2019, 18:52
Ребят подскажите, что нужно дописать чтоб в коде, чтобы избежать дублирование записей в ТЧ. Имеется документ "ПрисвоениеЗваний", при проведении которого в ТЧ "ВоинскиеЗвания" справочника "ЛичныйСостав" добавляется новая строка с соответствующими значениями в полях, нужно сделать так, чтоб при проведении документа с такими же набором данных, запись в справочник не осуществлялась и выходило сообщение (например: Запись с таким набором реквизитов уже существует)... Помогите, я в тупике !:kmtu::kmtu::kmtu:

Конфигурация самописная, УФ 8.3

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

Может вам лучше использовать для хранения званий периодический регистр сведений в котором регистратором будет ваш документ, просто будет у вас информация обновляться, сможете историю по изменению званий смотреть? А так просто берите перед записью и запросом смотрите есть ли элемент с нужными реквизитами или нет, если нет то создаете. У табличной части, если что, есть метод НайтиСтроки(Отбор)

Алексей_1985_06

Цитата: Jenek0110 от 22 дек 2019, 23:22
Цитата: Алексей_1985_06 от 22 дек 2019, 18:52
Ребят подскажите, что нужно дописать чтоб в коде, чтобы избежать дублирование записей в ТЧ. Имеется документ "ПрисвоениеЗваний", при проведении которого в ТЧ "ВоинскиеЗвания" справочника "ЛичныйСостав" добавляется новая строка с соответствующими значениями в полях, нужно сделать так, чтоб при проведении документа с такими же набором данных, запись в справочник не осуществлялась и выходило сообщение (например: Запись с таким набором реквизитов уже существует)... Помогите, я в тупике !:kmtu::kmtu::kmtu:

Конфигурация самописная, УФ 8.3

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

Может вам лучше использовать для хранения званий периодический регистр сведений в котором регистратором будет ваш документ, просто будет у вас информация обновляться, сможете историю по изменению званий смотреть? А так просто берите перед записью и запросом смотрите есть ли элемент с нужными реквизитами или нет, если нет то создаете. У табличной части, если что, есть метод НайтиСтроки(Отбор)
Спасибо! Попробую!

tarkhanov-t@mail.ru

Цитата: Jenek0110 от 22 дек 2019, 23:22
Цитата: Алексей_1985_06 от 22 дек 2019, 18:52
Ребят подскажите, что нужно дописать чтоб в коде, чтобы избежать дублирование записей в ТЧ. Имеется документ "ПрисвоениеЗваний", при проведении которого в ТЧ "ВоинскиеЗвания" справочника "ЛичныйСостав" добавляется новая строка с соответствующими значениями в полях, нужно сделать так, чтоб при проведении документа с такими же набором данных, запись в справочник не осуществлялась и выходило сообщение (например: Запись с таким набором реквизитов уже существует)... Помогите, я в тупике !:kmtu::kmtu::kmtu:

Конфигурация самописная, УФ 8.3

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

Может вам лучше использовать для хранения званий периодический регистр сведений в котором регистратором будет ваш документ, просто будет у вас информация обновляться, сможете историю по изменению званий смотреть? А так просто берите перед записью и запросом смотрите есть ли элемент с нужными реквизитами или нет, если нет то создаете. У табличной части, если что, есть метод НайтиСтроки(Отбор)




Однозначно лучший вариант

Алексей_1985_06

Цитата: Алексей_1985_06 от 23 дек 2019, 19:37
Цитата: Jenek0110 от 22 дек 2019, 23:22
Цитата: Алексей_1985_06 от 22 дек 2019, 18:52
Ребят подскажите, что нужно дописать чтоб в коде, чтобы избежать дублирование записей в ТЧ. Имеется документ "ПрисвоениеЗваний", при проведении которого в ТЧ "ВоинскиеЗвания" справочника "ЛичныйСостав" добавляется новая строка с соответствующими значениями в полях, нужно сделать так, чтоб при проведении документа с такими же набором данных, запись в справочник не осуществлялась и выходило сообщение (например: Запись с таким набором реквизитов уже существует)... Помогите, я в тупике !:kmtu::kmtu::kmtu:

Конфигурация самописная, УФ 8.3
:trhregerhg::trhregerhg::trhregerhg:
Извините за навязчивость, можете подсказать что не так делаю, весь день мучаюсь (только осваиваю 1С), для понимания в приложении скрины с формы. Необходимо провести документ "Присвоение званий", если такое звание ранее было присвоено, то должно быть соответствующие сообщение...
Ошибок в коде нет, но ничего не работает, звание присваивается не смотря на то, что было присвоено ранее....

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

Может вам лучше использовать для хранения званий периодический регистр сведений в котором регистратором будет ваш документ, просто будет у вас информация обновляться, сможете историю по изменению званий смотреть? А так просто берите перед записью и запросом смотрите есть ли элемент с нужными реквизитами или нет, если нет то создаете. У табличной части, если что, есть метод НайтиСтроки(Отбор)
Спасибо! Попробую!

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

// Проверяем в ТЧ справочника звание которое хотим присвоить
ТЧ = ИзмСправочник.ВоинскиеЗвания.Найти(Объект.ВоинскоеЗвание, "ВоинскоеЗвание");

// Если такое звание в ТЧ есть, тогда выводим сообщение
Если ТЧ = Объект.ВоинскоеЗвание Тогда
Сообщить("Такое звание уже было присвоено ранее") Иначе

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


&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ИзменитьДанныеСправочникаНаСервере();
КонецПроцедуры


Теги:

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

Рейтинг@Mail.ru

Поиск