выбор реквизита склад в ТЧ

Тема в разделе "1C и всё что с ней связано", создана пользователем tarakan, 1 фев 2010.

  1. tarakan

    tarakan Гость

    Здравствуйте!
    я решил в 1с 7.7 космплексная конфа 4,5 сделать что бы реквизит склад в документах выбирался из тобличной части!(для того что бы в документе ПриходТМЦ можно было за один документ разное кол. деталей, разложить на несколько складов)
    НО я встрял на модуле документа!

    Процедура ОбработкаПроведения(ВидыДвижений)
    Если глВсеРеквизитыДокументаЗаполнены(Контекст,
    "Фирма,Валюта,Контрагент,Договор")=0 Тогда
    Возврат;
    КонецЕсли;
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Если глВсеРеквизитыДокументаЗаполнены(Контекст,
    "Склад")=0 Тогда
    Возврат;
    КонецЕсли;
    КонецЦикла;

    документ проводиться но в отчётах деталь есть а по складам её нет!
    далее следует:

    // Проведение по регистрам оперативного учета.
    Если (ПустоеЗначение(ВидыДвижений) = 1) ИЛИ (Найти(ВидыДвижений, "Регистр") <> 0) Тогда
    ПроведениеПоРегистрам();
    Если СтатусВозврата() = 0 Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли
    Если ДатаДок >= глДатаПоПриказу147 Тогда
    СкорретироватьДвиженияПартийПоАвансам();
    КонецЕсли;
    глПриПроведении(Контекст, ВидыДвижений);
    КонецПроцедуры
    скорей всего нужно переписать проведение по регистрам но если честно то ни разу этого не делал и даже не имею представления как это делать!
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Дык в чем проблема? погляди процедуру ПроведениеПоРегистрам() и пожалуй в нее и внеси необходимые правки
     
  3. tarakan

    tarakan Гость

    Код (Text):
    Процедура ПроведениеПоРегистрам()

    Перем ВремРегистры;
    Перем ВремПоставщики, ВремЗаказы, ВремЗаказыЗаявки;

    // Удаление движений по регистрам.
    Для Номер = 1 По Метаданные.Регистр() Цикл
    ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор);
    КонецЦикла;

    ТаблицаДокумента=глПодготовитьТаблицуДокумента(Контекст);

    СписокПараметров=СоздатьОбъект("СписокЗначений");

    СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),"ТекДок");
    СписокПараметров.ДобавитьЗначение(Склад,       "Склад");
    СписокПараметров.ДобавитьЗначение(Фирма,       "Фирма");
    СписокПараметров.ДобавитьЗначение(Контрагент, "Контрагент");
    СписокПараметров.ДобавитьЗначение(Договор,       "Договор");

    СписокПараметров.ДобавитьЗначение(КодОперации,   "КодОперации");

    ВремРегистры     = СоздатьОбъект("Регистры");
    ВремЗаказы         = ВремРегистры.Заказы;
    ВремЗаказыЗаявки = ВремРегистры.ЗаказыЗаявки;

    ФильтрЗаказов(ТаблицаДокумента, ВремЗаказы, ВремЗаказыЗаявки);
    Если КодОперации=Перечисление.КодыОпераций.Закупка Тогда
    ВремПоставщики = ВремРегистры.Поставщики;
    глФильтрДолгов(Контекст, Договор, СписокПараметров, ВремПоставщики);
    КонецЕсли;

    Если ИтогиАктуальны() = 0 Тогда
    ВремРегистры.Актуальность(1);
    ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;

    // Принимать на реализацию будет только товары
    Если КодОперации=Перечисление.КодыОпераций.ПриемНаРеализацию Тогда

    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл
    ТаблицаДокумента.ВидТМЦ       = Перечисление.ВидыТМЦ.Товар;
    КонецЦикла;    
    КонецЕсли;

    ДвижениеЗаказов(ТаблицаДокумента, ВремЗаказы, ВремЗаказыЗаявки);
    глПриходОстатковТМЦ      (Контекст,ТаблицаДокумента,СписокПараметров);
    глОприходованиеПартийТМЦ(Контекст,ТаблицаДокумента,СписокПараметров);

    Если КодОперации=Перечисление.КодыОпераций.Закупка Тогда

    ТаблицаДокумента.Свернуть("ВидТМЦ,СтавкаНДС","Сумма,СуммаУпр,СуммаРуб,СуммаНДС,СуммаНП");
    ТаблицаДокумента.НоваяКолонка("ВидДолга");
    ТаблицаДокумента.НоваяКолонка("КредДокумент");

    ТаблицаДокумента.ВыбратьСтроки();
    Пока ТаблицаДокумента.ПолучитьСтроку()=1 Цикл
    ТаблицаДокумента.ВидДолга       = ВидДолгаПоТМЦ(ТаблицаДокумента.ВидТМЦ);
    ТаблицаДокумента.КредДокумент  = ТекущийДокумент();
    КонецЦикла;    

    СписокПараметров.Установить("ЗнакДвижения", -1); // уменьшение долга контрагента
    глДвижениеДолгов(Контекст, Договор, ТаблицаДокумента,СписокПараметров,ВремПоставщики);
    КонецЕсли;

    КонецПроцедурыПроцедура ПроведениеПоРегистрам()
    Если не сложно том ожно хотя бы тыкнут где надо испровлять?
     
  4. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ну я бы для начала поглдел отладчиком - попадает ли склад в СписокПараметров. Если попадает - смогтреть дальше процедуры, если нет - тогда разбираться с тем как у тебя заполняется и хранится склад в доке
     
  5. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Придется лопатить процедуру глСписаниеОстатковТМЦ в глобальном модуле. Стандартно она обеспечивает списание с одного склада (см.шапку документа),
    тебе же нужно в ней перебрать строки накладной (конт.ВыбратьСтроки()) и обеспечить списание с разных складов
     
  6. Hryv

    Hryv Гость

    ИМХО задача такого уровня сложности, что если спрашивать советы на форуме, то лучше вообще за нее не браться
    последствия могут быть плачевными

    Кроме того, не спроста изначально все приходуется на один склад, а затем перемещается куда надо
     
  7. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Что тут еще добавить ? Я бы тоже не стал связываться с товарами с разных складов в одной накладной ;)
     
  8. tarakan

    tarakan Гость

    Это я уже и сам понял! Осталось только облажиться Литературой!
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    кто мешает? :( удачи!
     
  10. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    И не облажаться :welcome:
     
Загрузка...

Поделиться этой страницей