|
Поле объекта недоступно для записи (ОсновнаяСкидка) | ☑ | ||
---|---|---|---|---|
0
Sanjik
18.02.15
✎
19:09
|
Здравствуйте форумчане, моя первая обработка, перечитал около 15-ти топиков по этой теме, понял, что надо использовать "ПолучитьОбъект()", но не могу понять как его использовать. Пробовал: "Объект = Результат.ПолучитьОбъект()" - ругается, "Объект = Результат.ОсновнаяСкидка.ПолучитьОбъект()" - тоже ругается.
ОсновнаяСкидка просто строка в табличной части документа. Процедура КнопкаВыполнитьНажатие(Кнопка) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказТовары.Ссылка, | ЗаказТовары.НомерСтроки, | ЗаказТовары.Номенклатура, | ЗаказТовары.Количество, | ЗаказТовары.Размер, | ЗаказТовары.СуммаБезСкидок, | ЗаказТовары.Свойство, | ЗаказТовары.ОсновнаяСкидка, | ЗаказТовары.ЦенаПослеСкидки, | ЗаказТовары.ДопСкидка1, | ЗаказТовары.ЦенаПослеДопСкидки1, | ЗаказТовары.ДопСкидка2, | ЗаказТовары.ЦенаПослеДопСкидки2, | ЗаказТовары.Сумма, | ЗаказТовары.СкидкаДляРасчетаСебестоимости, | ЗаказТовары.Себестоимость |ИЗ | Документ.Заказ.Товары КАК ЗаказТовары"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл ОбНом = Результат.Номенклатура; ОбОрг = Результат.Ссылка.Организация; ОбДат = Результат.Ссылка.Дата; Результат.ОсновнаяСкидка = ПолучитьОсновнуюСкидку(ОбДат, ОбОрг, ОбНом); Результат.Записать(); Результат.СкидкаДляРасчетаСебестоимости = ПолучитьСкидкуДляСебестоимости(Результат.Ссылка.Дата, Результат.Ссылка.Организация, Результат.Номенклатура); РасчетТабЧасти(); Результат.Записать(); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
|||
1
hhhh
18.02.15
✎
19:14
|
об = Результат.Ссылка.ПолучитьОбъект();
|
|||
2
Крошка Ру
18.02.15
✎
19:25
|
(0)
Результат = Запрос.Выполнить().Выбрать(); Результат.Записать(); Ты собрался записать выборку из запроса? |
|||
3
Sanjik
18.02.15
✎
19:29
|
Нет, я хочу записать значение функции "ПолучитьОсновнуюФункцию" в строку табличной части "ОсновнаяСкидка".
Первый вариант работает, но не понял, а как от сюда обратится к табличной части "Товары"? |
|||
4
Sanjik
18.02.15
✎
19:31
|
Вот по первому варианту, учитывая замечание. Но не работает.
Процедура КнопкаВыполнитьНажатие(Кнопка) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказТовары.Ссылка, | ЗаказТовары.НомерСтроки, | ЗаказТовары.Номенклатура, | ЗаказТовары.Количество, | ЗаказТовары.Размер, | ЗаказТовары.СуммаБезСкидок, | ЗаказТовары.Свойство, | ЗаказТовары.ОсновнаяСкидка, | ЗаказТовары.ЦенаПослеСкидки, | ЗаказТовары.ДопСкидка1, | ЗаказТовары.ЦенаПослеДопСкидки1, | ЗаказТовары.ДопСкидка2, | ЗаказТовары.ЦенаПослеДопСкидки2, | ЗаказТовары.Сумма, | ЗаказТовары.СкидкаДляРасчетаСебестоимости, | ЗаказТовары.Себестоимость |ИЗ | Документ.Заказ.Товары КАК ЗаказТовары"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Объект = Результат.Ссылка.ПолучитьОбъект(); ОбНом = Результат.Номенклатура; ОбОрг = Результат.Ссылка.Организация; ОбДат = Результат.Ссылка.Дата; Об.Товары.ОсновнаяСкидка = ПолучитьОсновнуюСкидку(ОбДат, ОбОрг, ОбНом); Об.Товары.ОсновнаяСкидка.Записать(); Результат.СкидкаДляРасчетаСебестоимости = ПолучитьСкидкуДляСебестоимости(Результат.Ссылка.Дата, Результат.Ссылка.Организация, Результат.Номенклатура); РасчетТабЧасти(); Результат.Записать(); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
|||
5
Sanjik
18.02.15
✎
19:33
|
Ой, вот так:
Процедура КнопкаВыполнитьНажатие(Кнопка) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказТовары.Ссылка, | ЗаказТовары.НомерСтроки, | ЗаказТовары.Номенклатура, | ЗаказТовары.Количество, | ЗаказТовары.Размер, | ЗаказТовары.СуммаБезСкидок, | ЗаказТовары.Свойство, | ЗаказТовары.ОсновнаяСкидка, | ЗаказТовары.ЦенаПослеСкидки, | ЗаказТовары.ДопСкидка1, | ЗаказТовары.ЦенаПослеДопСкидки1, | ЗаказТовары.ДопСкидка2, | ЗаказТовары.ЦенаПослеДопСкидки2, | ЗаказТовары.Сумма, | ЗаказТовары.СкидкаДляРасчетаСебестоимости, | ЗаказТовары.Себестоимость |ИЗ | Документ.Заказ.Товары КАК ЗаказТовары"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Объект = Результат.Ссылка.ПолучитьОбъект(); ОбНом = Результат.Номенклатура; ОбОрг = Результат.Ссылка.Организация; ОбДат = Результат.Ссылка.Дата; Объект.Товары.ОсновнаяСкидка = ПолучитьОсновнуюСкидку(ОбДат, ОбОрг, ОбНом); Объект.Товары.ОсновнаяСкидка.Записать(); Результат.СкидкаДляРасчетаСебестоимости = ПолучитьСкидкуДляСебестоимости(Результат.Ссылка.Дата, Результат.Ссылка.Организация, Результат.Номенклатура); РасчетТабЧасти(); Результат.Записать(); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
|||
6
Крошка Ру
18.02.15
✎
19:40
|
Тебе базовых знаний не хватает. Даже хз, что посоветовать. Ищи, гугли, читай Синтакс-Помошник.
А по теме: Объект.Товары - это таб часть очередного документа из выборки. С ней работают через цикл Для Каждого Цикл КонецЦикла; Опять-таки - Результат.Записать() - это очень плохо; Ну и РасчетТабЧасти() - это ужже модуль telepat.dll надо подключать, а чёта лень. |
|||
7
intglass
18.02.15
✎
19:40
|
ПолучитьОбъект() тебе нужно у Документа, а не у "ОсновнаяСкидка просто строка в табличной части документа". Т.е. "объект" это Документ, а не строка.
А вот у Объекта документа есть табличная часть Товары, которую тебе надо перебрать(не запросом). Т.е. что то типа: ОбДокумент = ТвояСсылкаНаДокументЗаказ.ПолучитьОбъект(); Для Каждого Строка Из ОбДокумент.Товары Цикл Строка.ОсновнаяСкидка = 0; КонецЦикла; ОбДокумент.Записать(); |
|||
8
Sanjik
18.02.15
✎
20:34
|
Спасибо ОГРОМНОЕ intglass за объяснения! Все заработало! Знаю что у меня мало опыта, но все когда-то также начинали!
Рабочий вариант: Процедура КнопкаВыполнитьНажатие(Кнопка) //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказТовары.Ссылка, | ЗаказТовары.НомерСтроки, | ЗаказТовары.Номенклатура, | ЗаказТовары.Количество, | ЗаказТовары.Размер, | ЗаказТовары.СуммаБезСкидок, | ЗаказТовары.Свойство, | ЗаказТовары.ОсновнаяСкидка, | ЗаказТовары.ЦенаПослеСкидки, | ЗаказТовары.ДопСкидка1, | ЗаказТовары.ЦенаПослеДопСкидки1, | ЗаказТовары.ДопСкидка2, | ЗаказТовары.ЦенаПослеДопСкидки2, | ЗаказТовары.Сумма, | ЗаказТовары.СкидкаДляРасчетаСебестоимости, | ЗаказТовары.Себестоимость |ИЗ | Документ.Заказ.Товары КАК ЗаказТовары"; Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл ОбДокумент = Результат.Ссылка.ПолучитьОбъект(); ОбОрг = Результат.Ссылка.Организация; ОбДат = Результат.Ссылка.Дата; Для Каждого Строка Из ОбДокумент.Товары Цикл ОбНом = Строка.Номенклатура; Строка.ОсновнаяСкидка = ПолучитьОсновнуюСкидку(ОбДат, ОбОрг, ОбНом); Строка.СкидкаДляРасчетаСебестоимости = ПолучитьСкидкуДляСебестоимости(ОбДат, ОбОрг, ОбНом); КонецЦикла; ОбДокумент.Записать(); КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |