Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Проведение документа и отражение по регистру

Проведение документа и отражение по регистру
Я
   Смертник
 
24.12.12 - 15:54
Процедура ОбработкаПроведения(Отказ, Режим)
   //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
 
   // Данный фрагмент построен конструктором.
 
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
 

   // регистр ру_ОтгрузкаФактТариф 
 
    
    Движения.ру_ОтгрузкаФактТариф.Записывать = Истина;
    Движения.ру_ОтгрузкаФактТариф.Очистить();
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ру_ЖДКвитанцияВагоны.Ссылка.Грузоотправитель КАК ГрузоотправительГл,
        |    ру_ЖДКвитанцияВагоны.Ссылка.Грузополучатель КАК Грузополучатель,
        |    ру_ЖДКвитанцияВагоны.Ссылка.Номенклатура КАК Номенклатура,
        |    ру_ЖДКвитанцияВагоны.Ссылка.Покупатель КАК Покупатель,
        |    ру_ЖДКвитанцияВагоны.Ссылка.ДоговорКонтрагента КАК ДоговорКонтрагента,
        |    ру_ЖДКвитанцияВагоны.Ссылка.Заказ КАК Заказ,
        |    ру_ЖДКвитанцияВагоны.Ссылка.Количество КАК Количество
        |ИЗ
        |    Документ.ру_ЖДКвитанция.Вагоны КАК ру_ЖДКвитанцияВагоны
        |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ру_ПодтверждениеЖДТарифа.Вагоны КАК ру_ПодтверждениеЖДТарифаВагоны
        |        ПО ру_ЖДКвитанцияВагоны.НомерВагона = ру_ПодтверждениеЖДТарифаВагоны.НомерВагона
        |            И ру_ЖДКвитанцияВагоны.Ссылка = ру_ПодтверждениеЖДТарифаВагоны.Ссылка.ДокументОснование
        |ГДЕ
        |    ру_ПодтверждениеЖДТарифаВагоны.Ссылка = &Ссылка";
        
    Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Ссылка);
    ТЗ= Запрос.Выполнить().Выгрузить();

    Для Каждого ТекСтрокаВагоны Из Вагоны Цикл
        Движение = Движения.ру_ОтгрузкаФактТариф.Добавить();
        Движение.Период = Дата;
        Движение.СтанцияОтправления = ТекСтрокаВагоны.СтанцияОтправления;
        Движение.СтанцияНазначения = ТекСтрокаВагоны.СтанцияНазначения;
        Движение.НомерВагона = ТекСтрокаВагоны.НомерВагона;
        Движение.Собственник = ТекСтрокаВагоны.Собственник;
        Движение.ОператорПС = ТекСтрокаВагоны.ОператорПС;
        Движение.ДатаОтгрузки = ТекСтрокаВагоны.ДатаОтгрузки;
        Движение.Грузоподъемность = ТекСтрокаВагоны.Грузоподъемность;
        Движение.ЖДТариф = ТекСтрокаВагоны.ЖДТарифБезНДС;
        Движение.Грузоотправитель = ТЗ.ГрузоотправительГл;
        Движение.Грузополучатель = ТЗ.Грузополучатель;
        Движение.Номенклатура = ТЗ.Номенклатура;
        Движение.Покупатель = ТЗ.Покупатель;
        Движение.ДоговорКонтрагента = ТЗ.ДоговорКонтрагента;
        Движение.Заказ = ТЗ.Заказ;
        Движение.Количество = ТЗ.Количество;
    КонецЦикла;

   //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
 
КонецПроцедуры

Щапросом беру реквизиты которых нет в самом документе, но есть в документе основании.
И не пойму почему не находит реквизиты их запроса, а именно застрял на этом - Движение.Грузоотправитель = ТЗ.ГрузоотправительГл;
 
 
   GROOVY
 
1 - 24.12.12 - 15:58
Позиционироваться на результате запроса кто будет?
Кстати, не рекомендуется выгрузка в ТЗ результата для получения единственной строки, лучше выборку делать.
   Deon
 
2 - 24.12.12 - 16:00
(1) О, а не объяснишь, почему?
   Deon
 
3 - 24.12.12 - 16:00
(0) Семерочник?
   Starhan
 
4 - 24.12.12 - 16:01
потому что в памяти меньшее места занимает.

в выборке на тек момент хранятся данные ток текущей строки,
а в тз все данные скопом.


техническим языком объяснять не умею :(
   Смертник
 
5 - 24.12.12 - 16:06
(1) в смысле позиуироваться?
   Deon
 
6 - 24.12.12 - 16:07
(4) Так все равно 1 строка, что так, что эдак
   Смертник
 
7 - 24.12.12 - 16:08
не строк много там надо выбрать просто он в первую утыкается и дает ошибку
   Галахад
 
8 - 24.12.12 - 16:08
(5) Выгружаешь в ТЗ, а перебираешь Вагоны....
   Deon
 
9 - 24.12.12 - 16:09
(5) В смысле ТЗ - это таблица значений, а в Движение.Грузоотправитель = ТЗ.ГрузоотправительГл; вместо ТЗ должна идти переменная строки ТЗ.
типа:
СтрТЗ = ТЗ[0];
Движение.Грузоотправитель = СтрТЗ.ГрузоотправительГл;
   Deon
 
10 - 24.12.12 - 16:09
(9) Ток ты так не делай, это я  для примера
 
 Рекламное место пустует
   zladenuw
 
11 - 24.12.12 - 16:10
(0) лучше название колонок как в документе реквизиты и
ЗАполнитьЗначениеСвойств
   Галахад
 
12 - 24.12.12 - 16:11
(6) А если в документе 1000 сток?
   Starhan
 
13 - 24.12.12 - 16:13
(6)
Можно попробовать замерить обход по строкам и там и там но мне лень :)
   Deon
 
14 - 24.12.12 - 16:13
(12) Да, не обратил внимания, что в (0) запрос тянет все строки. Я про ситуацию, когда запрос в любом случае вернет 1 строку, что использовать, выборку или выгрузку?
   Смертник
 
15 - 24.12.12 - 16:14
названия и так соответствуют именам колонок в доке основании
   zladenuw
 
16 - 24.12.12 - 16:14
(15) обманщик (0)   Движение.Грузоотправитель = ТЗ.ГрузоотправительГл;
   Смертник
 
17 - 24.12.12 - 16:16
Это я сделал чтобы посмотреть на что ругается, а так там Грузоотправитель
   Serg_1960
 
18 - 24.12.12 - 16:16
Хитровывернутый запрос, не осилил. Но хочу сказать: когда-нибудь он сработает и взорвется - автор будет иметь бледный вид от испуга :)
   Галахад
 
19 - 24.12.12 - 16:17
(14) Наверное пофиг. Хотя лучше однообразно делать...
   Смертник
 
20 - 24.12.12 - 16:17
если подскажите как написать по другому запрос к доку основания буду благодарен
   Alexaha
 
21 - 24.12.12 - 16:21
(20) запрос пиши так что бы у тебя в результат получался готовый набор записей

чтобы в итоге можно было написать

НаборЗаписей.Загрузить(Запрос.Выполнить().Выгрузить())
   zladenuw
 
22 - 24.12.12 - 16:21
(21) ну это вообще по феншуЮ :)
   Галахад
 
23 - 24.12.12 - 16:23
Не понимаю, почему программист должен кого-то материть?
Ну кроме начальника.

Матерят, как правило из-за несбывшихся ожиданий.
А какие ожидания от пользователей или коллег.
   Галахад
 
24 - 24.12.12 - 16:25
Хм. Акела промахнулся..
   Deon
 
25 - 24.12.12 - 16:26
(24) Не переживай, я и ту ветку параллельно читаю, так что нормально
   Serg_1960
 
26 - 24.12.12 - 16:32
(0) Или я ничего не понимаю в мясных обрезках, или ТС нужно:
"ВЫБРАТЬ
|    Квитанция.Грузоотправитель КАК ГрузоотправительГл,
|    Квитанция.Грузополучатель КАК Грузополучатель,
|    Квитанция.Номенклатура КАК Номенклатура,
|    Квитанция.Покупатель КАК Покупатель,
|    Квитанция.ДоговорКонтрагента КАК ДоговорКонтрагента,
|    Квитанция.Заказ КАК Заказ,
|    Квитанция.Количество КАК Количество
|ИЗ
|    Документ.ру_ЖДКвитанция КАК Квитанция
|ГДЕ
|    Квитанция.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.ДокументОснование);
   Смертник
 
27 - 24.12.12 - 16:41
это сработает если делается на основании ввод а если строки заполнены путем добавления?
   Serg_1960
 
28 - 24.12.12 - 16:51
(27) Тогда это противоречит запросу, ибо там ты при соединении используешь "...И ру_ЖДКвитанцияВагоны.Ссылка = ру_ПодтверждениеЖДТарифаВагоны.Ссылка.ДокументОснование"
   Смертник
 
29 - 24.12.12 - 16:57
так я добавляю движение тоже по ЖД Квитанции - просто выбираю какие надо документы и добавляю
   Смертник
 
30 - 24.12.12 - 17:05
и как тогда правильно строить запрос?
   Serg_1960
 
31 - 24.12.12 - 17:16
Насколько я понимаю, "НомерВагона" не является уникальным значением и не может являться "самодостаточным" для соединения в документе, у которого не указано основание.

И второе: если документ заполнен не "по основанию", тогда можно предположить, что "оснований" может быть несколько.

Не зная твою конфу, могу только предположить: вероятно в ТЧ есть "Номенклатура" и "Заказ" - вот по ним возможно соединение. Вероятно.
   Смертник
 
32 - 24.12.12 - 17:21
в подтверждении нет ни заказа ни номенклатуры
   Смертник
 
33 - 24.12.12 - 17:22
есть номер вагона и те поля которые указаны при заполнении
 
 
   sidalexsandr
 
34 - 24.12.12 - 17:36
Для каждого ТаблЗнач Из ТЗ Цикл
   // Вот так получить значение из таблицы значений
 
      ТаблЗнач.ТЗ.Грузоотправитель
    

КонецЦикла;


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует