|
Создание документа на основании открытого. | ☑ | ||
---|---|---|---|---|
0
гыргыр
01.03.16
✎
09:01
|
Добрый день.
есть две фирмы, первая принимает товар, продает второй, а потом вторая уже продает покупателю. Причем во второй склад должен быть как бы транзитный, без остатков. Создаем документ реализация товаров от второй фирмы стороннему покупателю. В нем делаем кнопку. с помощью которой создается документ реализация товаров от первой фирме второй, и документ покупка товара от первой - второй. документы создаются правильно, табличная часть попадает нормально. загвоздка вот в чем, необходимо, что бы в эти документы вставала стоимость единицы товара поставки на первую фирму от стороннего поставщика. делаем срез последних через запрос цен, но он ведет себя неадекватно, а именно: 1. цены закупочные он вытаскивает, но меняет в текущем открытом документе. 2. розничную цену от второй фирмы стороннему покупателю вставляет в документ реализации между первой фирмой и второй. 3. в документ покупки товара между первой и второй вставляет уже цену из открытого документа ( то есть как бы правильную, но не из среза последних, как мне надо). Вот такая загвоздка, помогите кто чем может) код самой кнопки ниже. Процедура КоманднаяПанельТоварыпровести(Кнопка) РКО = Документы.РеализацияТоваров.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(РКО,ЭтотОбъект,,); РКО.ХозОперация = Справочники.ХозОперации.РеализацияТоваров; РКО.Автор = Справочники.Пользователи.НайтиПоНаименованию("Администратор"); РКО.Организация = Справочники.Организации.НайтиПоКоду("00001"); РКО.ПодразделениеКомпании = Справочники.ПодразделенияКомпании.НайтиПоКоду("00001"); РКО.СкладКомпании = Справочники.СкладыКомпании.НайтиПоКоду("ЦБ000001"); РКО.Контрагент = Справочники.Контрагенты.НайтиПоКоду("ЦБ000006"); РКО.ДоговорВзаиморасчетов = Справочники.ДоговорыВзаиморасчетов.НайтиПоКоду("ЦБ000009"); РКО.ТипЦен = Справочники.ТипыЦен.НайтиПоКоду("ЦБ000003"); Для Каждого СтрокаТовары из Товары Цикл НоваяСтрока = РКО.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТовары); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныСрезПоследних |ГДЕ | ЦеныСрезПоследних.ТипЦен = &ТипЦен"; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Номенклатура", СтрокаТовары.Номенклатура); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦен.НайтиПоКоду("ЦБ000003")); РезультатЗапроса = Запрос.Выполнить(); Выборкацена = РезультатЗапроса.Выбрать(); Цена =0; Если Выборкацена.Следующий() Тогда Цена = Выборкацена.Цена; Конецесли; строкатовары.Цена=цена; ОбработкаРеквизита("Товары.Цена",СтрокаТовары); КонецЦикла; РКО.УстановитьНовыйНомер(); РКО.Записать(РежимЗаписиДокумента.Запись); ПКО = Документы.ПоступлениеТоваров.СоздатьДокумент(); ЗаполнитьЗначенияСвойств(ПКО,ЭтотОбъект,,); ПКО.ХозОперация = Справочники.ХозОперации.ПоступлениеТоваров; ПКО.Организация = Справочники.Организации.НайтиПоКоду("ЦБ000001"); ПКО.Контрагент = Справочники.Контрагенты.НайтиПоКоду("ЦБ000005"); ПКО.СкладКомпании = Справочники.СкладыКомпании.НайтиПоКоду("ЦБ000002"); ПКО.ДоговорВзаиморасчетов = Справочники.ДоговорыВзаиморасчетов.НайтиПоКоду("ЦБ000010"); Для Каждого СтрокаТовары из Товары Цикл НоваяСтрока = ПКО.Товары.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТовары); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныСрезПоследних.Цена |ИЗ | РегистрСведений.Цены.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК ЦеныСрезПоследних |ГДЕ | ЦеныСрезПоследних.ТипЦен = &ТипЦен"; Запрос.УстановитьПараметр("Дата", Дата); Запрос.УстановитьПараметр("Номенклатура", СтрокаТовары.Номенклатура); Запрос.УстановитьПараметр("ТипЦен", Справочники.ТипыЦен.НайтиПоКоду("ЦБ000003")); РезультатЗапроса = Запрос.Выполнить(); Выборкацена = РезультатЗапроса.Выбрать(); Цена =0; Если Выборкацена.Следующий() Тогда Цена = Выборкацена.Цена; Конецесли; строкатовары.Цена=цена; ОбработкаРеквизита("Товары.Цена",СтрокаТовары); КонецЦикла; ПКО.УстановитьНовыйНомер(); ПКО.Записать(РежимЗаписиДокумента.Проведение); КонецПроцедуры |
|||
1
aleks_default
01.03.16
✎
09:24
|
Для Каждого СтрокаТовары из Товары Цикл
ты одну и ту же таб часть заполняешь дважды |
|||
2
Serg_1960
01.03.16
✎
09:26
|
(0) Ты меняешь цены в исходном документе:
Для Каждого СтрокаТовары из Товары Цикл НоваяСтрока = РКО.Товары.Добавить() ... СтрокаТовары.Цена=Цена; ОбработкаРеквизита("Товары.Цена",СтрокаТовары); КонецЦикла; |
|||
3
гыргыр
01.03.16
✎
09:28
|
2-
как исправить ? я уже мозг сломал... |
|||
4
aleks_default
01.03.16
✎
09:30
|
хрупкий же у тебя мозг
Для каждого СтрокаТовары из ПКО.Товары цикл Для каждого СтрокаТовары из РКО.Товары цикл |
|||
5
aleks_default
01.03.16
✎
09:30
|
не не так
надо же добавить строки |
|||
6
aleks_default
01.03.16
✎
09:32
|
Для Каждого СтрокаТовары из Товары Цикл
НоваяСтрока = ПКО.Товары.Добавить() ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТовары) ну и т. п. |
|||
7
SadrArt
01.03.16
✎
09:41
|
Запрос в цикле... Ай-яй-яй
|
|||
8
Serg_1960
01.03.16
✎
09:52
|
(3) В первом цикле (во втором - аналогично):
... //строкатовары.Цена=цена; //ОбработкаРеквизита("Товары.Цена",СтрокаТовары); НоваяСтрока.Цена = Цена; РКО.ОбработкаРеквизита("Товары.Цена",НоваяСтрока); |
|||
9
гыргыр
01.03.16
✎
11:14
|
8-
огромное спасибо, все получилось. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |