Не присваивается значение перечисления полю формы документа
В форме документа Производство прописала следующий код:
Объекту Статус не присваивается значение перечисления, остальное выполняется без нареканий. Подскажите, в чем может быть дело, как можно исправить.
Интересный моментик: код работает на помеченных на удаление объектах, а на остальных нет
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если Объект.Статус = Перечисления.СтатусыПроизводства.Ожидает Тогда
Структура = ПроверкаСтатуса(Объект.Ингредиенты);
Объект.Статус = Структура.Статус;
Элементы.Статус.ТолькоПросмотр = Структура.Просмотр;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверкаСтатуса(Ингредиенты)
Статус = Перечисления.СтатусыПроизводства.Ожидает;
Просмотр = Ложь;
Для Каждого ТекСтрока Из Ингредиенты Цикл
Если ТекСтрока.Расход > ИнгредиентыНаСкладе(ТекСтрока.Номенклатура) Тогда
Статус = Перечисления.СтатусыПроизводства.Отменен;;
Просмотр = Истина;
Сообщить("Ингредиента """ + ТекСтрока.Номенклатура + """ недостаточно на складе для изготовления продукции. Заказ отменен");
КонецЕсли;
КонецЦикла;
Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
Возврат Стр;
КонецФункции
ПоказатьОбъекту Статус не присваивается значение перечисления, остальное выполняется без нареканий. Подскажите, в чем может быть дело, как можно исправить.
Интересный моментик: код работает на помеченных на удаление объектах, а на остальных нет
По теме из базы знаний
- Некоторые ошибки и «проблемные» особенности реализации встроенного языка платформы 1С:Предприятие 7.7
- Универсальный передаточный документ для Управление торговлей релиза 10.3.21.1 (бета для УТ 10.3.30.2) - печатная форма 2 в 1 альтернатива счету фактуре и расходной накладной.
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Сказ о том, как в одной крупной компании документооборот внедряли, или проблемы типовых обменов между КА и ДО
- Универсальный шаблон для загрузки данных из Excel и подбора ссылок в любой конфигурации
Найденные решения
(1) если нет далее логики изменения статуса, то долно отрабатывать в случае "двойной" записи из формы не закрывая форму документа.
Не тот обработчик использовали. В запись пойдет то, что указано в ТекущийОбъект. А правите только Объект формы.
Если этот код должен срабатывать не только из формы, то вносить его надо в обработчик ПередЗаписью в модуле объекта.
Не тот обработчик использовали. В запись пойдет то, что указано в ТекущийОбъект. А правите только Объект формы.
Если этот код должен срабатывать не только из формы, то вносить его надо в обработчик ПередЗаписью в модуле объекта.
(1)
&НаСервере
Функция ПроверкаСтатуса(СтарСтатус, Ингредиенты)
Статус = СтарСтатус;
Просмотр = Ложь;
Если СтарСтатус = Перечисления.СтатусыПроизводства.Ожидает Тогда
Для Каждого ТекСтрока Из Ингредиенты Цикл
Если ТекСтрока.Расход > ИнгредиентыНаСкладе(ТекСтрока.Номенклатура) Тогда
Статус = Перечисления.СтатусыПроизводства.Отменен;
Просмотр = Истина;
Сообщить("Ингредиента """ + ТекСтрока.Номенклатура + """ недостаточно на складе для изготовления продукции. Заказ отменен");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
Возврат Стр;
КонецФункции
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
ТекущийОбъект.Статус = Структура.Статус;
Если Структура.Просмотр = "Да" Тогда
Элементы.Статус.ТолькоПросмотр = Истина;
Иначе
Элементы.Статус.ТолькоПросмотр = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверкаСтатуса(СтарСтатус, Ингредиенты)
Статус = СтарСтатус;
Просмотр = Ложь;
Если СтарСтатус = Перечисления.СтатусыПроизводства.Ожидает Тогда
Для Каждого ТекСтрока Из Ингредиенты Цикл
Если ТекСтрока.Расход > ИнгредиентыНаСкладе(ТекСтрока.Номенклатура) Тогда
Статус = Перечисления.СтатусыПроизводства.Отменен;
Просмотр = Истина;
Сообщить("Ингредиента """ + ТекСтрока.Номенклатура + """ недостаточно на складе для изготовления продукции. Заказ отменен");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
Возврат Стр;
КонецФункции
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
ТекущийОбъект.Статус = Структура.Статус;
Если Структура.Просмотр = "Да" Тогда
Элементы.Статус.ТолькоПросмотр = Истина;
Иначе
Элементы.Статус.ТолькоПросмотр = Ложь;
КонецЕсли;
КонецПроцедуры
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) если нет далее логики изменения статуса, то долно отрабатывать в случае "двойной" записи из формы не закрывая форму документа.
Не тот обработчик использовали. В запись пойдет то, что указано в ТекущийОбъект. А правите только Объект формы.
Если этот код должен срабатывать не только из формы, то вносить его надо в обработчик ПередЗаписью в модуле объекта.
Не тот обработчик использовали. В запись пойдет то, что указано в ТекущийОбъект. А правите только Объект формы.
Если этот код должен срабатывать не только из формы, то вносить его надо в обработчик ПередЗаписью в модуле объекта.
(1)
&НаСервере
Функция ПроверкаСтатуса(СтарСтатус, Ингредиенты)
Статус = СтарСтатус;
Просмотр = Ложь;
Если СтарСтатус = Перечисления.СтатусыПроизводства.Ожидает Тогда
Для Каждого ТекСтрока Из Ингредиенты Цикл
Если ТекСтрока.Расход > ИнгредиентыНаСкладе(ТекСтрока.Номенклатура) Тогда
Статус = Перечисления.СтатусыПроизводства.Отменен;
Просмотр = Истина;
Сообщить("Ингредиента """ + ТекСтрока.Номенклатура + """ недостаточно на складе для изготовления продукции. Заказ отменен");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
Возврат Стр;
КонецФункции
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
ТекущийОбъект.Статус = Структура.Статус;
Если Структура.Просмотр = "Да" Тогда
Элементы.Статус.ТолькоПросмотр = Истина;
Иначе
Элементы.Статус.ТолькоПросмотр = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверкаСтатуса(СтарСтатус, Ингредиенты)
Статус = СтарСтатус;
Просмотр = Ложь;
Если СтарСтатус = Перечисления.СтатусыПроизводства.Ожидает Тогда
Для Каждого ТекСтрока Из Ингредиенты Цикл
Если ТекСтрока.Расход > ИнгредиентыНаСкладе(ТекСтрока.Номенклатура) Тогда
Статус = Перечисления.СтатусыПроизводства.Отменен;
Просмотр = Истина;
Сообщить("Ингредиента """ + ТекСтрока.Номенклатура + """ недостаточно на складе для изготовления продукции. Заказ отменен");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
Возврат Стр;
КонецФункции
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
ТекущийОбъект.Статус = Структура.Статус;
Если Структура.Просмотр = "Да" Тогда
Элементы.Статус.ТолькоПросмотр = Истина;
Иначе
Элементы.Статус.ТолькоПросмотр = Ложь;
КонецЕсли;
КонецПроцедуры
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот