При работе с программным продуктом Альфа-Авто: Автосалон+Автосервис+Автозапчасти Корп. Редакция 6 пользователи и технические специалисты часто сталкиваются с ситуацией, когда после обновления системы привычные операции начинают выдавать ошибки. В таких случаях своевременный анализ конфигураций и расширений на наличие ошибок позволяет быстро выявить проблемные участки кода. Одной из наиболее специфичных проблем является невозможность проведения документа Корректировка по согласованию сторон, созданного на основании Заказ-наряда или Реализации товаров и услуг. Система выдает сообщение: «Запись не верна! Значение поля "Склад" не может быть пустым!». Рассмотрим подробно причины возникновения этой ошибки и алгоритм её решения.
Прежде всего, разберем, почему возникает это сообщение. В системе 1С ошибки такого типа генерируются платформой в момент записи набора записей в регистр накопления или регистр сведений. Это означает, что сам документ Корректировка реализации может иметь заполненный реквизит Склад в шапке, но при формировании движений код конфигурации не передает значение склада в конкретную строку регистра.
В конфигурациях линейки «Альфа-Авто» основным механизмом, отвечающим за учет реализации, является регистр накопления «Продажи». В этом регистре измерение Склад является обязательным. Проанализируем цепочку документов: Заказ-наряд -> Реализация товаров -> Корректировка. В Заказ-наряде склад обычно не указывается в шапке документа, так как товары могут списываться с разных складов или перемещаться в производство (цех). В шестой версии программы складская аналитика в Заказ-нарядах распределена по строкам табличной части Товары, где также критически важно отслеживать минимальные и максимальные остатки товаров для корректного резервирования.
После перехода на новые релизы (например, ветки 6.0.40.х или 6.1.х) разработчики из компании Рарус часто меняют механизмы формирования движений. Изучая ошибки при проведении документов в Альфа-Авто после обновления, можно выделить основные гипотезы, почему поле остается пустым:
Продажи может подтягиваться не из шапки корректировки, а из настроек Подразделения или Цеха, указанного в исходном Заказ-наряде. Если в карточке подразделения не заполнен «Склад по умолчанию», механизм проведения может «потерять» значение. Подобные разрывы в аналитике часто напоминают проблемы, возникающие, когда инвентаризация маркированных товаров не совпадает с данными складского учета.Заказ-наряда данные переносятся в структуру, которая затем анализируется модулем проведения. Если в исходном документе в ТЧ Товары склад был заполнен некорректно или объект склада был помечен на удаление, корректировка не сможет его подставить. В таких случаях может потребоваться перепривязка складов в карточках товаров.Для устранения ошибки нам необходимо пройти путь от простой проверки данных до использования инструментов отладки.
Проанализируем исходный Заказ-наряд, на основании которого создана корректировка. Перейдем на вкладку «Товары». Нам нужно убедиться, что в каждой строке заполнен реквизит Склад. Обратите внимание, что в некоторых интерфейсах этот реквизит может быть скрыт. Воспользуйтесь командой «Изменить форму», чтобы отобразить колонку Склад в табличной части.
Если склад заполнен, проверим карточку самого склада. Он должен быть активен, не помечен на удаление и входить в ту же организацию, по которой оформляется документ. При работе с большими объемами данных также рекомендуется проверить, как настроено создание заказов товара поставщикам, чтобы исключить влияние некорректных заказов на цепочку документов.
В системе крайне важна корректная настройка связи Подразделений и Складов. Разберем алгоритм проверки:
Подразделения.Заказ-наряде.Продажи.Если визуальная проверка не дала результатов, нам придется прибегнуть к помощи технических средств. Для глубокого анализа того, почему стандартные механизмы дают сбой, можно использовать инструментарий для проверки конфигураций на наличие ошибок, который помогает выявить проблемы в экспортных процедурах общих модулей. Рассмотрим примерный алгоритм поиска через отладку:
Продажи в процедуре ПередЗаписью.ЭтотОбъект. Нам нужно пролистать таблицу записей и найти строку, где колонка Склад имеет значение Неопределено или ПустаяСсылка.Зачастую проблема кроется в функции, которая собирает данные из табличной части. Посмотрим на пример кода, который может помочь выявить пустые значения программно (его можно запустить во внешней обработке для анализа документа):
// Пример кода для проверки заполнения складов в ТЧ документа
ДокОбъект = Документы.КорректировкаРеализации.НайтиПоНомеру("0001", ТекущаяДата()).ПолучитьОбъект();
Для Каждого СтрокаТовары Из ДокОбъект.Товары Цикл
Если Не ЗначениеЗаполнено(СтрокаТовары.Склад) Тогда
Сообщить("В строке №" + СтрокаТовары.НомерСтроки + " отсутствует склад!");
КонецЕсли;
КонецЦикла;
В некоторых случаях в документе Корректировка по согласованию сторон поле Склад в шапке может не транслироваться в движения, если логика программы настроена на получение склада из «Сведений о поставке». Проанализируем дополнительные реквизиты документа. Также стоит убедиться, что карточка клиента заполнена корректно, используя заполнение контрагентов по ИНН, так как ошибки в данных контрагента иногда приводят к неверному определению условий поставки и складов.
Важный момент: если вы используете расширения, проверьте, не перекрывают ли они модули проведения. Часто после обновления конфигурации расширения начинают работать некорректно, передавая пустые структуры данных в типовые механизмы проведения.
Подведем итог. Ошибка «Склад не может быть пустым» в Альфа-Авто 6 — это результат нарушения цепочки передачи аналитики от Заказ-наряда к регистру Продажи. Для решения проблемы:
Заказ-наряда заполнен склад.Подразделения/Цеха.Использование отладчика остается самым надежным способом, так как продукты компании Рарус имеют сложную архитектуру с множеством вложенных вызовов процедур в общих модулях, и только пошаговая проверка позволит увидеть, в какой момент «теряется» ссылка на склад. Для предотвращения подобных ситуаций в будущем рекомендуется внедрить автоматизированное создание заказов поставщикам, что позволит стандартизировать складской учет еще на этапе закупки.