• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Как присвоить другой код для всего товара в базе?

Автор depoll, Листопад 08, 2017, 09:40:10

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

depoll

Собственно есть вот такая задача. К примеру есть код 550015,  а есть потребность изменить его на ну скажем 00001wr и так для всего товара. Если своими словами то перекодировать все коды товара начиная с 00001wr. Это как то автоматически делается?

Спасибо

Creat


depoll

Цитата: Creat від Листопад 08, 2017, 10:22:50
Так робиться автоматично скриптом
Пошук по форуму
https://www.softbalance.com.ua/forum/index.php/topic,2683.msg16330.html

я искал по форуму, наверно как то не правильно формулировал поисковый запрос, спасибо за ссылку, буду пробовать

depoll

что то ругается программа на этот скрипт
6,75,2
пробная версия

maxmokry

Цитата: depoll від Листопад 08, 2017, 09:40:10
Собственно есть вот такая задача. К примеру есть код 550015,  а есть потребность изменить его на ну скажем 00001wr и так для всего товара. Если своими словами то перекодировать все коды товара начиная с 00001wr. Это как то автоматически делается?

Спасибо
Это поможет?
https://youtu.be/Uxn1k2BQsOw
[url="http://goo.gl/ciUwjI"]http://goo.gl/ciUwjI[/url] - Синхронизация УС с VirtueMart, [url="http://goo.gl/Uh3GBC"]http://goo.gl/Uh3GBC[/url] - Интернет-магазин на базе укрсклада без импорта/экспорта

Creat

Яка версія не принципово. Як ругається? Викладіть скрін скрипта і помилки

depoll

#6
Цитата: maxmokry від Листопад 08, 2017, 12:51:58
Цитата: depoll від Листопад 08, 2017, 09:40:10
Собственно есть вот такая задача. К примеру есть код 550015,  а есть потребность изменить его на ну скажем 00001wr и так для всего товара. Если своими словами то перекодировать все коды товара начиная с 00001wr. Это как то автоматически делается?

Спасибо
Это поможет?
https://youtu.be/Uxn1k2BQsOw

ну как вариант чтоб со скриптами не возиться,где эту софтину взять7

depoll

Цитата: Creat від Листопад 08, 2017, 14:44:49
Яка версія не принципово. Як ругається? Викладіть скрін скрипта і помилки
вы лучше расскажите какие мои действия после открытие sql менеджера, скрипт копировал с темы по ссылке, добиваюсь чтоб началась нумерация товара с 00000wr

admin

#8
Можете выгрузить номенклатуру в CSV (правой кнопкой Экспорт таблицы), после в Excel отредактировать нумерацию и вгрузить через меню Опции : Импорт товаров / контрагентов из файла.
А можете попробовать скрипт ниже. Думаю там все понятно и по комментариям. ОБЯЗАТЕЛЬНО сделать резерв перед выполнением в меню Оцпии : SQL менеджер:
EXECUTE BLOCK
RETURNS
(
  kod_new tsm_kod, -- новый код
  kod_old tsm_kod, -- старый код
  name_out ttovar_name -- название товара
)
AS
  DECLARE VARIABLE num INTEGER;
  DECLARE VARIABLE auto_start INTEGER;
  DECLARE VARIABLE auto_pref tl_kod;
  DECLARE VARIABLE auto_suf tl_kod;
  DECLARE VARIABLE auto_lzero INTEGER;
  DECLARE VARIABLE tmp_zero tl_kod;
  DECLARE VARIABLE tmp_num tl_kod;
  DECLARE VARIABLE is_preview INTEGER;
BEGIN
  -- шаблон лидирующих нулей, если надо другой лидирующий символ, укажите
  tmp_zero = '00000000000000';
  -- начальный номер
  auto_start = 1;
  -- префикс
  auto_pref = '';
  -- суффикс
  auto_suf = 'wr';
  -- кол-во лидирующих нулей от 0 до 15
  auto_lzero = 5;
  -- предпросмотр, если 0 - скрипт просто покажет результат без замены, если 1 - то будет заменять в базе
  is_preview = 0;
  FOR
    SELECT
      tn.num,
      tn.kod,
      tn.name
    FROM
      tovar_name tn
    WHERE
      tn.visible = 1
    ORDER BY
      tn.tip,
      tn.name
    INTO
      :num,
      :kod_old,
      :name_out
  DO
  BEGIN
    tmp_num = CAST(auto_start AS VARCHAR(15));
    WHILE((CHAR_LENGTH(tmp_zero || tmp_num) > auto_lzero) AND (CHAR_LENGTH(tmp_zero) > 0)) DO
    BEGIN
      tmp_zero = SUBSTRING(tmp_zero FROM 1 FOR (CHAR_LENGTH(tmp_zero)-1));
    END
    kod_new = auto_pref || tmp_zero || tmp_num || auto_suf;
    auto_start = auto_start + 1;
    SUSPEND;
    IF(is_preview = 1) THEN
    BEGIN
      UPDATE
        tovar_name tn
      SET
        tn.kod = :kod_new
      WHERE
        tn.num = :num;
    END
  END
END


Не надо вслепую запускать скрипт, он для примера, очень важно проверить и подправить параметры скрипта, перед запуском, чтобы он сделал именно так как вы хотели:
  -- шаблон лидирующих нулей, если надо другой лидирующий символ, укажите
  tmp_zero = '00000000000000';
  -- начальный номер
  auto_start = 1;
  -- префикс
  auto_pref = '';
  -- суффикс
  auto_suf = 'wr';
  -- кол-во лидирующих нулей от 0 до 15
  auto_lzero = 5;
  -- предпросмотр, если 0 - скрипт просто покажет результат без замены, если 1 - то будет заменять в базе
  is_preview = 0;


depoll

ух ты, скрипт выполнился, а где эти значения (новый код) будет виден? в sql менеджере видно, а где еще?

вы простите меня за глупые вопросы, но спросить больше кроме вас не у кого

все испытания проводятся на локальной машине, на которой установлен укрсклад для испытаний и тестов

Creat


maxmokry

Цитата: depoll від Листопад 08, 2017, 17:39:20
Цитата: maxmokry від Листопад 08, 2017, 12:51:58
Цитата: depoll від Листопад 08, 2017, 09:40:10
Собственно есть вот такая задача. К примеру есть код 550015,  а есть потребность изменить его на ну скажем 00001wr и так для всего товара. Если своими словами то перекодировать все коды товара начиная с 00001wr. Это как то автоматически делается?

Спасибо
Это поможет?
https://youtu.be/Uxn1k2BQsOw

ну как вариант чтоб со скриптами не возиться,где эту софтину взять7
Разработчик софтины - я.
Можно установить и попробуете использовать.
[url="http://goo.gl/ciUwjI"]http://goo.gl/ciUwjI[/url] - Синхронизация УС с VirtueMart, [url="http://goo.gl/Uh3GBC"]http://goo.gl/Uh3GBC[/url] - Интернет-магазин на базе укрсклада без импорта/экспорта

admin

Цитата: depoll від Листопад 08, 2017, 18:22:12
ух ты, скрипт выполнился, а где эти значения (новый код) будет виден? в sql менеджере видно, а где еще?

вы простите меня за глупые вопросы, но спросить больше кроме вас не у кого

все испытания проводятся на локальной машине, на которой установлен укрсклад для испытаний и тестов

В скрипте есть параметры, их можно менять если надо:
  -- шаблон лидирующих нулей, если надо другой лидирующий символ, укажите
  tmp_zero = '00000000000000';
  -- начальный номер
  auto_start = 1;
  -- префикс
  auto_pref = '';
  -- суффикс
  auto_suf = 'wr';
  -- кол-во лидирующих нулей от 0 до 15
  auto_lzero = 5;
  -- предпросмотр, если 0 - скрипт просто покажет результат без замены, если 1 - то будет заменять в базе
  is_preview = 0;

depoll

со скриптом я разобрался, менял крутил смотрел))) спасибо!!!

ну как не надо в слепую))) это же первый опыт первый запуск!

alex-messer

Цитата: admin від Листопад 09, 2017, 09:40:04
Цитата: depoll від Листопад 08, 2017, 18:22:12
ух ты, скрипт выполнился, а где эти значения (новый код) будет виден? в sql менеджере видно, а где еще?

вы простите меня за глупые вопросы, но спросить больше кроме вас не у кого

все испытания проводятся на локальной машине, на которой установлен укрсклад для испытаний и тестов

В скрипте есть параметры, их можно менять если надо:
  -- шаблон лидирующих нулей, если надо другой лидирующий символ, укажите
  tmp_zero = '00000000000000';
  -- начальный номер
  auto_start = 1;
  -- префикс
  auto_pref = '';
  -- суффикс
  auto_suf = 'wr';
  -- кол-во лидирующих нулей от 0 до 15
  auto_lzero = 5;
  -- предпросмотр, если 0 - скрипт просто покажет результат без замены, если 1 - то будет заменять в базе
  is_preview = 0;


Здравствуйте. Выполняю данный скрипт при этом параметр  is_preview = 1; - но результат не сохраняется. Подскажите пожалуйста в  чем может быть причина?