Версия для печати темы (https://pro1c.org.ua/index.php?s=1fdba152539ce747b896f7c383877cd4&showtopic=66513)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Флажок в табличной части

Автор: BeLuY 26.05.21, 9:18

Добрый день. Есть необходимость добавить колонку в таблицу на форме документа - некий признак (флажок) выбора необходимых строк для дальнейшей обработки, но данное значение хранить не нужно. Как можно добавить этот флажок, чтобы не создавать реквизит в табличной части? Даже если создать необходимый реквизит, то при установке флажка будут изменятся данные документа и, при закрытии документа, будет запрашивать сохранение.

Другими словами: необходима возможность открытия документа, выбора необходимых запчастей и перемещение их в производство. После чего закрыть документ без каких-либо сохранений

Платформа 8.3.8, Обычное приложение.

Спасибо!

26.05.2021: нашел https://pro1c.org.ua/topic/flazhok-v-tablichnoj-chasti-66513/?view=findpost&p=173444.

Автор: denis84 26.05.21, 9:55

BeLuY @ Сегодня, 10:18 * ,
с помощью обработки (написать), которая считает строки документа Вы их отметите и отправите в производство. И не надо будет трогать (изменять) конфигурацию

Автор: BeLuY 26.05.21, 10:03

denis84 @ Сегодня, 10:55 * ,

Данный документ уже был подвержен доработкам, так что ничего страшного, если доработать еще немного. А писать дополнительные обработки - это не совсем то, что нам нужно

Автор: BeLuY 26.05.21, 12:00

Нашел решение:

1. В таблицу на форме добавляем колонку, назовем ее "Выбор", ЭлементУправления устанавливаем "Поле выбора"
2. В таблице на форме (в моем случае Товары) создаем обработчики ПриВыводеСтроки и ПриИзмененииФлажка
3. В модуль формы, в раздел оглашения глобальных переменных добавляем переменную ВыбраннаяНоменклатура, в самом конце модуля инициализируем эту переменную ВыбраннаяНоменклатура = Новый Соответствие

В итоге, модуль формы должен содержать:

// Глобальные переменные
Перем ВыбраннаяНоменклатура;

//------------------------------------------------------

// Описание обработчика "ПриВыводеСтроки"
Процедура ТоварыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    // Отображаем флажок в ячейке с именем "Выбор"
    ОформлениеСтроки.Ячейки.Выбор.ОтображатьФлажок = Истина;    
    
    // Производим поиск соответствия "ВыбраннаяНоменклатура" текущей строки    
    Если ВыбраннаяНоменклатура[ДанныеСтроки] = Неопределено Тогда
        // Если соответствие не найдено - флажок снят
        ОформлениеСтроки.Ячейки.Выбор.Флажок = Ложь;
    Иначе
        // Иначе устанавливаем флажок
        ОформлениеСтроки.Ячейки.Выбор.Флажок = ВыбраннаяНоменклатура[ДанныеСтроки];
    КонецЕсли;    
КонецПроцедуры

// Описание обработчика "ПриИзмененииФлажка"
Процедура ТоварыПриИзмененииФлажка(Элемент, Колонка)
    // Если состояние флажка меняется в ячейке с именем "Выбор"
    Если Колонка.Имя = "Выбор" Тогда
        // Производим поиск соответствия "ВыбраннаяНоменклатура" текущей строки
        Если ВыбраннаяНоменклатура[Элемент.ТекущаяСтрока] = Неопределено Тогда
            // Если соответствие не найдено - создаем новое соотвотствие
            ВыбраннаяНоменклатура[Элемент.ТекущаяСтрока] = Истина;
        Иначе
            // Иначе, если соответствие найдено - удаляем его
            ВыбраннаяНоменклатура.Удалить(Элемент.ТекущаяСтрока);
        КонецЕсли;    
    КонецЕсли;    
КонецПроцедуры

//------------------------------------------------------

// Инициализация глобальной переменной
ВыбраннаяНоменклатура = Новый Соответствие;


Немного колхоз, но мне помогло)

Спасибо за внимание)

PS: к модератору - а я могу данное решение внести в первое сообщение темы? Кнопка "Редактировать" отсутствует...

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua