При переносе данных из старых систем (например, 1С:Торговля и Склад 7.7) в современные конфигурации на платформе 1С 8.3, такие как «1С:Розница 2.0», специалисты часто сталкиваются с техническими сложностями. Одной из наиболее распространенных проблем является ситуация, когда при использовании стандартной обработки «Загрузка данных из табличного документа» номенклатура и цены успешно переносятся в документ, а колонка с количеством остается пустой, какие бы форматы чисел ни пробовал пользователь.
В этой статье мы подробно разберем, почему возникает эта ошибка, проанализируем внутреннюю структуру хранения данных в «1С:Розница» и предложим несколько пошаговых решений этой задачи.
Разберем ситуацию, с которой столкнулся автор темы. В конфигурации «1С:Розница 2.0» (и более поздних версиях) архитектура табличных частей документов поступления или оприходования сложнее, чем кажется на первый взгляд. Поле Количество зачастую является производным или тесно связанным с полем КоличествоУпаковок.
Проанализируем программную логику: когда мы работаем с документом вручную, при вводе количества программа автоматически подставляет единицу измерения (упаковку) и рассчитывает общее количество. Однако при программном заполнении через внешнюю обработку эта автоматика может не срабатывать, если данные передаются только в одно из полей. Если в настройках сопоставления обработки указано только поле Количество, а поле КоличествоУпаковок (или Упаковка) остается пустым, система может очищать данные при попытке записи объекта, так как нарушается логическая целостность данных.
Рассмотрим самое простое и эффективное решение, которое помогло пользователям на форуме. Выясним, какие именно поля доступны для выбора в настройках обработки при заполнении табличной части документа.
Количество и укажем для него номер колонки из нашего файла Excel.Количество упаковок (или аналогичное, в зависимости от версии обработки) и укажем для него тот же самый номер колонки.Упаковка (или Единица измерения). Если в исходном файле нет единиц измерения, можно использовать режим «Установить значение» и выбрать базовую единицу измерения (например, «шт»).Таким образом, мы принудительно записываем данные в оба связанных поля, что позволяет конфигурации корректно обработать строку документа.
Иногда проблема кроется не в сопоставлении полей, а в качестве самих данных. Рассмотрим ситуацию, когда в ячейках Excel содержатся невидимые символы или неверные разделители. Проанализируем типичный случай: число «1 000,00» может содержать неразрывный пробел (код символа 160), который 1С не распознает как число.
В настройках обработки для поля Количество мы можем прописать выражение на языке 1С, которое будет выполняться при загрузке. Разберем пример кода для очистки строки от лишних пробелов и приведения ее к числовому типу:
// Очистка текста ячейки от пробелов и неразрывных пробелов
ТекстДляОбработки = СтрЗаменить(ТекстЯчейки, Символы.НПП, "");
ТекстДляОбработки = СтрЗаменить(ТекстДляОбработки, " ", "");
// Замена запятой на точку для универсальности (если требуется)
ТекстДляОбработки = СтрЗаменить(ТекстДляОбработки, ",", ".");
// Результат загрузки
Результат = Число(ТекстДляОбработки);
Использование подобных конструкций в колонке «Выражение» гарантирует, что в поле Количество попадет именно число, а не строка, что критично для корректной работы бизнес-логики документа.
Посмотрим на проблему шире. В «1С:Розница» использование упаковок регулируется функциональной опцией. Перейдем в раздел «Администрирование» -> «Настройки номенклатуры». Если флаг «Упаковки номенклатуры» включен, программа всегда будет ожидать заполнения справочника упаковок.
Проанализируем алгоритм загрузки: если вы загружаете данные в документ ПоступлениеТоваров, программа пытается найти соответствие между единицей хранения остатков и упаковкой в документе. Если единица измерения для номенклатуры не была загружена заранее (в справочник Номенклатура), то поле количества в документе может блокироваться. Поэтому рекомендуем придерживаться следующей последовательности действий:
Номенклатура, обязательно заполнив БазоваяЕдиницаИзмерения.Выясним еще один важный нюанс. Автор сообщения пытался загрузить остатки в документ Поступление товаров. Однако этот документ предназначен для отражения факта закупки у поставщика и требует заполнения контрагента, договора и зачастую влияет на взаиморасчеты.
Для корректного переноса начальных остатков из 7.7 в «1С:Розница 2.0» правильнее использовать документ «Оприходование товаров». Рассмотрим преимущества этого подхода:
ОприходованиеТоваров проще по структуре полей.Попробуем выполнить загрузку именно в этот документ, используя те же принципы сопоставления колонок Количество и КоличествоУпаковок, которые мы разобрали ранее.
Завершая наш разбор, подведем итоги. Проблема пустых полей при загрузке в 1С чаще всего связана не с ошибкой самой программы, а с особенностями взаимодействия полей в управляемых формах.
Важные моменты, которые мы выяснили:
Число() и СтрЗаменить() в обработке).Оприходование товаров.Соблюдение этих правил позволит вам избежать потери данных при миграции из старых систем и значительно сэкономит время на ручной корректировке документов.