Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 22:42

помогите разбораться в обработке документов "ЗаказТоваров"

Автор proofet, 13 мая 2011, 20:59

0 Пользователей и 1 гость просматривают эту тему.

proofet

Всем привет! :mellow:. Столкнулся с проблемой в следующем задании: Нужно  составить новый документ ЗаказТоваров. Смысл в том, что можно указывать те товары, которые мы у поставщика заказали.  товары приходят через неделю после даты составления документа. также присутствует реквизит "товар уже пришел" (Документ "ЗаказаТоваров" создает движения в регистре накоплений "ТоварыВПути", но это не обязательный пункт прост мне кажется так проще далее). И далее уже нужно создать обработку, которая будет искать все "просроченные" документы заказтоваров (кнопка ПОИСК). Она должна выводить документы в табличную часть (ТабличноеПоле). Пользователь должен иметь возможность галочками указать по каким документам товар пришел, а по каким нет (отдельная колонка с галочкой). По всем тем, по которым пришел товар, обработка должна заводить на основании документ поступления (проводить по регистрам накопления, если товар пришел - истина).

начал было так делать....но не получается заполнить ТЧ в форме обработки ....

ДокВыборка = Документы.ЗаказТоваров.Выбрать();
    Пока ДокВыборка.Следующий() Цикл
        Если ДокВыборка.Проведен Тогда
            Документ = ДокВыборка.ПолучитьОбъект();
          Если Документ.ДатаПрихода < ТекущаяДата() Тогда
            ЭлементыФормы.ТабличноеПолеЗаказыТоваров.Значение = Документ.Прочитать();
            Если ЭлементыФормы.ТабличноеПолеЗаказыТоваров.Колонки.Пришёл = Истина Тогда
// и вот что и как далее я хз




может хоть намекнете на правильное решение, не прошу весь код писать.....Просто хочется разобраться в процессе...

Klyacksa

Посоветовала бы запрос написать. Документов со временем может быть много, и обходить их таким образом будет затруднительно.
По заполнению табличной части. Если есть Док1 и Док2, нужно из таб.части Док1 перенести товары в таб.часть Док2, то делаем так:

ТабЧасть=Док2.ТабЧасть;
Для каждого Строка из Док1.ТабЧасть цикл
       НоваяСтрока=ТабЧасть.Добавить();
       НоваяСтрока.Номенклатура=Строка.Номенклатура;
       НоваяСтрока.Количество=Строка.Количество;
       // ну и так далее по нужным колонкам
КонецЦикла;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

Если нужны все колонки перенести, я обычно одной строкой пишу...

ЗаполнитьЗначенияСвойств(НоваяСтрока,Строка);
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

По задаче...

Просроченные документы выбирайте запросом.
При обходе результата запроса...

НоваяСтрока = ТЗПросроченныеЗаказы.Добавить();
НоваяСтрока.Заказ = ВыборкаИзЗапроса.Ссылка;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

proofet


proofet

С заполнение вроде разобрался (учитывая ваши советы сделал запрос). Теперь проблема в следующем ...."Пользователь должен иметь возможность галочками указать по каким документам товар пришел, а по каким нет (отдельная колонка с галочкой). По всем тем, по которым пришел товар, обработка должна заводить на основании документ поступления (проводить по регистрам накопления, если товар пришел - истина)."              ..В ТЧ добавил реквизит с типом булево "Пришел"....как связать этот реквизит и документ которому пренадлежит строка?...т.е. у меня ТЧ заполняется и в каждой строке есть реквизит булево "Пришел". После нажатия отдельной кнопки "Провести", по тем строкам (документам) где булево=истина, вся номенклатура в документе проводится по отдельному регистру накопления.........Как это осуществить друзья ?(

cska-fanat-kz

Для каждого ТекСтрокаТЧ Из ТЧ Цикл
Если ТекСтрокаТЧ.Пришел Тогда
...
КонецЕсли;
КонецЦикла;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

proofet

№ ДатаСоздДок.  ДатаПрихода    Пришёл
1    19.03.11           31.03.11           []


/\
||

Так примерно выгляди ТЧ на форме...

При обходе ТекСтрокаТЧ Из ТЧ ...как получить ссылку на этот документ не совсем понимаю ?...эж просто строка..без ссылки(( или я что то не понимаю....,Как мне провести эту строку по регистру ?.

proofet

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


...........................


№ ДатаСоздДок.  ДатаПрихода    Пришёл
1    19.03.11           31.03.11           []


После заполнения так примерно выглядит ТП
...............................................................
Процедура ПровестиНажатие(Элемент)
    Для каждого ТекСтрокаТовары Из Товары Цикл
        Если ТекСтрокаТовары.Пришел=Истина
            Тогда

  // нужно провести этот документ по регистру.....(ну тот чьи даты заполнили строку ТП)

КонецЕсли;
КонецЦикла;

proofet

Собсно вся сложность в номенклатуре документа....В ТП я её не заполнил.......И откуда тогда её получить ? и можно ли вообще как то её достать ? или мне что то поменять? :dfbsdfbsdf:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск