|
Подписка на обработку проведения УПП 1с8.3 | ☑ | ||
---|---|---|---|---|
0
Casper211
27.09.16
✎
14:44
|
Добрый день! Мне необходимо при проведении документа РТУ записать данные в регистр (который я самостоятельно создал). Мне сказали использовать подписка на событие. Я все правилньо сделал : создал подписку, привязал к ней общий модуль с таким кодом:??
Процедура РтуЦенаПродажиПрайсоваСебестоимостьОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт Для каждого Строка Из Источник.Товары Цикл Движение = Источник.Движения.ПродажиПрайсоваСебестоимость.Добавить(); Движение.Период = Строка.ЗаказПокупателя.Дата; Движение.Организация = Строка.ЗаказПокупателя.Организация; Движение.Номенклатура = Строка.Номенклатура; Движение.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Движение.Количество = Строка.Количество; Движение.Стоимость = Строка.Цена; КонецЦикла; Источник.Движения.ПродажиПрайсоваСебестоимость.Записывать = Истина; КонецПроцедуры Но немного долго думает 2-3 секунды, во время кнопки провести (записать) РТУ. Возможно есть какой-то другой способ? подскажите пожалуйста. |
|||
1
John83
27.09.16
✎
14:49
|
для начала посмотри, в каком месте зависает
|
|||
2
RomanYS
27.09.16
✎
14:50
|
(0) тормозить здесь нечему, кроме
Строка.ЗаказПокупателя.Организация; лучше заменить на Источник.Организация; А вообще конечно сделать замер и посмотреть |
|||
3
Serg_1960
27.09.16
✎
14:51
|
угу, в конфигураторе Отладка - Замер производительности.
|
|||
4
hhhh
27.09.16
✎
14:52
|
попробуйте запросом вытащить из Источник.Товары
а то вроде сейчас век кибернетики, а вы фигачите запросы в цикле. Движение.Период = Строка.ЗаказПокупателя.Дата; Движение.Организация = Строка.ЗаказПокупателя.Организация; это же дикость |
|||
5
Serg_1960
27.09.16
✎
14:54
|
"Строка.ЗаказПокупателя.Организация" - циклическое обращение к базе, чтение и загрузка на клиента объекта "ЗаказПокупателя".
|
|||
6
rbcvg
27.09.16
✎
14:54
|
какой-то странный регистр.
|
|||
7
RomanYS
27.09.16
✎
14:56
|
(6) ага, особенно радует:
Движение.Стоимость = Строка.Цена; |
|||
8
Casper211
27.09.16
✎
14:56
|
(1) (2) (3) странно, но уже не зависает.
Извините что потревожил. (4) переделаю на Движение.Период = Источник.Дата; Движение.Организация = Источник.Организация; (6)(7) я еще не доделал, данные будут немного другие. всем спасибо |
|||
9
RomanYS
27.09.16
✎
14:59
|
(8) "данные будут немного другие" - получай все данные запросом и загружай их набор движений без цикла.
|
|||
10
Serg_1960
27.09.16
✎
14:59
|
PS: из источника бери организацию - в строках другой организации, кроме указанной в источнике не должно быть.
(8) "странно, но уже не зависает" - после первого чтения, данные кэшируются и читаются оттуда. |
|||
11
Casper211
27.09.16
✎
15:01
|
(10) Вроде давно уже в 1с, но я еще такой зеленый
|
|||
12
rbcvg
27.09.16
✎
15:05
|
(11) еще больше удивишся, когда узнаешь, что новый регистр тут не нужен.
|
|||
13
hhhh
27.09.16
✎
15:07
|
(12) чем больше регистров, тем больше денег можно содрать с клиента. Так что регистр нужен.
|
|||
14
Nuobu
27.09.16
✎
15:07
|
ПродажиПрайсоваСебестоимость
буква "я" пропущена? Можно писать сразу набор, может быстрей будет. Последння строка: Движение.Стоимость = Строка.Цена; Это регистр сведений? |
|||
15
Serg_1960
27.09.16
✎
15:07
|
(11) Просто не всё сразу легко и доступно, не всё запоминается и вовремя вспоминается - практикой нивелируется :)
PS: поговори ещё минутку с нами, и запуск алгоритма опять "зависнет" на пару секунд - кэш протух и требует обновления :) |
|||
16
rbcvg
27.09.16
✎
15:09
|
(13) "Вроде давно уже в 1с, но я еще такой зеленый")))))
|
|||
17
Serg_1960
27.09.16
✎
15:10
|
(12) Возможно это только "болванка", а уникальная информация будет добавлена автором в алгоритм позднее.
(14) Это, кстати, нормальная практика. Чтобы избежать случайного попадания на идентификаторы типовой конфигурации сейчас и/или в будущем. |
|||
18
Nuobu
27.09.16
✎
15:12
|
(17) Что именно нормальная практика? Делать ошибки в словах?
|
|||
19
Serg_1960
27.09.16
✎
15:13
|
Не переживай:) Программист, как ёлка, - круглый год зелёный... всю свою профессиональную жизнь :)))
|
|||
20
hhhh
27.09.16
✎
15:14
|
(18) может это фамилие такое? "Прайсов".
|
|||
21
Nuobu
27.09.16
✎
15:15
|
(20) Тогда уже его жена - госпожа "Прайсова".
|
|||
22
Serg_1960
27.09.16
✎
15:15
|
(18) Да. Сознательно делать ошибки, но не в словах - это безграмотность, а в наименованиях. Могу даже поискать примеры типового кода.
|
|||
23
Casper211
27.09.16
✎
15:16
|
(14) (20) Так захотел клиент. Клиент - прежде всего!)))
|
|||
24
hhhh
27.09.16
✎
15:16
|
(21) тогда бы было ПродажиПрайсовой
|
|||
25
Nuobu
27.09.16
✎
15:17
|
(23) Очень странно, что клиент указывает, как назвать объекты метаданных.
|
|||
26
hhhh
27.09.16
✎
15:19
|
(25) стоп, у вас на Украине ведь правильно "Прайсова", а не "Прайсовая". Сам же украинец и своего языка не знаешь.
|
|||
27
Nuobu
27.09.16
✎
15:22
|
(26) Тогда было бы "ПродажнаПрайсоваСобивартисть".
|
|||
28
Serg_1960
27.09.16
✎
15:24
|
"прайсова стоимость"- это ж налоговый термин в/на Украине :)
|
|||
29
Nuobu
27.09.16
✎
15:25
|
(28) Вартисть - это по украински - Стоимость.
|
|||
30
Casper211
27.09.16
✎
15:27
|
Процедура РтуЦенаПродажиПрайсоваСебестоимостьОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
//НаборДвижений = Источник.Движения.ПродажиПрайсоваСебестоимость; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.НомерСтроки, | РеализацияТоваровУслугТовары.ЕдиницаИзмерения, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры, | РеализацияТоваровУслугТовары.ЗаказПокупателя, | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.Цена * РеализацияТоваровУслугТовары.Количество КАК ЦенаПрайс |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних | ПО РеализацияТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | И РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры = ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &РТУ"; Запрос.УстановитьПараметр("Период", Источник.Дата); Запрос.УстановитьПараметр("РТУ", Источник.Ссылка); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Для каждого Строка Из РезультатЗапроса Цикл Движение = Источник.Движения.ПродажиПрайсоваСебестоимость.Добавить(); Движение.Период = Строка.Ссылка.Дата; Движение.Организация = Строка.Ссылка.Организация; Движение.Номенклатура = Строка.Номенклатура; Движение.ХарактеристикаНоменклатуры = Строка.ХарактеристикаНоменклатуры; Движение.Количество = Строка.Количество; Движение.Стоимость = Строка.Цена; КонецЦикла; Источник.Движения.ПродажиПрайсоваСебестоимость.Записывать = Истина; // НаборДвижений.Записать(); КонецПроцедуры Вот так норм? |
|||
31
Casper211
27.09.16
✎
15:29
|
Или как сказал (9) "получай все данные запросом и загружай их набор движений без цикла." ??
|
|||
32
Nuobu
27.09.16
✎
15:31
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата, | РеализацияТоваровУслугТовары.Ссылка.Организация КАК Организация, | РеализацияТоваровУслугТовары.Количество, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры, | ЦеныНоменклатурыСрезПоследних.Цена КАК Стоимость |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &РТУ"; Запрос.УстановитьПараметр("Период", Источник.Дата); Запрос.УстановитьПараметр("РТУ", Источник.Ссылка); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Источник.Движения.ПродажиПрайсоваСебестоимость.Загрузить(РезультатЗапроса); //Что-то вроде такого я имел ввиду... Источник.Движения.ПродажиПрайсоваСебестоимость.Записывать = Истина; |
|||
33
Vladal
27.09.16
✎
15:34
|
(27) "ПродажнаПрайсоваСобiвартiсть"
|
|||
34
Serg_1960
27.09.16
✎
15:34
|
РеализацияТоваровУслугТовары.Ссылка.Дата КАК Период
|
|||
35
Nuobu
27.09.16
✎
15:35
|
(34) а, точно, не досмотрел.
(33) Точно! |
|||
36
Casper211
27.09.16
✎
15:35
|
(34) (35) Спасибо!
|
|||
37
Serg_1960
27.09.16
✎
15:36
|
:) И Вам спасибо. Весело время провели. "Собiвартiсть" :))
|
|||
38
Casper211
27.09.16
✎
15:38
|
(37) =) название это глупости. Я всегда могу их переименовать. Главное чтобы работало корректно.
|
|||
39
hhhh
27.09.16
✎
16:07
|
(33) там ценаПродажи
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |