Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 18:45

как правильно сделать такой цикл?

Автор lakykherson, 02 фев 2023, 13:53

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

lakykherson

Как правильно сделать такой цикл который будет перебирать значения выборки запроса и записывать результат во временную таблицу.
Для каждого значения где встречается количество больше 1 преобразовать в строки с товаром равным количеству.
То есть существует такой метод как свернуть таблицу. Свернуть таблицу
мне нужно обратное развернуть что бы если количество 10 шт. мне нужно получить 10 строк с товаром с количеством 1шт.


Как это реализовать? любой способ меня устроит цикл или запросом все равно

Afinogen

ТЗ = Новая ТаблицаЗначений

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
 
  Для Н=1 ПО Выборка.Количество Цикл
   
     НоваяСтрока = ТЗ.Добавить()
  КонецЦикла;

КонецЦикла



lakykherson

Я сейчас проверить не могу но подскажите я правильно понял что это будет работать так?

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

ТЗ = Новая ТаблицаЗначений

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
 
  Для Н=1 ПО Выборка.Количество Цикл
   
     НоваяСтрока = ТЗ.Добавить()
  КонецЦикла;

КонецЦикла


LexaK

Цитата: lakykherson от 02 фев 2023, 14:42я правильно понял что это будет работать так?
к сожалению - нет! (будут ошибки) куда-ж без них!  :(
если помогло нажмите: Спасибо!

Afinogen

ну только не

новАя ТаблицаЗначений,

а

новЫй ТаблицаЗначений 

:D  :D  :D

Afinogen

ну и плюс у ТЗ ж колонки должны быть  :D

lakykherson

Для проверки создал на форме таблицу "Тест", скрин во вложении

сделал функцию , но в таблицу нечего не заполняется , подскажите в чем ошибка?

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

ТЗ = Тест;

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
 
  Для Н=1 ПО Выборка.Количество Цикл
   
     НоваяСтрока = ТЗ.Добавить()
  КонецЦикла;

КонецЦикла
   
   
   
   
   
   
КонецФункции

antoneus

А что туда должно заполняться? Пока вы просто пустые строки добавляете. Хотя бы так попробуйте.

Пока Выборка.Следующий() Цикл
 
  Для Н=1 ПО Выборка.Количество Цикл
   
     НоваяСтрока = ТЗ.Добавить();
     НоваяСтрока.Наименование = Выборка.Номенклатура;
     НоваяСтрока.Количество = 1;//правильно же?

  КонецЦикла;

КонецЦикла

lakykherson

Спасибо получилось вот так

Функция ЗаполнениеТаблицыТест(докрел)   

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

ТЗ = Тест;

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
 
  Для Н=1 ПО Выборка.Количество Цикл
   
     НоваяСтрока = ТЗ.Добавить();
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Количество = "1";
НоваяСтрока.КлючСвязи = Выборка.КлючСвязи;


  КонецЦикла;

КонецЦикла






КонецФункции

Afinogen

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

Теги: 1с8 

Похожие темы (5)

Рейтинг@Mail.ru

Поиск