Имя: Пароль:
1C
1С v8
Добрый день. Нужна помощь в создании новой записи регистра
0 jinny84
 
18.11.20
13:00
Добрый день. Создал обработку чтобы поменять у всех контрагентов кто есть в определенной групу счета учета, выходи ошибка :{ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(12)}: Итератор для значения не определен
    для каждого эллемент из Контрагент цикл

Подскажите как исправить?


&НаКлиенте
Процедура Сформировать(Команда)
    СформироватьНаСервере(Объект.Группа,объект.Организация,объект.СчетУчетаАвансовПолученных,объект.СчетУчетаРасчетовСПокупателем);
КонецПроцедуры

&НаСервере
Процедура СформироватьНаСервере(Группа, Организация, СчетУчАв, СчетУчРас)
    НаборЗаписей = РегистрыСведений.СчетаУчетаРасчетовСКонтрагентами.СоздатьНаборЗаписей();
    НоваяЗапись = НаборЗаписей.Добавить();
    Контрагент = Справочники.Контрагенты.ПолучитьСсылку();
    для каждого эллемент из Контрагент цикл
        Если эллемент.Родитель = Группа Тогда
            НоваяЗапись.Контрагент = эллемент;
        НоваяЗапись.Организация = Организация;
        НоваяЗапись.СчетУчетаРасчетовСПокупателем = СчетУчРас;
        НоваяЗапись.СчетУчетаАвансовПолученных = СчетУчАв;
        
        НаборЗаписей.Записать();
    КонецЕсли;
    КонецЦикла
КонецПроцедуры
1 ДенисЧ
 
18.11.20
13:08
Контрагент = Справочники.Контрагенты.ПолучитьСсылку();
    для каждого эллемент из Контрагент цикл

Это вообще что было???
2 jinny84
 
18.11.20
13:13
(1) обойти всех контрагентов
3 ДенисЧ
 
18.11.20
13:15
(2) Таким способом можно обойти только все места, куда посылают грубыми словами.

Справочник обходится через .Выбрать()
4 youalex
 
18.11.20
13:16
>>выходи ошибка :

если на продуктиве, то можно сказать,  повезло
5 Волшебник
 
18.11.20
13:22
Тут всё серьёзнее.

у НаборЗаписей не установлен отбор. Он каждый раз будет переписывать весь регистр сведений
6 Волшебник
 
18.11.20
13:22
Ещё раз. Весь регистр СчетаУчетаРасчетовСКонтрагентами будет очищен
7 ДенисЧ
 
18.11.20
13:23
(6) Не будет. У неё код не запускается ))
8 Волшебник
 
18.11.20
13:23
(6)+ по всем контрагентам
9 Волшебник
 
18.11.20
13:24
(7) Вы сейчас поможете исправить Ссылка на Выборка и код сработает.
10 Малыш Джон
 
18.11.20
13:45
ну и по мелочи: НоваяЗапись = НаборЗаписей.Добавить() находится перед циклом
11 youalex
 
18.11.20
13:58
(7) еще немного брутфорса и запустится)
12 jinny84
 
18.11.20
14:13
(6) Мне его нужно весь переписать
13 jinny84
 
18.11.20
14:13
и добавить новых контрагентов
14 Волшебник
 
18.11.20
14:15
(12) Если пишете в регистр сведений, то лучше писать одну запись
15 jinny84
 
18.11.20
14:20
(14) можно пример?
16 Волшебник
 
18.11.20
14:36
(15) МенеджерЗаписи.Записать();
17 jinny84
 
18.11.20
15:03
(16) Через Менеджер, только одну запись создает, а мне нужно ко всем контрагентам создать(
18 Капитан Джек Воробей
 
19.11.20
10:29
(0) Мои глазы...


&НаСервере
Процедура СформироватьНаСервере(Группа, Организация, СчетУчАв, СчетУчРас)
    НаборЗаписей = РегистрыСведений.ДанныеСКУД.СоздатьНаборЗаписей();//СчетаУчетаРасчетовСКонтрагентами.СоздатьНаборЗаписей();
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Контрагент
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    НЕ Контрагенты.ЭтоГруппа
        |    И НЕ Контрагенты.ПометкаУдаления
        |    И Контрагенты.Родитель = &Группа";
    Запрос.УстановитьПараметр("Группа",Группа);
    РезультатЗапроса = Запрос.Выполнить();
    
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);
        НаборЗаписей.Отбор.Организация.Установить(Организация);
        НоваяЗапись.Контрагент = Выборка.Контрагент;
        НоваяЗапись.Организация = Организация;
        НоваяЗапись.СчетУчетаРасчетовСПокупателем = СчетУчРас;
        НоваяЗапись.СчетУчетаАвансовПолученных = СчетУчАв;
        НаборЗаписей.Записать();
    КонецЦикла;
КонецПроцедуры
19 Капитан Джек Воробей
 
19.11.20
10:29
(18) +
НаборЗаписей = РегистрыСведений.СчетаУчетаРасчетовСКонтрагентами.СоздатьНаборЗаписей();
20 hhhh
 
19.11.20
10:31
(17)         НоваяЗапись.Контрагент = Группа;
21 Капитан Джек Воробей
 
19.11.20
10:31
(18)+
забыл)

Пока Выборка.Следующий() Цикл
        НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);
        НаборЗаписей.Отбор.Организация.Установить(Организация);
        
        НоваяЗапись = НаборЗаписей.Добавить();
        
        НоваяЗапись.Контрагент = Выборка.Контрагент;
        НоваяЗапись.Организация = Организация;
        НоваяЗапись.СчетУчетаРасчетовСПокупателем = СчетУчРас;
        НоваяЗапись.СчетУчетаАвансовПолученных = СчетУчАв;
        НаборЗаписей.Записать();
    КонецЦикла;
22 Волшебник
 
19.11.20
10:36
Регистр уже уничтожили?
23 Капитан Джек Воробей
 
19.11.20
10:43
(22) я надеюсь он делает на тестовой), но проверять это, я конечно же не буду...
24 Михаил Козлов
 
19.11.20
10:52
(22) Надеюсь, да. А как еще учиться?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший