Автозаполнение ТЧ документа

1. user1169791 13.08.19 08:38 Сейчас в теме
Добрый день ребят!Подскажите пожалуйста!Вот есть такой вот документ!смотрите на скрин!вот надо что бы остаток в производстве заполнялся автоматически!
т.е. бралось количество из регистра"ОстаткиМатериалоВПроизводстве" на дату создания этого документа,опираясь на номенклатуру и подразделение! + Количество(Передано) - Количество(получено)
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 13.08.19 08:43 Сейчас в теме
(1)
Подскажите пожалуйста!
Лехко! Подсказываю: тут код писать нужно!
3. user1169791 13.08.19 08:46 Сейчас в теме
(2) да это понятно!а подробнее?
4. Kaspirovsky 215 13.08.19 09:15 Сейчас в теме
(3) делаешь кнопку "Заполнить", к ней прикручиваешь процедуру, которая обращается в твоему регистру получает данные и заполняет табличную часть, а движения с твоего документа в регистр"ОстаткиМатериалоВПроизводстве" будет записывать?
6. user1169791 13.08.19 09:22 Сейчас в теме
(4)нет,туда нет!надо только забирать оттуда
5. Alex_CheST 2 13.08.19 09:18 Сейчас в теме
Я так понимаю что надо просто написать запрос к регистру с выгрузкой в табличную часть. Условия в полях пропишите сами. И все. Все это повесить в обработчик события изменения документа на форме. .. (ну если задача стоит еще привязывать документ). Свяжите документ с регистром если он регистратор и вам надо смотреть инфу именно из него. Если нет то забирайте дату как параметр и отдавайте его в параметры виртуальной таблицы. Варианты разные, зависит от задачи конкретной.
7. user1169791 13.08.19 09:29 Сейчас в теме
(5) с самим текстом процедуры проблемно..
8. Alex_CheST 2 13.08.19 09:37 Сейчас в теме
(7) можно что то подобное только ваши документы и регистры выбирайте я просто для примера написал. Параметр документ это ваш документ на форме.

ВЫБРАТЬ
	РеализацияТоваровУслугТовары.Номенклатура,
	РеализацияТоваровУслугТовары.Ссылка.Подразделение,
	СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
ПОМЕСТИТЬ ВТ
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
	РеализацияТоваровУслугТовары.Ссылка = &Документ

СГРУППИРОВАТЬ ПО
	РеализацияТоваровУслугТовары.Номенклатура,
	РеализацияТоваровУслугТовары.Ссылка.Подразделение
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоРегистра,
	ВТ.Номенклатура
ИЗ
	ВТ КАК ВТ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(
				&Дата,
				(Номенклатура, Склад) В
					(ВЫБРАТЬ
						ВТ.Номенклатура,
						ВТ.Подразделение
					ИЗ
						ВТ КАК ВТ)) КАК ТоварыНаСкладахОстатки
		ПО ВТ.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
			И ВТ.Подразделение = ТоварыНаСкладахОстатки.Склад
Показать

Дальше выгружайте в ТЗ и делайте что нужно. Общий принцип такой только поменяйте на ваши условия (я не знаю что есть передано и получено, но думаю что это информация из регистра или документа)
9. user1169791 13.08.19 10:04 Сейчас в теме
10. Alex_CheST 2 13.08.19 10:26 Сейчас в теме
(9)
то не то..
это принцип как выполнять задачу. Вам нужно подстроить под себя. Подставьте свой документ и регистр. Если не нужен документ то оставьте только 2 временную таблицу уберите привязки к первой и дату как параметр.
12. user1169791 13.08.19 11:00 Сейчас в теме
(10)
я может ошибаюсь т.к. только учусь!
я понимаю так,есть модуль документа!
в этом модуле надо описать процедуру,
берущую остатки из регистра накоплений плюсующую к ним то количество что отдает "склад отправитель" и минусующую количество что получает"склад получатель"!

т.е. я как предствлял принцып работы?
вводим номеклатуру скажем "стул"!
в графе "остатках производства",сразу вышел остаток к примеру "50"!
//////// (50+0-0)=50!
в графу передано мы вводим "10"! "ост.произв." поменялся на "60"!
////////(50+10-0)=60!
в графу получено вводим к примеру "40"!"ост.произв." поменялся на "20"!
//////////(50+10-40)=20!
блин не знаю возможно ли это в документе!я надеюсь прояснилось что то!
15. user1169791 13.08.19 11:14 Сейчас в теме
(12)
Прикрепленные файлы:
18. Alex_CheST 2 13.08.19 11:30 Сейчас в теме
(15) Вообще как то странно выглядит, то как вы это хотите реализовать. Подсчеты на лету без записи результата в регистр потом, в чем смысл регистра тогда или это информация с разных регистров? Должен быть документ его ТЧ в которой будет перечень номенклатуры которую вам нужно посчитать и сколько пришло. Потом при изменении строки вычитайте и суммируйте что вам нужно. Потом пишите результат вычисления в регистр с контролем отрицательного остатка при проведении документа, если не делать запись то зачем вам именно документ? По сути у вас одна операция с обращением к базе данных это выборка из регистра. Я бы сделал так сперва заполнил все не числовые поля ТЧ потом записал документ как нибудь программно при нажатии на кнопку загрузить остатки (ну или любая реализация через интерактив). А потом просто в каком - нибудь общем модуле прописать функцию суммирования и вычета и вызывал ее при изменении колонки передано и т д. А все бы делал одним запросом передавая ТЧ в запрос.
20. user1169791 13.08.19 11:45 Сейчас в теме
(18)этот документ просто скажет показательные данные!как сводка!из того что есть не получалось собрать нужный отчет!вот решил создать документ!и из него уже собрать макет для отчета!
а движения все как обычно документами ОПзС и ТрН!просто этот документ вообще просто можно сказать не влияющий на основные регистры!
21. Alex_CheST 2 13.08.19 11:59 Сейчас в теме
(20)
создать документ!и из него уже собрать макет для отчета!
а движения все как обычно документами ОПзС и ТрН!просто этот документ вообще просто можно сказать не влияющий на основные регистры!
и я все равно не понимаю зачем вам документ? Какую хозяйственную операцию он отражает. Вам надо хранить в базе данных эти сводки или что? Неправильно документ к отчету приравнивать у них разные задачи. Ваша задача больше похожа на обработку где нужно что то посчитать и вывести результат. Зачем вам хранить в базе данных все ваши подсчеты если вы говорите что это отчет...СКД не знаете? Зачем макет собирать?
11. login1020 133 13.08.19 10:54 Сейчас в теме
(9) Покажите структуру вашего регистра накопления
13. user1169791 13.08.19 11:02 Сейчас в теме
(11)Структуру рег.нак."МатериалыВПроизводствеОстатки"
вы про него?
14. login1020 133 13.08.19 11:11 Сейчас в теме
(13) Структуру того регистра, из которого Вы хотите взять остатки на дату документа в разрезе номенклатуры и подразделения.
16. user1169791 13.08.19 11:18 Сейчас в теме
(14)
Прикрепленные файлы:
19. login1020 133 13.08.19 11:41 Сейчас в теме
(16) Номенклатура это Измерение Затрата? Покажите ещё в консоле запросов срез последних по подразделению что показывает.
В консоль выкиньте все измерения.
22. user1169791 13.08.19 12:05 Сейчас в теме
(19)
да затрата - это номенклатура(в данном варианте "Продукт" )
про срез последних посмотрите пожалуйста он мне вообще ничего не выдает ни просто ни срез последних,одно и тоже пишет!что я не так написал можете сказать?
Прикрепленные файлы:
25. login1020 133 13.08.19 13:41 Сейчас в теме
(22) ну вообще всё
Написать, примерно,так.
Но то, что вы хотите это не решит, Вам нужно менять подход к решению вашей задачи.
ВЫБРАТЬ
	МатериалыВПроизводствеОстатки.Подразделение КАК Подразделение ,
	МатериалыВПроизводствеОстатки.Заказ КАК Заказ ,
	МатериалыВПроизводствеОстатки.Затрата КАК Затрата 
ИЗ
	РегистрНакопления.МатериалыВПроизводстве.Остатки(&Дата, Подразделение = &Подразделение) КАК МатериалыВПроизводствеОстатки
