![]() |
|
|||||||
| Регистрация | Обмен опытом | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день.
У меня в базе создан новый журнал с_производители. В этом журнале есть поле <ид> с первичным ключом и поле <идлинк> с уникальным ключом. Задача стоит в присвоении полю идлинк значения поля ид сразу же после создания новой записи журнала. Я смог решить проблему написав код в обработчике <После записи> журнала: ///////////////////+++++++++++++++++++++ после добавления производителя /////////////////+++++++++++++++++++++++ в поле идлинк записываем ид линк = СВОЕ.ид ЕСЛИ с_производитель.НАЙТИ(ид = линк) ТО с_производитель.идлинк = линк КОНЕЦ_ЕСЛИ с_производитель.ЗАПИСАТЬ!! ////////////////************************************************* Вопрос: может есть более элегантный способ решить данную задачу ? |
|
#2
|
|||
|
|||
|
а нужен ли первичный ключ? может можно обойтись без него?
|
|
#3
|
|||
|
|||
|
Да как-то привык во всех журналах делать первичные ключи.
|
|
#4
|
|||
|
|||
|
Так первичным ключом можно сделать комбинацию полей, как в журнале с_клиенты_в_группе.
|
|
#5
|
||||
|
||||
|
Я так делал, через функции журнала. И созданием библиотеки с кодом типа
ФУНКЦИЯ ЖУРНАЛ(АйТиЧат) ПрисвоитьНовыйКод ВЫБРАТЬ ЗНАЧЦ(АйТиЧат.номерок) макс ((АйТиЧат.номерок <> "") И (ВСЕГО_СЛОВ(АйТиЧат.номерок,"0123456789") = 0), ДА {!!!}) СОРТИРОВАТЬ(макс:НЕТ) номерок = СТР0(НЕ_ПУСТО(макс, 0) + 1, /*ДЛИНА_КОДА_СОТРУДНИКА*/7) ОТЛАДКА(СТР(номерок)) КОНЕЦ_ФУНКЦИИ ФУНКЦИЯ ЖУРНАЛ(АйТиЧат) ЛОГИКА: ПередДиалогом(ЛОГИКА: новая_запись) // Инициализируем данные перед вызовом диалога редактирования в журнале "АйТиЧат" ЕСЛИ новая_запись ТО ПрисвоитьНовыйКод() КОНЕЦ_ЕСЛИ // Разрешаем или запрещаем вызывать диалог редактирования РЕЗУЛЬТАТ = ДА КОНЕЦ_ФУНКЦИИ Но как сказал Петр - если есть возможность то луче по его совету. |
|
#6
|
|||
|
|||
|
Мой новый журнал является справочником производителей, значения поля <идлинк> заносится в журнал с_товары, для отображения имени производителя. И этот журнал должен участвовать в обмене данных РБД. Должна быть возможность при обмене данными РБД менять значение поля <идлинк>. Поэтому это поле должно иметь уникальный индекс, но не первичный.
|
|
#7
|
||||
|
||||
|
Цитата:
У журнала с_производитель есть уникальное поле <ид>, первичный ключ. У журнала с_товары есть поле <идлинк>, в котором прописана связка с_производитель.<ид> (именно в журнале с_товары). Ну и в этом же журнале с_товары есть лукап-поле <назв_производитель>, в котором отображается значение поля из журнала с_производитель.<название> по связке со значением в поле <идлинк> этого же журнала с_товары. И не надо в журнале с_производитель добавлять ещё одно поле <идлинк>, равное полю <ид>. Посмотрите стандартный журнал с_товары. Там же есть полный пример, как это устроено для стандартного поля алкопроизводитель. Сделайте по аналогии, просто вместо с_клиенты у вас будет с_производитель. А ещё лучше, если у вас не алкоторговля, и вы хотите использовать РБД, то оставьте эти упомянутые мною выше стандартные поля по алкопроизводителю. Вы, во-первых, можете с помощью модифицированных функций журнала с_товары открыть доступ к этим полям без включения алконастройки: ПОСЛЕ, ВМЕСТО - "ВидЖурналаТов", "Доступ", плюс использовать в коде метод НАЗВАНИЕ для переименования полей. Во-вторых, скорее всего, вам не надо будет менять что-либо в функциях РБД (а иначе как вы передадите значения своих добавленных полей?). Будет стандартная передача данных. Но и в магазине и в центре должны быть одинаково модифицированные базы. Вот простейшее решение для функций журнала с_товары: Код:
ФУНКЦИЯ ПОСЛЕ ЖУРНАЛ(с_товары) ВидЖурналаТов(СТРОКА: Форма; ЛОГИКА: Диалог) ВИДИМОСТЬ(производитель_код, ДА) НАЗВАНИЕ(производитель_код, "Производитель код") НАЗВАНИЕ(производитель_название, "Производитель") КОНЕЦ_ФУНКЦИИ Код:
ФУНКЦИЯ ПОСЛЕ ЖУРНАЛ(с_товары) Доступ ВИДИМОСТЬ(производитель_код, ДА) НАЗВАНИЕ(производитель_код, "Производитель код") НАЗВАНИЕ(производитель_название, "Производитель") КОНЕЦ_ФУНКЦИИ |
|
#8
|
|||
|
|||
|
Цитата:
Использовать Алко производитель я не догадался. А создал новый журнал с_производитель. Так как в нашей базе Алко Производитель использует для связи с_клиенты.код. Так как на первых порах нам не требовалась РБД - то в с_производитель создал первичное поле ид, его использовал для связи с с_товары. А когда начали пробовать РБД, то из-за того, что при переносе в базу магазина в журнале с_производитель могли создаться записи не с тем значением поля ид, что в базе центрального склада - пошли ошибки. После создания в с_производитель поля идлинк и установления связи через него с журналом с_товары - все заработало. Однако если бы я использовал Алко производитель - то в журнале с_клиенты смешались бы наши поставщики, покупатели и производители товаров, которыми мы торгуем. |
![]() |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| После Добавления изменить поле Добавленной записи | Писарев Петр | Общий | 4 | 23.10.2014 14:00 |