Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 04:37

1C 8.3. Если в планировщике ремонта записать и провести программно, то ячейки не перекрашиваются

Автор gulnyr, 23 мар 2023, 10:16

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

В планировщике ремонта можно в ячейку задать время окончания ремонта и он перекрашивает в ячейке на светло-зеленый в соответствии по времени (это если вручную открыть расшифровку ячейки, задать время окончания и нажать кнопку ОК, который сохраняет и проводит).

Новый точечный рисунок.png

А если те же действия делать программно (т.е. изменить время окончания ремонта, делать сохранение и проведение документа), то ячейки не перекрашиваются (дата окончания ремонта меняется, а ячейки не перекрашиваются, пока вручную не откроешь форму заявки на ремонт и не сохранишь с проведением). В чем может быть причина? Как решить данный вопрос?

Написал такие коды:

Первый вариант (проведение и запись):
ОбъектЗнач = ЭтаФорма.ТекЭлемент.Значение.ПолучитьОбъект();
ОбъектЗнач.ДатаОкончания = Дата("23.03.2023 12:30:00");
ОбъектЗнач.Записать(РежимЗаписиДокумента.Проведение);
ОбъектЗнач.Записать();

Второй вариант (просто запись):
ОбъектЗнач = ЭтаФорма.ТекЭлемент.Значение.ПолучитьОбъект();
ОбъектЗнач.ДатаОкончания = Дата("23.03.2023 12:30:00");
ОбъектЗнач.Записать();


Третий вариант (перепроведение):
ОбъектЗнач = ЭтаФорма.ТекЭлемент.Значение.ПолучитьОбъект();
ОбъектЗнач.ДатаОкончания = Дата("23.03.2023 12:30:00");
ОбъектЗнач.Записать(РежимЗаписиДокумента.ОтменаПроведения);
ОбъектЗнач.Записать(РежимЗаписиДокумента.Проведение);

Четвертый вариант (неоперативное проведение объекта документа):
ДокОбъект = Документы.ЗаявкаНаРемонт.НайтиПоНомеру(ЭтаФорма.ТекЭлемент.Значение.Номер,ТекущаяДата()).ПолучитьОбъект();
ДокОбъект.ДатаОкончания = Дата("23.03.2023 12:30:00");
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);

Ни один из вариантов результата не дали, ячейки не закрашивались.

Kvark5d

gulnyr, советую посмотреть процедуру ОбработкаПроведения у документа План ремонта

antoneus


gulnyr

antoneus,
В процедуре ПриЗаписи нашел такой код:

Процедура ПриЗаписи(Отказ)
   
    дкФормаПриЗаписи(ЭтаФорма,Отказ);
   
    Если (НЕ Отказ) И ЗначениеЗаполнено(Автомобиль) И ТипЗнч(Автомобиль) = Тип("СправочникСсылка.Автомобили") Тогда
        Отказ = Справочники.Автомобили.ЗаписьЗначенияРегистраСведения(Автомобиль, Пробег,Перечисления.ДополнительнаяИнформацияАвтомобилей.Пробег,?(обЗначениеНеЗаполнено(ДатаНачала), ДатаНачала, ДатаНачала));
    КонецЕсли;
   
    Если Найти(НРег(ЭтаФорма.Заголовок),"план") = 0  Тогда
        Возврат;
    КонецЕсли;
    Планирование.Очистить();
    НоваяСтрока = Планирование.Добавить();
    НоваяСтрока.НачалоВыполнения = ЭтаФорма.ДатаНачала;
    НоваяСтрока.ОкончаниеВыполнения = ЭтаФорма.ДатаОкончания;
    НоваяСтрока.Продолжительность = Окр((ЭтаФорма.ДатаОкончания - ЭтаФорма.ДатаНачала)/3600,2, РежимОкругления.Окр15как20);
    НоваяСтрока.Авторабота = Справочники.Автоработы.НайтиПоНаименованию("Приемка автомобиля",,,);
    НоваяСтрока.РабочееМесто = Цех;
    Если (НЕ ЗначениеЗаполнено(ИсполнительПоУмолчанию)) Тогда
        ИсполнительНачалоВыбора(ИсполнительПоУмолчанию,);
    КонецЕсли;
    НоваяСтрока.Исполнитель = ИсполнительПоУмолчанию;
КонецПроцедуры

А именно изменение данной строки кода:
НоваяСтрока.ОкончаниеВыполнения = ЭтаФорма.ДатаОкончания; перекрашивает ячейку (вручную поставил дату Дата("23.03.2023 12:30:00");, меняет). Как можно сделать так, чтобы программно это сделать?

antoneus

Не очень понятно, как этот код может перекрашивать что бы то ни было. А что такое Планирование? Табличная часть?

gulnyr

antoneus, Это полностью таблица. Перекрашивает ячейку по времени (Время указывается в документе ПланРемонта). Одна ячейка это 30 минут. Программно не получается, время меняется, а ячейка нет, только если событие ПриЗаписи срабатывает перекрашивает ячейки.

Kvark5d

gulnyr, Судя по скринам Планирование это табличная часть документа План ремонта. А значит при программном изменении документа надо и ее тоже изменять. Т.е. программно сделать все тоже самое, что и в процедуре ПриЗаписи.
примерно так:
ОбъектЗнач = ЭтаФорма.ТекЭлемент.Значение.ПолучитьОбъект();
ОбъектЗнач.ДатаОкончания = Дата("23.03.2023 12:30:00");

Планирование= ОбъектЗнач.Планирование; // та самая табличная часть
Планирование.Очистить();
НоваяСтрока = Планирование.Добавить();
НоваяСтрока.НачалоВыполнения = ОбъектЗнач.ДатаНачала;
НоваяСтрока.ОкончаниеВыполнения = ОбъектЗнач.ДатаОкончания;
НоваяСтрока.Продолжительность = Окр((ОбъектЗнач.ДатаОкончания - ОбъектЗнач.ДатаНачала)/3600,2, РежимОкругления.Окр15как20);
НоваяСтрока.Авторабота = Справочники.Автоработы.НайтиПоНаименованию("Приемка автомобиля",,,);
//НоваяСтрока.РабочееМесто = Цех; //здесь надо разбираться что такое Цех либо =ОбъектЗнач.РабочееМесто
НоваяСтрока.Исполнитель = ОбъектЗнач.ИсполнительПоУмолчанию;

ОбъектЗнач.Записать(РежимЗаписиДокумента.Проведение);
ОбъектЗнач.Записать();

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск