![]() |
![]() |
![]() |
|
Программное создание документов. | ☑ | ||
---|---|---|---|---|
0
bard666
10.10.11
✎
21:31
|
Столкнулся со следущей шнягой: необходимо при проведении документа содать и провести ещё один. конкретно: при проведении РТУ создать оприходование товаров с датой на пару минут раньше, чтоб было что списать... Сначала процедуру создания засунул в обработку проведения, потом пробовал переносить в процедуры при записи, перед записью, но бесполезняк. Процедура проста:
ДокОприход = Документы.ОприходованиеТоваров.СоздатьДокумент(); ДокОприход.Дата = Дата - 60; Заполняю организацию, необходимые колонки табличной части, комментарий, склад. Провожу тока в уп. учете. ДокОприход.Записать(РежимЗаписиДокумента.Проведение); После всего этого документ в системе не появляется, записей по регистрам тоже никаких. Смотрел по отладчику. После записи переменная обретает вид документа. Номер присвоен, проведен = истина... В чем прикол не понимаю.. Проверял права пользователя: право на создание, проведение есть, даже под полными такой бред появляется.. Кто-то что-то посоветует? |
|||
1
ОбычныйЧеловек
10.10.11
✎
21:40
|
(0) что-то ты явно не договариваешь.
|
|||
2
Мимохожий Однако
10.10.11
✎
21:41
|
(0)Создавать другой документ при проведении неправильно.
|
|||
3
bard666
10.10.11
✎
21:41
|
Например? Спрашивай - отвечу.
|
|||
4
bard666
10.10.11
✎
21:42
|
А как правильнее?
|
|||
5
ОбычныйЧеловек
10.10.11
✎
21:42
|
(2) оно конечно неправильно, но тем не менее работает, автор явно что-то не договаривает.
|
|||
6
Мимохожий Однако
10.10.11
✎
21:42
|
(3)Традицинное: Зачем, почему именно так?
|
|||
7
Мимохожий Однако
10.10.11
✎
21:43
|
Используй ввести на основании с проверкой проведенности исходного документа.
|
|||
8
bard666
10.10.11
✎
21:47
|
Изобретение местных внедренцев.
Ситуевина такова: идет отгрузка, заказной продукции тупо может не быть на остатках, но доки создать надо, вот и придумалась шняга создания оприходования, чтоб система не орала на отсутствие товара.. |
|||
9
Мимохожий Однако
10.10.11
✎
21:50
|
Разрешить отгружать в минут "по факту". В конце дня обработкой создать документы Оприходования.
|
|||
10
ОбычныйЧеловек
10.10.11
✎
21:50
|
(8) может ты не весь код посмотрел - может дальше по коду идет удаление этого дока :)
|
|||
11
Мимохожий Однако
10.10.11
✎
21:50
|
в минут = в МИНУС
|
|||
12
ОбычныйЧеловек
10.10.11
✎
21:53
|
(10) скорее всего боятся,что если позволить списывать в минус то спишут в минус не только заказную продукцию а вообще все, что под руку попадется - менеджерам только дай волю - продадут все - вплоть до офиса )
|
|||
13
Sidney
10.10.11
✎
21:55
|
Поставь Попытка и обрабатывай полученную ошибку.
|
|||
14
bard666
10.10.11
✎
21:56
|
Почему под одним и тем же пользователем то создается, то нет?))
Или снова недоговариваю: то вставлю удаление, то сотру?)) |
|||
15
bard666
10.10.11
✎
21:57
|
Нет ошибок-то: говорю ж переменная пишет, что записан и проведен.
|
|||
16
ОбычныйЧеловек
10.10.11
✎
21:57
|
(14) причина скорее всего банальна, но не видя весь код гадать можно долго.
|
|||
17
ОбычныйЧеловек
10.10.11
✎
21:59
|
все таки в какую процедуру ты воткнул проведение доп.дока?
|
|||
18
bard666
10.10.11
✎
22:05
|
В итоге она в ПередЗаписью()
|
|||
19
bard666
10.10.11
✎
22:05
|
Код сча попробую вытащить..
|
|||
20
ОбычныйЧеловек
10.10.11
✎
22:07
|
(18) в таком случае посмотри на дату твоего создаваемого дока.
|
|||
21
bard666
10.10.11
✎
22:09
|
Думаешь на первый день первого года улепетывает?
|
|||
22
ОбычныйЧеловек
10.10.11
✎
22:09
|
(21) а ты глянь
|
|||
23
bard666
11.10.11
✎
14:57
|
Вот процедура создания дока
ДокОприх = Документы.ОприходованиеТоваров.СоздатьДокумент(); ТаблДокОприход = ДокОприх.Товары; Для Каждого Стр Из Товары Цикл //Проверим есть ли товар по регистру ТоварыОрганизации КоличествоНехДАР = МодульАркис.ПроверкаОстатковПоОрганизации(Стр, Склад, Справочники.Организации.НайтиПоКоду("000000101"), Дата); //Если нет: Если КоличествоНехДАР > 0 Тогда //Проверяем заказной товар: Если Стр.Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоКоду("00000005506") ИЛИ Стр.Номенклатура.Родитель = Справочники.Номенклатура.НайтиПоКоду("00000005512") Тогда НоваяСтрокаОприход = ТаблДокОприход.Добавить(); НоваяСтрокаОприход.Номенклатура = Стр.Номенклатура; НоваяСтрокаОприход.ЕдиницаИзмерения = Стр.Номенклатура.ЕдиницаХраненияОстатков; НоваяСтрокаОприход.Количество = КоличествоНехДАР; НоваяСтрокаОприход.Цена = ПолучитьЦену(Стр.Номенклатура, Дата); НоваяСтрокаОприход.ЦенаВРознице = НоваяСтрокаОприход.Цена; НоваяСтрокаОприход.СтатусПартии = Перечисления.СтатусыПартийТоваров.Продукция; НоваяСтрокаОприход.Сумма = НоваяСтрокаОприход.Количество * НоваяСтрокаОприход.Цена; КонецЕсли; КонецЕсли; КонецЦикла; //Если таблчасть заполнена, вводим остальные данные и проводим док Если ТаблДокОприход.Количество() > 0 Тогда ДокОприх.ВидОперации = Перечисления.ВидыОперацийОприходованиеТоваров.ОприходованиеТоваров; ДокОприх.Комментарий = "Создан автоматически по документу " + Ссылка; ДокОприх.Организация = Справочники.Организации.НайтиПоКоду("000000101"); ДокОприх.Склад = Склад; ДокОприх.Ответственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный"); ДокОприх.Дата = Дата - 60; ДокОприх.ОтражатьВУправленческомУчете = Истина; ДокОприх.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |