• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

tarakan

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

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

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

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

KiR

скорей всего нужно переписать проведение по регистрам но если честно то ни разу этого не делал и даже не имею представления как это делать!
Дык в чем проблема? погляди процедуру ПроведениеПоРегистрам() и пожалуй в нее и внеси необходимые правки
 
T

tarakan

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если не сложно том ожно хотя бы тыкнут где надо испровлять?
 
K

KiR

ну я бы для начала поглдел отладчиком - попадает ли склад в СписокПараметров. Если попадает - смогтреть дальше процедуры, если нет - тогда разбираться с тем как у тебя заполняется и хранится склад в доке
 
V

vbs

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

Hryv

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

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

vbs

Кроме того, не спроста изначально все приходуется на один склад, а затем перемещается куда надо
Что тут еще добавить ? Я бы тоже не стал связываться с товарами с разных складов в одной накладной ;)
 
T

tarakan

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!