Как разрешить продажу по нулевой цене, или 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).

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

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

 

См. также

Связь настроек спецификации и настроек структуры заказа в ЕРП 2.5

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

Проблемы при создании ресурсной спецификации. Связь настроек спецификации и настроек структуры заказа в ЕРП 2.5.

06.05.2024    408    It-digit    1    

2

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

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

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

1 стартмани

11.04.2024    621    tango    1    

3

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

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

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

10 стартмани

11.04.2024    486    tango    5    

4

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

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

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

08.04.2024    851    tango    0    

2

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

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

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

1 стартмани

05.04.2024    699    tango    12    

2

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

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

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

07.02.2024    2875    YA_418728146    11    

49

Регистры накопления в 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    1384    8    2ncom    6    

8

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

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

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

28.12.2023    5241    mrXoxot    11    

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

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

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

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


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

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

В данный момент у меня не работает, 2.4.11.106 КА2. До этого не пользовался.
Прикрепленные файлы:
14. ne_en 82 04.08.20 15:40 Сейчас в теме
(13) Ничего не изменилось. Должно работать. У вас, видимо, просто расширение не срабатывает (не подключается). Что-то не донастроено в самом расширении. Для проверки точку останова в первой строке процедуры в расширении и в штатной поставьте. Куда войдёт, то и сработало. Если это не расширение, значит в том и проблема (как я скал, не подключилось).
15. mrlakec 04.08.20 17:10 Сейчас в теме
(14) Спасибо. Действительно проблема была в расширении. А как можно такое же реализовать в ЧекККМ?
16. ne_en 82 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 82 22.10.20 11:59 Сейчас в теме
(18) В "статье" по этому поводу много сказано.
21. zhuravlev_as 396 17.06.21 22:49 Сейчас в теме
Потребность в данном функционале есть и в настоящее время. Оказалось, что отдельно, не поискав предварительно, сделал два расширения. Не только для реализации, но и для приобретения и не только для КА2, но и для УТ 11 - тоже необходимость реальная, ведь если кто-то продает по нулевой цене, то кому-то придется приходовать по нулевой цен. Только в коде расширений проще получилось, например для реализации:

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