Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Разделение таблицы значений 1с 8

Разделение таблицы значений 1с 8
Я
   DmitriyDI
 
12.09.16 - 10:07
Добрый день как оптимально разделить такую таблицу значений на несколько таблиц:

Таблица вида:
Склад, товар, Цена

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

К примеру вид такой
Товар1, Склад1, Цена1
Товар1, Склад2, Цена1
Товар1, Склад3, Цена2
Товар2, склад1, Цена3
Товар2, Склад3, Цена4

Надо разделить на
Товар1, Склад1, Цена1
Товар2, склад1, Цена3
Товар1, Склад2, Цена1


Товар1, Склад3, Цена2
Товар2, Склад3, Цена4

т.е. чтобы склады не пересекались,
 
 
   Cyberhawk
 
1 - 12.09.16 - 10:14
"если по одному товару в разных складах, разная цена, то они разносятся" // Кажется, кусок "на разных складах" тут лишний в условии. У тебя ж не может быть товара на одном и том же складе с разной ценой?
   Cyberhawk
 
2 - 12.09.16 - 10:15
Так что условие проще.
Бежишь по таблице, как только встретил повторяющийся товар с новой ценой - суешь его во вторую ТЗ.
   DmitriyDI
 
3 - 12.09.16 - 10:23
(2) сейчас попробую, просто смысл какой.
Если документ с ТЧ склады, так вот если в таблице допустим в ТЗ 10 складов товара с 1 ценой, и 1 с другой надо разделять на разные документы, причем, таблица большая приходит много складов и товаров, а документов надо создать минимум.
   DmitriyDI
 
4 - 12.09.16 - 10:27
Если разбить на подзадачи:
1 разделить склады на несколько массивов, в которой не пересекаются товары по ценам.
а потом обойти каждый массив и добавить товары с ценой
   Ёпрст
 
5 - 12.09.16 - 10:53
(0)Что есть "склады не пересекались" ?
вот туТ, у тебя склады "пересекаются" ?
Товар1, Склад1, Цена1
Товар1, Склад2, Цена1
   DmitriyDI
 
6 - 12.09.16 - 10:59
тут нет, так как у склада 1 и 2, цена одинаковая, если бы цена была разная, то надо разделить
   DmitriyDI
 
7 - 12.09.16 - 12:24
Сделал вот так вроде работает)

        Запрос_Ц = Новый Запрос("ВЫБРАТЬ
                                |    Т.Товар,
                                |    Т.Склад,
                                |    Т.Цена,
                                |    1 КАК Свертка
                                |ПОМЕСТИТЬ ВТ
                                |ИЗ
                                |    &Т КАК Т
                                |;
                                |
                                ////////////////////////////////////////////////////////////////////////////////

                                |ВЫБРАТЬ
                                |    ВТ.Товар,
                                |    ВТ.Цена,
                                |    СУММА(ВТ.Свертка) КАК Свертка
                                |ПОМЕСТИТЬ ВТ_Свернутая
                                |ИЗ
                                |    ВТ КАК ВТ
                                |
                                |СГРУППИРОВАТЬ ПО
                                |    ВТ.Товар,
                                |    ВТ.Цена
                                |;
                                |
                                ////////////////////////////////////////////////////////////////////////////////

                                |ВЫБРАТЬ
                                |    ВТ_Свернутая.Товар,
                                |    ВТ_Свернутая.Цена,
                                |    ВТ.Склад КАК Склад,
                                |    ВТ_Свернутая.Свертка КАК Свертка
                                |ИЗ
                                |    ВТ_Свернутая КАК ВТ_Свернутая
                                |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
                                |        ПО ВТ_Свернутая.Товар = ВТ.Товар
                                |            И ВТ_Свернутая.Цена = ВТ.Цена
                                |ИТОГИ ПО
                                |    Свертка,
                                |    Склад");
                                
                                
        Запрос.УстановитьПараметр("Т", ТаблицаЦен);
        
        ВыборкаСвертка = Запрос_Ц.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
        Пока ВыборкаСвертка.Следующий() Цикл
            //тут создаем новый документ

            ВыборкаСклад = ВыборкаСвертка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаСклад.Следующий() Цикл
                //тут заполняем тч склады

                ВыборкаДеталь = ВыборкаСклад.Выбрать();
                Пока ВыборкаДеталь.Следующий() Цикл
                /тут заполняем тч товары    
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует