Показать сообщение отдельно
  #1  
Старый 30.03.2007, 18:23
apanko apanko вне форума
Администратор
 
Регистрация: 15.08.2006
Сообщения: 1,629
Про борьбу с единицей измерения.

Работаем со справочником Товары. Создаем новый элемент – присваиваем ему Номер, заполняем поле Описание. Создаем единицу измерения типа «шт», и выбираем ее в качестве базовой.
Заполняем остальные 50 реквизитов. Внезапно вспоминаем, что данный товар идет вовсе не в штуках, а в метрах. Возвращаемся к полю Базовая Единица Измерения, проваливаемся в подчиненный справочник и переименовываем единицу измерения «шт» в «м». Выбираем вновь созданную единицу измерения в качестве базовой и пытаемся покинуть карточку товара.
Появляется сообщение: «Другой пользователь изменил запись для Товар Но. ХХХХ после того, как вы получили ее из базы данных. Введите изменения в в обновленное окно или начните прерванное действие снова.».
После нажатия на кнопку ОК (а других вариантов нет), все 50 реквизитов окажутся пустыми, сохранится только Но. и Описание, т.е. те поля которые были заполнены перед первым выбором единицы измерения.
За это отвечает COMMIT, расположенный в соответствующем триггере.

А вот кто же изменяет запись, учитывая что база запущена на локальном компьютере? Скорее всего, это делает сам Navision, но явно не средствами C\AL.

Как изменить базовую единицу измерения не потеряв внесенные данные? Есть несколько способов:
1. Перед изменением покинуть карточку, либо выйти в список, либо перейти на другую запись, а затем вернуться.
2. После переименования не выбирать единицу измерения, а выйти из окна Товар Единицы измерения, нажав например кнопку Esc или Отмена. Проще всего это делать из формы списка: переименование осуществиться, а закрыть окно можно любым способом.
3. Войти в окно Товар Единицы измерения, создать правильную единицу измерения, выбрать ее, опять зайти в окно Товар Единицы измерения и удалить ошибочную единицу измерения.
Ответить с цитированием