Имя: Пароль:
1C
1С v8
Изменить документ
0 azeml
 
06.07.14
13:43
Доброго дня !
ДОПОМОЖІТЬ з такою проблемою вроді все правильно роблю.Мені потрібно замінити число документа і тип цен.До документа підключається.

инд = 1;
    Дата2= ТекущаяДата();
    провед = Ложь;
    Виборка = Новый Запрос;
    Виборка.УстановитьПараметр("Дата1",Дата);
    Виборка.УстановитьПараметр("Дата2",Дата2);
    Виборка.УстановитьПараметр("Провед",провед);
    Виборка.Текст=
     "ВЫБРАТЬ
     |    ЗаказПокупателя.Дата,
     |    ЗаказПокупателя.Проведен,
     |    ЗаказПокупателя.ТипЦен,
     |    ЗаказПокупателя.Контрагент,
     |    ДоговорыКонтрагентов.ТипЦен КАК ТипЦен1,
     |    ЗаказПокупателя.Ссылка,
     |    ЗаказПокупателя.Номер,
     |    ДоговорыКонтрагентов.ТипЦен.Код
     |ИЗ
     |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
     |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
     |        ПО ЗаказПокупателя.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка
     |ГДЕ
     |    ЗаказПокупателя.Дата МЕЖДУ &Дата1 И &Дата2
     |    И ЗаказПокупателя.Проведен = &Провед";
    Реззап = Виборка.Выполнить().Выбрать();
    Пока Реззап.Следующий() Цикл
          Состояние(инд);
          инд = инд + 1;
          Если Реззап.ТипЦен <> Реззап.ТипЦен1 Тогда
              Цена=  Справочники.ТипыЦенНоменклатуры.НайтиПоКоду(Реззап.ТипЦенКод);
              заказ = Документы.ЗаказПокупателя.НайтиПоНомеру(Реззап.Номер , Реззап.Дата);
              заказ.ПолучитьОбъект().ТипЦен = Цена;    
              заказ.ПолучитьОбъект().Дата = ТекущаяДата();
              заказ.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Запись);
        КонецЕсли;
        
    КонецЦикла;
1 Armando
 
06.07.14
13:46
Не понимать
Языком общения на форуме является русский
http://www.forum.mista.ru/rules.php
2 Armando
 
06.07.14
13:47
заказ.ПолучитьОбъект()
одного раза достаточно
3 azeml
 
06.07.14
13:47
Здравствуйте!
ПОМОГИТЕ с такой проблемой вроде все правильно делаю. Мне нужно заменить число документа и тип цен.До документа подключается.
4 Бешеная Нога
 
06.07.14
13:48
Имхо тема - попытка вброса гамна на вентилятор. До этого автор вполне сносно задавал вопросы на русском языке
5 azeml
 
06.07.14
13:49
сори
6 oslokot
 
06.07.14
13:49
(3) да вы полиглот прям
7 oslokot
 
06.07.14
13:50
А это украинский или суржик?
8 Wobland
 
06.07.14
13:51
ссылки из запроса принципиально не хочешь доставать или запрещает кто?
9 Wobland
 
06.07.14
13:52
(8) то бишь пользоваться ими
10 Vladal
 
06.07.14
13:56
заказ = Документы.ЗаказПокупателя.НайтиПоНомеру(Реззап.Номер , Реззап.Дата);
заказ.ПолучитьОбъект().ТипЦен = Цена;    
заказ.ПолучитьОбъект().Дата = ТекущаяДата();
заказ.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Запись);

ПолучитьОБъект() - Правильно
всё остальное неправильно. По сути ты каждый раз получаешь объект не записывая.

Получил объект, изменил цену, объект не записал
Получил объект, изменил дату и снова не записал - база опять ничего про нового про него не узнала.
Третий раз получил объект и тут же его записал.

Кстати, тебе в прошлой ветке дали правильное решение:
v8: Изменить документ
11 Wobland
 
06.07.14
13:58
(10) в прошлой ветке был трэш и угар с поиском по номеру. тут хоть ссылки видно
12 hhhh
 
06.07.14
14:00
(5) надо объект поместить в переменную

ДокументЗаказ = заказ.ПолучитьОбъект();
13 azeml
 
06.07.14
14:06
СПАСИБО большое помогло.
14 Wobland
 
06.07.14
14:09
чтоб не копипастил
http://i.imgur.com/6aIGfOw.png
15 hhhh
 
06.07.14
14:18
(14) правильнее быстрее

Объ.ТипЦен = Выборка.ТипЦен1;
16 Wobland
 
06.07.14
14:21
я ждал этого замечания ;)
соединение в запросе будет быстрее получения через точку от объекта?
17 hhhh
 
06.07.14
14:23
(16) да, получается Об.ДоговорКонтрагента.ТипЦен - это классический запрос в цикле. ЕСли 2-3 заказа там, то это фигня, а если он за квартал попробует сделать, то 5 часов выполнения запроса гарантировано.
18 Wobland
 
06.07.14
14:26
да, про запрос в цикле согласен. про 5 часов на десять тысяч документов - нет ;)
19 Wobland
 
06.07.14
14:41
198 секунд с  Об.ДоговорКонтрагента.ТипЦен против 218 с соединением в запросе. 10000 итераций с одной ссылкой в режиме отладки. разница ни о чём
20 hhhh
 
06.07.14
15:41
ну у меня был опыт, разыскивал такие ошибки, выполняется секунд 20, нахожу обращение через две точки, меняю, получается 8 миллисекунд.
21 GreatOne
 
06.07.14
17:02
ТС упоротый, была эта тему уже v8: Изменить документ.