gifts2017

Выборочное списание партий товаров в "Управление торговлей" редакции 10

Опубликовал Геннадий Петин (GreenLab) в раздел Программирование - Практика программирования

Реализация выборочного списания партий товаров в "Управление торговлей" редакции 10

Пользователи работавшие с конфигурацией "Торговля и Склад" редакции 9 на платформе 1С Предприятие 7.7 наверное помнят, что в добавок к методам партионного учета себестоимости товаров: "FIFO","LIFO", в документах "Расходная накладная", "Перемещение ТМЦ", "Списание ТМЦ" существовала возможность выбора для списания конкретной партии товара, независимо от настроек учета. В конфигурации "Управление торговлей" редакции 10 разработчики такую возможность явно не реализовали. Иногда все же бывают ситуации, когда нужно списать товар из более поздней или ранней партии,  конечно можно использовать серии или характеристики номенклатуры , но это не всегда удобно. Не берусь судить о методологии учета реализованной в "Управление торговлей", но хочу поделиться с сообществом идеей реализации возможности выборочного списания партий товаров.

В конфигурации имеет регистр сведений "Списанные товары". Из комментария к регистру, мы узнаем следующее: "Содержит данные документов, необходимые для выполнения движений, связанных со списанием партий товаров". Это служебный регистр сведений, документ списания  формирует записи по данному регистру, которые в дальнейшем используются процедурами из модуля "Управление запасами партионный учет" для непосредственно списания партий товаров и формирования движений по регистру накопления "Партии товаров на складах (управленческий учет)".

Один из реквизитов регистра сведений "Списанные товары" называется "Документ Партии", из комментария следует : "Документ партии (документ поставки, документ реализации)". Указав при проведении значение данного реквизита, мы тем самым явно задаем "приоритетный" документ партии.

Реализовать в данный реквизит запись ссылки на документ партии  достаточно просто.

Разберем на примере документа "Реализация товаров и услуг":

В табличную часть "Товары" необходимо добавить реквизит "ДокументПартии". Проще всего скопировать его из регистра сведений "Списанные товары" и вставить в табличную часть "Товары".

Далее необходимо в форме документа реализовать выбор конкретной партии товара. Один из простейших вариантов обработчика выбора:

Процедура ТоварыДокументПартииНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
    Если НЕ ЭтоНовый() Тогда
        ТекстЗапроса = "
        |ВЫБРАТЬ
        |ПартииТоваровНаСкладахОстатки.Номенклатура,
        |ПартииТоваровНаСкладахОстатки.ДокументОприходования,
        |ПартииТоваровНаСкладахОстатки.ДокументОприходования.Контрагент КАК Поставщик,
        |ПартииТоваровНаСкладахОстатки.ДокументОприходования.Организация КАК Организация,
        |СУММА(ПартииТоваровНаСкладахОстатки.КоличествоОстаток) КАК Количество,
        |СУММА(ВЫБОР КОГДА ПартииТоваровНаСкладахОстатки.КоличествоОстаток > 0 ТОГДА
      |ВЫРАЗИТЬ(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток/ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК ЧИСЛО(15,2))
        |ИНАЧЕ ПартииТоваровНаСкладахОстатки.СтоимостьОстаток КОНЕЦ) КАК СтоимостьЕдиницы,
        |СУММА(ПартииТоваровНаСкладахОстатки.СтоимостьОстаток)  КАК Стоимость
        |ИЗ
        |РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Период,Номенклатура=&Номенклатура и Склад=&Склад и СтатусПартии=&СтатусПартии) КАК ПартииТоваровНаСкладахОстатки
        |ГДЕ (ПартииТоваровНаСкладахОстатки.ДокументОприходования.Организация.Ссылка = &Организация)
        |СГРУППИРОВАТЬ ПО
        |ПартииТоваровНаСкладахОстатки.Номенклатура,ПартииТоваровНаСкладахОстатки.ДокументОприходования
        |УПОРЯДОЧИТЬ ПО ПартииТоваровНаСкладахОстатки.Номенклатура.Наименование,ДокументОприходования.Дата";

        Запрос = Новый Запрос();
        Запрос.Текст = ТекстЗапроса;
       
        Запрос.УстановитьПараметр("Период"       ,ЭтотОбъект.МоментВремени());
        Запрос.УстановитьПараметр("Номенклатура" ,СтрокаТабличнойЧасти.Номенклатура);
        Запрос.УстановитьПараметр("Склад"        ,?(ЗначениеЗаполнено(СтрокаТабличнойЧасти.Склад),СтрокаТабличнойЧасти.Склад,ЭтотОбъект.Склад));
        Запрос.УстановитьПараметр("СтатусПартии" ,Перечисления.СтатусыПартийТоваров.Купленный);
        Запрос.УстановитьПараметр("Организация"  ,ЭтотОбъект.Организация);
       
        РезультатЗапроса = Запрос.Выполнить().Выгрузить();
        ВыбраннаяСтрока =  РезультатЗапроса.ВыбратьСтроку("Выберите документ оприходования");
       
        Если ВыбраннаяСтрока <> Неопределено Тогда
            СтрокаТабличнойЧасти.ДокументПартии = ВыбраннаяСтрока.ДокументОприходования;
        КонецЕсли  
       
    Иначе
        ОбщегоНазначения.СообщитьОбОшибке("Действие недоступно для незаписанного документа");
    КонецЕсли;   
    СтандартнаяОбработка = Ложь;
КонецПроцедуры

Теперь необходимо модифицировать процедуру подготовки таблицы товаров "ПодготовитьТаблицыДокумента", для проведения про регистрам . Необходимо в структуру полей добавить реквизит "ДокументПартии".

Процедура ПодготовитьТаблицыДокумента(СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре) Экспорт
    .......
    СтруктураПолей.Вставить("КоличествоВЕдиницахДокумента"       , "Количество");
    СтруктураПолей.Вставить("ДокументПартии"                     , "ДокументПартии"); //Добавляем в структуру полей "ДокументПартии"

    .......

 

Данный метод имеет некоторые ограничения в применении. Здесь не учитывается случай с комиссионной торговлей, нет проверки серий и характеристик номенклатуры, оставляю это все на совести разработчика.

Этим методом стоит пользоваться только при условии  соблюдения "порядка" в учете. В случае частого проведения "задним числом" или наличии расхождений между складским и партионным учетом вы рискуете лишь добавить себе проблем.

 

 

 

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Ийон Тихий (cool.vlad4) 02.10.11 11:49
Ящик пандоры, не? был у меня опыт "встречи" с программкой, где списание партии - выборочное...- обычная торговля, задние числа...это была жесть...перенос в 1С был неописуемым удовольствием...
2. Геннадий Петин (GreenLab) 02.10.11 12:03
Безусловно, выборочное списание должно использоваться скорее как исключение, если это станет правилом,то с учетом скорее всего что-то не так.
Светлый ум; +1 Ответить
3. Ийон Тихий (cool.vlad4) 02.10.11 12:11
Вот этого в статье нет - "то с учетом скорее всего что-то не так." . Кстати "В конфигурации "Управление торговлей" редакции 10 разработчики такую возможность явно не реализовали." - я бы задался вопросом почему не реализовали? и потом (может ошибаюсь), вроде есть вопрос в тестировании, как можно организовать выборочное списание партий?
4. Геннадий Петин (GreenLab) 02.10.11 14:29
(3) cool.vlad4, Повторюсь: не стану обсуждать методологию учета использованную в "Управление торговлей", хотя в ней хватает спорных моментов, но все эти вопросы не однократно обсуждались на профильных форумах. Есть ситуации когда партия в учетной системе точно соответствует партии товара на складе, у них разная стоимость, учет ведется по FIFO, но нужно списать товар пришедший последним а не первым. Использовать серии или характеристики не всегда удобно.
5. Zoomby Zoomby (Zoomby) 02.10.11 15:10
 Использовать серии или характеристики не всегда удобно.

Но это единственный выход в типовой.
6. Геннадий Петин (GreenLab) 02.10.11 15:49
Приведу пример из своей практики: есть клиент у которого учет "вылизан" от и до. Ситуация, когда что-то не списалось по партиям считается чуть ли не ЧП :-). Они конечно скорее исключение, чем правило. У них осталась партия кондиционеров в конце сезона корейского производства (по документам на них нет ГТД - особенности бизнеса в России) купленная ранее и партия таких же кондиционеров но сделанных в России, российского производства дешевле в закупке, розничная цена одинаковая, у поставщиков это одна позиция. В первую очередь со склада отпускают пришедшие позднее российские, т.к. "корейцы" уйдут в любом случае, даже не в сезон по более дорогим ценам. Такой же пример могу привести по авто шинам.
7. Сергей Ожерельев (Поручик) 02.10.11 16:51
Таких ситуаций масса. Торговля медикаментами, продажа агрегатов типа транспортных средств, двигателей, etc. На прошлой работе я тоже реализовывал сабж, в другом виде, но методика совпадала.
8. Иван Фотиев (photiev) 03.10.11 09:53
А чем предложенная методика лучше учета по сериям, если рассматривать серию как отельную партию.
9. Сергей Ожерельев (Поручик) 03.10.11 10:13
(8) Учет по сериям по некоторым причинам не всем подходит.
10. Геннадий Петин (GreenLab) 03.10.11 11:08
photiev пишет:

А чем предложенная методика лучше учета по сериям, если рассматривать серию как отельную партию.

Серии чаще всего воспринимаются как способ учета импортного товара по ГТД, предложенный вариант списания партий скорее способ корректировки стандартного списания партий, нежели метод ведения учета. Я уже об этом написал выше.
11. Alexandr Климчук (undo) 05.10.11 23:47
У меня производство, серии мы используем для учета продукции выходящей из производства, там у нас срок хранения, дата производства и т.д. Иногда для производства продукции используется сырое которое даст наибольшие процент выхода готовой продукции, и к сожалению это не всегда первая партия. Поэтому мне то же пришлось предоставить пользователю выбор партии товара.
12. Александр Омельянов (proger1c81) 06.10.11 01:02
по опыту могу сказать, что оператор должен очень хорошо владеть информацией о своих партиях и помнить про корректировки задним числом. Я пока не встречал таких пользователей
13. Alexandr Климчук (undo) 08.10.11 16:36
в частности у меня производство выведено в отдельный цикл с собственными поступлениями и перемещениями на склад для дальнейшей продажи, и занимается этим один адекватный пользователь. так что можно считать что мне повезло. А по сути проблемы скажу следующее. Предоставление пользователю самостоятельного выбора партии необходимо, НО как любая привилегия она должна предоставлять пользователю который осознает что он делает и как это повлияет на дальнейший процесс...
14. Геннадий Петин (GreenLab) 09.10.11 22:18
undo пишет:
Предоставление пользователю самостоятельного выбора партии необходимо, НО как любая привилегия она должна предоставлять пользователю который осознает что он делает и как это повлияет на дальнейший процесс...


Точнее и не скажешь, и то, что такую возможность не сделали разработчики в типовых, лишь подтверждает то, что для большинства такую "привилегию" давать не стоит.
15. Геннадий Петин (GreenLab) 09.10.11 22:21
статья была написана по той причине, что данный вопрос несколько раз встречался мне на профильных форумах, а конкретно алгоритмом "зубры" поделиться не изволили.
16. Ильшат (shatt) 03.05.12 22:56
Вы меня просто очень и очень выручили!!!!
Спасибо за методу огромное!
Здорово, что есть Инфостарт!!!
17. Иван (John83) 23.10.13 17:12
Конечно же попробую, но кто-нибудь в рабочей базе использовал такое?
18. Павел (sidka89) 24.10.13 13:36
метода хорошо работает на демке, в идеальном ведении учета...мои юзеры зарубили за полчаса, рукастые люди:)
Gendalf_beliy; +1 Ответить 1
19. Геннадий Петин (GreenLab) 24.10.13 14:37
(18) Метод работает на реальных задачах, иначе здесь бы не публиковался. Если быть точнее, то этот метод не совсем указывает партию к списанию. Метод указывает приоритетную для списания партию. Если в результате изменений задним числом нет остатка указанной партии, то при повторном проведении по FIFO(LIFO) списываются имеющиеся на момент проведения.
Kesak; lesenoklenok; ZLENKO; +3 Ответить
21. ZLENKO.PRO (ZLENKO) 14.01.14 18:20
Реализовывал аналогичную задачу - надо было делать некоторые реализации с идентифицированной себестоимостью - партии подбирались в документ реализации. Вообще за последний год было много нестандартных задач по партионному учету. Например, перемещение с транзитным складом: одним документом разными датами перемещается товар со склада отправителя на транзитный склад и с транзитного склада на склад получатель. Перемещение с преобразованием одной номенклатуры в другую (перемещение на склад брака). Разукомплектация с восстановлением себестоимости на основании документов комплектации. И т.д. ...
Вобщем у моего заказчика богатая фантазия на тему себестоимости оказалась :-)
22. Nathan Rothschild (Rothschild) 14.01.14 18:31
(21) ZLENKO.PRO,
интересно...а соответствует ли партионный учет реалиям жизни.
Ведь все зависит от того, какую там "коробку" (или "колесо")
кладовщик схватит и потащит (или покатит).
23. Nathan Rothschild (Rothschild) 14.01.14 18:32
(22)

Ну в аптеках - там каждуюю упаковку лейблят этикеткой с ценой
- это в общем-то крайний случай
- и понятно что тут есть "партионный" учет.
24. Nathan Rothschild (Rothschild) 14.01.14 18:33
(23)
Но насколько организация работы складов в целом
(среднестатистически) адекватна тому партионному учету
,
который ведется в компаниях
(если он конечно ведется ;)) ???
25. Геннадий Петин (GreenLab) 15.01.14 21:55
(24) Rothschild, Ну я собственно приводил вполне конкретную ситуацию у моего клиента в (6), когда эта методика актуальна.
26. ZLENKO.PRO (ZLENKO) 20.01.14 19:43
(22) Ответ по поводу адекватности партионного учета носит субъективный характер.
27. Елена Ситникова (lesenoklenok) 24.01.14 14:01
Очень интересная статья, иногда данная функция списывания товара по определенной партии нужна.
28. Язва Жопы (Sergafan10) 26.01.14 12:02
КА не работает. Партию указываю, а он в танке, - действует, как указано в учётке, по ФИФО, берёт остататок первой партии и потрошит следующие. Куда копнуть?
29. Геннадий Петин (GreenLab) 26.01.14 13:07
(28) Sergafan10, В КА используется РАУЗ. Метод актуален только для УТ 10.3
30. Язва Жопы (Sergafan10) 26.01.14 13:16
(29) GreenLab, не, у нас партионка. Заработало. Я облажался в назначении типа добавленному реквизиту "ДокументПартии". Был "Строка", а должен быть составной с указанием документов. ;) Прошу прощения!
31. Наталья (bahcha8) 28.01.14 15:00
Действительно, такие ситуации случаются, но все же не на столько часто, чтобы не хватало функционала учета по сериям. Хотя у нас тоже поступают просьбы сделать возможность указания конкретной партии. Пока отбиваемся. Этот функционал надо вложить ТОЛЬКО в руки понимающего человека, а то никакой тебе себестоимости))).
32. Евгений М (val54321) 04.03.14 11:15
Есть подобный метод для УТ 11.1?
33. Иван (John83) 11.04.14 17:01
Не учтены движения по партиям НДС.