Изменить поле в Справочнике

Начинаете изучать Ананас? Задавайте вопросы здесь. С чего начать? Где найти? Как сделать? А можно...?

Изменить поле в Справочнике

Сообщение Алксандр » Пн ноя 15, 2010 9:33 pm

Есть справочник Товаров в Оперативном учете. В этом справочнике товаров есть таблица с полями. Я добавил ещё поле Цена, чтобы там хранить последнюю цену по приходной накладной на какой-либо товар.
Нашел процедуру, вызываемую при проведении Приходной накладной. Знаю как получить эту цену за товар, но не могу понять как внести изменения в Справочник Товаров. Подскажите пожалуйста. Лучше не ссылкой, а куском кода.

Представляю себе примерно так:
1) вызываем var cat = new Catalogue ("Справочник Товары");
2) находим :?: строчку с нужным товаром TovName
3) и правим значение cat.SetValue("Цена", значение);
4) cat.Update();


:?: Как найти строчку с нужным товаром по наименованию?
Алксандр
 
Сообщения: 2
Зарегистрирован: Пн ноя 15, 2010 9:21 pm

Re: Изменить поле в Справочнике

Сообщение anton » Ср ноя 17, 2010 9:32 pm

Код: Выделить всё
var cat = new Catalogue("Товары");
cat.SetFilter("Наименование", varname);
cat.Select();
if(cat.First())
{
cat.SetValue("Цена", price);
cat.Update();
}


но лучше
заменить
Код: Выделить всё
cat.SetFilter("Наименование", varname);
cat.Select();
if(cat.First())


на

Код: Выделить всё
cat.Select();
cat.FindById(varid);


А вообще читайте документацию.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск

Re: Изменить поле в Справочнике

Сообщение Алксандр » Чт ноя 18, 2010 8:51 pm

Спасибо. Но как мне получить ID искомой записи?

Этот кусок кода в приходной накладной на кнопке Ок:
Код: Выделить всё
for(i=0; i<countRow;i++) // цикл по всем строкам таблицы
   {
       [b]towar = TabDBValue("wDBTable1",i,ColIndex("wDBTable1","Наименование"));[/b]
       contragent = DBValue("Продавец");
       sklad = DBValue("Склад");
       kolvo = TabValue("wDBTable1",i,ColIndex("wDBTable1","Количество"));
       [b]cost = TabValue("wDBTable1",i,ColIndex("wDBTable1","Цена"));[/b]
       summa = TabValue("wDBTable1",i,ColIndex("wDBTable1","Сумма"));
       doc1.Seek(i,"Таблица");
       Conduct("Главная книга",doc1,"Таблица","41.2","60",[b]towar[/b],contragent, sklad, kolvo,summa,[b] cost[/b]);  // оприходование товаров
...


Привожу кусок кода, который тоже не заработал:
Код: Выделить всё
function Conduct(regname,doc, tablename, debet, credit, [b]towar[/b], kontragent, sklad, kolvo,sum, [b]cost[/b])
{
    var summa =parseFloat(sum);
    var arName=regname; // имя накопительного регистра в метаданных

 [b]   var cat = new Catalogue("Каталог товаров");
   cat.SetFilter("Наименование", towar);
   cat.Select();
   if(cat.First())
   {
   cat.SetValue("Последняя цена", cost);
   cat.Update();
   }[/b]
...



не понимаю почему не работает: Последняя цена в Каталоге товаров не меняется. Помогите с проблемой пожалуйста.
Алксандр
 
Сообщения: 2
Зарегистрирован: Пн ноя 15, 2010 9:21 pm

Re: Изменить поле в Справочнике

Сообщение anton » Пт ноя 19, 2010 9:14 pm

Хо-хо это баг Ононаза, TabDBValue должен венуть id, однако возвращает unefined.
У меня этот баг поправлен, поэтому я долго тупил, прежде чем понял в чем дело.
Поиск по форуму покажет как обходится это баг.
anton
 
Сообщения: 137
Зарегистрирован: Сб фев 28, 2009 9:00 pm
Откуда: Иркутск


Вернуться в Вопросы новичков

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron