Имя: Пароль:
1C
1С v8
Удаление задублированных строк в тч. товары - как проще?
0 suvolod
 
05.08.12
10:13
Уже не первый раз сталкиваюсь с ситуацией: при переходе с ТиС 7.7 на УТ 10.3 создается документ "Переоценка товаров в рознице", в котором может быть куча задублированных позиций номенклатуры с разной ценой.

Как проще их почистить? Сворачивание тч не подходит, т.к. суммирование цен не имеет смысла. Перебор строк "по одной" и удаление дублей номенклатуры, конечно, сделать можно. Но интересно более оптимальное решение... задача задачу можно поставить так: в ТЧ документа оставить только одну позицию товара с максимальной ценой.
1 France
 
05.08.12
10:17
выбрать запросом все товары с макс.ценой во временную таблицу
удалить все записи с дублями
загрузить из временной таблицы.
А документ партии есть в переоценке товаров в рознице?
2 France
 
05.08.12
10:20
документа нет.
но есть серии - потому и цены разные.
3 suvolod
 
05.08.12
10:22
документа партии нет.. переоценка по времени создания вообще до начала реального оприходования создается.
4 suvolod
 
05.08.12
10:33
France, не совсем понял насчет временной таблицы. Я могу удалить дубли запросом путем группировки строк в запросе по номенклатуре:

ВЫБРАТЬ
   ПереоценкаТоваровВРозницеТовары.Номенклатура КАК Номенклатура,
   ПереоценкаТоваровВРозницеТовары.ХарактеристикаНоменклатуры,
   ПереоценкаТоваровВРозницеТовары.СерияНоменклатуры,
   МАКСИМУМ(ПереоценкаТоваровВРозницеТовары.ЦенаВРознице) КАК ЦенаВРознице
ИЗ
   Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРозницеТовары
ГДЕ
   ПереоценкаТоваровВРозницеТовары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
   ПереоценкаТоваровВРозницеТовары.Номенклатура,
   ПереоценкаТоваровВРозницеТовары.ХарактеристикаНоменклатуры,
   ПереоценкаТоваровВРозницеТовары.СерияНоменклатуры

УПОРЯДОЧИТЬ ПО
   ПереоценкаТоваровВРозницеТовары.Номенклатура.Наименование

... но это вариант, когда фактически придется очищать и перезаполнять документ на основании данных запроса. Хотя, конечно, отработать должен быстрее, чем простой циклический перебор и удаление дублей
5 suvolod
 
05.08.12
10:34
Скорее всего, ты имел ввиду нечто более оптимальное, так?
6 ЧашкаЧая
 
05.08.12
10:42
(5) Если (2), то нужно сделать вложенный запрос без серий с максимумом цен и потом уже соединять его с ТЧ по номенклатуре, характеристике и цене. И кстати лучше без упорядочивания.
7 suvolod
 
05.08.12
10:53
упорядочивание я делал, чтобы консоли запросов было проще увидеть, что дубли "ушли". Кажется, начинаю понимать, что мне пытались подсказать в (1) и (6)

ВЫБРАТЬ
   ПереоценкаТоваровВРозницеТовары.Номенклатура КАК Номенклатура,
   МАКСИМУМ(ПереоценкаТоваровВРозницеТовары.ЦенаВРознице) КАК ЦенаВРознице
ПОМЕСТИТЬ ВремТаб
ИЗ
   Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРозницеТовары
ГДЕ
   ПереоценкаТоваровВРозницеТовары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
   ПереоценкаТоваровВРозницеТовары.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПереоценкаТоваровВРозницеТовары.Ссылка,
   ПереоценкаТоваровВРозницеТовары.НомерСтроки,
   ПереоценкаТоваровВРозницеТовары.Номенклатура,
   ПереоценкаТоваровВРозницеТовары.ХарактеристикаНоменклатуры,
   ПереоценкаТоваровВРозницеТовары.СерияНоменклатуры,
   ПереоценкаТоваровВРозницеТовары.Количество,
   ПереоценкаТоваровВРозницеТовары.ЦенаВРозницеСтарая,
   ПереоценкаТоваровВРозницеТовары.ЦенаВРознице
ИЗ
   Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРозницеТовары
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВремТаб КАК ВремТаб
       ПО ПереоценкаТоваровВРозницеТовары.Номенклатура = ВремТаб.Номенклатура
           И ПереоценкаТоваровВРозницеТовары.ЦенаВРознице = ВремТаб.ЦенаВРознице
ГДЕ
   ПереоценкаТоваровВРозницеТовары.Ссылка = &Ссылка

не совсем понятно только, насколько корректно результат запроса загрузиться обратно в тч документа (НомерСтроки - то полетел), но сейчас попытаюсь
8 AlexNew
 
05.08.12
11:04
Правила переноса посмотреть не предлагать?
9 suvolod
 
05.08.12
11:28
а что в правилах переноса стоит посмотреть, подскажи?
На мой взгляд, типовой механизм сделан как-то странно: сперва все цены сбрасываются в общий документ Переоценка товаров в рознице, хотя ежу понятно, что автоматом он никогда не проведется (обычно там очень много дублей). У меня сейчас, например, создан документ с ~45000 позиций, и это только один из четырех. Как обработать и провести его обычному буху - непонятно.

Да еще создается виртуальный "# Розничный склад", на который, я так понимаю, сливаются все оприходования, и только потом перемещениями раздаются реальным розничным складам.
10 AlexNew
 
05.08.12
11:36
(9) Справочник называется номенклатура.
11 m-serg74
 
05.08.12
11:44
(7) может не сработать если две строки с одной номен и ЦенаВРознице одинаковая будет, двойники не уйдут
12 m-serg74
 
05.08.12
11:46
(11) не внимательно (0) прочитал - "задублированных позиций номенклатуры с разной ценой")))
13 suvolod
 
05.08.12
11:49
(10) комментарий не понял....
(12) да.. вроде такой ситуации не должно быть, хотя.. черт его знает, вдруг выгрузка и полностью задублированные строки в одном документе когда-нибудь сможет создать. буду иметь ввиду.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший