|
|
|
Как в обработке выполнить движение регистров? | ☑ | ||
|---|---|---|---|---|
|
0
gar_den
05.07.06
✎
12:36
|
Есть обработка, которая должна списать товары по регистру ТоварныйЗапас. Но при выполнении обработки возникает ошибка: "Движения регистров не могут выполняться у данного объекта."
Как это исправить??? |
|||
|
1
zhas79
05.07.06
✎
12:36
|
Никак. Движения регистров могут делать только документы.
|
|||
|
2
zhas79
05.07.06
✎
12:37
|
Но обработка может создавать специальный документ и проводить его, а уж этот документ спишет товары
|
|||
|
3
gar_den
05.07.06
✎
14:17
|
А как создать этот документ? Я пишу:
док = СоздатьОбъект("Документ"); док.Новый(); Выскакивает ошибка: Не определен вид документа. |
|||
|
4
Mort
05.07.06
✎
14:25
|
Жжёте, тов. автор.
док = СоздатьОбъект("Документ.КакойДокументНадоСоздать"); |
|||
|
5
evGenius
05.07.06
✎
14:27
|
(0) RTFM
|
|||
|
6
Ork
05.07.06
✎
14:28
|
(3) Оченно неплохо было-бы после слова документ через точку указать его вид.
Либо попользовать процедуру НазначитьВид(). Но на мой взгляд это не поможет. |
|||
|
7
gar_den
05.07.06
✎
14:34
|
(4) Создал. Потом делаю операции с регистром, а он пишет: "Движения регистров не могут выполняться у данного объекта."
|
|||
|
8
evGenius
05.07.06
✎
14:35
|
(7) Код в студию. Хоть посмеемся может.
|
|||
|
9
gar_den
05.07.06
✎
14:38
|
спр = СоздатьОбъект("Справочник.Поставщики");
док = СоздатьОбъект("Документ.Новый1"); Запрос = СоздатьОбъект("Запрос"); перс = Дата("01.01.01"); перпо = Дата("01.01.07"); ТекстЗапроса = " |Период С перс По перпо; |Отдел = Регистр.ПродажиТоваров.Отдел; |Товар = Регистр.ПродажиТоваров.Товар; |Поставщик = Регистр.ПродажиТоваров.Поставщик; |Количество = Регистр.ПродажиТоваров.Количество; |Сумма = Регистр.ПродажиТоваров.Сумма; |Функция ВсегоПродаж = Сумма(Количество); |Группировка Отдел; |Группировка Товар; |Группировка Поставщик; |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; док.Новый(); док.НомерДок = "1"; док.ДатаДок = РабочаяДата(); Пока Запрос.Группировка(1) = 1 Цикл Пока Запрос.Группировка(2) = 1 Цикл Пока Запрос.Группировка(3) = 1 Цикл спр.НайтиЭлемент(Запрос.Поставщик); процент = спр.ПроцентКомВоз; Регистр.ТоварныйЗапас.Отдел = Запрос.Отдел; Регистр.ТоварныйЗапас.Товар = Запрос.Товар; Регистр.ТоварныйЗапас.Поставщик = Запрос.Поставщик; Регистр.ТоварныйЗапас.Количество = Запрос.Количество; Регистр.ТоварныйЗапас.Стоимость = Запрос.Сумма + Запрос.Сумма * процент/100; Регистр.ТоварныйЗапас.ДвижениеРасходВыполнить(); КонецЦикла; КонецЦикла; КонецЦикла; док.Записать(); |
|||
|
10
evGenius
05.07.06
✎
14:40
|
Регистр.ТоварныйЗапас.Отдел = Запрос.Отдел;
Регистр.ТоварныйЗапас.Товар = Запрос.Товар; Регистр.ТоварныйЗапас.Поставщик = Запрос.Поставщик; Регистр.ТоварныйЗапас.Количество = Запрос.Количество; Регистр.ТоварныйЗапас.Стоимость = Запрос.Сумма + Запрос.Сумма * процент/100; Регистр.ТоварныйЗапас.ДвижениеРасходВыполнить(); Это должно быть в ОбработкаПроведения() твоего документа, а не в модуле обработки. |
|||
|
11
catena
05.07.06
✎
14:42
|
док = СоздатьОбъект("Документ.Новый1");
Это правда, у вас так документ называется? |
|||
|
12
gar_den
05.07.06
✎
14:42
|
А Запрос?
|
|||
|
13
gar_den
05.07.06
✎
14:43
|
(11) Это пока пробная версия
|
|||
|
14
evGenius
05.07.06
✎
14:44
|
(13) ;-)))
|
|||
|
15
catena
05.07.06
✎
14:45
|
(13)В цикле:
Заполняешь табличную чать своего документа Новый1, потом док.Провести() В обработке проведения документа Новый1 движения по регистру |
|||
|
16
evGenius
05.07.06
✎
14:45
|
Выбирай данные в обработке, заполняй в обработке документ, проводи его. А сами движения делай по данным в проведении документа.
|
|||
|
17
gar_den
05.07.06
✎
14:46
|
Ух ты! Работает!
|
|||
|
18
zhas79
05.07.06
✎
14:46
|
(12) запрос пусть делается в обработке, а вот по его результатам должен заполняться документ и вызываться Док.Провести()
Но ИМХО, это через одно место. Проще сделать документ "Списание товарного запаса" и в нем кнопку "Заполнить", по которой будет выполняться запрос и заполняться табличная часть. Тогда юзеры вместо обработки будут открывать документ и нажимать кнопку "Заполнить", а потом "Провести" |
|||
|
19
evGenius
05.07.06
✎
14:46
|
(0) Еще раз RTFM
|
|||
|
20
catena
05.07.06
✎
14:47
|
(19) RTFM позволяет делать обработкой движения регистров?
|
|||
|
21
gar_den
05.07.06
✎
14:47
|
(18) Я тоже думаю что это через то место, но в задаче сказано делать так
|
|||
|
22
evGenius
05.07.06
✎
14:49
|
(20) После данного действия не возникает кода, подобного (9)
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |