Переменная=Еще не записанный элемент справочника как присвоить???
|
|
#1 Пн Авг 25, 2008 11:16:00
|
|
|
Привет всем! Как присвоить переменной еще не записанный элемент справочника?, то есть который находиться еще перед записью?.
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#3 Пн Авг 25, 2008 11:38:48
|
|
|
Хорошо. Задача проста. есть справочник, есть стандартное поле наименование, в качестве значения наименование выступает числа(номера), необходимо при записи нового элемента проверять имееться ли такой элемент в спрвочнике или нет, то есть проверка дублей в справочнике.
|
|
За помощь кликните ′Спасибо′ →
|
|
|
d.Fedor
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Darjal
Нерезидент Баланса
|
|
|
|
#5 Пн Авг 25, 2008 14:24:33
|
Сообщить модератору
|
|
Или запросом - в процедуре модуля "ПередЗаписью". Параметром выставляете свою строку и группировку КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВашСправочник.Ссылка). А если используете Справочник.НайтиПоНаименованию(Строка(Переменная)) то лучше тогда так: Справочник.НайтиПоНаименованию(Строка(Переменная), ИСТИНА)
<Точное соответствие> (необязательный)
Тип: Булево. Определяет режим поиска по полному соответствию.
Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании).
Значение по умолчанию: Ложь
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#6 Пн Авг 25, 2008 14:33:16
|
|
|
Все это понятно, я делал и через запрос и через конструкцию найтипонаименованию, но везде в переменную надо присваивать записываемое значение, как его прописать ????
Перем=Записываемое значение. или речь тут о другой переменной....
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#7 Пн Авг 25, 2008 14:42:51
|
|
|
daysemsk Переменная не записалась, а ее значение проверяется на присутствие. Это понимаемо? Еще не записали, то есть ПередЗаписью
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Darjal
Нерезидент Баланса
|
|
|
|
#8 Пн Авг 25, 2008 14:48:23
|
Сообщить модератору
|
|
Я кажется понял, с чем daysemsk "парится"...
В модуле справочника если оьтработка проверки идет, то объект.ссылка.наименование - там конечно пусто, а вот Объект.Наименование - там то, что пользователь в форму забил, т.е. искомое значение, которое и надо "выловить" среди записанных элементов уже.
Добавлено спустя 6 минут 29 секунд:
Перем=Объект.Наименование - это в модуле справочника (равно как и в модуле формы). ВОт эту Перем и надо отлавливать.
Добавлено спустя 43 минуты 13 секунд:
Глянул поточнее - ЭтотОбъект.Наименование :lol:
|
|
За помощь кликните ′Спасибо′ →
|
|
|
NoName
Нерезидент Баланса
|
|
|
|
#9 Пн Авг 25, 2008 17:04:52
|
Сообщить модератору
|
|
Делал подобную задачу: перед записью контрагента проверял наличие записей с подобными наименованиями.
Проверку делал в форме элемента в процедуре ПередЗаписью.
Новое наименование получал через ЭтаФорма.ЭлементыФормы.Наименование.Значение
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Круглая Земля
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Darjal
Нерезидент Баланса
|
|
|
|
#11 Пн Авг 25, 2008 18:44:33
|
Сообщить модератору
|
|
Круглая Земля говорит: |
Извините, торможу. А почему не просто Наименование? У формы объекта основной реквизит же типа Объект? В модуле объекта перед записью тем более. |
Знаете, человеку "срочно" надо было, поэтому ЭтотОбъект.Наименование сказал, знаю что это уже без вариаций на 100% сработает. "Наименование" по идее тоже должно получить наименование элемента, но это надо проверять, отладчик запускать и т.д. - времени особо тоже нет на это. А в форме элемента перед записью - этот код работать не будет в случае программного создания элемента (без получения и открытия формы).
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#12 Пт Авг 29, 2008 12:07:07
|
|
|
Спасибо всем !!! Вопрос дублейв справочнике отошелна второй план, но у меня возник другой вопрос, в запросе на отбор данных с непустыми реквезитами типа дата не выбираеться по заданному условию, почему ??? вот он код:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ДвиженияВагонов.Период,
КОЛИЧЕСТВО(ДвиженияВагонов.Вагоны) КАК Вагоны,
ДвиженияВагонов.ДатаВозврата,
ДвиженияВагонов.Регистратор
ИЗ
РегистрСведений.ДвиженияВагонов КАК ДвиженияВагонов
ГДЕ
ДвиженияВагонов.Период МЕЖДУ &Дата1 И &дата2
и (не ДвиженияВагонов.ДатаВозврата = "")
СГРУППИРОВАТЬ ПО
ДвиженияВагонов.Период,
ДвиженияВагонов.ДатаВозврата,
ДвиженияВагонов.Регистратор
Добавлено спустя 1 минуту 25 секунд:
Он мне начинаеть выбирать все движения и с пустыми и с не пустыми значениями Датавозврата ...
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Darjal
Нерезидент Баланса
|
|
|
|
#13 Пт Авг 29, 2008 15:21:50
|
Сообщить модератору
|
|
И правильно делает... У машины запросов свой язык, а вы ей не объяснили, что нужно в итоге получить, это не ДвиженияВагонов.ДатаВозврата = "" - ерунда. Может подождем , и этот вопрос тоже на второй план отойдет? :lol:
|
|
За помощь кликните ′Спасибо′ →
|
|
|
KrEAtive
Нерезидент Баланса
|
|
|
|
#14 Пт Авг 29, 2008 15:28:52
|
Сообщить модератору
|
|
daysemsk говорит: |
(не ДвиженияВагонов.ДатаВозврата = "") |
Попробуй так:
(не ДвиженияВагонов.ДатаВозврата = &ПустДата)
Запрос.УстановитьПараметр("ПустДата", Дата(1,1,1);
Не уверен, но я бы так для начала сделал
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#15 Пт Авг 29, 2008 15:30:36
|
|
|
Большое спасибо решение нашлось, вэтом месте надо ставить вот так
а программно не проставлять параметр. вот и все
И (НЕ ДвиженияВагонов.ДатаВозврата = &дата222)
Darjal говорит: |
, и этот вопрос тоже на второй план отойдет? |
нет этот вопрос не уйдет на второй план, первым я пока не занимаюсь так как , есть другие задачи...
|
|
За помощь кликните ′Спасибо′ →
|
|
|
KrEAtive
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#17 Пт Авг 29, 2008 16:01:04
|
|
|
Да вот именно , если вы заметили
у меня в начале запроса выбираеться период
ГДЕ
ДвиженияВагонов.Период МЕЖДУ &Дата1 И &дата2
, а параметр
И (НЕ ДвиженияВагонов.ДатаВозврата = &дата222)
просто напросто не заполнять, на форме я просто напросто сделал поле параметра невидимым, соответсвенно поле осталось и параметр запрос прочитает, но поле где заполнять дату(параметр) не видно пользователю, попробуйте сами, убедитесь
Добавлено спустя 10 минут 29 секунд:
daysemsk говорит: |
Как это?
Запрос.УстановитьПараметр("ПустДата", Сюда ничего не ставить?); |
Нет вэтом месте я как положено пишу параметр
Запрос.УстановитьПараметр("дата222", дата222);
, я имею ввиду не давать пользователю заполнять(выбирать дату) параметр!
а в условий стоит операнд НЕ РАВНО, то есть не равно ПУСТОМУ значению
|
|
За помощь кликните ′Спасибо′ →
|
|
|
KrEAtive
Нерезидент Баланса
|
|
|
|
#18 Пт Авг 29, 2008 16:13:58
|
Сообщить модератору
|
|
daysemsk говорит: |
просто напросто не заполнять, на форме я просто напросто сделал поле параметра невидимым |
Ясно. Это не поле параметра, а реквизит обработки (или документа, не знаю откуда Вы запускаете запрос).
Можно было обойтись без него.
Запрос.УстановитьПараметр("Дата222", Дата(1,1,1));
Вот выдржка из Габец, Гончаров:
Цитата: |
Значение типа Дата не бывает «пустым». Если в явном виде значение переменной типа Дата не задано, она будет иметь значение по умолчанию: начало первого дня первого месяца первого года (00 часов 00 минут 00 секунд). Поэтому проверку проще сделать так:
Листинг 1.2. Проверка даты на пустое значение
Если ДатаПроверяемая = Дата(1, 1, 1) Тогда
Сообщить("Пустая дата!");
КонецЕсли;
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#19 Пт Авг 29, 2008 16:18:42
|
|
|
да читал об этом, но у меня опыт разработки в восьмерке месяц с небольшим, и опыта маловато а задачу надо было решить быстро, поэтому стал изврщяться с запросом. программно я как не додумался, зато у нас сеть километровая, а запросом не будет грузить сетку и трафик.
|
|
За помощь кликните ′Спасибо′ →
|
|
|
Darjal
Нерезидент Баланса
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
#21 Пт Авг 29, 2008 16:27:45
|
|
|
Darjal говорит: |
я дату через кавычки одинарные обычно делаю. Привычка... |
, не знаю я беру дату в двойные кавычки.
Darjal говорит: |
поэтому стал изврщяться с запросом" - а НЕ ЗАПРОСОМ - это как? |
Я то как раз таки и заросом и извращялся...
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|
|
За помощь кликните ′Спасибо′ →
|
|
|
|