Многие пользователи 1С:УНФ сталкиваются с ситуацией, когда, несмотря на корректно заданные единицы измерения и коэффициенты пересчета в карточке номенклатуры, при изменении единицы измерения непосредственно в документе (например, в поступлении или реализации) количество товара не пересчитывается автоматически. Это может приводить к ошибкам в учете и требует ручного вмешательства. В этой статье мы подробно разберем, как решить эту проблему, используя как стандартные настройки системы, так и, при необходимости, доработку конфигурации.
Прежде чем переходить к доработке, давайте убедимся, что все стандартные настройки выполнены верно. 1С:УНФ предоставляет гибкие возможности для учета товаров в различных единицах измерения, что особенно актуально для торговых и производственных предприятий, где один и тот же товар может поставляться, храниться и продаваться в разных фасовках (например, штуки, упаковки, килограммы).
После корректной настройки всех этих параметров система в большинстве случаев должна автоматически пересчитывать количество и цену при изменении единицы измерения в табличных частях документов.
Если после тщательной проверки всех вышеуказанных настроек автоматический пересчет количества все еще не происходит, это может быть связано с несколькими причинами:
Если стандартные настройки не привели к результату, наиболее вероятным решением является внесение изменений в код конфигурации. Это особенно важно для документов закупки и продажи.
Нам необходимо найти обработчик события для изменения единицы измерения. В нашем случае это событие ЗапасыЕдиницаИзмеренияОбработкаВыбора.
В найденном обработчике события необходимо добавить логику, которая получит текущую строку, определит коэффициенты и выполнит расчет нового количества.
&НаКлиенте
Процедура ЗапасыЕдиницаИзмеренияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Если ВыбранноеЗначение = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.СписокЗапасов.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.Номенклатура = Неопределено Тогда
ПоказатьПредупреждение(, "Для пересчета необходимо сначала выбрать номенклатуру.");
Возврат;
КонецЕсли;
СтараяЕдиницаИзмерения = ТекущиеДанные.ЕдиницаИзмерения;
СтароеКоличество = ТекущиеДанные.Количество;
ТекущиеДанные.ЕдиницаИзмерения = ВыбранноеЗначение;
РезультатПересчета = ПересчитатьКоличествоНаСервере(ТекущиеДанные.Номенклатура, СтараяЕдиницаИзмерения, ВыбранноеЗначение, СтароеКоличество);
Если РезультатПересчета.Успех Тогда
ТекущиеДанные.Количество = РезультатПересчета.НовоеКоличество;
Иначе
ПоказатьПредупреждение(, РезультатПересчета.Сообщение);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПересчитатьКоличествоНаСервере(Номенклатура, СтараяЕдиницаИзмерения, НоваяЕдиницаИзмерения, СтароеКоличество)
Результат = Новый Структура("Успех, Сообщение, НовоеКоличество", Ложь, "", 0);
// Логика получения коэффициентов через запрос к справочнику ЕдиницыИзмерения
// ...
Возврат Результат;
КонецФункции
Важные моменты при доработке:
Окр(), чтобы избежать дробных остатков там, где их быть не должно.Для обычного пользователя внесение изменений в конфигуратор — это сложная задача. Если вы не обладаете навыками программирования, настоятельно рекомендуем обратиться за помощью к квалифицированному программисту 1С, чтобы гарантировать стабильность работы системы.
Автоматический пересчет единиц измерения в документах 1С:УНФ — важный аспект для эффективного управления запасами. Помните, что любые изменения в логике работы документов напрямую влияют на управленческую отчетность и точность данных в системе. Своевременная настройка или грамотная доработка позволят вам избежать ошибок в учете и автоматизировать рутинные операции.