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

  • Автор темы Автор темы tarakan
  • Дата начала Дата начала
T

tarakan

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если не сложно том ожно хотя бы тыкнут где надо испровлять?
 
ну я бы для начала поглдел отладчиком - попадает ли склад в СписокПараметров. Если попадает - смогтреть дальше процедуры, если нет - тогда разбираться с тем как у тебя заполняется и хранится склад в доке
 
Придется лопатить процедуру глСписаниеОстатковТМЦ в глобальном модуле. Стандартно она обеспечивает списание с одного склада (см.шапку документа),
тебе же нужно в ней перебрать строки накладной (конт.ВыбратьСтроки()) и обеспечить списание с разных складов
 
ИМХО задача такого уровня сложности, что если спрашивать советы на форуме, то лучше вообще за нее не браться
последствия могут быть плачевными

Кроме того, не спроста изначально все приходуется на один склад, а затем перемещается куда надо
 
Кроме того, не спроста изначально все приходуется на один склад, а затем перемещается куда надо
Что тут еще добавить ? Я бы тоже не стал связываться с товарами с разных складов в одной накладной ;)
 
Придется лопатить процедуру глСписаниеОстатковТМЦ в глобальном модуле. Стандартно она обеспечивает списание с одного склада (см.шапку документа),
тебе же нужно в ней перебрать строки накладной (конт.ВыбратьСтроки())
Это я уже и сам понял! Осталось только облажиться Литературой!
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab