При обновлении конфигураций 1С:Комплексная автоматизация или 1С:ERP Управление предприятием до версии 2.4 технические специалисты и пользователи иногда сталкиваются с ситуацией, когда документ ПриобретениеТоваровУслуг проводится без ошибок, однако списываемый или поступающий товар не появляется на остатках. В результате в отчетах появляются отрицательные остатки, а движения по регистрам Товары на складах, Свободные остатки и Товары организаций отсутствуют.
Рассмотрим подробно причины возникновения этой проблемы, связанные с обновлением структуры метаданных и переносом данных из прошлых редакций (например, КА 1.1), а также разберем сопутствующие нюансы работы серверного контекста при выгрузках метаданных.
Проанализируем механику работы документа ПриобретениеТоваровУслуг. При проведении документа алгоритмы конфигурации проверяют параметры договора с поставщиком или соглашения об условиях закупок. В версии 2.4 в справочнике ДоговорыКонтрагентов появилось обязательное поле ВариантОформленияЗакупок (перечисление ВариантыОформленияЗакупок).
Если данные переносились из старых конфигураций (например, 1С:Комплексная автоматизация 1.1) или загружались сторонней обработкой обмена, данный реквизит в существующих договорах остается пустым (Неопределено или пустая ссылка).
Из-за незаполненного реквизита происходят следующие сбои:
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(232)}: Индекс находится за границами массива
ХозяйственнаяОперация = ХозяйственныеОперацииДоговора[0];
ИнициализироватьДанныеДокумента() в модуле объекта при формировании наборов записей регистров накопления просто пропускает генерацию движений по товарному учету, так как система считает, что финансовый документ оформляется отдельно от складского приема или закупка выполняется по специальной схеме.Разберем по шагам, как исправить проблему и вернуть движения по складам:
ВариантОформленияЗакупок в значение Не разделять закупку по договорам (или Закупка по документам / Пречисление.ВариантыОформленияЗакупок.НеРазделять в зависимости от нужной бизнес-логики).Приобретение товаров и услуг. Движения по регистрам Товары на складах и Свободные остатки начнут формироваться корректно.Если реквизиты договора заполнены корректно, однако движений по складам все равно нет, проанализируем настройки склада и логику закупки:
Приобретение товаров и услуг выполняет роль только финансового документа. Физический приход товара на склад оприходуется документом Приходный ордер на товары.При отладке и диагностике метаданных через внешние обработки (например, MD83Exp.epf для 1С:Конвертации данных) разработчики часто сталкиваются с ошибкой при попытке сохранить файл на сервере:
{ВнешняяОбработка.ВыгрузкаМетаданных.МодульОбъекта(44)}: Ошибка при вызове метода контекста (ОткрытьФайл)
мЗаписьXML.ОткрытьФайл(ИмяФайлаВыгрузки, "UTF-8");
по причине:
Ошибка при выполнении файловой операции '\\ИмяСервера\Каталог\ИмяФайла.xml'
Выясним причину такого поведения 1С:Предприятия:
USR1CV83).C:\ или D:\) на сервере не существуют или указывают на локальные диски самого сервера.Для корректной работы с файлами на сервере следует использовать временный каталог сервера или механизм временного хранилища:
// Формирование файла во временном каталоге сервера
ИмяВременногоФайла = КаталогВременныхФайлов() + "ExportMetadata.xml";
мЗаписьXML = Новый ЗаписьXML;
мЗаписьXML.ОткрытьФайл(ИмяВременногоФайла, "UTF-8");
// ... запись данных XML ...
мЗаписьXML.Закрыть();
// Передача файла на клиент через временное хранилище
АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ИмяВременногоФайла));
На клиенте файл принимается из временного хранилища методом ПолучитьИзВременногоХранилища() и сохраняется в каталог, выбранный пользователем.