Контроль уникальности в форме списка 1С

Max

Компьютерщик
Почётный участник
Регистрация
12 Фев 2008
Сообщения
11,793
Реакции
172
Баллы
63
Вопрос по 1С.
Если документ "Спецтехника в ремонте" и статусы (перечисления):
- Новая;
- В ремонте;
- Завершено;
- Отказано.
Необходимо, чтобы если документ с определенной спецтехникой, уникальным реквизитом которой является гос.номер, имеет статусы "Новая" и "В работе", то срабатывал запрет на создание нового документа?
То есть, надо каким-то образом обеспечить контроль уникальности списка документов из формы списка? Можно конечно создать запрос и в качестве источника данных выбрать список документов, но такой запрос неэффективен, поскольку документов может быть несколько сотен, а то и тысячи.
 
Я бы предложил использовать механизм обработки событий на уровне формы. Можно добавить проверку в событие "Перед записю" документа.

Здесь можно сделать запрос на выборку всех документов с таким же гос. номером и статусами "Новая" или "В ремонте". Если запрос вернул хотя бы одну запись, то можно выдать предупреждение и запретить сохранение нового документа.

Это будет более эффективный способ, чем загружать все документы сразу. С учетом того, что работаешь с уникальным гос. номером, запрос будет достаточно быстрым.

Какой именно метод проверки ты уже рассматриваешь?
 
Я бы предложил использовать механизм обработки событий на уровне формы. Можно добавить проверку в событие "Перед записю" документа.

Здесь можно сделать запрос на выборку всех документов с таким же гос. номером и статусами "Новая" или "В ремонте". Если запрос вернул хотя бы одну запись, то можно выдать предупреждение и запретить сохранение нового документа.

Это будет более эффективный способ, чем загружать все документы сразу. С учетом того, что работаешь с уникальным гос. номером, запрос будет достаточно быстрым.

Какой именно метод проверки ты уже рассматриваешь?
Я знаю про это событие формы, можно также обеспечить контроль из модуля объекта документа, но суть не в этом. Вопрос что использовать в качестве источника данных для запроса?
 
Я знаю про это событие формы, можно также обеспечить контроль из модуля формы документа, но суть не в этом. Вопрос что использовать в качестве источника данных для запроса?
В качестве источника данных для запроса можно использовать таблицу, где хранятся документы с их статусами. Обычно это будет основная таблица, где есть все необходимые поля, включая гос. номер и статус.

Если у вас есть отдельная таблица для статусов, можно объединить их через JOIN. Главное, чтобы в запросе были поля для фильтрации по гос. номеру и статусу.

Какую структуру имеет ваша база данных?
 
В качестве источника данных для запроса можно использовать таблицу, где хранятся документы с их статусами. Обычно это будет основная таблица, где есть все необходимые поля, включая гос. номер и статус.

Если у вас есть отдельная таблица для статусов, можно объединить их через JOIN. Главное, чтобы в запросе были поля для фильтрации по гос. номеру и статусу.

Какую структуру имеет ваша база данных?
Я знаю заведомо верное решение, но таблицы тут нет никакой, статус это перечисления.
 
Я знаю заведомо верное решение, но таблицы тут нет никакой, статус это перечисления.
Если статус — это перечисление, то можно использовать условные конструкции для фильтрации по этому полю. Например, в SQL можно использовать `CASE` или `WHERE` с перечислением значений.

Если это другой язык программирования, то стоит использовать соответствующие конструкции для работы с перечислениями.

Какой язык или фреймворк вы используете для реализации?
 
Причем тут SQL, речь то про 1С. Полагаю, что нужно строить запрос на основании регистра сведений, с периодом по регистратору, актуальные данные брать из виртуальной таблицы регистра среза последних.
 
Я тоже бывало с Алисой на кухне разговаривал :unsure: 🙃 , пока она однажды первой не начала разговор , я аж кофай подавился
 
Причем тут SQL, речь то про 1С. Полагаю, что нужно строить запрос на основании регистра сведений, с периодом по регистратору, актуальные данные брать из виртуальной таблицы регистра среза последних.
У ИИ в данной реализации проблема, он забывает, сообщение Выше.
 
Назад
Сверху