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

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

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

Автор: Constantus 27.08.19, 10:35

Приветствую, Форумчане!
1с.8.3.12, самопис, УФ, БСП

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

Имеется форма списка документа "Установка цен".
Требуется каким-то образом отделить ряд этих документов по определенному признаку (пусть это будет булевский реквизит "Особые" на форме), выделить их черным жирным (условное форматирование), и, главное, они должны быть всегда вверху, независимо от даты.

В идеале отделить их каким-либо разделителем, наподобие как в конфигураторе или на рабочем столе разделителем можно мышью отодвигать...

Или как можно в рамках одной формы расположить 2-е формы с разным отбором документов по признаку?

Насколько такое можно осуществить?

Создал новую форму списка. Туда добавил 2-а динамических списка с разным отбором по "Особому".

Визуальный эффект получился.

А как мне можно будет к этим 2-м динамическим формам привязать 2-е разные формы документа. Т.к. расчет на формах документа из каждого списка будет разный.

Например, из "верхнего" при нажатии "Создать" нужно открыть форму, где будет автоматом устанавливаться реквизит "Особый" = Истина.

Т.е. вызывать свои формы из каждого динамического списка? Создам еще 2-е формы документа и их нужно привязать к своим динамическим спискам...

Автор: pablo 27.08.19, 10:39

1. Можно динамически конструировать форму документа в зависимости от этого признака.
2. Можно при открытии формы по умолчанию проверять это признак, закрывать форму по умолчанию и открывать нужную форму. В таком случае можно не заморачиваться с кнопками в ДС.
3. Либо создать кнопки для "нестандартного" ДС так, чтобы они работали с "нужными" формами.

Автор: Constantus 27.08.19, 11:13

Пытаюсь открыть форму существующего документа нестандартной формы:

&НаКлиенте 
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
ОткрытьФорму("Документ.УстановкаЦенНаАртикулированныеСтелы.Форма.ФормаДокумента1", Новый Структура("Ключ",ВыбраннаяСтрока.Ссылка));
КонецПроцедуры


выдает ошибку: Поле объекта не обнаружено (Ссылка)

Как правильно открыть форму?

Автор: Vofka 27.08.19, 11:34

ОткрытьФорму("Документ.УстановкаЦенНаАртикулированныеСтелы.Форма.ФормаДокумента1", Новый Структура("Ключ", ВыбраннаяСтрока));

?

Автор: Constantus 27.08.19, 11:48

Vofka @ Сегодня, 15:34 * ,


а как теперь открыть форму для редактировании (карандашик) и при копировании из форма списка для открытия нужной формы?

Автор: Vofka 27.08.19, 11:57

Цитата(Constantus @ 27.08.19, 12:48) *
а как теперь открыть форму для редактировании (карандашик)

При открытии формы не указывается открыть её на редактирование или на просмотр. Редактирование/не редактирование регулируется либо правами в ролях либо из кода играться свойствами Доступность, ТолькоПросмотр.

Цитата(Constantus @ 27.08.19, 12:48) *
и при копировании из форма списка для открытия нужной формы?

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

Автор: sava1 27.08.19, 12:08

Цитата(Vofka @ 27.08.19, 12:57) *
При открытии формы не указывается открыть её на редактирование или на просмотр

не надо...
ТолькоПросмотр - это параметр формы и его можно указать при открытии формы

написано же -

Цитата(pablo @ 27.08.19, 11:39) *
2. Можно при открытии формы по умолчанию проверять это признак, закрывать форму по умолчанию и открывать нужную форму. В таком случае можно не заморачиваться с кнопками в ДС.



как вариант - использовать ПриПолученииФормы

Автор: Constantus 27.08.19, 13:17

Цитата(Vofka @ 27.08.19, 15:57) *
Вы хотите, что бы при нажатии кнопки скопировать открывалась копия выбранного документа (но по факту это новый документ) с возможностью там что-то поменять?


Да, это должен быть новый документ с полным наборам данных документа источника. Классическое открытие при копировании

Цитата(pablo @ 27.08.19, 14:39) *
2. Можно при открытии формы по умолчанию проверять это признак, закрывать форму по умолчанию и открывать нужную форму. В таком случае можно не заморачиваться с кнопками в ДС.


А как правильно сначала открыть, потом закрыть? На какое событие ставить?

Автор: Vofka 27.08.19, 13:19

Constantus, вот что я нагуглил на скорую руку:

&НаКлиенте
Процедура Команда(Команда)

Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
Форма.Открыть();

КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных

&НаСервереБезКонтекста

Функция ЗаполнитьДокументНаСервере(ДанныеФормы);

Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.НашДокумент")); // Получаем объект из данных формы ИЛИ

Док = Документы.НашДокумент.СоздатьДокумент();

// Заполняем реквизиты объекта или другие действия ********

ЗначениеВДанныеФормы(Док,ДанныеФормы); // Кладем обратно в объект формы уже созданный документ

КонецФункции

Автор: sava1 27.08.19, 13:43

Цитата(Constantus @ 27.08.19, 14:17) *
На какое событие ставить?

ПриОткрытии - открываем нужнуюФорму - ЭтаФорма.Закрыть();

Автор: mut 27.08.19, 20:31

По-моему, это проще сделать без программирования, настройками формы. Группировка по признаку Особый, упорядочивание, чтобы были сверху, условное оформление чтобы выделить цветом.

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