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

Хранилище

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

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



> Как получить остатки по отдельным складам в 1с 8.1? 3 страниц V   1 2 3 >          
Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 9:57
Сообщение #1

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

есть текст процедуры:

Процедура СписокНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)

Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");

МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса
Соответствие = Новый Соответствие; // для заполнения остатков в строках табличного поля

Для Каждого Строка из ОформленияСтрок Цикл
МассивНоменклатуры.Добавить(Строка.ДанныеСтроки.Ссылка);
Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
КонецЦикла;

Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры);

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

// Вывести остаток в строку, найденную в соответствии по номенклатуре
// из запроса.
Пока Выборка.Следующий() Цикл
Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток;
КонецЦикла;

КонецПроцедуры


надо добавить еще условие, с помощью какого в колонках Склад1 и остаток1 выводилось бы наименование склада и остаток по нему, как это можно сделать?
Причина редактирования: Для вставки кода пользуйтесь специальным тегом

Zaval Подменю пользователя
сообщение 15.07.10, 10:38
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

И?
Будешь иметь по каждому товару несколько строк с остатками по разным складам? В теории - норм, а вот когда начнут работать юзеры, и появятся товары со сходными наименованиями.... порвут тебя в клочья за такую реализацию.

А технически - просто: выбираешь еще и склад, группируешь по товарам.

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

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 10:55
Сообщение #3

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

в смысле "выбираешь склад"? можно текст условия?

Zaval Подменю пользователя
сообщение 15.07.10, 11:35
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Ну, сам же написал ВЫБРАТЬ? вооот, еще и склад...

Какого условия? Что, остатки нужны только по одному складу?

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 11:57
Сообщение #5

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

т.е.

Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар,
| ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");



и добавить в форму списка еще одно поле склад1?

извини, я еще зеленый в программировании, учусь, поэтому и задаю глупые вопросы(((

Zaval Подменю пользователя
сообщение 15.07.10, 12:11
Сообщение #6

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Да. Вот только пользы от этого....

Посмотри на текст внимательно. Из выведенных на форму строк создается массив номенклатуры. По этому массиву выполняется запрос остатков.
Результат запроса перебирается, по Соответствию ищется нужная строка и в нее проставляется остаток.
Теперь у тебя в Выборке по каждому товару несколько строк с остатками по различным складам (и с самими складами). Причем не факт, что строки с одинаковым товаром расположены одна за другой...
И что со всем этим делать?

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 12:48
Сообщение #7

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

хмм... надо (( блин...


наверное

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

??

Zaval Подменю пользователя
сообщение 15.07.10, 13:05
Сообщение #8

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Нету у тебя Склад в Соответствии. Соответствие.Получить(Выборка.Товар.Ссылка)

В ячейку Склад(добавленную в табл) запишется остаток по складу Выборка.Склад.
Затем будет найдена другая строка с тем же товаром, но с другим складом и остатком по нему. И значение остатка будет записано в ту же ячейку поверх прежнего.

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 13:26
Сообщение #9

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

Процедура СписокНоменклатураПриПолученииДанных(Элемент, ОформленияСтрок)

Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар,
| ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Склад В (&МассивСкладов)) КАК ТоварыНаСкладахОстатки");

МассивНоменклатуры = Новый Массив; // для передачи в параметр запроса
МассивСкладов = Новый Массив;

Соответствие = Новый Соответствие;// для заполнения остатков в строках табличного поля
Для Каждого Строка из ОформленияСтрок Цикл
МассивНоменклатуры .Добавить(Строка.ДанныеСтроки.Ссылка);
Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
КонецЦикла;

Для Каждого Строка из ОформленияСтрок Цикл
МассивСкладов .Добавить(Строка.ДанныеСтроки.Ссылка);
Соответствие.Вставить(Строка.ДанныеСтроки.Ссылка, Строка);
КонецЦикла;

Запрос.УстановитьПараметр("МассивТоваров", МассивНоменклатуры);
Запрос.УстановитьПараметр("МассивСкладов ", МассивСкладов );
Выборка = Запрос.Выполнить().Выбрать();

// Вывести остаток в строку, найденную в соответствии по номенклатуре
// из запроса.
Пока Выборка.Следующий() Цикл
Соответствие.Получить(Выборка.Товар.Ссылка).Ячейки.Остаток.Значение = Выборка.Остаток;
Соответствие.Получить(выборка.Склад.Ссылка).Ячейки.Склад.Значение = Выборка.Остаток;
КонецЦикла;

КонецПроцедуры



как-то так? или вообще не так?

Zaval Подменю пользователя
сообщение 15.07.10, 13:35
Сообщение #10

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Запускай - экран покажет.
А лучше не теряй времени - садись читать умные книжки.

ЗЫ. Почему-то никто не пытается освоить вождение, сев в кабину и дергая за все подряд в произвольном порядке(

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 13:41
Сообщение #11

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

подскажи умную книгу, а то нигде не могу найти что-то подобное, что соответствует моему вопросу(((

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 13:47
Сообщение #12

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

а если сможешь - напиши текст, буду оооочень благодарен)) и на следующий раз буду знать ...

Zaval Подменю пользователя
сообщение 15.07.10, 13:54
Сообщение #13

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Тебе нужно разобраться с языком запросов и самими запросами, работой с конфигуратором, конструктором запросов, отладкой...
Митичкин, Радченко, Руководство разработчика, Описание встроенного языка.

Извини, сам написал, что учишься... Писать готовый код - это моя работа.
У тебя есть код, приведенный в сабже - помогло?

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 14:10
Сообщение #14

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

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

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

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

сделал аналог прошлой процедуры, сейчас буду пробовать как-нить вывести остаток по складу((

Процедура СправочникНоменклатураОстатки(ОформленияСтрок)

ТаблицаСтрок = Новый ТаблицаЗначений;
ТаблицаСтрок.Колонки.Добавить("Номенклатура");

Для каждого Строка Из ОформленияСтрок Цикл
НС = ТаблицаСтрок.Добавить();
НС.Номенклатура = Строка.ДанныеСтроки.Ссылка;
КонецЦикла;

ЗапросОстатка = Новый Запрос;
ЗапросОстатка.Текст = "ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток,
| ТоварыНаСкладахОстатки.Склад
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура В (&Номенклатура)) КАК ТоварыНаСкладахОстатки,


ЗапросОстатка.УстановитьПараметр("Номенклатура",ТаблицаСтрок.ВыгрузитьКолонку("Номенклатура"));

ТЗ = ЗапросОстатка.Выполнить().Выгрузить();

Для каждого Строка Из ОформленияСтрок Цикл
ОтборПоиска = Новый Структура();
ОтборПоиска.Вставить("Номенклатура", Строка.ДанныеСтроки.Ссылка);
СтрокаПоиска = ТЗ.НайтиСтроки(ОтборПоиска);
Если СтрокаПоиска.Количество() > 0 Тогда
Остаток = СтрокаПоиска[0].КоличествоОстаток;

Иначе
Остаток = 0;
КонецЕсли;
Строка.Ячейки.Остаток.Значение=Формат(Остаток,"ЧЦ=15; ЧДЦ=0;");
Строка.Ячейки.Склад.Значение=Формат(Остаток,"ЧЦ=15; ЧДЦ=0;");
КонецЦикла;

КонецПроцедуры


Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)

Если ЭлементыФормы.Список.Колонки.Остаток.Видимость = Истина Тогда
СправочникНоменклатураОстатки(ОформленияСтрок);
КонецЕсли;


КонецПроцедуры

только подскажи, вот сюда надо что-то впихнуть?

ЗапросОстатка.УстановитьПараметр("Номенклатура",ТаблицаСтрок.ВыгрузитьКолонку("Номенклатура"));

ТЗ = ЗапросОстатка.Выполнить().Выгрузить();

Для каждого Строка Из ОформленияСтрок Цикл
ОтборПоиска = Новый Структура();
ОтборПоиска.Вставить("Номенклатура", Строка.ДанныеСтроки.Ссылка);
СтрокаПоиска = ТЗ.НайтиСтроки(ОтборПоиска);

Zaval Подменю пользователя
сообщение 15.07.10, 14:23
Сообщение #16

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Вот это

Запрос = Новый Запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
| ТоварыНаСкладахОстатки.Номенклатура.Ссылка КАК Товар,
| ТоварыНаСкладахОстатки.Склад.Ссылка КАК Склад
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Номенклатура В (&МассивТоваров)) КАК ТоварыНаСкладахОстатки");
| РегистрНакопления.ТоварыНаСкладах.Остатки( , Склад В (&МассивСкладов)) КАК ТоварыНаСкладахОстатки");


открылось Конструктором запросов??? так не бывает...

Что получить хочешь?
Товар1 Склад1 Остаток
Товар1 Склад2 Остаток
Товар2 Склад2 Остаток
Товар2 Склад3 Остаток
Так?

Zaval Подменю пользователя
сообщение 15.07.10, 14:34
Сообщение #17

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Воспользуйся конструктором запросов в режиме предприятия - там есть просмотр результата, будет понятнее, что с этим делать дальше.

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 14:37
Сообщение #18

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

наименование суммарныйОстаток
главнСклад|ПроизвСкл
100UF 200
100 100


примерно чтоб так было

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 14:40
Сообщение #19

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

спасибо, извини, если разнервировал... больше не буду доставать(((

Ученик_Покачто Подменю пользователя
сообщение 15.07.10, 14:41
Сообщение #20

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

буду сам разбираться...

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


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

 

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