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

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) Забыли символ перенос строки | ? Может быть так:
 "ВЫБРАТЬ
    |МатериалыВПроизводствеОстатки.КоличествоОстаток
    |ИЗ
    |РегистрНакопления.МатериалыВПроизводстве.Остатки(
    |        &НаДату,
    |        Затрата = &Номенклатура
    |           И Подразделение = &Подразделение) КАК МатериалыВПроизводствеОстатки";
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день