Задача такая:
Нужно создать в БЭСТе 4 дополнительный справочник автомобилей.
В таблице должны быть всего 3 колонки – код партнера (из справочника партнера), имя партнера и марка автомобиля. Далее при печати накладной делаем проверку кода аналитики и кода партнера в справочнике автомобилей, в итоге даем для выбора список авто.
Разработка очень схожая с темами уроков. Но вот нужно сделав один раз выбор партнера, сделать так чтобы в таблицу БД попадали код и имя партнера.
Дмитрий Хващевский пишет:
{" Наименование контрагента..:","NAME_P"}}
Лучше сделать вот так:
{" Код контрагента...........:","[имя поля]"},
{" Наименование контрагента..:","NAME_P"}}
а в справочнике
Код
{"SHORTNAME"},{"aIn[7]"}
заменить на
Код
{"code","SHORTNAME"},{"aIn[7]","aIn[8]"}
Ну и соответстветствующие исправления связанные с кодом 2 для справочника -
индекс в справочнике указать и строку проверки(поиска) "UPPER([выражение поиска])"
//Заголовки над полями
cColHead:={" Код НАИМЕНОВАНИЕ МАРКА АВТОМОБИЛЯ"}
//
cCurProc:={||"2"}
//Заголовки колонок реестра
aBlockCols:={{{||FIELD->code},0}, ;
{{||LEFT(FIELD->NAME,24)},7}, ;
{{||LEFT(FIELD->avto,20)},32}}
aHeads:={{"Введите код партнера.:","Code"}, ;
{"Наименование ........:","NAME"}, ;
{"Марка автомобиля.....:","avto"}}
aHeads:={{"Введите код партнера.:","Code"}, ;
{"Наименование ........:","NAME"}, ;
{"Марка автомобиля.....:","avto"}}
и сюда
Код
aRef:={,,,,,,"Partners"}
Вы наверно хотите справочник вызвать на первом элементе.
А прописали его для седьмого....
необходимо отслеживать соответствие этих двух массивов.
Первый элемент одного соответствует первому элементу второго
Спасибо.
Все получилось.
Уже наверное надоел, но можно еще ?
-Как сделать так, чтобы при нажатии F4 - поля были пустые, не запоминали значения полей на котором стоит курсор?
Может в предусловии ввода создать массив в котором присвоить ain[i] значения?
Это 9 параметр инитлиста.
P.S. Скачай инструментарий , там в pll функции разработчика, по ним можно набраться опыта, есть примеры.
В справочнике для БЭСТ-4 есть материалы со старого форума которых нет на этом сайте. Все твои ы уже обсуждались и решались уже давно.
В принципе нормально:
bPreGet:={||aIn[1]:=' ',aIn[2]:=' ',aIn[3]:=' '}
При вводе поля не заполнены, но если нужно подкорректировать,
то приходится набирать заново-поля тоже пустые.Немного не удобно.
Может возможно по другому???
Задачка усложнилась.
Итак нужно создать два справочника водителей и автомобилей.
Справочник водителей первичный. (три колонки - номер и наименование партнера и водитель этой организации)--ЭТО все работает нормально
Справочник автомобилей вторичный (пять колонок - номер и наименование партнера (вызываем справочник партнера), далее марка авто, номер путевого листа (по желанию) и основной водитель (вызываем первичный справочник водителей).
Проблема получилась с вторым справочником.
Вот код.
FUNCTION Main()
LOCAL aSet,aSetKey,nTop,nBot,cColHead,aBlockCols,cCurproc,aHeads,bDel,nUniMode,aRef,cFindMacro
//Заголовки над полями
cColHead:={"НАИМЕНОВАНИЕ МАРКА и ГОС. НОМЕР АВТОМОБИЛЯ ВОДИТЕЛЬ "}
//
cCurProc:={||"2"}
//Заголовки колонок реестра
aBlockCols:={{{||LEFT(FIELD->NAME,25)},-7}, ;
{{||LEFT(FIELD->marka_gos,26)},19}, ;
{{||LEFT(FIELD->voditel,25)},46}}
aHeads:={{"Введите код партнера...:","Code"}, ;
{"Наименование ..........:","NAME"}, ;
{"Марка и ГОС номер авто.:","marka_gos"}, ;
{"Номер путевого листа...:","plist"}, ;
{"ФИО водителя.......:","voditel"}}
Если структура таблицы соответствует именам из aHeads - скажите откуда справочник водиетелей должен найти поле SHORTNAME ?
Вероятно в этом причина - такая переменная(имя поля) в таблице не существует
Еще столкнулся с такой проблемой.
При поиске в справочнике водителей по первой букве
выдает сообщение ошибка выполнения.файл не индексирован.
Была такая ошибка и при выборе партнера, но как от нее избавился не помню.
Индексация не помогает.
С поиском не получилось (у меня на 47 параметре стоит 'NAME')
С поиском по коду немного получше (cKeyVal присвоил значение "UPPER(aIn[1])), теперь она мне выдает справочник не сначала всего, а сначала позиций с нужным кодом.
Только нужно, чтобы она давала только те позиции, у которых определенный код.
Еще заметил такую особенность. Ввел новую запись, затем двигаюсь курсором на одну строку вверх, так она мне стирает на экране половина кода предыдущей позиции, затем курсором спускаюсь на эту позицию и запись появляется.
Дмитрий Хващевский пишет:
С поиском не получилось (у меня на 47 параметре стоит 'NAME')
Индексный таг называется "NAME"
По поводу "UPPER(aIn[1]))" уже на этом форуме недавно проходили - попробуйте по совету Алексея Новикова через блок кода и сюда наверно надо старшую часть всего индексного ключа до фамилии водителя а не только код (выражение скопа в справочнике повторить)