gifts2017

Восстановление последовательности в 1С 7.7 "Торговля и склад"

Опубликовал Вадим Вадим (sonic112) в раздел Обработки - Обработка документов

Всем, кто мучается с восстановлением последовательности в 1С 7.7 «Торговля и склад»… Стандартная программа восстановления последовательности останавливается по ошибке, предоставляя вам самим искать, куда делся тот товар, который раньше при проведении был, а теперь куда-то делся. Обработка позволяет немного облегчить жизнь, пытаясь самостоятельно разрешить некоторые ошибочные ситуации.

Общий подход к решению проблемы: при недостатке товара (для проведения документов перемещения и заявок покупателя) создать документ оприходования с временем на 1 секунду ранее того документа, который не проводится. Если таких товаров в документе несколько, они помещаются в один документ оприходования. Все оприходованные товары, необходимые для проведения документов, собираются вместе в документе списания, помещаемого в конец последнего дня, по которому проходило восстановление последовательности. Документ списания остается не проведенным, после окончания работы обработки его нужно провести. Для исключения возможных ошибок его проведения создается документ снятия резервов товара, если в свободном остатке нет нужного количества товара для списания.  В анализ не включаются ситуации, когда не проводится документ реализации, поскольку при недостатке товара, уже отгруженного покупателю, могут возникнуть проблемы при его списании. Однако включить документ реализации в анализ несложно, добавив проверку на вид документа в строке 653:

                                               ИначеЕсли (Вид = "ЗаявкаПокупателя") или

                                                                                 (Вид = "ПеремещениеТМЦ") или

  (Вид = "Реализация") Тогда

Дополнительно проверяется:

  1. Сторнирование проблемного документа. Если он сторнирован, то для этого документа и документа «Сторно» отменяется проведение.
  2. Снятие товара с резерва. При восстановлении последовательно нередко возникает ситуация перераспределения резервов между покупателями, поэтому указанное количество товара для снятия с резерва может превышать количество зарезервированного товара на данный момент. Документ снятия с резерва исправляется путем уменьшения снимаемого с резерва количества до нужного уровня. Если оставшееся количество – нуль, строка удаляется. Если не остается строк, – документ не проводится.

Процесс восстановления отражается в таблице, в каждой строке указывается документ, который был проведен после исправления ситуации. Протокол восстановления можно получить кнопкой «Печать». Обработка работает в монопольном и не монопольном режиме.

Необходимы небольшие добавления в главном модуле. Объявляем глобальную переменную, в которую будут попадать данные об ошибках:

Перем глСообщениеОбОшибке Экспорт; //текст последней ошибки

В процедуру глНеПроводить(Конт,Сообщение) Экспорт добавляем строку

                глСообщениеОбОшибке = Сообщение;

В тексте главного модуля при использовании процедуры глНеПроводить в текст сообщения добавляем код номенклатуры (по нему будет определяться номенклатура), например, так:

                глНеПроводить(Конт,"На складе нет нужного свободного количества ТМЦ "+СокрЛП(ТекНоменклатура.Код)+" "+ТекНоменклатура.Наименование

+". "+РазделительСтрок+"    Всего осталось "+Строка(ОстатокНаСкладе)+" "+ТекНоменклатура.БазоваяЕдиница

+?(РезервНаСкладе <> 0 ,". "+РазделительСтрок+"    Зарезервировано по выписанным Заявкам "+Строка(РезервНаСкладе) +" "+ТекНоменклатура.БазоваяЕдиница,"")

                                               +"."+РазделительСтрок+"Требуемое количество "+Строка(ТаблНоменклатуры.Количество)+" "+ТекНоменклатура.БазоваяЕдиница);

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Инфо_ВосстановлениеПоследовательности.ert
.ert 48,50Kb
24.01.14
40
.ert 1.0 48,50Kb 40 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Ф. (fasik) 08.03.14 11:47
Выдает : Процедура не обнаружена (ОбъектЗаписать)
Что не так делаю?
Как исправить?
2. Вадим Вадим (sonic112) 08.03.14 12:23
ОбъектЗаписать - функция записи объектов установленного модуля обмена MOD. Как я понимаю, у вас этот модуль не установлен, поэтому везде по тексту программы текст ОбъектЗаписать(Объект,) или ОбъектЗаписать(Док,) нужно заменить на стандартную функцию записи Объект.Записать() или Док.Записать() соответственно.
Прикрепленные файлы:
imageАватар
3. Вадим Вадим (sonic112) 08.03.14 12:27
Можно вставить процедуру
Процедура ОбъектЗаписать(Объект, Параметр=0)
Объект.Записать();
КонецПроцедуры
Прикрепленные файлы:
imageАватар
4. Vlad (KillHunter) 09.03.14 10:16
либо как вариант
попытка
ОбъектЗаписать(Объект, Параметр=0)
исключение
конецпопытки;
5. Вадим Вадим (sonic112) 09.03.14 15:48
Скорее так:
Процедура ОбъектЗаписать(Объект, Параметр=0)
Попытка
Объект.Записать();
Исключение
КонецПопытки;
КонецПроцедуры
Прикрепленные файлы:
imageАватар
6. Александр (SwAlX) 10.09.14 04:21
Автор, хорошая идея.
А приходуете товары по какой цене?
И по какой цене происходит их списание конечным документом списания?

Т.е. я это к тому, что к примеру отловила ваша обработка отсутствие товара год назад, поставила его на приход, соответственно это влияет на себестоимость данного товара. Потом ваша обработка создала документ списания данного товара (а у него за это время цена дважды поменялась) - корректной ли будет себестоимость данного товара после таких манипуляций?
7. Вадим Вадим (sonic112) 11.09.14 16:22
Товары приходуется по ценам с типом "Закупочные" на дату документа оприходования. Конечно, нужно постоянно заниматься обновлением этого типа цен.
Искажение себестоимости, конечно, возможно.
1. Если в списании по документам расхода участвуют партии до документа оприходования, то себестоимость списанных партий в документах расхода не изменяется, остаток оприходованного товара в сумме реального поступления замещается на тот же остаток по ценам последнего поступления. Мне это не кажется существенным искажением.
2. Если в списании по документам расхода участвует партия документа оприходования, то для для этих документов расхода товара возможное расхождение себестоимости попадет на счет прибылей и убытков по этому документу расхода и по документу оприходования, в сумме давая ноль. Себестоимость остатка меняться не должна, если вы, конечно, не приходуете товар для проведения документов реализации. В данном случае отнесение на прибыль происходит по разной аналитике. У себя я заметного искажения счета прибыли по разной аналитике не замечал, по-видимому, у нас нет резкого изменения закупочных цен.
Если у вас отклонения существенны, то необходимо чаще делать восстановление последовательности.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа