1с 7 создать колонку
Вопрос: Как добавить новую колонку в форму списка журнала? Так чтобы она не была привязана ни к какой графе, для вывода в нее пиктограммы, которая будет формироваться программно в модуле этой формы. Типа второй колонки в журнале "Платежные документы"
Вставить поле "Текст", установить свойство "Показывать пиктограммы", в форму списка внести картинку, состоящую из линейки пиктограмм (формат пиктограмм можно посмотреть в файле "IMAGECOL.BMP", вроде 16х16 пикселей), в модуле задавать картинку (ИДКолонки = <Номер пиктограммы в линейке>).
> Вставить поле "Текст"<br>Вот за это спасибо! Не могла создать саму пустую колонку! <br><br>> в форму списка внести картинку, состоящую из линейки пиктограмм (формат пиктограмм можно посмотреть в файле "IMAGECOL.BMP", вроде 16х16 пикселей), в модуле задавать картинку (ИДКолонки = <Номер пиктограммы в линейке>).<br>Это непонятно.<br>Колонку создала,установила свойство "Показывать пиктограммы", в "Формула" поставила "ВыводПиктограммы()". <br>В модуле(примерная структура, что-то типа):<br><br>Функция ВыводПиктограммы() <br>Если а=Истина тогда<br> возврат пикто1<br>Иначе <br> возврат пикто2<br>КонецЕсли<br>КонецФункции<br><br>Вопросы: <br>1)Что значит "в форму списка внести картинку, состоящую из линейки пиктограмм (формат пиктограмм можно посмотреть в файле "IMAGECOL.BMP", вроде 16х16 пикселей)". Какие конкретные действия я для этого должна сделать?<br>2) Что именно должно стоять вместо "пикто1" и "пикто2"? Хотя это наверное станет понятно, если пойму первое..<br>
1) ПКМ на многострочной части журнала - закладка "Картинка".<br>2) Функция должна возвращать номер пиктограмки из колекции картинок (посмотрите наконец в "пэйнте" файл "IMAGECOL.BMP").
Спасибо! Все получилось. Я файл посмотрела, но никак не могла понять, как он "цепляется" к таблице. Еще раз спасибо!
"Помогите, пожалуйста, добить проблему: чтобы в журнале "Расчеты через казначейство" ставилась галка при проведении документа "Кассовое выбытие". Все ваши рекомендации сделала: поле "Текст" вставила, установила свойство "Показывать пиктограммы", в формуле поставила "НомерПиктограммы()", в форму списка внесла картинку, состоящую из линейки пиктограмм. Что подредактировать в модуле, не знаю.<br>Модуль выглядит так:<br><br>Перем гСписокКолонок;<br>Перем гИдФормы; <br>Перем ДатаПроведения_;<br><br>//******************************************************************************<br>//<br>//<br>Процедура ПечатьДокумента() <br> <br> Парам=СоздатьОбъект("СписокЗначений");<br> Парам.Установить("Действие","Печать");<br> ОткрытьФорму(ТекущийДокумент,Парам);<br> <br>КонецПроцедуры <br><br>//******************************************************************************<br>//<br>Функция НомерПиктограммы()<br><br> Если ТекущийДокумент.Выбран() = 0 Тогда<br> Возврат 0;<br> КонецЕсли;<br> <br> СуммаВыписки = 0; <br> НомПикт=0;<br> ДатаПроведения_="""";<br> <br> ПодчДок = СоздатьОбъект("Документ");<br> Если ПодчДок.ВыбратьПодчиненныеДокументы(ТекущийДокумент.ДатаДок,,ТекущийДокумент) = 1 Тогда<br> Пока ПодчДок.ПолучитьДокумент() = 1 Цикл<br> Если (ПодчДок.Вид() = "СписаниеСоСчета") Или (ПодчДок.Вид() = "ПоступлениеНаСчет")Тогда<br> СуммаВыписки = СуммаВыписки+ПодчДок.Итог("Сумма");<br> //НомПикт = 5;<br> //ДатаВыписки = ПодчДок.ДатаДок;<br> ДатаПроведения_ = ПодчДок.ДатаДок;<br> КонецЕсли;<br> <br> КонецЦикла; <br> Если СуммаВыписки<>0 Тогда<br> Если СуммаВыписки<ТекущийДокумент.СуммаДокумента Тогда<br> НомПикт=4;<br> Иначе<br> НомПикт = 5; <br> КонецЕсли;<br> КонецЕсли;<br> КонецЕсли;<br> <br> Возврат НомПикт;<br> <br>КонецФункции // НомерПиктограммы()<br><br>//******************************************************************************<br>//<br>//<br>Процедура ПоКнопкеЭкспортИмпорт() <br> <br> ОткрытьФорму("Обработка.Казначейство_Главная");<br> <br>КонецПроцедуры<br><br>//******************************************************************************<br>//<br>//<br>Процедура ПоКнопкеДействия()<br> Если ТекущийДокумент.Выбран()= 0 Тогда <br> Предупреждение("Не выбран документ !");<br> Возврат;<br> Иначе<br> Меню = СоздатьОбъект("СписокЗначений");<br> Меню.ДобавитьЗначение("ПечатьДокумента","Печать документа");<br> Меню.ДобавитьЗначение("Реестр", "Реестр документов"); <br> Меню.ДобавитьЗначение("РеестрЗКР", "Реестр заявок на кассовый расход"); <br> ВидОтчета = """";<br> Если Меню.ВыбратьЗначение(ВидОтчета. 1)=1 Тогда<br> Если ВидОтчета="ПечатьДокумента" Тогда <br> ПечатьДокумента();<br> ИначеЕсли ВидОтчета = "Реестр" Тогда <br> глПечатьЖурналаДокументов(Контекст, "РасчетыЧерезКазначейство");<br> ИначеЕсли ВидОтчета = "РеестрЗКР" Тогда <br> <br> Расшифровка = СоздатьОбъект("СписокЗначений"); <br> Расшифровка.Установить("Дата1", НачМесяца(ТекущийДокумент.ДатаДок));<br> Расшифровка.Установить("Дата2", КонМесяца(ТекущийДокумент.ДатаДок));<br> Расшифровка.Установить("ВыбраннаяФирма", ТекущийДокумент.ВыбраннаяФирма);<br> Расшифровка.Установить("ВидДокумента", "ЗКР"); <br> <br> Если ((глЕстьРеквизитШапки("РазделЛицевогоСчета",ТекущийДокумент.Вид()) = 1) ИЛИ <br> (глЕстьРеквизитМнЧ("РазделЛицевогоСчета", ТекущийДокумент.Вид()) = 1))Тогда<br> <br> ТекущийДокумент.ПолучитьСтрокуПоНомеру(1); <br> Если ТекущийДокумент.РазделЛицевогоСчета.ВладелецСчета = ТекущийДокумент.ВыбраннаяФирма Тогда<br> Расшифровка.Установить("ЛицевойСчет", ТекущийДокумент.РазделЛицевогоСчета); <br> КонецЕсли; <br> <br> КонецЕсли;<br> <br> глРасшифровка = Расшифровка;<br> глОбновить = 2;<br> глФлагРасшифровки = 1;<br> ОткрытьФорму("Отчет.РеестрПП"); <br> глФлагРасшифровки = 0; <br> глОбновить = 0; <br> <br> КонецЕсли;<br> КонецЕсли;<br> КонецЕсли;<br>КонецПроцедуры <br><br>//******************************************************************************<br>//<br>//<br>Процедура Отбор() <br> <br> Поз=СпЗнач.ТекущаяСтрока();<br> УстановитьОтбор(СпЗнач.ПолучитьЗначение(Поз)); <br><br>КонецПроцедуры // Отбор<br><br>//******************************************************************************<br>// Предопределенная процедура.<br>//<br>Процедура ПриОткрытии() <br> <br> //глУстановитьВидимостьКолонок(Контекст, гИдФормы, гСписокКолонок, 1); <br> <br> Если ТипЗначенияСтр(Форма.Параметр) = "Документ" Тогда<br> глАктивизироватьДокумент(Контекст, Форма.Параметр);<br> КонецЕсли; <br> <br>КонецПроцедуры<br>//******************************************************************************<br>// Предопределенная процедура<br>//<br>Процедура ПриПовторномОткрытии()<br> <br> Если ТипЗначенияСтр(Форма.Параметр) = "Документ" Тогда<br> глАктивизироватьДокумент(Контекст, Форма.Параметр);<br> КонецЕсли;<br><br>КонецПроцедуры // ПриПовторномОткрытии()<br>//////////////////////////////////////////////////////// ////////////////////////<br><br>гИдФормы = "Журнал_РасчетыЧерезКазначейство_ФормаСписка";<br><br>// Список колонок видимостью которых будем управлять<br>гСписокКолонок = СоздатьОбъект("СписокЗначений"); <br>гСписокКолонок.ДобавитьЗначение("ВыбраннаяФирма", "Учреждение"); <br>гСписокКолонок.ДобавитьЗначение("ЛицевойСчет" , "Лицевой счет"); <br>гСписокКолонок.ДобавитьЗначение("Контрагент" , "Контрагент");<br>гСписокКолонок.ДобавитьЗначение("Сумма" , "Сумма документа"); <br>гСписокКолонок.ДобавитьЗначение("ДатаПроведения", "Дата проведения"); <br>гСписокКолонок.Пометка(1, 1); <br>гСписокКолонок.Пометка(4, 1); <br><br>СпЗнач.УдалитьВсе();<br>СпЗнач.ДобавитьЗначение("""","Все документы");<br>СпЗнач.ДобавитьЗначение("ЗаявкаНаКассовыйРасход","Заявка на кассовый расход"); <br>СпЗнач.ДобавитьЗначение("ЗаявкаНаНаличные","Заявка на наличные"); <br>СпЗнач.ДобавитьЗначение("РеквизитыЧеков","Реквизиты чека (в заявку на наличные)"); <br>СпЗнач.ДобавитьЗначение("ЗаявкаНаВозврат","Заявка на возврат");<br>СпЗнач.ДобавитьЗначение("ЗапросНаАннулированиеЗаявки","Запрос на аннулирование заявки");"
Пересечения строк и колонок образуют ячейки, в которых содержатся значения. Тип значения определяется типом значения колонки.
Таблица значений является полностью динамическим объектом, т.е. Вы можете манипулировать не только строками таблицы, добавляя и удаляя их, но и колонками.
Создание таблицы значений
Как и большинство объектов встроенного языка, новая таблица значений может быть создана с помощью оператора Новый :
Колонки таблицы значений
Прежде чем начать работу с таблицей значений, необходимо создать структуру колонок. Каждая колонка характеризуется следующими свойствами:
Доступ к колонкам производится через свойство Колонки объекта ТаблицаЗначений . Для добавления новой колонки используется метод Добавить():
Для того, чтобы определить наличие колонки с нужным именем используется метод Найти():
Перебор колонок выполняется следующим образом:
Для удаления колонки используется метод Удалить():
Свойства колонки таблицы значений
Имя | Тип | Описание |
---|---|---|
Имя | Строка | символьный идентификатор колонки, по которому к ней можно обращаться из кода |
Заголовок | Строка | строковое представление колонки на форме |
ТипЗначения | ОписаниеТипов | свойство органичивает пространство доступных значений, которые можно указать в данной колонке |
Ширина | Число | ширина колонки на форме (выражается в количестве символов) |
Методы коллекции колонок таблицы значений
Вставить() | Вставляет новую колонку в указанную позицию коллекции |
Добавить() | Добавляет новую колонку в конец коллекции |
Количество() | Возвращает количество колонок в коллекции |
Найти() | Ищет колонку в коллекции по имени |
Очистить() | Удаляет все колонки из коллекции |
Сдвинуть() | Сдвигает колонку влево или вправо |
Удалить() | Удаляет колонку из коллекции |
Строки таблицы значений
С колонками разобрались. Давайте теперь разберемся со строками. Строки таблицы значений можно программно добавлять и удалять, перемещать и сортировать, а также выполнять операции поиска и отбора.
Добавление и удаление строк
Для добавления новой строки используется метод Добавить() объекта ТаблицаЗначений . Метод возвращает объект СтрокаТаблицыЗначений , с которым доступны дальнейшие манипуляции:
И только теперь мы можем заполнить строку данными. Для этого обращаемся к ячейкам строки, указывая идентификаторы колонок через точку:
Обратите внимание, что каждая СтрокаТаблицыЗначений ссылается на таблицу значений с помощью метода Владелец():
Для удаления строки используется метод Удалить() объекта ТаблицаЗначений . Строку можно удалить либо передав методу непосредственно строку, либо ее индекс:
Перебор строк таблицы значений
Для перебора строк удобнее всего использовать оператор цикла Для Каждого . В редких случаях оправдано применение цикла Для :
Поиск строк
Все методы таблицы значений:
Вставить() | Вставляет строку на указанное место |
ВыбратьСтроку() | Позволяет интерактивно выбрать строку в диалоговом окне |
ВыгрузитьКолонку() | Выгружает значения ячеек указанной колонки в массив значений |
Добавить() | Добавлет новую строку в таблицу значений |
ЗагрузитьКолонку() | Загружает значения в ячейки указанной колонки из массива |
ЗаполнитьЗначения() | Заполняет ячейки указанных колонок определенным значением |
Индекс() | Возвращает индекс строки таблицы значений |
Итог() | Возвращает просуммированный итог по колонке таблицы значений |
Количество() | Возвращает количество строк в таблице значений |
Найти() | Выполняет поиск строки по значению |
НайтиСтроки() | Выполняет поиск строк по указанным параметрам |
Очистить() | Очищает строки таблицы значений |
Получить() | Возвращает строку по ее индексу |
Свернуть() | Выполняет сжатие строк и колонок таблицы значений |
Сдвинуть() | Сдвигает строку вверх или вниз по таблице |
Скопировать() | Создает новую таблицу значений копированием текущей |
СкопироватьКолонки() | Создает новую пустую таблицу значений путем копирования колонок текущей таблицы |
Сортировать() | Выполняет сортировку строк таблицы значений по указанным колонкам |
Удалить() | Удаляет строку таблицы значений |
Иерархию свойств и типов значений, связанных с таблицей значений, схематически можно представить в виде дерева:
Любой документ в 1с имеет определенную форму. Если нам необходимо ее изменить, например добавить для видимости колонку, то сделать это можно следующим способом:
1) Заходим в документ и в правом верхнем углу нажимаем на кнопку «Еще».
2) В появившемся списке выбираем «Изменить форму».
Если ее нет, то проставляем и нажимаем «Ок» (Для примера добавим в «Тип»).
Также можно расположить колонки в нужно порядке. Для этого повторно заходим в «Настройка формы» (п.1, 2) и воспользуемся синими стрелочками. Нужно выделить строчку, которую нужно переместить и нажимаем на нужную стрелочку («Вверх», «Вниз» в зависимости от того куда его нужно переместить колонку на форме- правее или левее).
Для примера переместим «Тип» сразу за колонкой «Номенклатура».
Если в списке нет нужного реквизита, то можно воспользоваться кнопкой «Добавить поля», но это работает не всегда — там где возможно кнопка будет активна.
Для примера выведем на форму «Вид номенклатуры». Для этого открываем «Настройка формы» (п.1, 2), выбираем строчку «Номенклатура» и нажимаем «Добавить поля».
В появившемся списке ставим галочку возле «Вид номенклатуры» и нажимаем «ОК».
В списке «Настройка формы» появится соответствующая строчка. Нажимаем «ОК».
Добавление колонки на форму списка (Произвольный запрос динамического списка)
Продолжаем рассматривать варианты размещения элементов на форме на примере вывода реквизитов документа на форму списка документов, состав документа представлен на рис. 1:
Рис. 1. Реквизиты документа
Добавим на форму списка документов колонку со значением статуса приходной, статус приходной находится в регистре сведений. Открываем форму списка документа пр_Приходная. Если формы списка еще нет, то нажимаем значок лупы на вкладке Формы окна свойств документа (рис. 2):
Рис. 2. Создание формы списка документа
Рис. 3. Свойства реквизита формы Список
После установки свойства Произвольный запрос состав свойств раздела Объект изменится (рис. 4):
Рис. 4. Состав раздела Объект окна Свойства
Нажимаем на гиперссылку Открыть свойства Настройка списка (рис. 4). Открывается окно Динамический список (рис. 5):
Рис. 5. Окно Динамический список
Рис. 6. Состав регистра с данными о статусе приходной
Изменить запрос в окне Динамический список можно нажав на кнопку Конструктор запроса… или можно сразу написать нужный текст в поле Запрос (рис. 7):
Рис. 7. Измененный запрос
Важно проверить, что в поле Основная таблица окна Динамический список указан нужный документ (рис. 7), иначе, если поле будет не заполнено, то в форме списка документов не будет возможности добавлять новые документы и открывать существующие (и не будет привычных кнопок Создать, Создать копированием и т.п.). Нажимаем ОК. Теперь в составе реквизита Список те поля, которые были выбраны в запросе (рис. 8):
Рис. 8. Состав реквизита Список
Перетаскиваем новое поле Статус из вкладки Реквизиты на вкладку Элементы в состав элемента Список (рис. 8). И размещаем поле Статус на вкладке Элементы после полей Дата, Номер (рис. 9):
Рис. 9. Размещение поля Статус
У реквизитов (на вкладке Реквизиты) в составе динамического списка можно отметить свойство Использовать всегда (рис. 8). Это нужно, когда поля должны быть в составе динамического списка в любом случае, даже если они не будут добавлены на форму как элементы, например, будут использоваться в дальнейшем в коде модуля формы списка документа.
Проверяем работу формы списка документа в пользовательском режиме: появилась колонка Статус, содержащая значение статуса приходной из регистра сведений (рис. 10):
Читайте также: