![]() |
|
1 С 8.2 Бух. Перезаписать строки.(Себестоимость) | ☑ | ||
---|---|---|---|---|
0
Увэрли
22.04.14
✎
16:14
|
Здравствуйте уважаемые программисты!
Подскажите как мне перезаписать , в документе колонку себестоимость или строку. У меня две колонки сумма и себестоимость....так вот сумма есть а себестоимость пуста.Документ - Возврат товара от покупателя. |
|||
1
Увэрли
22.04.14
✎
16:16
|
Вот код.
//***************** +++vVv+++ ********************* ДатаНачала = ЭлементыФормы.ДатаНачала.Значение; ДатаОкончания = ЭлементыФормы.ДатаОкончания.Значение; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++// //+++++++++++++++++++++++++++// //++++++++++++++// ЗапросСебестоимости=Новый Запрос; ЗапросСебестоимости.Текст="ВЫБРАТЬ | ВозвратТоваровОтПокупателяТовары.Ссылка, | ВозвратТоваровОтПокупателяТовары.Цена, | ВозвратТоваровОтПокупателяТовары.Номенклатура |ИЗ | Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары |ГДЕ | ВозвратТоваровОтПокупателяТовары.Ссылка.Дата МЕЖДУ &Начало И &Конец"; ЗапросСебестоимости.УстановитьПараметр("Начало",ДатаНачала); ЗапросСебестоимости.УстановитьПараметр("Конец",ДатаОкончания); Результат=ЗапросСебестоимости.Выполнить().Выбрать(); ВыборкаДокументов=Документы.ВозвратТоваровОтПокупателя.Выбрать(ДатаНачала,ДатаОкончания); Пока ВыборкаДокументов.Следующий() И Результат.Следующий() Цикл Объект=ВыборкаДокументов.ПолучитьОбъект(); //Товары=Объект.Товары.Добавить(); Товары=Объект.Товары.Загрузить(); Товары.Себестоимость= Результат.Цена; Объект.Записать(); |
|||
2
neo_matrix_123
22.04.14
✎
17:59
|
Пока ВыборкаДокументов.Следующий() И Результат.Следующий() Цикл
так не делается. и зачем второй цикл по документам за период. запросом никак? и в итоге что сделать-то хотим? |
|||
3
Увэрли
22.04.14
✎
20:02
|
Есть документ в бухгалтерии Возврат товаров от покупателя там есть колонка себестоимости , но она пустая ее нет я хочу взять сумму и вставить в данную колонку.
|
|||
4
Увэрли
22.04.14
✎
20:09
|
Пока ВыборкаДокументов.Следующий() Цикл
Номер=0; Объект=ВыборкаДокументов.ПолучитьОбъект(); Товары=Объект.Товары; Пока Товары.Количество() Цикл Номер=Номер+1; СтрокиТоваров=Товары.Найти(Номер,"НомерСтроки"); СтрокиТоваров.Себестоимость= СтрокиТоваров.Сумма; Объект.Записать(); КонецЦикла; КонецЦикла; |
|||
5
Увэрли
22.04.14
✎
20:13
|
мне нужно изменить данные в уже созданном документе
|
|||
6
Увэрли
22.04.14
✎
20:14
|
может у когото есть код ......поделитесь пожайлуста
|
|||
7
hhhh
22.04.14
✎
20:30
|
Для Каждого Стр Из Товары Цикл
Стр.Себестоимость= Стр.Сумма; КонецЦикла; Объект.Записать(); |
|||
8
Мимохожий Однако
22.04.14
✎
20:30
|
(1)
Результат=ЗапросСебестоимости.Выполнить().Выбрать(); ВыборкаДокументов=Документы.ВозвратТоваровОтПокупателя.Выбрать(ДатаНачала,ДатаОкончания); Вторая строка противоречит первой |
|||
9
neo_matrix_123
22.04.14
✎
21:31
|
Себестоимость из суммы документа возврат поставщику будем заполнять, я правильно понимаю?
|
|||
10
neo_matrix_123
22.04.14
✎
21:33
|
*возврат тов. покупателю
|
|||
11
neo_matrix_123
22.04.14
✎
21:48
|
тогда так.... запос делаем непосредственно к табличной части товары документа возврат от покупателя. в таб.части есть ссылка - это и будет документ возврат... соответственно отсекаем период выборки документов через Ссылка.Дата )т.е. дата документа возврат товаров от покупателя. соответственно надо отобрать скорее всего только проведенные документы, которые потом после перезаполнения снова надо будет провести, так? если создать запрос только по ссылке, то это будет внешний цикл обхода результата запроса, в котором сначала будем получать объект через ссылку, а после того, как отработает заполнение строк табличной части, перед концом внешнего цикла документы записывать или проводить (это уж сами решите). внутри внешнего цикла должен быть цикл обхода по строкам ТЧ Товары Пока выборкаДетали.Следующий(), где производится заполнение значений графы стоимость.
куски кода местами верные, вот только теперь их надо расположить в правильном порядке. |
|||
12
neo_matrix_123
22.04.14
✎
21:55
|
ВЫБРАТЬ
ВозвратТоваровОтПокупателяТовары.Ссылка, ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон И ВозвратТоваровОтПокупателяТовары.Ссылка.Проведен = ИСТИНА И ВозвратТоваровОтПокупателяТовары.Себестоимость = 0 это запрос по внешнему циклу - к документам за период где стоимость в тч товары равна нулю |
|||
13
neo_matrix_123
22.04.14
✎
22:35
|
далее выполняем устанавливаем параметры (вы это правильно делаете) и выполняем запрос...
в этой строке все правильно... Результат=ЗапросСебестоимости.Выполнить().Выбрать(); теперь нужен обход результата - внешний цикл.... Пока ВыборкаДокументов.Следующий() Цикл сразу пишем внизу конецЦикла, перед которым ставим Объект.Записать() КонецЦикла// ПокаВыборкаДокументовСледующий Теперь внутри цикла надо пучить таб. часть отобранного документа Товары = Объект.Товары Для Каждого Стр Из Товары Цикл Если Стр.Себестоимость = 0 ТОгда Стр.Себестоимость = Стр.Сумма; КонецЕсли; КонецЦикла; |
|||
14
Увэрли
22.04.14
✎
23:15
|
......спасибо всем! буду разбираться.
|
|||
15
neo_matrix_123
22.04.14
✎
23:25
|
см. (11)- (13) там все по полкам разжевано
|
|||
16
Увэрли
23.04.14
✎
10:30
|
neo_matrix_123 скажите мне нужно использовать вот эту сточку кода или только через запрос
ВыборкаДокументов=Документы.ВозвратТоваровОтПокупателя.Выбрать(ДатаНачала,ДатаОкончания); |
|||
17
Увэрли
23.04.14
✎
10:31
|
у меня немного смешан) и запрос и обращение прямо к документу....
|
|||
18
Увэрли
23.04.14
✎
11:59
|
.....вот полностью рабочий код кому нужно пользуйтесь)
Процедура КнопкаВыполнитьНажатие(Кнопка) Перем Номер; //***************** +++vVv+++ ********************* ДатаНачала = ЭлементыФормы.ДатаНачала.Значение; ДатаОкончания = ЭлементыФормы.ДатаОкончания.Значение; ВыборкаДокументов=Документы.ВозвратТоваровОтПокупателя.Выбрать(ДатаНачала,ДатаОкончания); Пока ВыборкаДокументов.Следующий() Цикл Объект= ВыборкаДокументов.ПолучитьОбъект(); Количество=Объект.Товары.Количество(); Для Номер=1 По Количество Цикл Товар=Объект.Товары.Найти(Номер,"НомерСтроки"); Номер=Номер+0; Товар.Себестоимость = Товар.Сумма; КонецЦикла; Объект.Записать(); КонецЦикла; КонецПроцедуры |
|||
19
Увэрли
23.04.14
✎
12:01
|
Спасибо всем ...и в особенности neo_matrix_123...за наводящие вопросы)
|
|||
20
neo_matrix_123
23.04.14
✎
12:07
|
(19) покорно благодарен! снимаю шляпу....
|
|||
21
Aleksandr N
23.04.14
✎
12:12
|
(18) Ёперный театр, а почему бы не использовать цикл для каждого? Зачем обходить таб. часть. по номеру строки? Ненужные лишние строки кода просто. К тому же некорректно написано в том плане, что все действия будут применяться только по отношению к первой строке таб. части, и , соответственно, если их больше одной, то остальные строки не изменятся.
|
|||
22
Aleksandr N
23.04.14
✎
12:25
|
(21) +
Процедура КнопкаВыполнитьНажатие(Кнопка) Перем Номер; //***************** +++vVv+++ ********************* ДатаНачала = ЭлементыФормы.ДатаНачала.Значение; ДатаОкончания = ЭлементыФормы.ДатаОкончания.Значение; ВыборкаДокументов=Документы.ВозвратТоваровОтПокупателя.Выбрать(ДатаНачала,ДатаОкончания); Пока ВыборкаДокументов.Следующий() Цикл Объект= ВыборкаДокументов.ПолучитьОбъект(); Объект.Товары.ЗагрузитьКолонку(Объект.Товары.ВыгрузитьКолонку("Сумма"), "Себестоимость"); Объект.Записать(); КонецЦикла; КонецПроцедуры Более симпатичный вариант без цикла в цикле. |
|||
23
neo_matrix_123
23.04.14
✎
17:11
|
(22) согласен. вот только (0) это объяснить боюсь у меня-бы не получилось. посылать готовый код - не гуманно.а так успехи уже на лицо ;-)
|
|||
24
Увэрли
23.04.14
✎
18:06
|
Профессионально Aleksandr N.....буду расти до вас)
Спасибо за Ваш пример! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |