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