Часто менеджеры ленятся делать "Установку цен номенклатуры" на основании документа поступления. Решить вопрос поможет приведенная процедура.
Чтобы цены регистрировались автоматически, нужно немного подкорректировать конфигурацию — добавить в список возможных движений документа «Поступление товаров и услуг» регистр сведений «ЦеныНоменклатуры».
Также необходимо добавить подписку на событие (ОбработкаПроведения) и экспортную процедуру в общий модуль. Приведу текст процедуры:
Процедура УстановкаЦенПоступлением(Источник, Отказ, РежимПроведения) Экспорт
НаборДвижений = Источник.Движения.ЦеныНоменклатуры;
ТипЦен = ?(ТипЗнч(Источник.ТипЦен) = Тип("СправочникСсылка.ТипыЦенНоменклатурыКонтрагентов"),Источник.ТипЦен.ТипЦеныНоменклатуры,Неопределено);
Если ЗначениеЗаполнено(ТипЦен) Тогда
Если НЕ ТипЦен.Рассчитывается Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЕСТЬNULL(ВложенныйЗапрос.КоличествоЗаписейЦен, 0) КАК Уникальность,
| &ТипЦен,
| Товары.Номенклатура,
| Товары.ЕдиницаИзмерения,
| Товары.ХарактеристикаНоменклатуры,
| Товары.Цена
|ПОМЕСТИТЬ ТаблицаЦен
|ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| УникальныеТовары.Номенклатура КАК Номенклатура,
| УникальныеТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| УникальныеТовары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| УникальныеТовары.Цена КАК Цена
| ИЗ
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Товары.Номенклатура КАК Номенклатура,
| Товары.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Товары.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| МАКСИМУМ(Товары.Цена) КАК Цена
| ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК Товары
| ГДЕ
| Товары.Ссылка = &Ссылка
|
| СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| Товары.ЕдиницаИзмерения,
| Товары.ХарактеристикаНоменклатуры) КАК УникальныеТовары) КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары.Ссылка) КАК КоличествоЗаписейЦен,
| Товары.Номенклатура КАК Номенклатура,
| ЦеныНоменклатуры.ТипЦен КАК ТипЦен
| ИЗ
| Документ.ПоступлениеТоваровУслуг.Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО Товары.Номенклатура = ЦеныНоменклатуры.Номенклатура
| ГДЕ
| ЦеныНоменклатуры.Период МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаЦен, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаЦен, ДЕНЬ)
| И Товары.Ссылка = &Ссылка
| И ЦеныНоменклатуры.ТипЦен = &ТипЦен
| И ЦеныНоменклатуры.Регистратор <> &Ссылка
|
| СГРУППИРОВАТЬ ПО
| Товары.Номенклатура,
| ЦеныНоменклатуры.ТипЦен) КАК ВложенныйЗапрос
| ПО Товары.Номенклатура = ВложенныйЗапрос.Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТаблицаЦен.Уникальность,
| ТаблицаЦен.ТипЦен,
| ТаблицаЦен.Номенклатура КАК Номенклатура,
| ТаблицаЦен.ЕдиницаИзмерения,
| ТаблицаЦен.ХарактеристикаНоменклатуры,
| ТаблицаЦен.Цена
|ИЗ
| ТаблицаЦен КАК ТаблицаЦен
|ГДЕ
| ТаблицаЦен.Уникальность = 0";
Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка); //Документ ссылка: Поступление товаров и услуг
Запрос.УстановитьПараметр("ДатаЦен", Источник.МоментВремени().Дата);
Запрос.УстановитьПараметр("ТипЦен", ТипЦен);
ТаблицаДвижений = Запрос.Выполнить().Выгрузить();
ТаблицаДвижений.Колонки.Добавить("Период");
ТаблицаДвижений.Колонки.Добавить("Активность");
НаборДвижений.мПериод = Источник.Дата;
НаборДвижений.мТаблицаДвижений = ТаблицаДвижений;
Если НЕ ТаблицаДвижений.Количество() = 0 Тогда
Источник.Движения.ЦеныНоменклатуры.ВыполнитьДвижения();
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура учитывает такие моменты:
- В документе поступления несколько строчек одной номенклатуры (выбирается максимальная цена)
- Учитывается уникальность регистра сведений «ЦеныНоменклатуры» в течение дня
Основное условие — необходимо указывать Тип цен номенклатуры контрагента в поступлении, в свою очередь, чтобы в типе цен контрагента была указана ссылка на тип цен номенклатуры




