|
Проверка уникальности Номера счета фактур при записи в документе | ☑ | ||
---|---|---|---|---|
0
natsad
26.08.17
✎
13:50
|
Подскажите пжл,
Как сделать проверку на уникальность номера счета фактуры в документе? Чтобы если номер существует, то сообщить и Запись=Отказ. |
|||
1
ribuh
26.08.17
✎
14:09
|
Какой интересный вопрос... Нехорошо, конечно, отвечать вопросом, но всё же. О чём собственно сабж? Речь о выданных или полученных, и когда возникает гнусное подозрение, что номер не уникальный?
|
|||
2
natsad
26.08.17
✎
14:15
|
Документ Реализация, Хочу проверить колонку НомерСчетФактуры на совпадение когда человек вводит новое, или же когда изменяет существующий НомерСчетФактуры. Если есть, то отказать запись и выдать сообщение.
|
|||
3
ribuh
26.08.17
✎
14:24
|
(2) Как - то странно это, счет-фактура - это документ, у которого должен быть нумератор с уникальностью, или у Вас это просто строка или число? Если да, то сделайте запрос к реализациям, отловите максимальный номер счет-фактуры и сформируйте новый, чтобы не вводить. Проверить на уникальность в принципе также - формируете запрос к реализациям, с параметром введённый номер - если находим - сообщаем и отказываем в записи.
|
|||
4
Lama12
26.08.17
✎
14:29
|
(0) А какова причина возникновения с/ф с не уникальными номерами? Зачем вообще править номер выданной с/ф?
|
|||
5
natsad
26.08.17
✎
14:31
|
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
номсф = МетаДанные.Документы.Реализация.Формы.ФормаДокумента.Элементы.Поле2.ТекстРедактирования; Если ЗначениеЗаполнено(номсф) И Не АртикулУникален(номсф) Тогда Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Элемент с таким артикулом уже есть в справочнике."; Сообщение.Поле = "Объект.Артикул"; Сообщение.Сообщить(); Отказ = Истина; Возврат; КонецЕсли; КонецПроцедуры Функция АртикулУникален(парам1) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК Поле ИЗ Документы.Реализация ГДЕ Ссылка <> &Ссылка И НомерСчетФактуры = &НомерСчетФактуры"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("НомерСчетФактуры", парам1); Возврат Запрос.Выполнить().Пустой(); КонецФункции В модуле объекте пишу. |
|||
6
natsad
26.08.17
✎
14:32
|
Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине: {Документ.Реализация.МодульОбъекта(74)}: Поле объекта не обнаружено (Элементы) номсф = МетаДанные.Документы.Реализация.Формы.ФормаДокумента.Элементы.Поле2.ТекстРедактирования; |
|||
7
ribuh
26.08.17
✎
14:51
|
номсф = МетаДанные.Документы.Реализация.Формы.ФормаДокумента.Элементы.Поле2.ТекстРедактирования; - это звучит как полёт шмеля над гранатом, за секунду до пробуждения у Сальвадора Дали, но там хоть красиво))) Что мешает обратиться к реквизиту документа через Объект.НомСФ, если таковой реквизит у документам есть?
|
|||
8
natsad
26.08.17
✎
15:01
|
Я же должен сравнить введенное значение в ПолеВвода со значением реквизита Объект.НомерСчетФактуры. Как получить значение которое находится в ПолеВвода?
|
|||
9
h-sp
26.08.17
✎
15:17
|
(8) это оно и есть. Объект.НомерСчетФактуры - это то что в поле ввода.
|
|||
10
h-sp
26.08.17
✎
15:18
|
(8) а если в модуле объекта, то просто
НомерСчетФактуры. |
|||
11
natsad
26.08.17
✎
15:30
|
А как мне теперь сравнивать значения уникальны они или нет? Подскажите пжл...
|
|||
12
ribuh
26.08.17
✎
15:35
|
(11) В Вашем запросе в функции АртикулУникален уберите параметр Ссылка, не нужен он там, но, я бы ввел отбор по периоду, т.к. номера документов, счетов-фактур в частности, чаще всего имеют периодичность год (т.е. номер 1 будет в 2014 оду, и в 2015, и в 2016, итд), поэтому надо искать документы в пределах этой периодичности
|
|||
13
h-sp
26.08.17
✎
15:37
|
(11) напишите номсф = НомерСчетФактуры;
|
|||
14
natsad
26.08.17
✎
16:21
|
Спасибо всем большое! Особенно h-sp , помогло :-)
|
|||
15
breezee
26.08.17
✎
23:10
|
А зачем?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |