Заполнение таблицы значений

1. 25.11.21 09:51 Сейчас в теме
Доброго времени суток.

Первая таблица это выгруженная таблица из запроса, вторая таблица - это таблица значений (Управляемой Формы). Как написать код для заполнения таблицы значений из таблицы запроса? Пример на картинке
Прикрепленные файлы:
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 57 25.11.21 10:13 Сейчас в теме
(1)1. получить из таблицы запроса всю уникальную номенклатуру.
2. Пробежаться по списку номенклатуры из п.1 циклом, производя поиск строк в таблице из запроса по номенклатуре для получения списка месяцев.
3. Пробежаться по списку месяцев из п.2 циклом и заполнить колонки в ТЧ на форме.
3. VictorRGB2 13 25.11.21 10:15 Сейчас в теме
ну по картинке. вроде просто
берем и перекладываем в готовую таблицу из Номеклатура\все месяцы года
а дальше циклом по таблице запроса, только отсортировать ее по дата\номенклатура
и знай себе строки заполняй

что-то такое, навскидку
ТЗ_Нужная = Новый ТаблицаЗначений
ТЗ_Нужная.Колонки.Добавить("Номегклатура")
ТЗ_Нужная.Колонки.Добавить("Январь")
... добавлем весь год
ТЗ_Нужная.Колонки.Добавить("Декабрь")

ТЗ_Запроса.Сортировать("Дата Возр, Номеклатура Возр");
Для Каждого стр Из ТЗ_Запроса Цикл
 Если ТЗ_Нужная.НайтиСтроки(Новый Структура("Номенклатура", стр.Номенклатура)).Количество() <> 0 Тогда
  Продолжить
 КонецЕсли
 массивСтрокНом = ТЗ_Запроса.НайтиСтроки(Новый Структура("Номенклатура", стр.Номенклатура))
 Для Каждого стрМассива Из массивСтрокНом Цикл
  новаяСтр = ТЗ_НужнаяДобавить()
  новаяСтр.Номеклатура = стрМассива.Номеклатура
  // вот тут надо вычислить месяц даты стрМассива и заполнить нужную колонку (можно вынести как отдельную функцию для заполнения, чтобы красиво было)
  месяцСтр = Месяц(стрМассива.Дата)
  Если месяцСтр = 1 Тогда
   новаяСтр.Январь = стрМассива.Количество
  КонецЕсли
  ...
  Если месяцСтр = 12 Тогда
   новаяСтр.Декабрь = стрМассива.Количество
  КонецЕсли
 КонецЦикла
 КонецЦикла
Показать
4. soft_wind 25.11.21 10:22 Сейчас в теме
(1) попробуйте такой код, только свои наименования реквизитов замените

НовСтрока = Неопределено;
ТаблицаФормы.Очистить();//сброс старых данных
Для каждого лкСтр Из РезультатТЗ Цикл
	//перебираем все строчки результата запроса
	Если НовСтрока = Неопределено или НовСтрока.Номенклатура <> лкСтр.Номенклатура Тогда
		//смена товара, добавляем новую строчку в ТЗ формы	
		НовСтрока = ТаблицаФормы.Добавить();
		НовСтрока.Номенклатура = лкСтр.Номенклатура;
	КонецЕсли; 
	//по дате определяем Имя колонки и заполняем количество
	НовСтрока[ПолучитьИмяКолонкиПоДате(лкСтр.Дата)].Количество = лкСтр.Количество;
КонецЦикла; 
Показать
5. soft_wind 25.11.21 10:28 Сейчас в теме
(4) или если колонки ТЗ на форме так и называются Январь, Февраль, ...
то можно использовать такую команду


//по дате определяем Имя колонки и заполняем количество
НовСтрока[Формат(лкСтр.Дата,"ДФ=ММММ")].Количество = лкСтр.Количество;
6. Satoshi_Nakamoto 25.11.21 11:49 Сейчас в теме
(5)
или если колонки ТЗ на форме так и называются Январь, Февраль, ...

Да, есть такие колонки. Большое спасибо.
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Ижевск
зарплата от 120 000 руб. до 160 000 руб.
Временный (на проект)

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 150 000 руб.
Полный день

Преподаватель 1С
Санкт-Петербург
зарплата от 100 000 руб. до 120 000 руб.
Временный (на проект)