26. max_zhilin 13.08.19 13:44 Сейчас в теме
17. mazechild 13.08.19 11:27 Сейчас в теме
Я так понял вам нужна процедура, которая срабатывает при изменении значений в строке табличной части. Значит событие ПриИзменении. В ней собственно запрос на остаток номенклатуры с параметрами - номенклатура, момент времени, склад; + то, что приходит + то, что уходит.
Всё достаточно просто.
29. vova-1c 153 14.08.19 02:34 Сейчас в теме
как подсказал mazechild (17)
я бы добавил через "Подписки на события", как то выполнял аналогичную задачу,
само событие вешаешь на создание документа, т.е. в качестве источника указываешь свой документ, обработчиком делаешь общий модуль в котором и описываешь что ты хочешь сделать при вводе того или иного значения,
а так тут самый простой способ тебе уже подсказал mazechild
это к стате стандартная фича некоторых учетных систем "Подсказка остатков запрашиваемого товара на лету", в твоем случае комплектующих , такая задача даже есть в экзаменационных вопросах на Спеца по Платформе,
вывод временного результата подсказки можешь реализовать во всплывающее окошко, либо просто при превышении остатков всплывающее предупреждение , как то так, если я правильно понял Ваш вопрос
23. x_x 2 13.08.19 12:27 Сейчас в теме
первая строка заполняется по срезу остатка а все последующие уже на основании предыдущей строки с учетом технологической операции и с учетом другой продукции, а то на два стула в первом шаге посчитается остаток по 4 ножки а по факту на один стул уже не хватает.
Вроде же было решено что производственные циклы должен заполняться на основании заказа на производство.
А так Повторю еще раз, как и не однократно в переписке. сядьте просто за столом без компа возьмите листок и карандаш нарисуете что вы хотите распишите по пунктам; сходите в производственникам, бухам, если всем не до вас и все равно что вы делаете.
напишите руководителю заявление или в свободной форме письмо с просьбой помочь с реализацией, потому что вопрос у вас серьезный и если сейчас сделать на коленке потом будут чертыхаться всю жизнь.
24. user652650_Juliettevp 13.08.19 13:06 Сейчас в теме
Это больше похоже на отчет, обработку - с циклом вложенности. Верно сказали - для документа тут нет места.
простой СКД, скорее всего не написать - придется влазить в модуль и писать доп. запросы
27. el07 1 13.08.19 16:38 Сейчас в теме
Здравствуйте.
Шагаете по табличной части документа с.о.:
Для каждого Строка из <ИмяТабличнойЧасти> Цикл
запрос=новый запрос;
запрос.текстЗапроса= "ВЫБРАТЬ
	МатериалыВПроизводствеОстатки.КоличествоОстаток
ИЗ
	РегистрНакопления.МатериалыВПроизводстве.Остатки(
			&НаДату,
			Затрата = &Номенклатура
				И Подразделение = &Подразделение) КАК МатериалыВПроизводствеОстатки";
запрос.УстановитьПараметр("Номенклатура", Строка.Номенклатура );
запрос.УстановитьПараметр("Подразделение", Строка.Подразделение );
рз=запрос.выполнить().выбрать();
Строка.Количество=рз.КоличествоОстаток;
КонецЦикла;
Показать


Это приблизительный текст. Я не поняла что у вас номенклатура в табличной части документа "продукт" или "полуфабрикат". И В какую колонку лепить остаток.
28. el07 1 13.08.19 16:40 Сейчас в теме
Пардон, забыла еще параметр "НаДату". Но, я думаю, сами догадаетесь указать.
30. el07 1 14.08.19 09:43 Сейчас в теме
(28)
и еще (наспех писала) ошибочка:
не "Строка.Количество=рз.КоличествоОстаток;"
а
если рз.Следующий() тогда
Строка.Количество=рз.КоличествоОстаток;
конецесли;
31. user1169791 16.08.19 08:15 Сейчас в теме
(30) не знаю вот так вот пишет
{Документ.ПроизводственныеЦиклы.Форма.ФормаДокумента.Форма(37,30)}: Пропущен символ '"' (двойная кавычка)
запрос.текстЗапроса= "ВЫБРАТЬ<<?>> (Проверка: Толстый клиент (обычное приложение))
{Документ.ПроизводственныеЦиклы.Форма.ФормаДокумента.Форма(37,30)}: Ожидается символ ';'
запрос.текстЗапроса= "ВЫБРАТЬ<<?>> (Проверка: Толстый клиент (обычное приложение))
{Документ.ПроизводственныеЦиклы.Форма.ФормаДокумента.Форма(39,1)}: Неопознанный оператор
<<?>>ИЗ (Проверка: Толстый клиент (обычное приложение))
32. el07 1 16.08.19 09:30 Сейчас в теме
(31)Трудно сказать, может у вас где-то лишние кавычки? Вообще, когда пишу конструктором запросов, с синтаксисом не бывает проблем. Весь текст запроса находится в кавычках, после чего идет точка с запятой. Внутри запроса могут быть кавычки, например, если вставляется переменная:
"<тескт запроса>"+НазваниеПеременной+"<продолжение Текста запроса>"
но тогда конструктором запрос уже не открыть;
или двойные кавычки, если вставлен символ (символы), например:
""г. Москва"" КАК Город,
тогда конструктором открывается.
33. 2PRV 7 19.08.19 07:01 Сейчас в теме
(31) Забыли символ перенос строки | ? Может быть так:
 "ВЫБРАТЬ
    |МатериалыВПроизводствеОстатки.КоличествоОстаток
    |ИЗ
    |РегистрНакопления.МатериалыВПроизводстве.Остатки(
    |        &НаДату,
    |        Затрата = &Номенклатура
    |           И Подразделение = &Подразделение) КАК МатериалыВПроизводствеОстатки";
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот