|
Изменить значения в документах | ☑ | ||
---|---|---|---|---|
0
Len1vec
06.05.16
✎
08:44
|
Добрый день, форумчане. Не так давно начал изучать 1С.
Дали задачку: изменить единицы измерения во всех документах у конкретной номенклатуры. И столкнулся с проблемой для себя: не могу обратиться к документам. Прилагаю код, который накарябал: Процедура ИзменитьЕдиницуИзмеренияВДокументе() Для каждого Документ Из Документы.ПеремещениеТоваров Цикл Док = Документы.ПеремещениеТоваров.Выбрать(); Для каждого Продукция Из Док.Продукция Цикл Номенклатура = Продукция.Номенклатура; Если Номенклатура = Объект.Номенклатура Тогда Если Продукция.ЕдиницаИзмерения = Объект.ЕдИзмСейчас Тогда Продукция.ЕдиницаИзмерения = Объект.ЕдИзмНовая; КонецЕсли; КонецЕсли; КонецЦикла; Док.Проведен(); КонецЦикла; КонецПроцедуры Поясню, что пытался сделать: пройтись по документам "Перемещение Товаров", если документ содержит в себе указанную на форме номенклатуру, то проверить единицы измерения и при необходимости изменить. Проблема в том, что выполнении данного кода возникает ошибка: {Форма.Форма.Форма(22)}: Итератор для значения не определен Для каждого Документ Из Документы.ПеремещениеТоваров Цикл |
|||
1
ДенисЧ
06.05.16
✎
08:49
|
А где ты прочитал, что документы можно перебирать ДляКаждого?
|
|||
2
Len1vec
06.05.16
✎
08:57
|
Думал, что так можно, но понимаю, что надо перебирать запросом, да?
|
|||
3
ДенисЧ
06.05.16
✎
08:59
|
Выбрать/ пока следующий
если уж хочешь выборкой обходить но можно и запросом, если документов под условие попадает немного |
|||
4
Len1vec
06.05.16
✎
09:04
|
Так будет корректнее?
Процедура ИзменитьЕдиницуИзмеренияВОПЗС() Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ОтчетПроизводстваЗаСменуПродукция.Номенклатура |ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСменуПродукция |ГДЕ | ОтчетПроизводстваЗаСменуПродукция.Номенклатура = &Номенклатура" ; Запрос.УстановитьПараметр("Номенклатура", Объект.Номенклатура); Рез = Запрос.Выполнить(); Выборка=Рез.Выбрать(); Пока Выборка.Следующий() Цикл Документ = Выборка.Ссылка; ДокументИзменяемый = Документ.ПолучитьОбъект(); Для каждого Продукция Из ДокументИзменяемый.Продукция Цикл Номенклатура = Продукция.Номенклатура; Если Номенклатура = Объект.Номенклатура Тогда Если Продукция.ЕдиницаИзмерения = Объект.ЕдИзмСейчас Тогда Продукция.ЕдиницаИзмерения = Объект.ЕдИзмНовая; КонецЕсли; КонецЕсли; КонецЦикла; ДокументНов.Записать(); КонецЦикла; КонецПроцедуры |
|||
5
DDwe
06.05.16
✎
09:06
|
(4) "ДокументНов" это кто?
|
|||
6
Рэйв
06.05.16
✎
09:09
|
(4)Запрос неправильный
|
|||
7
Рэйв
06.05.16
✎
09:10
|
(0)
как то так Запрос=Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | ПеремещениеТоваровТовары.Ссылка Док |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары |ГДЕ | ПеремещениеТоваровТовары.Номенклатура = &Номенклатура" ); Нужная=Объект.Номенклатура; Запрос.УстановитьПараметр("Номенклатура",Нужная); Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Об=Выборка.Док.ПолучитьОбъект(); Для Каждого Стр из Об.Товары Цикл Если Стр.Номенклатура=Нужная Тогда Стр.ЕдиницаИзмерения=Объект.ЕдИзмСейчас; Об.Записать(); КонецЕсли; Конеццикла; Конеццикла; |
|||
8
2S
06.05.16
✎
09:11
|
Записать в цикле тч, да Вы самоубивец, батенька
|
|||
9
Рэйв
06.05.16
✎
09:12
|
да, косяк:-) За циклом
|
|||
10
Рэйв
06.05.16
✎
09:12
|
надо
|
|||
11
Звездец
06.05.16
✎
09:14
|
Только лучше выборку делать сразу по условию ТЧ, что бы потом перебирать только нужные доки и перезаписывать
|
|||
12
Рэйв
06.05.16
✎
09:15
|
(11)в (7) выбираются только нужные доки
|
|||
13
Len1vec
06.05.16
✎
09:16
|
Сделал пока следующее. Корректно ли?
Процедура ИзменитьЕдиницуИзмеренияВПеремещении() Запрос = Новый Запрос; Запрос.Текст= "ВЫБРАТЬ | ПеремещениеТоваровТовары.Номенклатура |ИЗ | Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары |ГДЕ | ПеремещениеТоваровТовары.Номенклатура = &Номенклатура" ; Запрос.УстановитьПараметр("Номенклатура", Объект.Номенклатура); Рез = Запрос.Выполнить(); Выборка=Рез.Выбрать(); Пока Выборка.Следующий() Цикл Документ = Выборка.Ссылка; ДокументИзменяемый = Документ.ПолучитьОбъект(); Для каждого Продукция Из ДокументИзменяемый.Товары Цикл Номенклатура = Продукция.Номенклатура; Если Номенклатура = Объект.Номенклатура Тогда Если Продукция.ЕдиницаИзмерения = Объект.ЕдИзмСейчас Тогда Продукция.ЕдиницаИзмерения = Объект.ЕдИзмНовая; ДокументИзменяемый.Записать(); КонецЕсли; КонецЕсли; КонецЦикла; ДокументИзменяемый.Записать(); КонецЦикла; КонецПроцедуры |
|||
14
Рэйв
06.05.16
✎
09:16
|
(13)уже послало на моменте "Документ = Выборка.Ссылка;"?:-)
|
|||
15
Звездец
06.05.16
✎
09:17
|
(12) ну да, я ещё глядя на (4) писал
|
|||
16
Звездец
06.05.16
✎
09:20
|
Убери запись в цикле(13)
|
|||
17
13_Mult
06.05.16
✎
09:24
|
(0) А какой тип у ед.изм. в документе?
|
|||
18
Len1vec
06.05.16
✎
09:43
|
(17) Тип: СправочникСсылка.ЕдиницыИзмерения (16) ДокументИзменяемый.Записать(); - эту?
|
|||
19
Len1vec
06.05.16
✎
15:20
|
Всем спасибо! С меня пиво живое! :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |