Автор Тема: Экспорт номенклатуры с соблюдением группровки  (Прочитано 265 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Ki_Khok

  • Новенький
  • *
  • Сообщений: 4
  • Репутация: 0
Коллеги, прошу помощи!

В УкрСкладе не реализовано или я не нашёл возможность экспорта номенклатуры с соблюдением группировки (группа / подгруппа1 / подгруппа 1.1./товар).
Подсажите решение, как сохранить все товары с соблюдением такой сортировки, чтоб, например, перезалить в интернет-магазин.

AGSoft

  • Новенький
  • *
  • Сообщений: 9
  • Репутация: 2
  • Пол: Мужской
  • will be as you want
В интернет-магазине обычно такой же принцип формирования групп как и в укрскладе. При необходимости смогу вытянуть из базы структуру групп/подгрупп и привязку товаров к этой группе. Совместно с разработчиками интернет-магазина сможем втянуть туда.
will be as you want

molotokk

  • =)
  • Помогающий
  • *****
  • Сообщений: 321
  • Репутация: 34
  • Пол: Мужской
  • Carpe Diem
Коллеги, прошу помощи!

В УкрСкладе не реализовано или я не нашёл возможность экспорта номенклатуры с соблюдением группировки (группа / подгруппа1 / подгруппа 1.1./товар).
Подсажите решение, как сохранить все товары с соблюдением такой сортировки, чтоб, например, перезалить в интернет-магазин.
а що саме вам потрібно? які стовпчики з довідника товарів? кількість на складі? приблизно приклад наведіть

Ki_Khok

  • Новенький
  • *
  • Сообщений: 4
  • Репутация: 0
Коллеги, прошу помощи!

В УкрСкладе не реализовано или я не нашёл возможность экспорта номенклатуры с соблюдением группировки (группа / подгруппа1 / подгруппа 1.1./товар).
Подсажите решение, как сохранить все товары с соблюдением такой сортировки, чтоб, например, перезалить в интернет-магазин.
а що саме вам потрібно? які стовпчики з довідника товарів? кількість на складі? приблизно приклад наведіть

Наприклад дерево груп товарів поділяється в 1 порядку на, наприклад, шорти та футболки. Футболки в 2му порядку поділяються на "Поло" та "з Довгим рукавом", кожний другий порядок поділяється на 3 порядок за кольорами і вже в ретьому порядку - розміри. Теж саме з шортами - довгі/короткі в другому порядку, з кишенями/ без кишень  - в третьому, кольори - в четвертому і потім кожний колір за розмірами.
Так от зберегти номенклатуру з такими группами - неможливо або я не знайшов. Зберігається тільки повним списком товарів без будь-яких групп: футболки всі під ряд, шорти всі під ряд, сорочки всі під ряд, паски всі під ряд і т.д.

Номенклатура більше 2к одиниць.... Зовсім не хочеться ручками знову це все вносити в інтернет магазин....

molotokk

  • =)
  • Помогающий
  • *****
  • Сообщений: 321
  • Репутация: 34
  • Пол: Мужской
  • Carpe Diem
з номенклатурою груп/підгруп я зрозумів, а які вимоги до довідника товарів? тобто які пункти з нього потрібно??  і на якій платформі і-нет магазин??

Ki_Khok

  • Новенький
  • *
  • Сообщений: 4
  • Репутация: 0
з номенклатурою груп/підгруп я зрозумів, а які вимоги до довідника товарів? тобто які пункти з нього потрібно??  і на якій платформі і-нет магазин??

Мене цікавить саме зберегти дерево номенклатур. Стовпчики саме товарів, шо вигружаються, мене влаштовують

molotokk

  • =)
  • Помогающий
  • *****
  • Сообщений: 321
  • Репутация: 34
  • Пол: Мужской
  • Carpe Diem
з номенклатурою груп/підгруп я зрозумів, а які вимоги до довідника товарів? тобто які пункти з нього потрібно??  і на якій платформі і-нет магазин??

Мене цікавить саме зберегти дерево номенклатур. Стовпчики саме товарів, шо вигружаються, мене влаштовують
1. які саме стовпчики з довідника вам треба? напр: код, назва, ціна продажна і т.д.
2. і на якій платформі і-нет магазин??

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6910
  • Репутация: 1127
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
1. Сделайте резерв базы данных.
2. Зайдите в меню Опции : SQL менеджер и выполните след. код:
CREATE OR ALTER PROCEDURE split_string
(
  p_string tbigtext,
  p_splitter CHAR(1)
)
RETURNS
(
  part tbigtext
)
AS
  DECLARE VARIABLE lastpos INTEGER;
  DECLARE VARIABLE nextpos INTEGER;
BEGIN
  p_string = :p_string || :p_splitter;
  lastpos = 1;
  nextpos = POSITION(:p_splitter, :p_string, lastpos);
  IF (lastpos = nextpos) THEN
  BEGIN
    part = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos);
    SUSPEND;
    lastpos = :nextpos + 1;
    nextpos = POSITION(:p_splitter, :p_string, lastpos);
  END
  WHILE (:nextpos > 1) DO
  BEGIN
    part = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos);
    lastpos = :nextpos + 1;
    nextpos = POSITION(:p_splitter, :p_string, lastpos);
    SUSPEND;
  END
END
этот код добавит процедуру для разбиения на строки, это стоит сделать один раз больше не надо, она будет штатной в следующей версии УкрСклада.

Далее в SQL менеджере выполните скрипт для отображения остатков:
SELECT
  gr.group_name,
  (SELECT FIRST 1 SKIP 0 ss.part FROM split_string(gr.group_name, '/') ss) AS group0,
  (SELECT FIRST 1 SKIP 1 ss.part FROM split_string(gr.group_name, '/') ss) AS group1,
  (SELECT FIRST 1 SKIP 2 ss.part FROM split_string(gr.group_name, '/') ss) AS group2,
  (SELECT FIRST 1 SKIP 3 ss.part FROM split_string(gr.group_name, '/') ss) AS group3,
  (SELECT FIRST 1 SKIP 4 ss.part FROM split_string(gr.group_name, '/') ss) AS group4,
  tz.kolvo,
  t.*,
  c.short_name AS curr_name,
  c_out.short_name AS curr_name_out
FROM   
  tovar_name t
    JOIN currency c ON (t.cena_curr_id  = c.num)
    JOIN currency c_out ON (t.cena_out_curr_id  = c_out.num)
    JOIN tovar_zal tz ON (tz.sklad_id = 3 AND t.num = tz.tovar_id)
    JOIN print_view_sklad(0,3) gr ON (t.tip = gr.num)
WHERE   
  t.visible = 1
ORDER BY
  gr.group_name,   
  t.name

ЗАМЕЧАНИЯ по скрипту.
1. Скрипт показывает товары на складе с ID = 3, поменяйте на свой ID склада (В ДВУХ МЕСТАХ)
2. Скрипт показывает группы товаров с вложенностью до 5, если надо больше просто добавляйте:
(SELECT FIRST 1 SKIP 5 ss.part FROM split_string(gr.group_name, '/') ss) AS group5,
(SELECT FIRST 1 SKIP 6 ss.part FROM split_string(gr.group_name, '/') ss) AS group6,
и т.д.
3. В SQL менеджере вы можете сохранять ваш скрипт под любым названием и потом выбирать из списка и запускать.
4. Результат скрипта можно сохранить в разные форматы, правой кнопкой на таблице "Экспорт таблицы".



Ki_Khok

  • Новенький
  • *
  • Сообщений: 4
  • Репутация: 0
1. Сделайте резерв базы данных.
2. Зайдите в меню Опции : SQL менеджер и выполните след. код:
CREATE OR ALTER PROCEDURE split_string
(
  p_string tbigtext,
  p_splitter CHAR(1)
)
RETURNS
(
  part tbigtext
)
AS
  DECLARE VARIABLE lastpos INTEGER;
  DECLARE VARIABLE nextpos INTEGER;
BEGIN
  p_string = :p_string || :p_splitter;
  lastpos = 1;
  nextpos = POSITION(:p_splitter, :p_string, lastpos);
  IF (lastpos = nextpos) THEN
  BEGIN
    part = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos);
    SUSPEND;
    lastpos = :nextpos + 1;
    nextpos = POSITION(:p_splitter, :p_string, lastpos);
  END
  WHILE (:nextpos > 1) DO
  BEGIN
    part = SUBSTRING(:p_string FROM :lastpos FOR :nextpos - :lastpos);
    lastpos = :nextpos + 1;
    nextpos = POSITION(:p_splitter, :p_string, lastpos);
    SUSPEND;
  END
END
этот код добавит процедуру для разбиения на строки, это стоит сделать один раз больше не надо, она будет штатной в следующей версии УкрСклада.

Далее в SQL менеджере выполните скрипт для отображения остатков:
SELECT
  gr.group_name,
  (SELECT FIRST 1 SKIP 0 ss.part FROM split_string(gr.group_name, '/') ss) AS group0,
  (SELECT FIRST 1 SKIP 1 ss.part FROM split_string(gr.group_name, '/') ss) AS group1,
  (SELECT FIRST 1 SKIP 2 ss.part FROM split_string(gr.group_name, '/') ss) AS group2,
  (SELECT FIRST 1 SKIP 3 ss.part FROM split_string(gr.group_name, '/') ss) AS group3,
  (SELECT FIRST 1 SKIP 4 ss.part FROM split_string(gr.group_name, '/') ss) AS group4,
  tz.kolvo,
  t.*,
  c.short_name AS curr_name,
  c_out.short_name AS curr_name_out
FROM   
  tovar_name t
    JOIN currency c ON (t.cena_curr_id  = c.num)
    JOIN currency c_out ON (t.cena_out_curr_id  = c_out.num)
    JOIN tovar_zal tz ON (tz.sklad_id = 3 AND t.num = tz.tovar_id)
    JOIN print_view_sklad(0,3) gr ON (t.tip = gr.num)
WHERE   
  t.visible = 1
ORDER BY
  gr.group_name,   
  t.name

ЗАМЕЧАНИЯ по скрипту.
1. Скрипт показывает товары на складе с ID = 3, поменяйте на свой ID склада (В ДВУХ МЕСТАХ)
2. Скрипт показывает группы товаров с вложенностью до 5, если надо больше просто добавляйте:
(SELECT FIRST 1 SKIP 5 ss.part FROM split_string(gr.group_name, '/') ss) AS group5,
(SELECT FIRST 1 SKIP 6 ss.part FROM split_string(gr.group_name, '/') ss) AS group6,
и т.д.
3. В SQL менеджере вы можете сохранять ваш скрипт под любым названием и потом выбирать из списка и запускать.
4. Результат скрипта можно сохранить в разные форматы, правой кнопкой на таблице "Экспорт таблицы".

Спасибо!!! Большое спасибо. Работает!
Не совсем понял про склады.

Точнее понятно, что этот скрипт работает только для склада с ID 3, а чтоб сделать такую же процедуру для других складов - заменить значение. Вот только не нашёл второе место изменения.... Первое  в строке JOIN tovar_zal tz ON (tz.sklad_id = 3 AND t.num = tz.tovar_id)     а второе - ?

И такой вопрос - а заливать подобные номенклатуры - тоже нужен отдельный скрипт? а то ещё 2 похожих списка есть на другое направление... залив в обновлении будет другой кроме CSV? Когда ожидается обновление?

homebuh

  • Пользователи
  • Пользователь
  • ***
  • Сообщений: 75
  • Репутация: 0
2ое ниже ведь   JOIN print_view_sklad(0,3) gr ON (t.tip = gr.num)

WISH

  • Младший Пользователь
  • **
  • Сообщений: 12
  • Репутация: 3
А наоборот возможно?
Импортировал прайс поставщика. Дерево групп загрузилось. Но номенклатура.....
Новая при импорте, попала в ново создавшиеся группы, а старая нет (которая была ранее импортирована)
Как быть? подскажите. НЕ удалять же весь товар и заново импортировать.
Заранее спасибо.
« Последнее редактирование: Май 25, 2020, 17:01:53 от WISH »

AGSoft

  • Новенький
  • *
  • Сообщений: 9
  • Репутация: 2
  • Пол: Мужской
  • will be as you want
А наоборот возможно?
Импортировал прайс поставщика. Дерево групп загрузилось. Но номенклатура.....
Новая при импорте, попала в ново создавшиеся группы, а старая нет (которая была ранее импортирована)
Как быть? подскажите. НЕ удалять же весь товар и заново импортировать.
Заранее спасибо.
Могу программу написать которая обновит группы товаров. Но предварительно надо глянуть файл который Вы загоняли и файл базы данных
will be as you want

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6910
  • Репутация: 1127
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
А наоборот возможно?
Импортировал прайс поставщика. Дерево групп загрузилось. Но номенклатура.....
Новая при импорте, попала в ново создавшиеся группы, а старая нет (которая была ранее импортирована)
Как быть? подскажите. НЕ удалять же весь товар и заново импортировать.
Заранее спасибо.

Обязательно, перед импортом товаров через меню Опции : Импорт / товаров контрагентов из файла, делайте резерв базы данных, чтобы если вы неверно указали параметры для импорта, вернуть базу в изначальное положение. Причина захода товара не в те группы или создание дубляжей одна - неверно указаны параметры для импорта (колонки групп, поиск двойников, обрамления и т.д.)

Могу программу написать которая обновит группы товаров. Но предварительно надо глянуть файл который Вы загоняли и файл базы данных

В программе есть для этого готовый функционал меню Опции : Импорт / товаров контрагентов из файла, но если клиент хочет другой/особый, конечно мы не против.

WISH

  • Младший Пользователь
  • **
  • Сообщений: 12
  • Репутация: 3
Обязательно, перед импортом товаров через меню Опции : Импорт / товаров контрагентов из файла, делайте резерв базы данных, чтобы если вы неверно указали параметры для импорта, вернуть базу в изначальное положение. Причина захода товара не в те группы или создание дубляжей одна - неверно указаны параметры для импорта (колонки групп, поиск двойников, обрамления и т.д.)
Параметры указаны верно на 99%. Дело в том, что я импортом хотел сменить группу уже занесенных товаров, одновременно создавая группы. И товары остались в старых группах, хотя новые группы создались с правильной структурой подгрупп.
Если программа рассчитана на такой импорт, тогда наверное мне нужна помощь тех поддержки. Обращаться на email?

admin

  • Админ
  • Помогающий
  • *****
  • Сообщений: 6910
  • Репутация: 1127
  • Пол: Мужской
    • УкрБланк, УкрСклад, УкрЗарплата, Унидок
Параметры указаны верно на 99%.

С такой же вероятностью можем сказать что неверно  :) надо проверять. Присылайте снимки экрана настроек импорта и на одном-двух товарах покажите что было до импорта и как импортировало.
« Последнее редактирование: Май 28, 2020, 16:34:28 от admin »