1C 7.7 ТиС Групповой программный перенос документов на новую дату.
03.11.2010
00:22
#1
"Здравствуйте. Клиент захотел, чтобы необработанные заявки (за состояние заявки отвечает новый реквизит) переносились с прошлых чисел на текущее. Сделал следующим образом:
Дат = ТекущаяДата();
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
Док.ВыбратьДокументы(Дат-ДнейПереноса-1,Дат-1);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Стадия = Перечисление.СтадииЗаявки.НеОбработана Тогда
Если Док.Проведен()=1 Тогда
Док.СделатьНеПроведенным();
Док.ДатаДок = Дат;
Док.Записать();
ИначеЕсли Док.ПометкаУдаления()=0 Тогда
Док.ДатаДок = ТекущаяДата();
Док.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если попробовать провести документ, который был проведен до этого, но с новой датой, то 1С ругается: Документ не проведен! :<Объект не найден>. Если сделать как написано, то переносит, но ... цикл не работает. Т.е. перенес один док, прекратилась обработка, снова нажимаешь Выполнить, еще один. И так далее. Как я понимаю проблема с ссылками на доки.
Подскажите, пожалуйста, как обойти эту проблему и возможно ли. А то в голову лезут совсем уж безумные способы реализации ... заранее спасибо."
Дат = ТекущаяДата();
Док = СоздатьОбъект("Документ.ЗаявкаПокупателя");
Док.ВыбратьДокументы(Дат-ДнейПереноса-1,Дат-1);
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Стадия = Перечисление.СтадииЗаявки.НеОбработана Тогда
Если Док.Проведен()=1 Тогда
Док.СделатьНеПроведенным();
Док.ДатаДок = Дат;
Док.Записать();
ИначеЕсли Док.ПометкаУдаления()=0 Тогда
Док.ДатаДок = ТекущаяДата();
Док.Записать();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если попробовать провести документ, который был проведен до этого, но с новой датой, то 1С ругается: Документ не проведен! :<Объект не найден>. Если сделать как написано, то переносит, но ... цикл не работает. Т.е. перенес один док, прекратилась обработка, снова нажимаешь Выполнить, еще один. И так далее. Как я понимаю проблема с ссылками на доки.
Подскажите, пожалуйста, как обойти эту проблему и возможно ли. А то в голову лезут совсем уж безумные способы реализации ... заранее спасибо."
03.11.2010
06:35
#2
Нельзя внутри цикла "Пока Док.ПолучитьДокумент() = 1" менять дату или номер документа. Выборка при этом рушится.
Надо сначала сохранить ссылки на все обрабатываемые документы, например, в таблице значений. А затем уже проходить по таблице значений, получать документы и обрабатывать их.
Надо сначала сохранить ссылки на все обрабатываемые документы, например, в таблице значений. А затем уже проходить по таблице значений, получать документы и обрабатывать их.
03.11.2010
13:44
#5
Для выделения цветом строки документа в журнале. Серый - необработана, красный - отдана на склад, зеленый - собрана. Для этого и сделал реквизит "Состояние" и перечисление этих состояний. И клиенту надо, чтобы все серые с прошлых дней переходили на текущий.
03.11.2010
16:55
#6
> Для выделения цветом строки документа в журнале. Серый - необработана, красный - отдана на склад, зеленый - собрана. Для этого и сделал реквизит "Состояние" и перечисление этих состояний. И клиенту надо, чтобы все серые с прошлых дней переходили на текущий.
странно
а ему не надо видеть историю состояния ?
странно
а ему не надо видеть историю состояния ?
06.11.2010
15:24
#7
Нет. Это исключительно для удобной навигации по заявкам. Там может за день у каждого менеджера быть не по одному десятку и им надо беглым взглядом видеть, отдана ли эта заявка на склад или надо распечатать, собрана ли она уже и т.п.
как я понимаю, вы намекаете на доведение этого до способа оценки эффективности работы складовщика? У них такой проблемы не стоит. Он один, крупных заявок не так много за день, а вот небольших достаточно много для небольшого количества персонала..
как я понимаю, вы намекаете на доведение этого до способа оценки эффективности работы складовщика? У них такой проблемы не стоит. Он один, крупных заявок не так много за день, а вот небольших достаточно много для небольшого количества персонала..
06.11.2010
15:49
#8
> Нет. Это исключительно для удобной навигации по заявкам. Там может за день у каждого менеджера быть не по одному десятку и им надо беглым взглядом видеть, отдана ли эта заявка на склад или надо распечатать, собрана ли она уже и т.п.
>
> как я понимаю, вы намекаете на доведение этого до способа оценки эффективности работы складовщика? У них такой проблемы не стоит. Он один, крупных заявок не так много за день, а вот небольших достаточно много для небольшого количества персонала..
я имею ввиду, что можно было всё сделать на "штатных механизмов"
пример была заявка покупателя
введи док
потом оплатили эту заявку
на основании дока заявки делаем заявку на склад (жёсткий резерв)
потом отгрузка или отмена заявки
=> я вижу все состоянии заявки от "заявлении" до момента отгрузки/отмены (т.е. история и будут доки)
>
> как я понимаю, вы намекаете на доведение этого до способа оценки эффективности работы складовщика? У них такой проблемы не стоит. Он один, крупных заявок не так много за день, а вот небольших достаточно много для небольшого количества персонала..
я имею ввиду, что можно было всё сделать на "штатных механизмов"
пример была заявка покупателя
введи док
потом оплатили эту заявку
на основании дока заявки делаем заявку на склад (жёсткий резерв)
потом отгрузка или отмена заявки
=> я вижу все состоянии заявки от "заявлении" до момента отгрузки/отмены (т.е. история и будут доки)
06.11.2010
16:17
#9
неплохой вариант. Но оплата может прийти после сборки заявки на складе. Но это мелочь. А вот как они будут отслеживать, какие заявки уже собраны? проводить реализацию - неправильно ,т.к. клиент за этой заявкой может приехать и через день и через 2 или вообще отказаться в итоге. Кроме того, можно видеть, какие заявки сейчас конкретно в сборке, а какие еще в очереди на нее.
Читают тему
(гостей: 1)