Пропуск нулевых цен в установке цен. УТ 11.4

Сотрудники клиента в установке одного вида цен часто очищали цены, думая, что они не будут устанавливаться. Однако 1С со спокойной совестью ставила цену «ноль», в итоге в регистре цен появлялись «дырки»:

Движения для регистрации цен формируются запросом:

Меняем запрос расширением модуля менеджера документа «Установка цен»:


&Вместо("ТекстЗапросаТаблицаЦеныНоменклатуры")
Функция дор_ТекстЗапросаТаблицаЦеныНоменклатуры(Запрос, ТекстыЗапроса, Регистры)
	
	Результат = ПродолжитьВызов(Запрос, ТекстыЗапроса, Регистры);
	
	//Пропускаем нулевые цены
	Результат = СтрЗаменить(Результат, "ГДЕ", "ГДЕ ТаблицаТовары.Цена <> 0 И ");
	
	//Заменяем нужный элемент списка
	Эл = НайтиПоПредставлениюВСписке(ТекстыЗапроса, "ЦеныНоменклатуры");
	Эл.Значение = Результат;
	
	//Возвращаемый текст, увы, не используется, это обман со стороны 1С
	Возврат Результат;
	
КонецФункции

Функция НайтиПоПредставлениюВСписке(Список, Представление) Экспорт
	Для Каждого Эл ИЗ Список Цикл
		Если Эл.Представление = Представление Тогда
			Возврат Эл;
		КонецЕсли;
	КонецЦикла;
КонецФункции

Как видите, даже в такой простой задаче есть небольшая «подстава» от 1С. Оказывается, у функции есть побочный эффект, а ее возврат не используется. Еще и фукнцию поиска по представлению в списке пришлось писать, в платформе ее нет.

Проверяем, движения до изменений были такими:

После изменений:

Следовательно, в итоге доработок нулевые цены не проставляются, что и требовалось получить.

Среда: 11.4.13.46 Объем: 0.5 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *