Страница 1 из 1

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

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

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


:?: Как найти строчку с нужным товаром по наименованию?

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

СообщениеДобавлено: Ср ноя 17, 2010 9:32 pm
anton
Код: Выделить всё
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);


А вообще читайте документацию.

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]
...



не понимаю почему не работает: Последняя цена в Каталоге товаров не меняется. Помогите с проблемой пожалуйста.

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

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