Количество номенклатуры с разбивкой по складом
Снова. Используя метод ПрисоеденитьСекцию.
Необходимо ТОЛЬКО с помощью Таблицы значений вывести номенклатуру товаров и справа присоединить все склады с количеством. Выглядеть это должно примерно так:
Но, дальше вывода номенклатуры и присоединения первой секции со всем количеством, без разбивки по складам у меня не идет. Пробывал даже использовать, НЕПРАВИЛЬНЫЙ подход, одновременнно создовал две таблицы значений, одну сворачивал по номенклатуре, другую по складам, но все равно ни фига не получается.
С разметкой таблицы:
Необходимо ТОЛЬКО с помощью Таблицы значений вывести номенклатуру товаров и справа присоединить все склады с количеством. Выглядеть это должно примерно так:
Но, дальше вывода номенклатуры и присоединения первой секции со всем количеством, без разбивки по складам у меня не идет. Пробывал даже использовать, НЕПРАВИЛЬНЫЙ подход, одновременнно создовал две таблицы значений, одну сворачивал по номенклатуре, другую по складам, но все равно ни фига не получается.
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ2=СоздатьОбъект("ТаблицаЗначений");
Таб=Создатьобъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
ТЗ.НоваяКолонка("Номенклатура");
ТЗ.НоваяКолонка("Склад");
ТЗ.НоваяКолонка("Количество","Число",10,0);
ТЗ2.НоваяКолонка("Номенклатура");
ТЗ2.НоваяКолонка("Склад");
ТЗ2.НоваяКолонка("Количество","Число",10,0);
Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Рег.ВыбратьДвижения();
Рег2=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Рег2.ВыбратьДвижения();
Пока Рег.ПолучитьДвижение()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Номенклатура=Рег.Номенклатура;
ТЗ.Склад=Рег.Склад;
ТЗ.Количество=Рег.Количество;
//Вторая таблица значений
ТЗ2.НоваяСтрока();
ТЗ2.Номенклатура=Рег.Номенклатура;
ТЗ2.Склад=Рег.Склад;
ТЗ2.Количество=Рег.Количество;
КонецЦикла;
ТЗ.Свернуть("Номенклатура,Склад", "Количество");
ТЗ2.Свернуть("Склад", "Количество");
ТЗ.Сортировать("Номенклатура");
ТЗ2.Сортировать("Склад");
ТЗ.ВыбратьСтроки();
ТЗ2.ВыбратьСтроки();
Таб.ВывестиСекцию("Шапка|Товар");
Пока ТЗ2.ПолучитьСтроку()=1 Цикл
Таб.ПрисоединитьСекцию("Шапка|Склад");
КонецЦикла;
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Таб.ВывестиСекцию("Элемент|Товар");
Для Я=1 по ТЗ2.КоличествоСтрок() Цикл
Таб.ПрисоединитьСекцию("Элемент|Склад");
КонецЦикла;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.Показать()
КонецПроцедуры
ПоказатьС разметкой таблицы:
По теме из базы знаний
- Загрузка номенклатуры из Excel (УТ 11.1)
- Остатки номенклатуры по счетам при выборе номенклатуры. Расширение конфигурации 1С:БП 3.0
- Детальный анализ продаж - рентабельность, себестоимость продаж, продажи в день, остатки, резерв, доступность, дней на складе, дней запаса в Рознице
- Продажи по накладным с указанием адреса, номенклатуры, счета-фактуры, наименования магазина (склада) и количества продаж - УТ 11, КА 2, ERP 2
- Пробитие чека ККМ с разных складов через РМК в УТ 11
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Процедура Сформировать()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
Сверток=СоздатьОбъект("СписокЗначений");
КолКол=1; //количество колонок
Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Рег.ВыбратьДвижения();
Пока Рег.ПолучитьДвижение()=1 Цикл
ТекСклад=Рег.Склад;
ЗагКол="";
НомКолонки=0;
Для Счет = 1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.ПолучитьПараметрыКолонки(Счет,,,,ЗагКол,,,);
Если ЗагКол=ТекСклад Тогда
НомКолонки=Счет;
Прервать;
КонецЕсли;//ЗакКол=ТекСклад
КонецЦикла;
Если НомКолонки=0 Тогда
ТЗ.НоваяКолонка(,"Число",5,0,ТекСклад);
КолКол=КолКол+1;
Сверток.ДобавитьЗначение(КолКол);
КонецЕсли;
ТЗ.НоваяСтрока();
ТЗ.Номенклатура=Рег.Номенклатура;
ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,НомКолонки,Рег.Количество);
КонецЦикла;
Свер=Сверток.ВстрокуСРазделителями();
ТЗ.Свернуть("Номенклатура",Свер);
ТЗ.ВыбратьСтроку();
//у тебя получилась таблица дальше попробуй сам
КонецПроцедуры
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
Сверток=СоздатьОбъект("СписокЗначений");
КолКол=1; //количество колонок
Рег=СоздатьОбъект("Регистр.ОстаткиТМЦ");
Рег.ВыбратьДвижения();
Пока Рег.ПолучитьДвижение()=1 Цикл
ТекСклад=Рег.Склад;
ЗагКол="";
НомКолонки=0;
Для Счет = 1 По ТЗ.КоличествоКолонок() Цикл
ТЗ.ПолучитьПараметрыКолонки(Счет,,,,ЗагКол,,,);
Если ЗагКол=ТекСклад Тогда
НомКолонки=Счет;
Прервать;
КонецЕсли;//ЗакКол=ТекСклад
КонецЦикла;
Если НомКолонки=0 Тогда
ТЗ.НоваяКолонка(,"Число",5,0,ТекСклад);
КолКол=КолКол+1;
Сверток.ДобавитьЗначение(КолКол);
КонецЕсли;
ТЗ.НоваяСтрока();
ТЗ.Номенклатура=Рег.Номенклатура;
ТЗ.УстановитьЗначение(ТЗ.НомерСтроки,НомКолонки,Рег.Количество);
КонецЦикла;
Свер=Сверток.ВстрокуСРазделителями();
ТЗ.Свернуть("Номенклатура",Свер);
ТЗ.ВыбратьСтроку();
//у тебя получилась таблица дальше попробуй сам
КонецПроцедуры
(8) Согласен пропустил
1.Если ЗагКол=ТекСклад Тогда
надо
Если Строка(ЗагКол)=Строка(ТекСклад) Тогда
2. Еще как прокатит (хорошее решение когда не знаешь заранее сколько будет столцов в таблице)
3. Согласен есть и другие варинты
таблица в конфигураторе
итоговая таблица
в итоговой таблице не выбирал подмодель и размер модели (поэтому колонки не задействованы)
1.Если ЗагКол=ТекСклад Тогда
надо
Если Строка(ЗагКол)=Строка(ТекСклад) Тогда
2. Еще как прокатит (хорошее решение когда не знаешь заранее сколько будет столцов в таблице)
3. Согласен есть и другие варинты
таблица в конфигураторе
итоговая таблица
в итоговой таблице не выбирал подмодель и размер модели (поэтому колонки не задействованы)
(9)
Да ну ?
И - БОЛТ!
ибо стр = "Вася","Федя";
Да ну ?
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Вася");
ТЗ.НоваяКолонка("Федя");
ТЗ.НоваяКолонка("Сумма");
СчетчикЦикла = 0;
Для к = 1 По 10 Цикл
ТЗ.НоваяСтрока();
ТЗ.Вася = "Вася";
ТЗ.Сумма = к;
КонецЦикла;
СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Вася");
СЗ.ДобавитьЗначение("Федя");
стр = СЗ.ВСтрокуСРазделителями();
ТЗ.Свернуть(стр,"Сумма");
ПоказатьИ - БОЛТ!
ибо стр = "Вася","Федя";
(10) как у тебя конечно болт
у меня
ТЗ.НоваяКолонка(,"Число",5,0,ТекСклад); //не задано имя или индификатор колонки
КолКол=КолКол+1; //вот для этого и считаю сколько колонок
Сверток.ДобавитьЗначение(КолКол);
и в итоге будет ТЗ.Свернуть("Номенклатура","1,2,3,4,5,6")
у меня
ТЗ.НоваяКолонка(,"Число",5,0,ТекСклад); //не задано имя или индификатор колонки
КолКол=КолКол+1; //вот для этого и считаю сколько колонок
Сверток.ДобавитьЗначение(КолКол);
и в итоге будет ТЗ.Свернуть("Номенклатура","1,2,3,4,5,6")
Ёпрст пишет:
Если нужна скорость - пиши прямой запрос...
Если нужна скорость - пиши прямой запрос...
Скорость не нужна. Важны разные способы.
Странник Сети (Собеседник Разума) пишет:
[IS-QUOTE]Надо именно по регистру и без ЗАПРОСА, СПИСКА ЗНАЧЕНИЙ, только ТЗ.
[IS-QUOTE]Надо именно по регистру и без ЗАПРОСА, СПИСКА ЗНАЧЕНИЙ, только ТЗ.
именно это и написано в (4)
[/IS-QUOTE]
Возражений нет.
Dmitry Afanasyev пишет:
дабы не изобретать велосипед.
дабы не изобретать велосипед.
Он то как раз и нужен. Пока сам не попробуешь, ни чего не выйдет.
(17) напиши быстрее и предложи свой БЫСТРЫЙ МЕТОД развернуть таблицу в погоризонтали и по вертикали (не зная заранее сколько будут столбцов и строк в таблице).
за (16) отдельное спасибо.
если запросом , там еще проще Группировка склад - при новом цикле СРАЗУ без ПРОВЕРКИ добавляем НОВУЮ КОЛОНКУ и туда (в эту колонку остаток ) остаток.
за (16) отдельное спасибо.
если запросом , там еще проще Группировка склад - при новом цикле СРАЗУ без ПРОВЕРКИ добавляем НОВУЮ КОЛОНКУ и туда (в эту колонку остаток ) остаток.
Ёпрст,
Зачем для этой цели перебирать движение регистра ?
Напишите запрос + Группировка Все ВошедшиеВЗапрос и привет..
Надо именно по регистру и без ЗАПРОСА, СПИСКА ЗНАЧЕНИЙ, только ТЗ.
Dmitry Afanasyev,
Он не нужен.
Зачем для этой цели перебирать движение регистра ?
Напишите запрос + Группировка Все ВошедшиеВЗапрос и привет..
Надо именно по регистру и без ЗАПРОСА, СПИСКА ЗНАЧЕНИЙ, только ТЗ.
Dmitry Afanasyev,
Посмотрите типовую "Торговля и склад". Там есть такой отчет "Ведомость по остаткам ТМЦ". В нем реализовано то, что вам нужно.
Он не нужен.
SpideRus
Я и не говорю, что нужно использовать его. Я предлагаю тебе посмотреть как там формируется печатная форма с неизвестным заранее количеством столбцов, дабы не изобретать велосипед.
З.Ы. все таки не ведомость по остаткам ТМЦ, а "Остатки ТМЦ"
Он не нужен.
Я и не говорю, что нужно использовать его. Я предлагаю тебе посмотреть как там формируется печатная форма с неизвестным заранее количеством столбцов, дабы не изобретать велосипед.
З.Ы. все таки не ведомость по остаткам ТМЦ, а "Остатки ТМЦ"
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)