|   |   | 
| 
 | Подписка на обработку проведения УПП 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) там ценаПродажи     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |