Процедура СписокНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)
Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");
МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса
Соответствие = Новый Соответствие; // для заполнения остатков в строках табличного поляДляКаждого Строка из ОформленияСтрок Цикл
МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка);
Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
КонецЦикла;
Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры);
Выборка = Запрос.Выполнить().Выбрать();
// Вывести остаток в строку, найденную в соответствии по номенклатуре// из запроса.Пока Выборка.Следующий() Цикл
Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток;
КонецЦикла;
КонецПроцедуры
надо добавить еще условие, с помощью какого в колонках Склад1 и остаток1 выводилось бы наименование склада и остаток по нему, как это можно сделать?
Причина редактирования: Для вставки кода пользуйтесь специальным тегом
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
И? Будешь иметь по каждому товару несколько строк с остатками по разным складам? В теории - норм, а вот когда начнут работать юзеры, и появятся товары со сходными наименованиями.... порвут тебя в клочья за такую реализацию.
А технически - просто: выбираешь еще и склад, группируешь по товарам.
Запрос = Новый Запрос("ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар, | ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");
и добавить в форму списка еще одно поле склад1?
извини, я еще зеленый в программировании, учусь, поэтому и задаю глупые вопросы(((
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Да. Вот только пользы от этого....
Посмотри на текст внимательно. Из выведенных на форму строк создается массив номенклатуры. По этому массиву выполняется запрос остатков. Результат запроса перебирается, по Соответствию ищется нужная строка и в нее проставляется остаток. Теперь у тебя в Выборке по каждому товару несколько строк с остатками по различным складам (и с самими складами). Причем не факт, что строки с одинаковым товаром расположены одна за другой... И что со всем этим делать?
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Нету у тебя Склад в Соответствии. Соответствие.Получить(Выборка.Товар.Ссылка)
В ячейку Склад(добавленную в табл) запишется остаток по складу Выборка.Склад. Затем будет найдена другая строка с тем же товаром, но с другим складом и остатком по нему. И значение остатка будет записано в ту же ячейку поверх прежнего.
Запрос = Новый Запрос("ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар, | ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки"); | РегистрНакопления.ТоварыНаСкладах.Остатки( , Склад В (&МассивСкладов)) КАК ТоварыНаСкладахОстатки");
МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса МассивСкладов = Новый Массив;
Соответствие = Новый Соответствие;// для заполнения остатков в строках табличного поля Для Каждого Строка из ОформленияСтрок Цикл МассивНоменклатуры .Добавить(Строка.ДанныеСтроки.Ссылка); Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); КонецЦикла;
Для Каждого Строка из ОформленияСтрок Цикл МассивСкладов .Добавить(Строка.ДанныеСтроки.Ссылка); Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка); КонецЦикла;
// Вывести остаток в строку, найденную в соответствии по номенклатуре // из запроса. Пока Выборка.Следующий() Цикл Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток; Соответствие.Получить(выборка.Склад.Ссылка).Ячейки.Склад.Значение = Выборка.Остаток; КонецЦикла;
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Тебе нужно разобраться с языком запросов и самими запросами, работой с конфигуратором, конструктором запросов, отладкой... Митичкин, Радченко, Руководство разработчика, Описание встроенного языка.
Извини, сам написал, что учишься... Писать готовый код - это моя работа. У тебя есть код, приведенный в сабже - помогло?
Для каждого Строка Из ОформленияСтрок Цикл ОтборПоиска = Новый Структура(); ОтборПоиска.Вставить("Номенклатура", Строка.ДанныеСтроки.Ссылка); СтрокаПоиска = ТЗ.НайтиСтроки(ОтборПоиска); Если СтрокаПоиска.Количество() > 0 Тогда Остаток = СтрокаПоиска[0].КоличествоОстаток;
Иначе Остаток = 0; КонецЕсли; Строка.Ячейки.Остаток.Значение=Формат(Остаток,"ЧЦ=15; ЧДЦ=0;"); Строка.Ячейки.Склад.Значение=Формат(Остаток,"ЧЦ=15; ЧДЦ=0;"); КонецЦикла;
Для каждого Строка Из ОформленияСтрок Цикл ОтборПоиска = Новый Структура(); ОтборПоиска.Вставить("Номенклатура", Строка.ДанныеСтроки.Ссылка); СтрокаПоиска = ТЗ.НайтиСтроки(ОтборПоиска);
Крутой
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Вот это
Запрос = Новый Запрос("ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, | ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар, | ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки"); | РегистрНакопления.ТоварыНаСкладах.Остатки( , Склад В (&МассивСкладов)) КАК ТоварыНаСкладахОстатки");
открылось Конструктором запросов??? так не бывает...
Что получить хочешь? Товар1 Склад1 Остаток Товар1 Склад2 Остаток Товар2 Склад2 Остаток Товар2 Склад3 Остаток Так?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!