Добро времени суток.
1-й вопрос такой: как удалять блоки в декларациях? Например, в ЭД-2 Карнет ТИР (транспортный) создаются блоки (граф товарная партия) где каждый блок начинается с № товара. Как в коде скрипта, к примеру, удалить все блоки после 1-го товара.
2-й вопрос правильно ли обращаться так к блоку 2-го товара (ЭД-2 Карнет ТИР(транспортный)), например, к сведению о грузовых местах полю Код:
__Goods_PlacesInfo_PackingCode:=....
-
-
Обсуждения на сайте Альта-Софт
-
Вопрос по коду
Модераторы: Renat, Gala, alta_olg, expert, Lemur
Re: Вопрос по коду
Конкретно в ЭД-2 Карнет ТИР (транспортный) удалить все товары кроме первого в первой товарной партии можно примерно так:
for j:=Doc.NumBlock('\\TIR_Shipment\1\Goods\') downto 2 do
Doc.DeleteBlock('\\TIR_Shipment\1\Goods\' + IntToStr(j));
По второму вопросу 1я товарная партия (TIR_Shipment), 2й товар(Goods), 1я запись о грузовых местах (PlacesInfo), записать поле Код (PackingCode):
Doc.SetFieldEx('\\TIR_Shipment\1\Goods\2\PlacesInfo\1\PackingCode', '1A');
Если нужно получить значение поля, то:
S := Doc.GetFieldEx('\\TIR_Shipment\1\Goods\2\PlacesInfo\1\PackingCode');
Можно посмотреть образцы скриптов в файле DATA\WGTDINFO.DAT
for j:=Doc.NumBlock('\\TIR_Shipment\1\Goods\') downto 2 do
Doc.DeleteBlock('\\TIR_Shipment\1\Goods\' + IntToStr(j));
По второму вопросу 1я товарная партия (TIR_Shipment), 2й товар(Goods), 1я запись о грузовых местах (PlacesInfo), записать поле Код (PackingCode):
Doc.SetFieldEx('\\TIR_Shipment\1\Goods\2\PlacesInfo\1\PackingCode', '1A');
Если нужно получить значение поля, то:
S := Doc.GetFieldEx('\\TIR_Shipment\1\Goods\2\PlacesInfo\1\PackingCode');
Можно посмотреть образцы скриптов в файле DATA\WGTDINFO.DAT
Следующие пользователи поблагодарили rvs за это собщение: nagoran
Re: Вопрос по коду
так этот код я и пытаюсь разобрать, но я не могу ухватиться за принцип обращения к полям, то он проходит через "__", то через DocX.Set/GetField()
за ответы спасибо, но он ругается на Doc.NumBlock
хотя покрутил код и в итоге ошибка исчезла, но ничего не удалилось
за ответы спасибо, но он ругается на Doc.NumBlock
хотя покрутил код и в итоге ошибка исчезла, но ничего не удалилось
Re: Вопрос по коду
Вы свой код здесь приведите полностью, а то так непонятно из-за чего у вас ошибка.
И какую ошибку выдает?
И какую ошибку выдает?
Re: Вопрос по коду
код стандартный из wgtdinfo [E3TIR<-GTD.Script], в конце перед end. я прописываю
весьма странно: после того как я первый раз прописал и сохранил, он ругался что не указан к какому доку обращаться Doc1 или Doc2. Я исправил это и все запустилось без ошибок (правда без удаления каких-либо строк), но теперь, после перезапуска альты уже пишет "Invalid variant type conversion."
а в альте действительно не предусмотрено хоть какого-нибудь модуля для дебага кода или он куда-то запрятан?
Код: Выделить всё
for j:=Doc1.NBlock('\\TIR_Shipment\1\Goods\') downto 2 do
Doc2.DeleteBlock('\\TIR_Shipment\1\Goods\' + IntToStr(j));
а в альте действительно не предусмотрено хоть какого-нибудь модуля для дебага кода или он куда-то запрятан?
Re: Вопрос по коду
Ошиблись в коде, не NBlock, а NumBlock, и документ должен быть один и тот же, а то смешали Doc1 и Doc2
Код: Выделить всё
for j:=Doc2.NumBlock('\\TIR_Shipment\1\Goods\') downto 2 do
Doc2.DeleteBlock('\\TIR_Shipment\1\Goods\' + IntToStr(j));
Re: Вопрос по коду
я думал что если обращаться к одному доку, то он либо не все удалится (ведь получается, что уменьшается число записей в процессе цикла), либо, еще что-то нехорошее.
спасибо Вам за помощь.
и, если можно, последний вопрос:
можно ли в альте перед созданием того же ТИРа, прописать всплытие диалогового окна с "галочкой". переменной типа boolean (если 1, то так заполнять, если 0, то другой код соответственно)
спасибо Вам за помощь.
и, если можно, последний вопрос:
можно ли в альте перед созданием того же ТИРа, прописать всплытие диалогового окна с "галочкой". переменной типа boolean (если 1, то так заполнять, если 0, то другой код соответственно)
Re: Вопрос по коду
Пропишите свой скрипт в файле Alta\wgtduser.dat (если файла нет, надо создать)
и он будет работать вместо стандартного
и он будет работать вместо стандартного
Re: Вопрос по коду
я имею ввиду, что при нажатии на создание ЭД-2 Карнет ТИР (транспортный) всплывало окно с выбором (к примеру: выбор стандартное или нестандартное заполнение), и как прописать всплытие этого диалогового окна в коде скрипта.
Re: Вопрос по коду
Можно прописать вопрос прямо в скрипте
Код: Выделить всё
if MessageDlg('Использовать свой скрипт?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
//свой код
else
//стандартный код
Следующие пользователи поблагодарили rvs за это собщение: nagoran