1С 7.7 и снова таблица значений

  • Автор темы Автор темы KiR
  • Дата начала Дата начала
K

KiR

Есть тз со столбцами Наименование, Колво, Цена, Партия. мне нужно сделать что то типа ТЗ.Свернуть("Наименование","Колво"),но так чтобы Цена и партия не потерялись. как организовать подобную "свертку"? Как использовать к примеру "НайтиЗначение" в цикле?
 
ТЗ.Свернуть("Наименование,Цена, Партия","Колво") - только что это поменяет? ведь по сути ты получаешь ту-же ТЗ что и до свертки, разве что "лесенку" уберешь.

А найти значение - как обычно, только не забывать обнулять переменную с номером строки перед началом нового поиска.
 
Что-то не особо понятно, нарисовал бы пример таблицы строк из трех.
 
Наименование, Колво, Цена, Партия
Товар1, 5, 50, 1
Товар1, 10, 55, 2
Товар2, 8, 100, 3
 
общее количество одинакового товара, не потеряв при этом цены и партии
 
Товар1, 15, 50, 1
Товар1, 15, 55, 2
Товар2, 8, 100, 3
Так?
 
нет. сейчас думаю как лучше объяснить. пока сделал колонки Цена и партия многострочными и получаю на выходе
Товар1, 15, 50|55, 1|2
Товар2, 8, 100, 3
 
Ага... тогда вопрос, в каком виде должны храниться в одной колонке две партии? СписокЗначений?
В любом случае решение - обойти строки отсортированной таблицы, и в процессе обхода, заполнять новую, суммируя то, что нужно.
 
Код:
Пока ... цикл
н=0;
Если тз.найтизначение(значпоиска,н,колонкапоиска)=1 тогда
...
 
TimeDontWait, дык значений-то несколько, а он найдет первое
 
Извиняюсь, тогда делаеш выборку строк, и ПолучитьЗначение()
 
Ну правильно. обнуляем строку, делаем найти значение. полученная строка равна к примеру 5. опять обнуляем и опять ищем значение - и снова получаем ту же строку №5 - вечный цикл получается
 
Код:
ВыбратьСтроки()
Пока ПолучитьСтроку()=1 цикл
Если НужЗнач=Тз.ПолучитьЗначение(Тз.ТекущаяСтрока,НужнаяКолонка)=1 тогда
...
Как-то так
 
Код:
 ТЗ.Выгрузить(КопияТЗ);
КопияТЗ.Свернуть("Наименование","Количество");
ТЗ.Сортировать("Наименование");
КопияТЗ.НоваяКолонка("Партия");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Стр = "";
КопияТЗ.НайтиЗначение(ТЗ.Наименование,стр,"Наименование");
ЗначениеПартии = КопияТЗ.ПолучитьЗначение(стр,"Партия")+ТЗ.Партия; // Не знаю, как ты их сложить хочешь
КопияТЗ.УстановитьЗначение(ЗначениеПартии,стр,"Партия")
 
а откуда заполняется первоначальная ТЗ? Я клоню к тому, чтоб поиск и изменения значений ТЗ делать при первоначальном заполнении. Тогда ведь значения будут уникальны?
 
Если в ТЗ несколько одинаковых значений - отсортируй по этому значению, методом НайтиЗначение получи первое вхождение,
запомни номер строки и в цикле (прибавляя к номеру 1 пока значение не поменялось) получай следующие подряд методом ПолучитьСтрокуПоНомеру
 
vbs, о! это что-то новенькое! думаю это мне поможет
 
Можно еще проще- сделай дополнительную таблицу, выгрузи в неё всё, сверни по товару и количеству и используй поиск в ней для получения общего количества, а работай в старой - с партиями и ценами.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!