• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

KiR

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

puh14

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

А найти значение - как обычно, только не забывать обнулять переменную с номером строки перед началом нового поиска.
 
U

unknown181538

Что-то не особо понятно, нарисовал бы пример таблицы строк из трех.
 
K

KiR

Наименование, Колво, Цена, Партия
Товар1, 5, 50, 1
Товар1, 10, 55, 2
Товар2, 8, 100, 3
 
K

KiR

общее количество одинакового товара, не потеряв при этом цены и партии
 
U

unknown181538

Товар1, 15, 50, 1
Товар1, 15, 55, 2
Товар2, 8, 100, 3
Так?
 
K

KiR

нет. сейчас думаю как лучше объяснить. пока сделал колонки Цена и партия многострочными и получаю на выходе
Товар1, 15, 50|55, 1|2
Товар2, 8, 100, 3
 
U

unknown181538

Ага... тогда вопрос, в каком виде должны храниться в одной колонке две партии? СписокЗначений?
В любом случае решение - обойти строки отсортированной таблицы, и в процессе обхода, заполнять новую, суммируя то, что нужно.
 
T

TimeDontWait

Код:
Пока ... цикл
н=0;
Если тз.найтизначение(значпоиска,н,колонкапоиска)=1 тогда
...
 
K

KiR

TimeDontWait, дык значений-то несколько, а он найдет первое
 
T

TimeDontWait

Извиняюсь, тогда делаеш выборку строк, и ПолучитьЗначение()
 
K

KiR

Ну правильно. обнуляем строку, делаем найти значение. полученная строка равна к примеру 5. опять обнуляем и опять ищем значение - и снова получаем ту же строку №5 - вечный цикл получается
 
T

TimeDontWait

Код:
ВыбратьСтроки()
Пока ПолучитьСтроку()=1 цикл
Если НужЗнач=Тз.ПолучитьЗначение(Тз.ТекущаяСтрока,НужнаяКолонка)=1 тогда
...
Как-то так
 
U

unknown181538

Код:
 ТЗ.Выгрузить(КопияТЗ);
КопияТЗ.Свернуть("Наименование","Количество");
ТЗ.Сортировать("Наименование");
КопияТЗ.НоваяКолонка("Партия");
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Стр = "";
КопияТЗ.НайтиЗначение(ТЗ.Наименование,стр,"Наименование");
ЗначениеПартии = КопияТЗ.ПолучитьЗначение(стр,"Партия")+ТЗ.Партия; // Не знаю, как ты их сложить хочешь
КопияТЗ.УстановитьЗначение(ЗначениеПартии,стр,"Партия")
 
4

4xter

а откуда заполняется первоначальная ТЗ? Я клоню к тому, чтоб поиск и изменения значений ТЗ делать при первоначальном заполнении. Тогда ведь значения будут уникальны?
 
V

vbs

Если в ТЗ несколько одинаковых значений - отсортируй по этому значению, методом НайтиЗначение получи первое вхождение,
запомни номер строки и в цикле (прибавляя к номеру 1 пока значение не поменялось) получай следующие подряд методом ПолучитьСтрокуПоНомеру
 
K

KiR

vbs, о! это что-то новенькое! думаю это мне поможет
 
P

puh14

Можно еще проще- сделай дополнительную таблицу, выгрузи в неё всё, сверни по товару и количеству и используй поиск в ней для получения общего количества, а работай в старой - с партиями и ценами.
 
Мы в соцсетях:

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