Как можно не делать установку цен? Ведь все равно если цена закупа изменилась, нужно анализировать и менять розничную цену или другую, и опять же делать установку цен.
Я не говорю, что ее совсем не нужно делать. В регистре всегда должна быть «свежая» закупочная цена, и если цены динамически рассчитываются на основе закупочной, то такой метод подойдет. Если не динамические цены — можно делать установку цен и устанавливать другие цены, кроме закупочной.
(0)На мой взгляд несколько нюансов уже есть.
корректировка ошибочной информации как?
Групповое перепроведение что сделает?
Движения при отмене проведения куда денутся?
выбор максимальной цены? пример 1) 1 коробок — спички по 60 коп 2)1 упаковка — Спички по 55 коп 3)1 вагон — спички по 50 коп. запишется закупочная по 60 — продаем по закуп + % думаете менеджеры скажут спасибо?
Вообщем как совет — сделай еще проверок разных + добавь «вилки» изменения цен.
А вообще делаешь подписку — и там на основании вводишь документ установки цен — который просто открываешь а пользователь сам принимает решения проводить или нет.
а под УТ10 это будет работать?
1 коробок — спички по 60 коп 2)1 упаковка — Спички по 55 коп 3)1 вагон — спички по 50 коп. запишется закупочная по 60
Единица измерения берется из табличной части, не базовая
Групповое перепроведение что сделает?
Если автоматическое удаление движений отключено — нужно делать еще одну подписку. Ну у кого включено — нормально отработается и групповое и не групповое проведение.
Движения при отмене проведения куда денутся?
выбор максимальной цены? пример 1) 1 коробок — спички по 60 коп 2)1 упаковка — Спички по 55 коп 3)1 вагон — спички по 50 коп. запишется закупочная по 60 — продаем по закуп + % думаете менеджеры скажут спасибо?
Не вижу проблемы — ед. изм. берется из табличной части.
а под УТ10 это будет работать?
Будет
Это пример как не надо делать…
Откройте для себя подписки.
ройте для себя подписки.
Больно уж туманно, что имеется ввиду?
(3)iov уже всё написал ранее «А вообще делаешь подписку — и там на основании вводишь документ установки цен». Я только его поддерживаю.
С таким подходом вмешательства в типовую конфигурацию как у вас, после «десятой» доработки конфигурация станет
необновляемойдорогообновляемой.(5) единицы измерения не причем я про объемы поставки.
(0) А вообще не важно — опыт это либо разбитая голова либо крепкая и непробиваемая шишка (С) Грабли.
(10) iov,
Ну и пусть будет полная история цен — это же хорошо. А если были приходы, в таком порядке как вы описываете, менеджер, вручную, что сделает? (тоже самое)
(9) vener2004,
Подписка и призвана удешевить обновления или это не так? Чем эта подписка отличается от подписки с открытием устновки цен?
Извините, я не про само использование подписок хотел сказать, сначала невнимательно прочитал публикацию. Я про «нужно немного подкорректировать конфигурацию — добавить в список возможных движений документа «Поступление товаров и услуг» регистр сведений «ЦеныНоменклатуры»», это влияет на обновление.
Зачем изменять типовой регистр, если есть типовой регистратор «Установка цен номенклатуры», в который нужно лишь передать необходимую информацию, и он сам сделает то что нужно.
(12) все эти поступления в одном документе . и единицы одинаковые. поверьте на слово -такое бывает. и при записи соотвтственно выбирают максимальную поставку.
Да Спосибо За Модул. Я не Понел как ето добавит В конфигуратор.Оброботка Приведения Не возможна Потомушто она Сама прочудура.А в Обшуй Модул куда там Много Модула и много прочедуру
Добрый день.
«Также необходимо добавить подписку на событие (ОбработкаПроведения)» как это сделать?