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