Имя: Пароль:
1C
1С v8
как циклом пройти по документам реализации
0 nurligaianov
 
23.09.15
17:46
Подскажите пожалуйста как циклом пройти по документам реализации товаров и услуг и получить номер документа!
1 StillEnough
 
23.09.15
17:46
(0) для чего получить? просто вывести на экран или что?
2 zak555
 
23.09.15
17:47
НомеДока = ИтераторЦикла.Номер;
3 Волшебник
 
модератор
23.09.15
17:48
Для Каждого Документ Из Документы.Реализация Цикл
   Документ.Номер
КонецЦикла;
4 nurligaianov
 
23.09.15
17:49
StillEnough, Что ты потом по этому номеру найти в табличной части файла инфу и заменить этот номер на другой, а этот номер записать в новый реквизит!
5 ДенисЧ
 
23.09.15
17:49
А зачем циклом? Раввинат не одобряет...
6 vicof
 
23.09.15
17:50
"найти в табличной части файла инфу"
впечатляет
7 ILM
 
гуру
23.09.15
17:50
(3) Некошерно. Надо запросом и по выборке
8 ILM
 
гуру
23.09.15
17:50
(5) опередил
9 nurligaianov
 
23.09.15
17:51
(3) Так я пробовал не получается!
Для Каждого Документ Из Документы.Реализация Цикл
   Документ.Номер
КонецЦикла;
10 StillEnough
 
23.09.15
17:52
неужели я был такой же?
(9) делай что-нибудь с этим номером! сообщить(); там или присвой чему то!
11 nurligaianov
 
23.09.15
17:52
(6) Что впечатляет? пробовал по вайлу пробегать но по номеру не ищет!
12 dka80
 
23.09.15
17:54
(9) документ.номер - это что?
Сообщить(документ.номер) сделай что ли
13 Апош
 
23.09.15
17:55
(11) по 1cd вайлу?
14 nurligaianov
 
23.09.15
17:56
Кроме цикла как еще можно поменять номера в документах на другие а старые записать скажем в реквизит старый номер!
15 nurligaianov
 
23.09.15
17:56
(13) Описка: Файлу
16 StillEnough
 
23.09.15
17:57
Если iter < 0 Then
    ХорошийКод = TRUE;  
Else  
    ПлохойКод = ЛОЖЬ;
КонецЕсли;
17 ВРедная
 
23.09.15
17:58
(15) Мы увидим уже полный код?
18 StillEnough
 
23.09.15
17:58
(14) ну можно открыть первый документ, скопировать знч в реквизит, заменить номер, записать, закрыть, открыть второй документ.....
19 Апош
 
23.09.15
17:59
(18) и так пока не кончатся. это цикл...
20 nurligaianov
 
23.09.15
18:00
Пробовал циклом по файлу так выдает ошибку при получении объекта! Вот код:
Для Каждого Строка Из ТаблицаДокументов Цикл
    СтрКод = Число(Строка.Код);
    Код = ДобавитьНули(СтрКод, 11);
    Док = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Код);
    Изм = Док.ПолучитьОбъект();
    
    Ном = ДобавитьНули(Строка.Номомер, 11);
    Изм.Номер = Ном;
    Изм.СтарыйНом = Код;    
    КонецЦикла;
21 Апош
 
23.09.15
18:00
тут сложно без цикла обойтись
22 nurligaianov
 
23.09.15
18:00
А теперь решил наоборот пройти по документам а искать в файле!
23 Апош
 
23.09.15
18:01
(22) расскажи уже, что за файл такой
24 StillEnough
 
23.09.15
18:01
(20) чем цикл не нравится? все правильно делаешь, только Изм.Записать(); не хватает в конце - изменения не сохраняются.
И что за ошибка?
25 Апош
 
23.09.15
18:02
(24) не нашёлся по новому номеру
26 nurligaianov
 
23.09.15
18:02
(21) ну а как с циклом подскажи!
вот этот не работает
ДДля Каждого Документ Из Документы.РеализацияТоваровУслуг Цикл
        Документ.

   Документ.Номер
КонецЦикла;
27 Волшебник
 
модератор
23.09.15
18:02
(9) Добавь

Попытка
   цикл
Исключение
КонецПопытки;

Ошибка исчезнет.
28 dka80
 
23.09.15
18:03
(20)
Для Каждого Строка Из ТаблицаДокументов Цикл

    Док = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Строка.Код);
    Изм = Док.ПолучитьОбъект();
    
    Ном = ДобавитьНули(Число(Строка.Код), 11);
    Изм.Номер = Ном;
    Изм.СтарыйНом = Код;
док.записать();    
    КонецЦикла;
29 nurligaianov
 
23.09.15
18:03
(24) не удалось получить объект
30 nurligaianov
 
23.09.15
18:05
(28) Так не найдет так как нужно убрать триад
31 nurligaianov
 
23.09.15
18:06
Пробовал и вот так тоже не ищет
СтрКод = СтрЗаменить(Строка.Код,Символы.НПП, "");
    Код = ДобавитьНули(СтрКод, 11);
    Док = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(Код);
    Изм = Док.ПолучитьОбъект();
    
    Ном = ДобавитьНули(Строка.Номомер, 11);
    Изм.Номер = Ном;
    Изм.СтарыйНом = Код;    
    КонецЦикла;
32 dka80
 
23.09.15
18:08
поставь точку останова
чему равен Код
Погляди вручную есть ли в базе док с этим номером, равным значению переменной Код?
33 1sanekmaloi1
 
23.09.15
18:08
НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>)
Параметры:

<НомерДокумента> (обязательный)

Тип: Число; Строка.
Номер искомого документа. Тип передаваемого значения зависит от установки в конфигураторе представления номера документа.
<ДатаИнтервала> (необязательный)

Тип: Дата.
Дата из интервала, в котором проводится поиск по номеру. Сам интервал определяется как период уникальности номеров документа, в который входит указанная дата. Например, если номера документов уникальны в пределах месяца и задана дата 10 декабря 2001 года, то поиск будет проводиться в интервале с 01 по 31 декабря 2001 года.
Параметр используется для документов с периодической нумерацией.



обрати внимание на второй параметр, поставь там год 2015, ну или нужный
34 Апош
 
23.09.15
18:09
надо дописать нулей. зачем при этом помнить номер без нулей?
35 Апош
 
23.09.15
18:09
(33) ему выбрать нужно, а не найти
36 nurligaianov
 
23.09.15
18:16
(32) 00000373846
37 nurligaianov
 
23.09.15
18:19
(34) Ошибка наверно не в том что переменная помнит номер без нулей!
38 dka80
 
23.09.15
18:22
есть док с номером 00000373846?
39 nurligaianov
 
23.09.15
18:23
(38) Да есть
40 dka80
 
23.09.15
18:24
скрин покажи где док с этим номером
41 nurligaianov
 
23.09.15
18:24
(38) Вот почему решил сделать наоборот проити циклом по документам но как?
42 dka80
 
23.09.15
18:27
Для Каждого Док Из Документы.Реализация Цикл
оДок = Док.ПолучитьОбъект();
КонецЦикла;
43 Волшебник
 
модератор
23.09.15
18:28
(42) лишь бы с итератором повезло
44 1sanekmaloi1
 
23.09.15
18:31
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();

Для Каждого Док Из Выборка  Цикл
   НомерДока = Док.Номер;
   оДок = Док.Ссылка.ПолучитьОбъект();
  оДок.Номер = "000000"+ НомерДока;

Попытка
    оДок.Записать();
Исключение
    Сообщить(ОписаниеОшибки())
  КонецПопытки
КонецЦикла;
45 1sanekmaloi1
 
23.09.15
18:35
(44)

немного не так, вот так

Выборка = Документы.РеализацияТоваровУслуг.Выбрать();

Пока Выборка.Следующий()  Цикл
   НомерДока = Выборка.Номер;
   оДок = Выборка.ПолучитьОбъект();
  оДок.Номер = "000000"+ НомерДока;

Попытка
    оДок.Записать();
Исключение
    Сообщить(ОписаниеОшибки())
  КонецПопытки
КонецЦикла;
46 nurligaianov
 
23.09.15
18:35
(42)Так не работает пробовал!
А как здесь скин скинуть?
47 nurligaianov
 
23.09.15
18:37
(45) Спасибо! Сейчас попробую!
48 Апош
 
23.09.15
18:38
(45) прав("000"+номер)
49 nurligaianov
 
23.09.15
18:54
(45) Вот так работает
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Пока Выборка.Следующий()  Цикл
   Док = Выборка.ПолучитьОбъект();
   Номер = Док.Номер;
   Для Каждого Строка Из ТаблицаДокументов Цикл
           СтрКод = СтрЗаменить(Строка.Код,Символы.НПП, "");
        УдлинКод= ДобавитьНули(СтрКод,11);
        Если УдлинКод = Номер Тогда
            СтрНом = СтрЗаменить(Строка.Номер,Символы.НПП, "");
            УдлинНом = ДобавитьНули(СтрНом,11);
            Док.Номер = УдлинНом;
        КонецЕсли;
Попытка
    Док.Записать();
Исключение
    Сообщить(ОписаниеОшибки())
  КонецПопытки
КонецЦикла;
        
    КонецЦикла;
    
Спасибо!
50 Апош
 
23.09.15
18:56
мать...
51 nurligaianov
 
23.09.15
19:07
(50) А во файлу без цикла как нибудь можно? а то что то долго там как ни как 28000 строк и по ним пробегаться долго!
52 nurligaianov
 
23.09.15
19:08
(45) А во файлу без цикла как нибудь можно? а то что то долго там как ни как 28000 строк и по ним пробегаться долго!
53 Апош
 
23.09.15
19:10
и это ты ещё не умножал на количество строк в файле ТаблицаДокументов
54 nurligaianov
 
23.09.15
19:11
(53) Нет это строки в файле ТаблицаДокументов ну и документов по идее столько же
55 nurligaianov
 
23.09.15
19:12
Как массивом отбор сделать кто нибудь подскажет?
56 Апош
 
23.09.15
19:13
Отбор=Новый Массив;
57 nurligaianov
 
23.09.15
19:15
(56) так а дальше
58 Апош
 
23.09.15
19:18
что-то я теряюсь. действительно, а что дальше?
59 roman52
 
23.09.15
23:22
(55) открой для себя язык запросов
Книга знаний: Язык запросов 8.0

и временные таблицы:
Книга знаний: Временные таблицы в 8.1
60 jsmith82
 
23.09.15
23:27
Фейспалм в квадрате