Как разрешить продажу по нулевой цене, или 100%-ная скидка. Простые примеры (КА 2.4, а также ERP 2.2 и УТ 11.4)

06.05.20

Разработка - Механизмы типовых конфигураций

Акции, бонусы, подарки, бесплатные буклеты... Это ограничено 1С и НК, но это очень хочется иметь в управленческой базе. При этом не хочется снимать программу с поддержки. Легко.

Почти все торговые предприятия, с которыми мне довелось поработать за многие лета, используют в своей работе 100%-ю скидку или продажу по нулевой цене. В основном это маркетинговые мероприятия, типа акций, бонусов, подарков, рекламной продукции и это в порядке вещей. Но "настала новая эра", появилась новая линейка программ (КА-2, УТ-11...), и 1С привела этот аспект в соответствие с налоговым кодексом, поля цена и сумма стали обязательными.

 
 Учет бонусных товаров с нулевой ценой в соответствии с НК

Это, конечно, замечательно, но на практике этот вопрос требуется решать лишь в управленческом учёте и не имеет никакого отражения в бухгалтерском. Такая необходимость возникает для учёта количества безвозмездно переданного товара с возможностью отслеживания кому, когда и в каком количестве этот товар был передан. Для бухгалтерии такой учёт если и требуется, то на забалансовых счетах. Но кому это нужно считать в двух местах?!

Итак, необходимо обеспечить возможность реализации товаров по нулевой цене и/или с нулевой суммой (в случае 100% скидки). Вторая задача, не потерять возможность обновлений или сделать такие обновления максимально простыми.

На просторах данного сайта я встречал решение этой задачи (Например), но на мой взгляд решение выбрано не совсем верно. Основная задача, безусловно, решена, но вот вторая...

В современных движках 1С имеется возможность создавать расширения, через которые в конфигурацию можно вносить изменения, не снимая с поддержки основную конфигурацию. Но в указанном выше примере внесены изменения в процедуру, которая весьма объемна, и даже если выносить её в расширение, то при обновлении придётся сверять её и вносить изменения или копировать содержимое и снова вносить нужные изменения. Повторюсь, процедура великовата. Поэтому меня такое решение не устроило.

Что ж реализуем это более удобным способом.

Первое, если у вас ещё нет расширения, куда вы вносите все дополнения и исправления, то создайте его. У меня это КАДоработки. Я не буду описывать как это делается в рамках этой статьи, таких материалов много на просторах интернета.

Теперь заходим в общий модуль ПродажиСервер и находим процедуру СообщитьОбОшибкахКонтрольЗаполненияЦен. Это маленькая процедура, которая проверяет результат ранее выполненного запроса на наличие нулевых цен и/или сумм в документе, формирует и выводит сообщение об ошибке(ах) и устанавливает Отказ=Истина (в случае "ошибки"). Как можно увидеть из текста процедуры, она чрезвычайно проста, коротка и достаточно универсальна, чтоб у программистов компании 1С ещё очень долго не появилось необходимости туда что-либо вносить или изменять, но даже когда это произойдёт, это можно будет скорректировать по щелчку. Далее, щёлкнув по заголовку процедуры ПКМ, выбираем пункт "Добавить в расширение", выбираем тип вызова "Вызывать вместо" и копируем содержимое исходной процедуры в неё. После этого вносим нужные изменения в условия. Я, например, добавил к условию проверки суммы

И ДокументПродажи.Метаданные().Имя<>"РеализацияТоваровУслуг"

Чтобы проигнорировать эту "ошибку" только для документа РеализацияТоваровУслуг. Кстати, доступность реквизита доступа к документу это причина, по которой я не стал использовать процедуру СформироватьЗапросКонтрольЗаполненияЦен. Ведь мне нужно было разрешить нули только в реализациях.

Здесь же можно вставить какие-то проверки на наличие ролей или ещё какие-то проверки.

Документ проводится нормально, печатные формы открываются, расчёт себестоимости при закрытии месяца адекватный.

Так же как и в вышеприведённой статье не проверял стандартный обмен с бухгалтерией, подозреваю, что бухгалтерия при проведении выругается аналогично не правленому варианту КА или УТ. Не смотрел, но что-то мне подсказывает, что в бухгалтерии 3.0 это исправляется идентичным образом. Так же на 99.5% уверен, что и в УТ 11.4, и в ERP 2.2 алгоритм решения вопроса будет абсолютно таким же.

Проверено на 1С:Комплексная автоматизация 2 (2.4.11.63).

Таким образом решены обе задачи: программа разрешает проводить нулевые цены и суммы по произвольным дополнительным условиям; программа не снята с поддержки и обновление модуля не потребует значительных вмешательств в исправленный код, если вообще когда-нибудь это потребуется.

 
 Отсечем высказываемые возражения по необходимости сего улучшения

 

См. также

Ценовая власть. Выносим из цикла схему СКД

Механизмы типовых конфигураций Ценообразование, анализ цен Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    482    tango    0    

3

Формула в реквизите. Приквелл к сериалу "Ценовая власть"

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    370    tango    5    

3

Ценовая власть. Второй сезон

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Бесплатно (free)

В первом сезоне мы рассмотрели (с точки зрения программиста) внутренний механизм, помещающий цены в регистр "Цены". Из этого регистра цена попадает в исходящие УПД (в продажи). Но эта цена (в прайс-листе) дифференцирована (ценообразована) в разрезах свойств самой номенклатуры. Но стратегия ценообразования, ценовая власть - это в первую очередь о работе с ценами для клиента. И тут вступает в дело второй акт марлезонского, Скидки (наценки) и кешбек.

08.04.2024    573    tango    0    

2

Ценовая власть (УТ 11.5) - 2

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление торговлей 11 Бесплатно (free)

В прошлый раз специальной обработкой мы выбрали объекты УТ 1.5, группируя по подсистемам. Оказалось, что состав подсистем не вполне корректно отображает функциональную структуру, но зато мы нашли процедуру, которая, вроде бы, должна содержать в себе всё, что нас интересует. Обновление цен должно ведь следовать выбранной стратегии ценообразования, верно? Иначе что она обновляет...

06.04.2024    442    tango    1    

1

Ценовая власть или Управление ценообразованием (УТ 11.5)

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Россия Управленческий учет Абонемент ($m)

Ценовая власть - это способность (возможность) компании изменять в некоторых пределах отпускную цену своего товара (услуг, продукции). Чем в более широких пределах вы можете играть в цену продажи, тем больше этой власти у вас. Если вы не можете управлять отпускной ценой, то это или не ваш бизнес, или не бизнес вовсе. Здесь в рубрике "База знаний аналитика и руководителя проекта" слово проект не ограничено "проектом в 1С". Посмотрим, что для этого есть в УТ 11.5.

1 стартмани

05.04.2024    523    tango    12    

2

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2578    YA_418728146    11    

42

Регистры накопления в 1С:КА2 и 1С:ERP для расчета НДФЛ, страховых взносов и взаиморасчетов с сотрудниками на январь 2024 года. Краткое описание

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет НДФЛ Абонемент ($m)

Для расчета зарплаты и соответствующих налогов в конфигурациях 1С:КА2 и 1С:ERP используется 22 регистра накопления, 7 регистров сведений, 1 регистр расчета и бухгалтерские проводки. В таблице приведены названия этих регистров, указаны основные регистраторы и виды движений приход/расход. В описании приводится краткое функциональное назначение регистров в основных зарплатных процессах. Описание регистров родилось из черновиков при написании различных отчетов и обработок при эксплуатации 1С-овских конфигураций и исправлении ошибок по НДФЛ, взаиморасчетов с сотрудниками и прочих. Информация не претендует на полноценное описание работы регистров, скорее это дискуссионный материал. Но, возможно, кому-то пригодится и сократит время при подготовке отчетности за непростой (в плане учета зарплаты) 2023 год. А возможно, кто-то поделится своим опытом.

1 стартмани

10.01.2024    1126    8    2ncom    3    

8

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Бухгалтерия 3.0 Бесплатно (free)

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4953    mrXoxot    11    

100
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. gmkushkunov 07.05.20 14:40 Сейчас в теме
Спасибо. Идея хорошая, сам сталкивался с этой проблемой ни раз.
В плане реализации можно было бы использовать процедуру с контролем &ИзменениеИКонтроль("СообщитьОбОшибкахКонтрольЗаполненияЦен"), а в ней
#Удаление
Если Выборка.ЕстьОшибкиЗаполненияЦен Тогда
#КонецУдаления
#Вставка
Если Выборка.ЕстьОшибкиЗаполненияЦен И ДокументПродажи.Метаданные().Имя<>"РеализацияТоваровУслуг" Тогда
#КонецВставки

Или еще проще
&После и в ней проверить тип документа
Если ДокументПродажи.Метаданные().Имя<>"РеализацияТоваровУслуг" Тогда Отказ = Ложь КонецЕсли;
в этом случае не будем зависеть вообще от изменения кода процедуры при обновлении конфигурации.

Извините если не доходчиво изложил свои мысли
Diks_Soft; vorkir; nekit_rdx; ne_en; +4
4. ne_en 81 07.05.20 20:12 Сейчас в теме
(1) После не нравится. Это будет дважды отрабатывать цикл. Сначала стандартный, а потом свой. А так, вариантов много.
+
7. gmkushkunov 11.05.20 22:59 Сейчас в теме
(4) Ну в случае &После не обязательно в цикл входить, можно просто на тип документа РеализацияТоваровУслуг проверить и выставить Отказ в Ложь. Это конечно грубо, но как вариант пойдет если других проверок не нужно.
+
8. ne_en 81 13.05.20 09:15 Сейчас в теме
(7) Ну, не известно же по какой причине документ в отказе. Может не по причине нуля, а по какой-то предыдущей проверке. Поэтому таки в цикл. Может там, конечно, и нет предыдущих проверок, но для этого придётся разбирать весь алгоритм. А ещё в 1С могут ещё какую проверку добавить в релизах позже.
+
6. ne_en 81 10.05.20 13:02 Сейчас в теме
(1)
Вот про изменение и контроль хорошо, давно "плАчу", что нет такой фишки в расширениях (в сайтовых модах есть, например в форуме phpbb). В моем уровне совместимости недоступна эта штука, даже не знал, что в новых релизах это уже добавили. А то бы я именно так и сделал. Спасибо за информацию.
+
2. blindcat2006 90 07.05.20 16:50 Сейчас в теме
&После и в ней проверить тип документа
Если ДокументПродажи.Метаданные().Имя<>"РеализацияТоваровУслуг" Тогда Отказ = Ложь КонецЕсли;

Нравится (потому что сам так делал)
только в этом случае
ДокументПродажи.Метаданные().Имя <>= "РеализацияТоваровУслуг" Тогда Отказ = Ложь
+
3. gmkushkunov 07.05.20 17:19 Сейчас в теме
(2)
только в этом случае
ДокументПродажи.Метаданные().Имя <>= "РеализацияТоваровУслуг" Тогда Отказ = Ложь


верно. я просто скопипастил
+
5. ne_en 81 07.05.20 20:15 Сейчас в теме
(2) Не стал делать с После, потому что получается двойной обход цикла. Если сервер высоконагруженный, да документы большие, это уже имеет значение. А так да, можно таким образом.
+
9. mrlakec 04.08.20 07:36 Сейчас в теме
Подскажите, а в последних релизах это как-то поправили? Пытаюсь сделать на последних релизах, почему то контроль все равно работает. Не хочет продавать по нулевой цене. И можно ли как-то в чеке ККМ таким же образом обойти проверку?
+
10. ne_en 81 04.08.20 07:57 Сейчас в теме
(9) Если вы спрашиваете про сделали ли 1Совцы, то вряд ли. Это их новое "достижение".
Если же вы говорите, что применение моего способа в новых релизах не работает, то не в курсе, пока не обновлялся, придётся смотреть что изменилось. У меня этот вопрос пока не актуален.
Но что-то мне кажется, что если и поменяли чего, то лишь перенесли что-то куда-то по модулям в рамках расширения возможностей по расширению (добавление переопределяемых процедур).
+
11. mrlakec 04.08.20 08:01 Сейчас в теме
(10)
мне кажется, что если и поменяли чего, то лишь перенесли что-то куда-то по модулям в рамках расширения возможностей по расширению (добавление пе

Спасибо, уже пару дней мучаюсь с этим. Буду дальше ковырять
+
12. ne_en 81 04.08.20 08:02 Сейчас в теме
(11) Метод из статьи перестал работать?
+
13. mrlakec 04.08.20 08:12 Сейчас в теме
(12)
перестал работ

В данный момент у меня не работает, 2.4.11.106 КА2. До этого не пользовался.
Прикрепленные файлы:
+
14. ne_en 81 04.08.20 15:40 Сейчас в теме
(13) Ничего не изменилось. Должно работать. У вас, видимо, просто расширение не срабатывает (не подключается). Что-то не донастроено в самом расширении. Для проверки точку останова в первой строке процедуры в расширении и в штатной поставьте. Куда войдёт, то и сработало. Если это не расширение, значит в том и проблема (как я скал, не подключилось).
+
15. mrlakec 04.08.20 17:10 Сейчас в теме
(14) Спасибо. Действительно проблема была в расширении. А как можно такое же реализовать в ЧекККМ?
+
16. ne_en 81 05.08.20 02:08 Сейчас в теме
(15) Это нужно смотреть. Не занимался этим вопросом за ненадобностью. Можно попробовать тут же вписать и про ЧекККМ, Вполне вероятно, что проверка используется та же.
+
17. пользователь 11.09.20 03:11
Сообщение было скрыто модератором.
...
18. VKuser1842460 21.10.20 21:09 Сейчас в теме
Приветствую!
Чем плох вариант через "Заказ на внутреннее потребление"?
+
19. пользователь 21.10.20 21:11
Сообщение было скрыто модератором.
...
20. ne_en 81 22.10.20 11:59 Сейчас в теме
(18) В "статье" по этому поводу много сказано.
+
21. zhuravlev_as 395 17.06.21 22:49 Сейчас в теме
Потребность в данном функционале есть и в настоящее время. Оказалось, что отдельно, не поискав предварительно, сделал два расширения. Не только для реализации, но и для приобретения и не только для КА2, но и для УТ 11 - тоже необходимость реальная, ведь если кто-то продает по нулевой цене, то кому-то придется приходовать по нулевой цен. Только в коде расширений проще получилось, например для реализации:

&Вместо("СообщитьОбОшибкахКонтрольЗаполненияЦен")
Процедура РеализЦ_СообщитьОбОшибкахКонтрольЗаполненияЦен(Знач Выборка, Знач ДокументЗакупки, Отказ)
	
	Если ТипЗнч(ДокументПродажи) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
		Возврат;
	КонецЕсли;	
	
	ПродолжитьВызов(Выборка, ДокументЗакупки, Отказ);
КонецПроцедуры
Показать
criptid; +1
22. ne_en 81 21.06.21 12:14 Сейчас в теме
(21) Всё верно, но тогда уж можно было и &Перед использовать. Как я и сказал в (4) вариантов много )))
.
Кстати, стал накатывать обновления и переделал процедуру на &ИзменениеИКонтроль, как посоветовал (1). Так проще заметить, когда 1Совцы что-то сделают с этой процедурой. Система сразу об этом сообщит (поменяют ли её внутренности или вовсе заменят/удалят)
+
Внимание! Тема сдана в архив