(17) Да, если хотите что бы пользователи видели - добавьте этот же реквизит на форму:
Дайте ему заголовок и уберите доступность ( Чтоб пользователь не ставил вручную)
(15) вот так я сделал!)но что не то вроде,как появилась,место с галочкой "план выполнен" но это самому нужно ставить,а что бы оно само как то ставило это наверное нельзя сделать?и вот такой еще момент,галочку ставишь,записываешь,закрываешь,по новой открываю,галочка уже не стоит..что то не так я походу сделал?
(21) блин чуток,не так..он теперь просто ставит галку при записи!не важно выполнен план или нет..а надо именно что бы тогда когда выполняется план!ну т.е. надо 4 болта,4 болта появились по заданному плану,вот в этот момент галка должна ставится,что типа все этот план уже "закрыт"!
Процедура ПриЗаписи()
Для каждого Товар из товары цикл
Остаток = получениеОстатков(Товар.Номенклатура);
Если Товар.Количество > Остаток ИЛИ Товар.Количество = Остаток Тогда
ПланВыполнен = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция получениеОстатков(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
| СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Сегодня, ) КАК ТоварыОрганизацийОстатки
|ГДЕ
| ТоварыОрганизацийОстатки.Номенклатура = &Номенклатура
| И ТоварыОрганизацийОстатки.Склад = &Склад
|
|СГРУППИРОВАТЬ ПО
| ТоварыОрганизацийОстатки.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("000")); ////000 - ваш код склада
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Следующий() Тогда
возврат РезультатЗапроса.КоличествоОстаток; //Если есть остаток
Иначе
возврат 0; //Если не найдено остатков
КонецЕсли
КонецФункции
Для каждого Товар из товары цикл
Остаток = получениеОстатков(Товар.Номенклатура);
Если Товар.Количество > Остаток ИЛИ Товар.Количество = Остаток Тогда
ПланВыполнен = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Мнне кажется я вот тут не правильно написал,это же из регистра накоплений?
(44)а все понял,у меня прослужебное окно скрыто было,я и не видел.. вот ошибка
{Документ.ПланПроизводства.Форма.ФормаДокумента.Форма(512,26)}: Переменная не определена (товары)
Для каждого Товар из <<?>>товары цикл (Проверка: Толстый клиент (обычное приложение))
(53){Документ.ПланПроизводства.Форма.ФормаДокумента.Форма(530)}: Поле объекта недоступно для записи (СоставПлана)
Для каждого СоставПлана из СоставПлана цикл
Для каждого План из СоставПлана цикл
Остаток = получениеОстатков(План .Номенклатура);
Если План .Количество > Остаток ИЛИ План .Количество = Остаток Тогда
ПланВыполнен = Истина;
КонецЕсли;
КонецЦикла;
Процедура ПередЗаписью()
Для каждого План из СоставПлана цикл
Остаток = получениеОстатков(План .Номенклатура);
Если План .Количество > Остаток ИЛИ План .Количество = Остаток Тогда
ПланВыполнен = Истина;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция получениеОстатков(Номенклатура)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
| СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК КоличествоОстаток
|ИЗ
| РегистрНакопления.ТоварыОрганизаций.Остатки(&Сегодня, ) КАК ТоварыОрганизацийОстатки
|ГДЕ
| ТоварыОрганизацийОстатки.Номенклатура = &Номенклатура
| И ТоварыОрганизацийОстатки.Склад = &Склад
|
|СГРУППИРОВАТЬ ПО
| ТоварыОрганизацийОстатки.Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Сегодня", ТекущаяДата());
Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("000")); ////000 - ваш код склада
РезультатЗапроса = Запрос.Выполнить().Выбрать();
Если РезультатЗапроса.Следующий() Тогда
возврат РезультатЗапроса.КоличествоОстаток; //Если есть остаток
Иначе
возврат 0; //Если не найдено остатков
КонецЕсли
КонецФункции
Для каждого План из СоставПлана цикл
Остаток = получениеОстатков(План .Номенклатура);
Если Остаток = 0 тогда
Возврат;
Конецесли;
Если План .Количество > Остаток ИЛИ План .Количество = Остаток Тогда
ПланВыполнен = Истина;
КонецЕсли;
КонецЦикла;
(26)я иду к тому,что я делаю отчет в СКД ТоварыНаСкладахОстаткиИОброты,по мимо остатков и оборотов там у меня есть еще графа "Количество По Плану",вот если формируешь отчет он все планы суммирует!а я хотел что бы если план выполнен,что бы он дальше не фигурировал!может каким то другим путем это нужно сделать?
(31) Если где то учитывается что план закрыт то можно, а так как он вам отберет ?
так хоть по реквизиту можно условию дописать. (Ну это мое мнение, возможно найдутся умы посерьезнее моего и помогут ))
(2)
1С:Предприятие 8.2 (8.2.19.68)
Управление производственным предприятием, редакция 1.3 (1.3.111.1) (http://v8.1c.ru/enterprise/) Copyright (С) ООО "1C-Софт", 2009-2018. Все права защищены
(http://www.1c.ru/)
Зачем городить огород! Добавьте поле в отчет "ПланВыполнен" типа
выбор когда ПланПроизводства.Количество >= Выпуск.Количество тогда ИСТИНА иначе ЛОЖЬ конец КАК ПланВыполнен