Имя: Пароль:
1C
1С v8
Перенос данных с одного документа на другой
,
0 Triton_11
 
14.04.14
13:53
У меня есть документ ПереоценкаТоваровВРознице
и есть ее табличное поле там есть данные
Ном    Хар        Цена
Брюки  Коричневый 900
Куртка Синтепон   750
Рубашка           800
И есть документ ОприходованиеТоваров
и есть ее табличное поле там есть данные
Ном    Хар        Цена
Брюки  Коричневый  1
Куртка Синтепон    1  
И необхадимо с помошью внешней обработки что бы данные с документа
ПероценкаТоваровВРознице попали в документ ОприходованиеТоваров и только данные которые есть в документе ОприходованиеТоваров т.е.
Рубашка не должна записаться
я так сделал вродь не правильно
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Оприх = Документы.ОприходованиеТоваров.НайтиПоНомеру("00000000001");
    В = Оприх.Товары.Добавить();
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПереоценкаТоваровВРозницеТовары.ЦенаВРознице КАК Цена
    |ИЗ
    |    Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРозницеТовары
    |ГДЕ
    |    ПереоценкаТоваровВРозницеТовары.Номенклатура = &Номенклатура";
    Запрос.УстановитьПараметр("Номенклатура",В.Номенклатура);
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        В.ЦенаВРознице = Результат.Цена;
    КонецЦикла;
КонецПроцедуры
1 Triton_11
 
14.04.14
13:53
(0) Должна перенестись цена
2 Wobland
 
14.04.14
13:54
внутренне соедини две ТЗ и будет тебе щастье
3 Triton_11
 
14.04.14
13:56
(2) я не знаю че такое внутренне соединение
4 Aloex
 
14.04.14
13:57
(3) Бросай это дело, иди книжки изучай.
5 Triton_11
 
14.04.14
13:57
(4) можно без внутреннего соединения как то
6 Maxus43
 
14.04.14
13:58
(5) боюсь что надо программировать. Что не получается? как делаешь? За тебя с нуля никто писать не будет
7 Wobland
 
14.04.14
13:58
(3) а я когда-то даже читать не умел. ничего, справился
8 Triton_11
 
14.04.14
13:59
(6) ну хотя бы подскажите как примерно направление я не прошу за меня написать хоть образец
9 Triton_11
 
14.04.14
14:00
(7) ок попробую через внутреннее соединение
может получиться
10 Maxus43
 
14.04.14
14:01
(8) ну запросом тебе надо ещё вытащить минимум Номенклатуру, потом уже в ТЧ искать эту номенклатуру, и если нашёл - то цену писать
11 Wobland
 
14.04.14
14:01
(8) ДокументПриёмник.ТЧ.Загрузить(Запрос.Выполнить().Выгрузить())
12 Triton_11
 
14.04.14
14:50
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Оприх = Документы.ОприходованиеТоваров.НайтиПоНомеру("00000000001");
    В = Оприх.Товары.Добавить();
    Тов = Оприх.Товары;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПереоценкаТоваровВРозницеТовары.Номенклатура КАК Ном,
    |    ПереоценкаТоваровВРозницеТовары.ЦенаВРознице КАК Цена
    |ИЗ
    |    Документ.ПереоценкаТоваровВРознице.Товары КАК ПереоценкаТоваровВРозницеТовары";
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        Для каждого А Из Тов Цикл
            Если Результат.Ном = А.Номенклатура Тогда
                В.ЦенаВРознице = Результат.Цена;    
            КонецЕсли;    
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры
13 Maxus43
 
14.04.14
14:51
(12) всё хорошо стало?
14 Triton_11
 
14.04.14
14:53
(13) не может найти номенклатуру из Документа ОприходованиеТоваров
15 Maxus43
 
14.04.14
14:54
зачем добавляешь строки вобще? тебе же надо у существующих записей цену изменить?
16 Triton_11
 
14.04.14
14:55
(15) она даже так не работает мне хотя бы чтоб добавлял
17 Maxus43
 
14.04.14
14:58
Оприх = Документы.ОприходованиеТоваров.НайтиПоНомеру("00000000001");

- ты в ссылку пытаешся добавить... Объект докумена получи сначала
18 Triton_11
 
14.04.14
15:39
Объект = Оприх.ПолучитьОбъект();
Выдает ошибку

{Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (ПолучитьОбъект)
    Объект = Оприх.ПолучитьОбъект();
по причине:
Элемент не выбран!
19 Wobland
 
14.04.14
15:43
(18) что, не нашёл документ?
20 Triton_11
 
14.04.14
15:44
(19) да
21 Wobland
 
14.04.14
15:49
(20) ну как же ты так?
22 Triton_11
 
14.04.14
15:57
(21) эхх.. плохо :)))
23 zak555
 
14.04.14
21:42
кд в руки
24 Мимохожий Однако
 
14.04.14
22:31
Сделай обработку заполнения ТЧ.
В модуле обработки
Процедура Инициализировать(рОбъект,рИмяТабЧасти,рТабПоле) Экспорт
    Переоценка = Документы.ПереоценкаТоваровВРознице.СоздатьДокумент();
    Переоценка.ВидОперации = Перечисления.ВидыОперацийПереоценкаТоваровВРознице.ПереоценкаВРознице;
    Переоценка.Организация = рОбъект.Организация;
    Переоценка.Склад = рОбъект.Склад;
    Переоценка.Дата = НачалоДня(рОбъект.Дата);
    Для Каждого ТекСтрока Из рОбъект[рИмяТабЧасти] Цикл
        НоваяСтрока = Переоценка.Товары.Добавить();
         ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока);
         НоваяСтрока.ЦенаВРознице = ТекСтрока.Цена;
     КонецЦикла;
    Переоценка.ПолучитьФорму("ФормаДокумента").Открыть();
    
КонецПроцедуры
...
В обработке должен быть обязательный реквизит СсылкаНаОбъект(Любая ссылка)
25 zak555
 
14.04.14
22:33
(24) надо было ЗаполнитьЗначенияСвойств использовать и для шапки =)
26 Мимохожий Однако
 
14.04.14
22:34
(25)разрешаю ))
27 Triton_11
 
15.04.14
07:43
(24) не надо создавать новый документ надо поместить данные в существующий документ
28 Обработка
 
15.04.14
07:57
(27) Не важно создавать или нет. Он показал вариант когда не надо запросом а перебором строк. Переделай код под себя.
29 Triton_11
 
15.04.14
09:01
Процедура ОсновныеДействияФормыДействие(Кнопка)
    Переоценка = Документы.ПереоценкаТоваровВРознице.Выбрать();
    Оприходование = Документы.ОприходованиеТоваров.Выбрать();
    Пока Переоценка.Следующий() Цикл
        Пока Оприходование.Следующий() Цикл
            ОбъектОприходование = Оприходование.ПолучитьОбъект();
            ОбъектПереоценка = Переоценка.ПолучитьОбъект();
            Цена = ОбъектОприходование.Товары.Добавить();
            Для Каждого ТекСтрокаОприх Из ОбъектОприходование.Товары Цикл
                Для Каждого ТекСтрокаПереоц    Из ОбъектПереоценка.Товары Цикл
                    Если ТекСтрокаОприх.Номенклатура = ТекСтрокаПереоц.Номенклатура Тогда
                        Цена.ЦенаВРознице = ТекСтрокаПереоц.ЦенаВРознице;    
                    КонецЕсли;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры
30 Triton_11
 
15.04.14
09:36
(29) не работает
31 Wobland
 
15.04.14
09:37
адский двойной цикл по всем документам двух видов..
32 Triton_11
 
15.04.14
09:45
(31) :))
33 Drac0
 
15.04.14
10:00
(29) О, боже. Теперь я видел все.
Программист всегда исправляет последнюю ошибку.