Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как получить остатки по отдельным складам в 1с 8.1? 3 страниц V  < 1 2 3          
Batchir Подменю пользователя
сообщение 16.07.10, 15:03
Сообщение #41

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

хм, будет производительность списка номенклатуры страдать, но если хотите этим жертвовать, то в событии ПриОткрытии программно добавляете колонки со складами. Для этого перебирите все склады и с помощью
.Колонки.Добавить(<ИмяСклада>,,<Заголовок>);
сформируйте дополнительные колонки по складам.
<ИмяСклада> - лучше брать так "Склад"+КодСклада, тогда вдальнейшем к нему можно легко обращаться (например, Склад000001,Склад000002)
<Заголовок> - Собственно наименование склада которое будет отображаться в таблице

Затем уже в событии ПриПолученииДанных выполняете

Для каждого Строка Из ОформленияСтрок Цикл

    Запрос = Новый Запрос;
    
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Склад.Код,
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
    |    
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыНаСкладахОстатки.Склад.Код,
    |    ТоварыНаСкладахОстатки.Номенклатура
    |    
    |";
    
    
    Запрос.УстановитьПараметр("Номенклатура",Строка.ТекущиеДанные.Ссылка );
    
    Запрос.Текст = ТекстЗапроса;
    РЗ = Запрос.Выполнить();
    Выборка = РЗ.Выбрать()
    Пока Выборка.Следующий() Цикл
        Строка.Ячейки["Склад+"Выборка.Код].Значение=Формат(Выборка.КоличествоОстаток,"ЧЦ=15; ЧДЦ=0;");
        // тут или Значение или Текст, точно не помню
    КонецЦикла;

КонецЦикла;


Результат запроса вернет сгрупированнуе по складам и номенклатуре остатки.
Колонки ао складам будут иметь вид "Склад000001,Склад000002 и т.д."
В обходе запроса прописываешь в ячейки остатки по складу.
т.к. список номенклатуры не содержит серий и характеристик, то выбирать их не нужно
Код писал от руки, не забудьте учесть группы. Но повторюсь это скажется на производительности.
В форме списка номенклатуры есть подобный функционал, только он расчитывает данные для текущей строки. (Действия/Остатки товаров на складах)

Спасибо сказали: Ученик_Покачто,

Batchir Подменю пользователя
сообщение 16.07.10, 15:13
Сообщение #42

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

Для увеличения быстродействия можно попробывать сначала сформировать запрос по всем номенклатурам и складам
а потом в обходе запихивать в нужные ячейки.

Спасибо сказали: Ученик_Покачто,

Ученик_Покачто Подменю пользователя
сообщение 16.07.10, 15:36
Сообщение #43

Общительный
**
Группа: Пользователи
Сообщений: 34
Из: Львов
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Batchir @ 16.07.10, 17:03) *
хм, будет производительность списка номенклатуры страдать, но если хотите этим жертвовать, то в событии ПриОткрытии программно добавляете колонки со складами. Для этого перебирите все склады и с помощью
.Колонки.Добавить(<ИмяСклада>,,<Заголовок>);
сформируйте дополнительные колонки по складам.
<ИмяСклада> - лучше брать так "Склад"+КодСклада, тогда вдальнейшем к нему можно легко обращаться (например, Склад000001,Склад000002)
<Заголовок> - Собственно наименование склада которое будет отображаться в таблице

Затем уже в событии ПриПолученииДанных выполняете

Для каждого Строка Из ОформленияСтрок Цикл

    Запрос = Новый Запрос;
    
    ТекстЗапроса = "
    |ВЫБРАТЬ
    |    ТоварыНаСкладахОстатки.Склад.Код,
    |    ТоварыНаСкладахОстатки.Номенклатура,
    |    СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
    |    
    |ИЗ
    |    РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыНаСкладахОстатки.Склад.Код,
    |    ТоварыНаСкладахОстатки.Номенклатура
    |    
    |";
    
    
    Запрос.УстановитьПараметр("Номенклатура",Строка.ТекущиеДанные.Ссылка );
    
    Запрос.Текст = ТекстЗапроса;
    РЗ = Запрос.Выполнить();
    Выборка = РЗ.Выбрать()
    Пока Выборка.Следующий() Цикл
        Строка.Ячейки["Склад+"Выборка.Код].Значение=Формат(Выборка.КоличествоОстаток,"ЧЦ=15; ЧДЦ=0;");
        // тут или Значение или Текст, точно не помню
    КонецЦикла;

КонецЦикла;


Результат запроса вернет сгрупированнуе по складам и номенклатуре остатки.
Колонки ао складам будут иметь вид "Склад000001,Склад000002 и т.д."
В обходе запроса прописываешь в ячейки остатки по складу.
т.к. список номенклатуры не содержит серий и характеристик, то выбирать их не нужно
Код писал от руки, не забудьте учесть группы. Но повторюсь это скажется на производительности.
В форме списка номенклатуры есть подобный функционал, только он расчитывает данные для текущей строки. (Действия/Остатки товаров на складах)



пишет поле обьекта не обнаржено Код и выдает ошибку

{Справочник.Номенклатура.Форма.ФормаСписка(585)}: Поле объекта не обнаружено (Код)
Строка.Ячейки.Склад["Склад"+Выборка.Код].Значение=Формат(Выборка.КоличествоОстаток,"ЧЦ=15; ЧДЦ=0;");

Batchir Подменю пользователя
сообщение 16.07.10, 15:45
Сообщение #44

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1443 раз
Рейтинг: 0

Я говорю писал от руки, а такие ошибки и самому можно исправить, например так
| ТоварыНаСкладахОстатки.Склад.Код КАК Код,

Ученик_Покачто Подменю пользователя
сообщение 16.07.10, 15:56
Сообщение #45

Общительный
**
Группа: Пользователи
Сообщений: 34
Из: Львов
Спасибо сказали: 0 раз
Рейтинг: 0

огромнейшее спасибо!!! ураааа!! заработало!!))!)

приеду в Одессу - с меня причитается)) так как я сам Одессит по национальности, и бываю там очень часто - как нить отблагодарю!!!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


3 страниц V  < 1 2 3
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 03.07.25, 20:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!