Пакетная замена цен в пересортице

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
solkalin
Постоянный гость
Сообщения: 60
Зарегистрирован: 23 ноя 2011, 11:59

Пакетная замена цен в пересортице

Сообщение solkalin »

Здравствуйте!
Подскажите пожалуйста почему возвращает ошибку "Операция запрещена. Таблица №1110"

Решила через печатную форму Акта на пересортицу "Реестр актов на пересортицу со спецификациями" менять цену ТМЦ к оприходованию пакетно.

Внутри родного кода прописала

Код: Выделить всё

.Begin
if ( bal_t2.GetFirst SpSopr2 = 0 )
 c2 := True;
else
 c2 := False;
End.
.{While (c2)
 Ш@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@ &&&&&&&&&&&&& &&&&&&&&&&.&& &'&&&&&&&&&&&.&& @@@ &&&&&&&&&&.&& &'&&&&&&&&&&&.&& Ш
.Begin
if ( bal_t2.GetNext SpSopr2 = 0 )
 c2 := True;
else
 c2 := False;

[b] if bal_t2.SpSopr.Price<>bal_t2.SpSopr2.Price then { bal_t2.SpSopr2.Price:=bal_t2.SpSopr.Price;  bal_t2.update Current SpSopr2; }[/b]
End.
.}  
Но программа выдает ошибку.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Пакетная замена цен в пересортице

Сообщение edward_K »

Для начала попробуйте IF c getnext переставить в конец программного блока. А так получается, что вы спозиционировались на следующую запись, первую вообще никогда не правит, а на последней получаете свою ошибку(вы уже ушли из доступных). logstrtofile вам поможет
solkalin
Постоянный гость
Сообщения: 60
Зарегистрирован: 23 ноя 2011, 11:59

Re: Пакетная замена цен в пересортице

Сообщение solkalin »

Попробовала разные способы.

Если менять значение в spsopr с nrec-ом для записи к оприходованию, то в таблице физической значение меняется, а в интерфейсе нет.

Если менять в spsopr2, то продолжает выдавать предыдущую ошибку. : (
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Пакетная замена цен в пересортице

Сообщение m0p3e »

Ваш код поправленный:

Код: Выделить всё

.Begin
 с2 := (bal_t2.GetFirst SpSopr2 = tsOk);
End.
.{While (c2)
 Ш@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ @@@@@ @@@@@@@@@@@@@@@ &&&&&&&&&&&&& &&&&&&&&&&.&& &'&&&&&&&&&&&.&& @@@ &&&&&&&&&&.&& &'&&&&&&&&&&&.&& Ш
.Begin
 if bal_t2.SpSopr.Price<>bal_t2.SpSopr2.Price then { bal_t2.SpSopr2.Price:=bal_t2.SpSopr.Price;  bal_t2.update Current SpSopr2; }
 c2 := (bal_t2.GetNext SpSopr2 = tsOk);
End.
.} 
1. Скорее всего изменять нужно не только SpSopr.Price. Например rPrice. А еще и валюта может быть...
2. Если после печати, не перерисовывается интерфейс, то и значения сами не изменятся.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Пакетная замена цен в пересортице

Сообщение Den »

Человек, походу, хочет просто формой запущенной менять данные текущего browse-формата...
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Пакетная замена цен в пересортице

Сообщение Алексей »

это можно перерисовки после закрытия формы не будет.
выйти из документа и зайти - появится. либо нажать "стрелки" обновить.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: Пакетная замена цен в пересортице

Сообщение m0p3e »

Алексей писал(а):это можно перерисовки после закрытия формы не будет.
выйти из документа и зайти - появится. либо нажать "стрелки" обновить.
Это понятно, но без этих действий и при отсутствии в конце процедуры печати редрава/рерида - не будет. :)
solkalin
Постоянный гость
Сообщения: 60
Зарегистрирован: 23 ноя 2011, 11:59

Re: Пакетная замена цен в пересортице

Сообщение solkalin »

Спасибо, m0p3e !

Код работает. Утром повел себя так же как у меня до этого. В журнализацию попадала запись о том, что произошли изменения полей в spsopr. А в интерфейсе изменения не происходили.

Зашла в таблицу SpSopr. Нажала кнопку на панели "обновить". И с тех пор все нормально (я уж думала каждый раз придется обновлять вручную, может наша тестовая база глючила просто).

Еще раз спасибо за помощь!
Ответить