Продажа определенного товара только по розничной цене.
ТиС 9.2
Т.к. некоторые товары на нашей фирме периодически пропадают у поставщиков на неопределенное время, возникла задача запретить продавать такие товары по оптовым ценам.
Делаю на форме номенклатуры окошко для ввода числа, добавляю реквизит-число (к примеру, МинОстОпт), а вот что дальше с этим делать не знаю.
Предполагаю, что можно реализовать это двумя способами:
1. При выборе контрагента, проверять установленный у него Тип Цен (кроме закупочной и розничной) и в Подборе Товара уменьшать видимое количество товара на фирме и складе, у которого установлен МинОстОпт, на это МинОстОпт.
Например: остаток товара на складе и фирме равен 5, МинОстОпт установлен 2; в Подборе Товара видим на складе и фирме, что остаток этого товара равен 3.
2. Все тоже самое, что и п.1 только, количество товара не меняется, а идет замена любого Типа Цен, кроме закупочной и розничной) на розничную.
Например: количество товара на фирме и складе остается прежним 5 шт, а вот цена вместо 3 руб.(как в опте) устанавливается равной 5 руб.(как в рознице).
Т.к. некоторые товары на нашей фирме периодически пропадают у поставщиков на неопределенное время, возникла задача запретить продавать такие товары по оптовым ценам.
Делаю на форме номенклатуры окошко для ввода числа, добавляю реквизит-число (к примеру, МинОстОпт), а вот что дальше с этим делать не знаю.
Предполагаю, что можно реализовать это двумя способами:
1. При выборе контрагента, проверять установленный у него Тип Цен (кроме закупочной и розничной) и в Подборе Товара уменьшать видимое количество товара на фирме и складе, у которого установлен МинОстОпт, на это МинОстОпт.
Например: остаток товара на складе и фирме равен 5, МинОстОпт установлен 2; в Подборе Товара видим на складе и фирме, что остаток этого товара равен 3.
2. Все тоже самое, что и п.1 только, количество товара не меняется, а идет замена любого Типа Цен, кроме закупочной и розничной) на розничную.
Например: количество товара на фирме и складе остается прежним 5 шт, а вот цена вместо 3 руб.(как в опте) устанавливается равной 5 руб.(как в рознице).
По теме из базы знаний
- Учет (суммовой) в рознице в неавтоматизированной торговой точке (НТТ) с платежным (банковским) терминалом (инструкция)
- Переоценка товаров по продажам
- 10 способов злоупотребления сотрудниками своим служебным положением и методы борьбы с ними с помощью учетной системы
- Согласование цен по заказу
- Применение математических достижений в решении сложных задач бизнеса
Найденные решения
(3) Самоделкин, Ну что-ж, удачи.
Мелкий советик: В глобальнике есть функция глВернутьЦену. Когда в конфигурации что-то либо хочет получить цену, вызывает эту функцию или обёртку над ней глПолучитьЦену. В самом начале глВернутьЦену определяется тип цены, из которого реально будут браться цены
Можно в этом месте вставить определение наличного остатка и, если он меньше указанного в номенклатуре, брать другой тип цен. Только обязательно проверить работу обработок ФормированиеЦен и ОбновлениеЦенИзДокумента. При их работе проверка остатка и подмена типа цен не должна делаться. Можно передавать дополнительный параметр в функцию, показывающий, нужен или нет контроль наличного остатка.
Мелкий советик: В глобальнике есть функция глВернутьЦену. Когда в конфигурации что-то либо хочет получить цену, вызывает эту функцию или обёртку над ней глПолучитьЦену. В самом начале глВернутьЦену определяется тип цены, из которого реально будут браться цены
НужныйТипЦен = ?(ПустоеЗначение(Рассчетная) = 1, ТипЦены, ТипЦены.БазовыйТипЦен);
Можно в этом месте вставить определение наличного остатка и, если он меньше указанного в номенклатуре, брать другой тип цен. Только обязательно проверить работу обработок ФормированиеЦен и ОбновлениеЦенИзДокумента. При их работе проверка остатка и подмена типа цен не должна делаться. Можно передавать дополнительный параметр в функцию, показывающий, нужен или нет контроль наличного остатка.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для приличной реализации варианта 1, лучше пригласить специалиста. Сам, уже извини, на мой взгляд не потянешь.
Можно воспользоваться вариантом два даже без программирования. Просто ставить в оптовый прайс розничную цену. Цену можно ставить штатной обработкой "Формирование цен", отбирая товары с остатком ниже минимального.
Можно воспользоваться вариантом два даже без программирования. Просто ставить в оптовый прайс розничную цену. Цену можно ставить штатной обработкой "Формирование цен", отбирая товары с остатком ниже минимального.
(3) Самоделкин, Ну что-ж, удачи.
Мелкий советик: В глобальнике есть функция глВернутьЦену. Когда в конфигурации что-то либо хочет получить цену, вызывает эту функцию или обёртку над ней глПолучитьЦену. В самом начале глВернутьЦену определяется тип цены, из которого реально будут браться цены
Можно в этом месте вставить определение наличного остатка и, если он меньше указанного в номенклатуре, брать другой тип цен. Только обязательно проверить работу обработок ФормированиеЦен и ОбновлениеЦенИзДокумента. При их работе проверка остатка и подмена типа цен не должна делаться. Можно передавать дополнительный параметр в функцию, показывающий, нужен или нет контроль наличного остатка.
Мелкий советик: В глобальнике есть функция глВернутьЦену. Когда в конфигурации что-то либо хочет получить цену, вызывает эту функцию или обёртку над ней глПолучитьЦену. В самом начале глВернутьЦену определяется тип цены, из которого реально будут браться цены
НужныйТипЦен = ?(ПустоеЗначение(Рассчетная) = 1, ТипЦены, ТипЦены.БазовыйТипЦен);
Можно в этом месте вставить определение наличного остатка и, если он меньше указанного в номенклатуре, брать другой тип цен. Только обязательно проверить работу обработок ФормированиеЦен и ОбновлениеЦенИзДокумента. При их работе проверка остатка и подмена типа цен не должна делаться. Можно передавать дополнительный параметр в функцию, показывающий, нужен или нет контроль наличного остатка.
(4) vcv,решил сделать немного по другому, т.к. не разобрался как определить ТипЦены, это сделал в Глоб.модуле:
работает правильно, но как это связать с контрагентом?
// Получим остаток.
Если ПустоеЗначение(Склад) = 0 Тогда
Если ТипЗначенияСтр(ФирмаДляОстатковТМЦ) = "Справочник" Тогда // нужны сводные остатки только по одной фирме
Если Номенклатура.МинОстОпт <> 0 Тогда
ОстатокНаСкладе = ОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,Номенклатура,Склад,,"Количество") - Номенклатура.МинОстОпт;
ОстатокПоФирме = ОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,Номенклатура,,,"Количество") - Номенклатура.МинОстОпт;
Иначе
ОстатокНаСкладе = ОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,Номенклатура,Склад,,"Количество");
ОстатокПоФирме = ОстаткиТМЦ.СводныйОстаток(ФирмаДляОстатковТМЦ,Номенклатура,,,"Количество");
КонецЕсли;
Показатьработает правильно, но как это связать с контрагентом?
(6) Самоделкин,
Если вы уже стали исправлять глобальный модуль, то можно попробовать изменить количество параметров процедуры "глПолучитьОстаткиНоменклатуры".
Например сейчас:
У вас может быть
.
В коде процедуры разбирать тип значения параметра "ПараметрКонтрагента": если это не число, то выполнять нужные вам действия, если число, то должно работать по стандартной схеме.
Затем исправить вызов процедуры "глПолучитьОстаткиНоменклатуры" в тех местах, где вам нужно.
Обратите внимание, что это только пример реализации.
но как это связать с контрагентом?
Если вы уже стали исправлять глобальный модуль, то можно попробовать изменить количество параметров процедуры "глПолучитьОстаткиНоменклатуры".
Например сейчас:
Процедура глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Номенклатура, Единица, ОстаткиТМЦ, ОстатокНаСкладе, ОстатокПоФирме, Склад,
РезервыТМЦ = 0, УчитыватьРезерв = 0, Договор = 0, Заявка = 0) Экспорт
У вас может быть
Процедура глПолучитьОстаткиНоменклатуры(ФирмаДляОстатковТМЦ, Номенклатура, Единица, ОстаткиТМЦ, ОстатокНаСкладе, ОстатокПоФирме, Склад,
РезервыТМЦ = 0, УчитыватьРезерв = 0, Договор = 0, Заявка = 0, ПараметрКонтрагента=0) Экспорт
В коде процедуры разбирать тип значения параметра "ПараметрКонтрагента": если это не число, то выполнять нужные вам действия, если число, то должно работать по стандартной схеме.
Затем исправить вызов процедуры "глПолучитьОстаткиНоменклатуры" в тех местах, где вам нужно.
Обратите внимание, что это только пример реализации.
(6) Самоделкин, Я видимо не врубился в исходную задачу. Зачем связывать с контрагентом? Есть дефицитный товар, на остатки которого нужно автоматически увеличить цену. Например, вместо оптовой цены продавать по розничной.
Предполагаю такое решение:
- В справочнике типов цен добавляем реквизит ТипЦенДефицитныхОстатков типа "Справочник.ТипыЦен".
- В справочнике номенклатуры реквизит МинОстОпт (взят из (1)) для хранения границы остатка, ниже которой нужно продавать по другой цене.
- Функцию глВернутьЦену меняем примерно следующим образом, вставляя изменения после строки
Предполагаю такое решение:
- В справочнике типов цен добавляем реквизит ТипЦенДефицитныхОстатков типа "Справочник.ТипыЦен".
- В справочнике номенклатуры реквизит МинОстОпт (взят из (1)) для хранения границы остатка, ниже которой нужно продавать по другой цене.
- Функцию глВернутьЦену меняем примерно следующим образом, вставляя изменения после строки
НужныйТипЦен = ?(ПустоеЗначение(Рассчетная) = 1, ТипЦены, ТипЦены.БазовыйТипЦен);
НужныйТипЦен = ?(ПустоеЗначение(Рассчетная) = 1, ТипЦены, ТипЦены.БазовыйТипЦен);
ТипЦенДефицитныхОстатков = НужныйТипЦен.ТипЦенДефицитныхОстатков;
Если ПустоеЗначение(ТипЦенДефицитныхОстатков) = 0 Тогда
Если ПустоеЗначение(Номенклатура.МинОстОпт) = 0 Тогда
времРегистры = СоздатьОбъект("Регистры");
времОстаткиТМЦ = времРегистры.ОстаткиТМЦ;
времОстаткиТМЦ.УстановитьЗначениеФильтра("Номенклатура",Номенклатура);
Если ДатаЦен < ПолучитьДатуТА() Тогда
времОстаткиТМЦ.ВременныйРасчет();
времОстаткиТМЦ.РассчитатьРегистрыПо(ДатаЦен);
КонецЕсли;
ОстатокНоменклатуры = времОстаткиТМЦ.СводныйОстаток(,,,,"Количество");
Если ОстатокНоменклатуры <= Номенклатура.МинОстОпт Тогда
НужныйТипЦен = ТипЦенДефицитныхОстатков;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
Дополнительно к (8). Так может подойти только если у вас учет дефицитных товаров в целом по всем возможным фирмам. Если имеется несколько фирм и нужно учитывать остаток отдельно по фирме документа, тогда нужно передавать в функцию параметром, например, контекст документа.
И не забудь допилить для корректной работы обработок, помянутых в (4).
И не забудь допилить для корректной работы обработок, помянутых в (4).
(8) vcv, нет, Вы все правильно поняли - это я уже начал мудрить.
Не догадался до дополнительно реквизита в справочнике цен.
Вообще-то, страшновато менять что-то в Глоб.модуле - это все-равно, что, если плохо разбираешься в двигателях авто, залезть туда и что-то переделать, другое дело подтянуть ремень генератора.
Вот было бы хорошо в самой реализации делать подмену, но похоже выбора у меня нет.
Спасибо, за помощь!
Не догадался до дополнительно реквизита в справочнике цен.
Вообще-то, страшновато менять что-то в Глоб.модуле - это все-равно, что, если плохо разбираешься в двигателях авто, залезть туда и что-то переделать, другое дело подтянуть ремень генератора.
Вот было бы хорошо в самой реализации делать подмену, но похоже выбора у меня нет.
Спасибо, за помощь!
Ужас какой!
Угробит базу (0), могу на деньги поспорить, что угробит ...
Наверное, в сложившейся критической для базы ситуации можно посоветовать использовать для этой задачи штатные возможности конфигурации - т.е. переместить эти товары на розничный склад, а с других складов не отгружать.
Угробит базу (0), могу на деньги поспорить, что угробит ...
Наверное, в сложившейся критической для базы ситуации можно посоветовать использовать для этой задачи штатные возможности конфигурации - т.е. переместить эти товары на розничный склад, а с других складов не отгружать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот