Как Увидеть цену закупки(себестоимость) в окне подбора номенклатуры

1. seregapplk 07.06.12 18:31 Сейчас в теме
Доброго времени суток! Я столкнулся с проблемой жёсткой конкуренции, цены приходится менять молниеносно, да и при заказах поставщику было-бы очень удобно!
Дело в том что я в конфигураторе не могу найти форму редактирования "ПОДБОРА"!!???
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. demarine 07.06.12 18:37 Сейчас в теме
Обработка ПодборНоменклатуры, оно?
seregapplk; +1 Ответить
3. tolik_byr 07.06.12 20:13 Сейчас в теме
Обработки.ПодборНоменклатуры
seregapplk; +1 Ответить
4. seregapplk 08.06.12 19:54 Сейчас в теме
5. seregapplk 08.06.12 23:13 Сейчас в теме
Форму открыл колонку создал, УМОЛЯЮ ПОДСКАЖИТЕ, как в строку вывести себестоимость!!???
6. Fiber 09.06.12 10:14 Сейчас в теме
В модуле объекта обработки "Подбор номенклатуры" процедура:
// Процедура выводит в табличную часть "ПараметрыНоменклатуры"// текущие данные по номенклатуре.
Процедура ОбновитьПараметрыНоменклатуры(ФормаПодбора, ТабличноеПолеПараметрыНоменклатуры,
ТабличноеПолеНоменклатуры, ТабличноеПолеХарактеристик,
ПанельНоменклатурыХарактеристик) Экспорт

Ну прикрути туда себестоимость.
7. seregapplk 09.06.12 11:12 Сейчас в теме
Посмотрите, Я наверно криво прикрутил
Процедура ОбновитьПараметрыНоменклатуры(ФормаПодбора, ТабличноеПолеПараметрыНоменклатуры,
ТабличноеПолеНоменклатуры, ТабличноеПолеХарактеристик,
ПанельНоменклатурыХарактеристик, СебестоимостьНоменклатуры) Экспорт

Если РаботаСдиалогами.ЕстьРеквизитФормы(ФормаПодбора, "ОтображатьИнформацию")
И Не ФормаПодбора.ОтображатьИнформацию Тогда
Возврат;
КонецЕсли;

ПараметрыНоменклатуры = ТабличноеПолеПараметрыНоменклатуры.Значение;

ТекущаяСтрокаНоменклатураСписок = ТабличноеПолеНоменклатуры.ТекущаяСтрока;

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

ПараметрыНоменклатуры.Очистить();

Если мМенеджерВременныхТаблиц = Неопределено Тогда
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = мМенеджерВременныхТаблиц;

ТекстЗапроса = "ВЫБРАТЬ
| СебестоимостьНоменклатуры,
| Номенклатура,
| ХарактеристикаНоменклатуры,
| ЕдиницаИзмерения,
| Артикул,
| СтавкаНДС,
| НоменклатурнаяГруппа,
| Количество,
| Цена,
| ЦенаПоТипуЦен,
| ТипЦен,
| Склад КАК Склад,
| Магазин КАК Магазин,
| ПорядокМагазинов,
| ПорядокСкладов,
| СуммаПоТипуЦен,
| Сумма
|ИЗ
| ОстаткиГруппы КАК ОстаткиГруппы
|ГДЕ

| ОстаткиГруппы.Номенклатура = &Номенклатура
| И &УсловиеПоХарактеристике

|УПОРЯДОЧИТЬ ПО
| ПорядокМагазинов, Магазин.Код, ПорядокСкладов, Склад.Код

|ИТОГИ
| МАКСИМУМ(СебестоимостьНоменклатуры),
| МАКСИМУМ(ТипЦен),
| МАКСИМУМ(Цена),
| МАКСИМУМ(ЦенаПоТипуЦен),
| МАКСИМУМ(ПорядокМагазинов),
| МАКСИМУМ(ПорядокСкладов),
| СУММА(Количество),
| СУММА(СуммаПоТипуЦен),
| СУММА(Сумма)
|ПО
| Магазин,
| Склад";

Если ПанельНоменклатурыХарактеристик.ТекущаяСтраница = ПанельНоменклатурыХарактеристик.Страницы.Характеристики Тогда

ТекущаяСтрока = ТабличноеПолеХарактеристик.ТекущаяСтрока;

Если ТекущаяСтрока <> Неопределено Тогда

ХарактеристикаНоменклатуры = ТекущаяСтрока.ХарактеристикаНоменклатуры;

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

ДополнениеЗапроса = "ОстаткиГруппы.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры";
Иначе
ДополнениеЗапроса = "ИСТИНА";
КонецЕсли;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоХарактеристике", ДополнениеЗапроса);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

Запрос.Текст = ТекстЗапроса;

РезультатЗапроса = Запрос.Выполнить();

ВедетсяУчетПоХарактеристикам = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(Номенклатура.ВидНоменклатуры);

ВыборкаМагазин = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

СтрокаРазделитель = Неопределено;
Пока ВыборкаМагазин.Следующий() Цикл

// Разделитель магазинов узла и магазинов сети
Если СтрокаРазделитель = Неопределено
И ВыборкаМагазин.ПорядокМагазинов = 2 Тогда

СтрокаРазделитель = ПараметрыНоменклатуры.Добавить();
СтрокаРазделитель.МагазинСклад = "Остальные магазины";

КонецЕсли;

СтрокаМагазин = ПараметрыНоменклатуры.Добавить();

СтрокаМагазин.МагазинСклад = ВыборкаМагазин.Магазин;
ЗаполнитьЗначенияСвойств(СтрокаМагазин, ВыборкаМагазин);
СтрокаМагазин.ТипЦен = Неопределено;

Если НЕ (мМассивМагазиновТекущегоУзла.Найти(СтрокаМагазин.МагазинСклад) <> Неопределено
Или мМассивМагазиновТекущегоУзла.Количество() = 0) Тогда
Продолжить;
КонецЕсли;

ВыборкаСклад = ВыборкаМагазин.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаСклад.Следующий() Цикл
Если ПроцедурыОбменаДаннымиПоКассе.ЭтоУзелКассы()
И ВыборкаСклад.Склад = null Тогда
Продолжить;
КонецЕсли;
СтрокаСклад = ПараметрыНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСклад, ВыборкаСклад);
СтрокаСклад.МагазинСклад = ВыборкаСклад.Склад;

Если НЕ ЗначениеЗаполнено(ВыборкаСклад.Склад)
Или ВыборкаСклад.Склад.ТипСклада = Перечисления.ТипыСкладов.ТорговыйЗал Тогда
СтрокаСклад.Цена = ВыборкаСклад.Цена;
СтрокаМагазин.Цена = ВыборкаСклад.Цена;
Иначе
СтрокаСклад.Цена = ВыборкаСклад.ЦенаПоТипуЦен;
КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры
При попытке открыть подбор Выдаёт
{Обработка.ПодборНоменклатуры.МодульОбъекта(162)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:

по причине:
{(2, 4)}: Поле не найдено "СебестоимостьНоменклатуры"
<<?>>СебестоимостьНоменклатуры,

HHHHHHHELP !!!
8. Fiber 09.06.12 13:01 Сейчас в теме
Процедура "Процедура ОбновитьПараметрыНоменклатуры(ФормаПодбора, ТабличноеПолеПараметрыНоменклатуры,
ТабличноеПолеНоменклатуры, ТабличноеПолеХарактеристик,
ПанельНоменклатурыХарактеристик, СебестоимостьНоменклатуры) Экспорт"
Работает уже с подготовленной выборкой.
Сам запрос собирается в общем модуле УправлениеНоменклатурой.
Процедура "РассчитатьОстаткиПодбор(Дата, СписокНоменклатуры, ОтображатьЦены = Истина, МенеджерВременныхТаблиц, ИспользоватьХарактеристики = Ложь) Экспорт"

Вот тут и нужно прикручивать выборку из регистра Себестоимость номенклатуры.
Что то типа
ТекстЗапроса = "";
Если ОтображатьЦены Тогда
ТекстЗапроса = "
|ВЫБРАТЬ
| ЦеныНоменклатурыМагазиновСрезПоследних.Магазин КАК Магазин,
| ЦеныНоменклатурыМагазиновСрезПоследних.Номенклатура КАК Номенклатура
| " + ?(ИспользоватьХарактеристики, ", ЦеныНоменклатурыМагазиновСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры","") + "
| , ЦеныНоменклатурыМагазиновСрезПоследних.Цена КАК Цена
|ПОМЕСТИТЬ ЦеныНоменклатурыМагазиновСрезПоследних
|ИЗ
| РегистрСведений.ЦеныНоменклатурыМагазинов.СрезПоследних(&Дата, &УсловиеПоНоменклатуре) КАК ЦеныНоменклатурыМагазиновСрезПоследних
|ИНДЕКСИРОВАТЬ ПО
| Магазин,
| Номенклатура
|" + ?(ИспользоватьХарактеристики, ", ХарактеристикаНоменклатуры","") + "
|;
|";

//+++++++++++++++++ Добавил
ТекстЗапроса = ТекстЗапроса + "
|ВЫБРАТЬ
| СебестоимостьНоменклатурыСрезПоследних.Магазин,
| СебестоимостьНоменклатурыСрезПоследних.Номенклатура
| " + ?(ИспользоватьХарактеристики, ", СебестоимостьНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры","") + "
| , СебестоимостьНоменклатурыСрезПоследних.Цена КАК Себестоимость
|ПОМЕСТИТЬ СебестоимостьНоменклатурыСрезПоследних
|ИЗ
| РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних КАК СебестоимостьНоменклатурыСрезПоследних
|ИНДЕКСИРОВАТЬ ПО
| Магазин,
| Номенклатура
|" + ?(ИспользоватьХарактеристики, ", ХарактеристикаНоменклатуры","") + "
|;
|";
//-------------- Добавил
КонецЕсли;
......
seregapplk; +1 Ответить
9. seregapplk 09.06.12 15:02 Сейчас в теме
Ошибка!!!
{Обработка.ПодборНоменклатуры.МодульОбъекта(162)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:

по причине:
{(2, 4)}: Поле не найдено "СебестоимостьНоменклатуры"
<<?>>СебестоимостьНоменклатуры,
Правильно ли я Сделал
10. seregapplk 09.06.12 15:04 Сейчас в теме
Конфигуратор показывает ошибку в этой ПРОЦЕДУРЕ!

// Процедура выводит в табличную часть "ПараметрыНоменклатуры"
// текущие данные по номенклатуре.
Процедура ОбновитьПараметрыНоменклатуры(ФормаПодбора, ТабличноеПолеПараметрыНоменклатуры,
ТабличноеПолеНоменклатуры, ТабличноеПолеХарактеристик,
ПанельНоменклатурыХарактеристик, СебестоимостьНоменклатуры) Экспорт

Если РаботаСдиалогами.ЕстьРеквизитФормы(ФормаПодбора, "ОтображатьИнформацию")
И Не ФормаПодбора.ОтображатьИнформацию Тогда
Возврат;
КонецЕсли;

ПараметрыНоменклатуры = ТабличноеПолеПараметрыНоменклатуры.Значение;

ТекущаяСтрокаНоменклатураСписок = ТабличноеПолеНоменклатуры.ТекущаяСтрока;

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

ПараметрыНоменклатуры.Очистить();

Если мМенеджерВременныхТаблиц = Неопределено Тогда
Возврат;
КонецЕсли;

Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = мМенеджерВременныхТаблиц;

ТекстЗапроса = "ВЫБРАТЬ
| СебестоимостьНоменклатуры,
| Номенклатура,
| ХарактеристикаНоменклатуры,
| ЕдиницаИзмерения,
| Артикул,
| СтавкаНДС,
| НоменклатурнаяГруппа,
| Количество,
| Цена,
| ЦенаПоТипуЦен,
| ТипЦен,
| Склад КАК Склад,
| Магазин КАК Магазин,
| ПорядокМагазинов,
| ПорядокСкладов,
| СуммаПоТипуЦен,
| Сумма
|ИЗ
| ОстаткиГруппы КАК ОстаткиГруппы
|ГДЕ

| ОстаткиГруппы.Номенклатура = &Номенклатура
| И &УсловиеПоХарактеристике

|УПОРЯДОЧИТЬ ПО
| ПорядокМагазинов, Магазин.Код, ПорядокСкладов, Склад.Код

|ИТОГИ
| МАКСИМУМ(СебестоимостьНоменклатуры),
| МАКСИМУМ(ТипЦен),
| МАКСИМУМ(Цена),
| МАКСИМУМ(ЦенаПоТипуЦен),
| МАКСИМУМ(ПорядокМагазинов),
| МАКСИМУМ(ПорядокСкладов),
| СУММА(Количество),
| СУММА(СуммаПоТипуЦен),
| СУММА(Сумма)
|ПО
| Магазин,
| Склад";

Если ПанельНоменклатурыХарактеристик.ТекущаяСтраница = ПанельНоменклатурыХарактеристик.Страницы.Характеристики Тогда

ТекущаяСтрока = ТабличноеПолеХарактеристик.ТекущаяСтрока;

Если ТекущаяСтрока <> Неопределено Тогда

ХарактеристикаНоменклатуры = ТекущаяСтрока.ХарактеристикаНоменклатуры;

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

ДополнениеЗапроса = "ОстаткиГруппы.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры";
Иначе
ДополнениеЗапроса = "ИСТИНА";
КонецЕсли;

ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&УсловиеПоХарактеристике", ДополнениеЗапроса);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

Запрос.Текст = ТекстЗапроса;

РезультатЗапроса = Запрос.Выполнить();

ВедетсяУчетПоХарактеристикам = ОбщегоНазначения.ПолучитьФлагУчетаХарактеристик(Номенклатура.ВидНоменклатуры);

ВыборкаМагазин = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

СтрокаРазделитель = Неопределено;
Пока ВыборкаМагазин.Следующий() Цикл

// Разделитель магазинов узла и магазинов сети
Если СтрокаРазделитель = Неопределено
И ВыборкаМагазин.ПорядокМагазинов = 2 Тогда

СтрокаРазделитель = ПараметрыНоменклатуры.Добавить();
СтрокаРазделитель.МагазинСклад = "Остальные магазины";

КонецЕсли;

СтрокаМагазин = ПараметрыНоменклатуры.Добавить();

СтрокаМагазин.МагазинСклад = ВыборкаМагазин.Магазин;
ЗаполнитьЗначенияСвойств(СтрокаМагазин, ВыборкаМагазин);
СтрокаМагазин.ТипЦен = Неопределено;

Если НЕ (мМассивМагазиновТекущегоУзла.Найти(СтрокаМагазин.МагазинСклад) <> Неопределено
Или мМассивМагазиновТекущегоУзла.Количество() = 0) Тогда
Продолжить;
КонецЕсли;

ВыборкаСклад = ВыборкаМагазин.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаСклад.Следующий() Цикл
Если ПроцедурыОбменаДаннымиПоКассе.ЭтоУзелКассы()
И ВыборкаСклад.Склад = null Тогда
Продолжить;
КонецЕсли;
СтрокаСклад = ПараметрыНоменклатуры.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСклад, ВыборкаСклад);
СтрокаСклад.МагазинСклад = ВыборкаСклад.Склад;

Если НЕ ЗначениеЗаполнено(ВыборкаСклад.Склад)
Или ВыборкаСклад.Склад.ТипСклада = Перечисления.ТипыСкладов.ТорговыйЗал Тогда
СтрокаСклад.Цена = ВыборкаСклад.Цена;
СтрокаМагазин.Цена = ВыборкаСклад.Цена;
Иначе
СтрокаСклад.Цена = ВыборкаСклад.ЦенаПоТипуЦен;
КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры
11. 1carbon 62 26.06.12 08:01 Сейчас в теме
Из рабочей конфигурации....
Остаток, закуп, розница в самом списке элементов номенклатуры.

// Функция осуществляет получение последней цены прихода для элемента номенклатуры.
//
Функция ПолучитьЗакупочнуюЦену(Номенклатура)

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

КонецФункции


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

// Использует API подбора
НоменклатураПриПолученииДанных(ЭтаФорма, ОформленияСтрок, ЭлементыФормы.НоменклатураСписок.Колонки.Картинка);

ВидимостьОстаток = ЭлементыФормы.НоменклатураСписок.Колонки.Остаток.Видимость;
ВидимостьЦена = ЭлементыФормы.НоменклатураСписок.Колонки.Цена.Видимость;
ВидимостьЦенаЗакуп = ЭлементыФормы.НоменклатураСписок.Колонки.ЦенаЗакупочная.Видимость;

Если Не ВидимостьОстаток И Не ВидимостьЦена И Не ВидимостьЦенаЗакуп Тогда
Возврат;
КонецЕсли;

МассивНоменклатуры = Новый Массив;
Соответствие = Новый Соответствие;

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

Если Строка.ДанныеСтроки = Неопределено ИЛИ Строка.ДанныеСтроки.Ссылка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;

ТекущаяНоменклатура = Строка.ДанныеСтроки.Ссылка;

Если ВидимостьЦенаЗакуп Тогда
Строка.Ячейки.ЦенаЗакупочная.Значение = ПолучитьЗакупочнуюЦену(ТекущаяНоменклатура);
КонецЕсли;

Соответствие.Вставить(ТекущаяНоменклатура, Строка);

МассивНоменклатуры.Добавить(ТекущаяНоменклатура);

КонецЦикла;

ТаблицаОстатковЦен = УправлениеЗапасами.ПолучитьТаблицуОстатковЦенПоМагазину(ТекущаяДата(), МассивНоменклатуры, ПараметрыСеанса.ТекущийМагазин, ВидимостьОстаток, ВидимостьЦена);

Для Каждого ТекущаяСтрока Из ТаблицаОстатковЦен Цикл

Если ВидимостьОстаток Тогда
Соответствие.Получить(ТекущаяСтрока.Номенклатура).Ячейки.Остаток.Значение = ТекущаяСтрока.Остаток;
КонецЕсли;

Если ВидимостьЦена Тогда
Соответствие.Получить(ТекущаяСтрока.Номенклатура).Ячейки.Цена.Значение = ТекущаяСтрока.Цена;
КонецЕсли;

КонецЦикла;

КонецПроцедуры
seregapplk; +1 Ответить
12. seregapplk 26.06.12 17:59 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот