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

Помогите "допилить" код в РС

Автор Алексей_1985_06, 30 мая 2021, 16:02

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

Алексей_1985_06

Всем привет!
Задача такова:
Есть РС "Контакты" в который записываются номера телефонов сотрудников, есть реквизит "КатегорияНомера" - Перечисление <Служебный> и <Домашний>, и реквизит "СтатусНомера" - Перечисление <Основной> и <Запасной>.
В данный РС в статусе <Основной> могут записываться только один домашний и один рабочий номер телефона
а вот в статусе <Запасной> необходимо записывать сколько угодно домашних и рабочих номеров.
Сейчас возможно записать только по одному номеру каждого статуса....

Уважаемые программисты помогите до ума довести код, чтобы обеспечить данный функционал:
Процедура ПередЗаписью(Отказ, Замещение)

Если ЭтотОбъект.Количество() > 0 Тогда
Сотрудник = ЭтотОбъект [0].Сотрудник; // получим сотрудника: например: Иванов И.И.
СтатусНомера = ЭтотОбъект [0].СтатусНомера; // получим статус номера: Основной, Запасной
КатегорияНомера = ЭтотОбъект [0].КатегорияНомера; // получим категорию номера: Служебный, Домашний

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контакты.Сотрудник КАК Сотрудник,
| Контакты.Телефон КАК Телефон,
| Контакты.СтатусНомера КАК СтатусНомера,
| Контакты.КатегорияНомера КАК КатегорияНомера
|ИЗ
| РегистрСведений.Контакты КАК Контакты
|ГДЕ
| Контакты.Сотрудник = &Сотрудник
| И Контакты.КатегорияНомера = &КатегорияНомера
| И Контакты.СтатусНомера = &СтатусНомера";

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

LexaK

1.вам надо переделать структуру регистра
похоже у вас Сотрудник, КатегорияНомера, СтатусНомера  - это измерения регистра
что вам и не дает записать несколько номеров с одинаковыми комбинациями категория - статус
либо номер телефона сотрудника либо номер позиции (п.п.) в измерение добавьте

2.так как у вас естественная группировка номеров по сотруднику, то сам ввод новых номеров и редактирование/изменение статусов старых
я бы сделал в справочнике Сотрудники в форме элемента, на отдельной закладке КИ-телефоны, при открытии которой считывал бы туда сразу все телефоны данного сотрудника (одна такая ТЗ/Коллекция формы),
где при изменении данных сразу можно проверить все строчки с телефонами передвинуть статусы изменить категории
например у телефона ставите признак Основной, соответственно старый Основной (если был у другого номера) сбрасывается,
так же выполняется куча других проверок, задвоение номера, заполненность номера, ...
после редактирования (все или только измененные) строчки записываются в РС уже без всяких проверок
ответ Понравился? (в смысле пригодился?)

Алексей_1985_06

Цитата: LexaK от 31 мая 2021, 09:50
1.вам надо переделать структуру регистра
похоже у вас Сотрудник, КатегорияНомера, СтатусНомера  - это измерения регистра
что вам и не дает записать несколько номеров с одинаковыми комбинациями категория - статус
либо номер телефона сотрудника либо номер позиции (п.п.) в измерение добавьте

2.так как у вас естественная группировка номеров по сотруднику, то сам ввод новых номеров и редактирование/изменение статусов старых
я бы сделал в справочнике Сотрудники в форме элемента, на отдельной закладке КИ-телефоны, при открытии которой считывал бы туда сразу все телефоны данного сотрудника (одна такая ТЗ/Коллекция формы),
где при изменении данных сразу можно проверить все строчки с телефонами передвинуть статусы изменить категории
например у телефона ставите признак Основной, соответственно старый Основной (если был у другого номера) сбрасывается,
так же выполняется куча других проверок, задвоение номера, заполненность номера, ...
после редактирования (все или только измененные) строчки записываются в РС уже без всяких проверок

Понял LexaK! Очередной раз огромное Вам спасибо!!!

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск