Рассмотрим распространенную ситуацию в конфигурации 1С:Управление торговлей (редакция 11.3): оформляется документ приема товара на комиссию, затем выполняется реализация этого товара. Однако при анализе движений по регистру сведений и накопления Товары на складах организаций выясняется, что система делает движение с типом запаса «Собственный товар» вместо «Комиссионный товар», хотя собственных остатков по позиции вовсе нет.
Проанализируем архитектуру подсистемы учета запасов в 1С:УТ 11. При первом проведении документа Реализация товаров и услуг система автоматически определяет источник происхождения товара (тип запаса, комитент, ГТД и др.) и кэширует эти данные в служебной табличной части документа — ВидыЗапасов.
Выясним, почему при изменении исходных данных (например, проведения поступления задним числом) обычное перепроведение документа не меняет тип запаса:
ВидыЗапасов происходит при первом проведении. Это оптимизирует скорость проведения документов и защищает зафиксированную себестоимость и партии от случайного пересчета.ВидыЗапасов намеренно не очищается и не пересчитывается автоматически. Если первоначально документ был проведен до поступления товара или с ошибками в хронологии, в нем остается зафиксированным тип «Собственный товар».Поступление товаров от комитента, программа в момент формирования видов запасов не видит комиссионных остатков и подставляет доступный по умолчанию собственный тип запаса.Разберем по шагам варианты исправления ситуации: программный способ и штатные механизмы системы.
Чтобы система заново пересчитала и подставила правильные типы запасов при проведении, необходимо предварительно очистить служебную табличную часть ВидыЗапасов объекта документа.
Посмотрим на пример кода, с помощью которого можно программно очистить табличную часть и перепровести документ:
// Получаем объект документа реализации
ДокументОбъект = СсылкаНаРеализацию.ПолучитьОбъект();
// Очищаем табличную часть с закэшированными видами запасов
ДокументОбъект.ВидыЗапасов.Очистить();
// Записываем и проводим документ заново
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
После выполнения этого кода система во время проведения выполнит автоматический подбор запасов с нуля. Так как документ поступления от комитента уже проведен, программа корректно определит наличие комиссионного товара и сформирует движения по типу запаса «Комиссионный товар».
Если нет возможности выполнять программную обработку, разберем штатный алгоритм действий в пользовательском режиме:
Реализация товаров и услуг.Поступление товаров от комитента проведен и его дата/время строго предшествуют времени реализации.Таким образом, своевременный контроль хронологии проведения и очистка закэшированной табличной части ВидыЗапасов позволяют оперативно устранить пересортицу по типам запасов в 1С:Управление торговлей 11.