РЕДАГУВАННЯ ТАБЛИЦІ ЗНАЧЕНЬ У ДІАЛОЗІ

Створимо в обробці Проба діалог, що містить таблицю значень, давши їй імя тЗнач(Рис 38), і звяжемо з таблицею процедуру Змінити, задавши її імя на закладці Додатково в полі Формула, в якому імя процедури вказується с з охороною круглих дужок Змінити ()

Рис 38 Діалог для виведення списку підрозділів в таблицю значень тЗнач

Напишемо код процедури Змінити, що дозволяє редагувати значення комірки таблицітЗнач,після подвійного удару мишею по цій комірці або після вибору комірки і натискання на клавішу Enter Таблицю тЗначзаповнимо даними з табл 34

Алгоритмпроцедури Змінити:

1 Визначити, викликаючи методи ТекущаяСтрока і ТекущаяКолонка, номер рядка номСтрокіі номер стовпчиканомСтолбца,на перетині яких знаходиться редагована осередок

2 Використовуючи метод ПолучітьПараметриКолонкі, визначити тип даних стовпця, з номеромномСтолбца

3 Викликати діалог введення даних знайденого в п 2 типу, використовуючи функцію ВвестіЗначеніе, і задати в ньому нове значення клітинки При відкритті діалогу передати в нього старе значення клітинки

4 Записати, застосувавши метод УстановітьЗначеніе, в редактируемую осередок введений ве в п 3 значення

Також в модуль обробки увійдуть створює таблицю процедура прочинені і инициализирующая таблицю процедура Заповнити, яку ми запозичуємо з розд 341 У процедурі Виконати ми будемо звертатися до процедури Заповнити з тим, щоб відновлювати первісний вигляд таблиці значень

процедура Змінити ()

перем номСтрокі, номСтолбца

перем ТіпДанних, прапор / / Тип редагованих даних

перем значен / / Значення редагованої осередку номСтрокі = тЗначТекущаяСтрока ()

тЗначТекущаяКолонка (, номСтолбца)

тЗначПолучитьПараметрыКолонки (номСтолбца, ТіпДанних) значен = тЗначПолучітьЗначеніе (номСтрокі, номСтолбца)

/ / Передаємо діалогу старе значення комірки

прапор = ВвестіЗначеніе (значен, Введіть нове значення осередку, ТіпДанних) якщо прапор = 1 тоді

тЗначУстановітьЗначеніе (номСтрокі, номСтолбца, значен)

КонецЕсли КонецПроцедури / / Змінити

процедура Заповнити () / / Ініціалізує таблицю значень

/ / Береться з розд 341

КонецПроцедури / / Заповнити

процедура відкриття () / / Формує таблицю значень

/ / Формуємо столоци таблиці значень Опускаючи імена необовязкових параметрів,

/ / Зберігаємо розділяють їх коми

тЗначНоваяКолонка (Код, Рядок,,,, 10) / / 10 ширина першого шпальти тЗначНоваяКолонка (Імя, Рядок,,,, 20) тЗначНоваяКолонка (Кількість, Число,,,, 15)

КонецПроцедури / / прочинене

процедура Виконати () / / Відновлює таблицю значень

/ / Перед кожним запуском процедури Виконати будемо очищати вікно повідомлень ОчістітьОкноСообщеній ()

тЗначУдалітьСтрокі () / / Видаляємо всі рядки таблиці значень тЗнач

Заповнити ()

/ / Заповнюємо осередки таблиці значеннями

/ / Діалог форми обробки Проба після її завантаження наведено на рис 39 КонецПроцедури

Діалог форми обробки Проба після її завантаження наведено на рис 39

Рис 39 Таблиця значень після завантаження обробки Проба

Зауваження  Ясно, що схожий механізм ми могли б застосувати і для редагування елементів списку значень, розглянутого в розд 332

342 Поточний рядок таблиці ЗНАЧЕНЬ

При роботі з таблицею значень ми, звертаючись до ідентифікаторів стовпців, редагуємо або читаємо значення комірок поточного рядка Так, якщо ми працюємо з вищерозгляденому таблицею значень, то виконання оператора

тЗначКод = 092;

призведе до зміни значення стовпця під імям Код впоточному рядку таблиці

Номер поточного рядка містить атрибутномерСтрокіПісля створення таблиці номерСтрокі= 0 у таблиці просто немає рядків Однак таке ж значення атрибут номерСтрокіотримає і при наявності в таблиці значень рядків після виконання методу ВибратьСтрокі У цьому випадку ми будемо говорити: таблиця значень позиціонує ована до першого рядка Щоб перейти на перший рядок, досить викликати метод ПолучітьСтроку, який, якщо не досягнута останній рядок, збільшує номер поточного рядка на одиницю Якщо ж метод ПолучітьСтроку застосовується, коли поточної є останній рядок, то таблиця позиціонується слідом за нею, в атрибут номерСтроківстановлюється значення 0 Таким чином, з цього атрибуту, якщо він дорівнює нулю, не можна дізнатися, де ми знаходимося до першого рядка таблиці значень або слідом за останнім рядком Наведені відомості, ілюструються процедурою В ивестіНомСтрокі, що виводить у вікно повідомлень значення атрибутаномерСтрокі У процедурі зміннатЗнач це будь-яка таблиця значень, наприклад створена і заповнена в розд 342

процедура ВивестіНомСтрокі ()

// тЗнач змінна модуля, тому доступна в процедурі ВивестіНомСтрокі

/ / Позиціонуємо перед першим рядком таблиці значень тЗнач

тЗначВибратьСтрокі ()

/ / Надрукував 0, так як таблиця позиціонована до першого рядка Повідомити (тЗначНомерСтрокі)

/ / Перебір рядків таблиці значень починається з її першого рядка

поки тЗначПолучітьСтроку () = 1 цикл Повідомити (тЗначНомерСтрокі)

конецЦікла / / поки

/ / Знову надрукує 0, хоча таблиця позиціонована слідом за останнім рядком Повідомити (тЗначНомерСтрокі)

КонецПроцедури / / ВивестіНомСтрокі

АтрибутномерСтрокіє ненадійним для визначення номера поточного рядка і в більш широкому сенсі Так, присвоювання

тЗначномерСтрокі = значення

змінить значення атрибута, але не змінить номера поточного рядка

Крім методів ВибратьСтрокі і ПолучітьСтроку, поточний рядок змінюють методи ПолучітьСтрокуПоНомеру, НоваяСтрока і Сортувати Метод СдвінутьСтр оку змінює поточний рядок, якщо зсувається поточний рядок В іншому випадку поточна рядок зберігається Також поточна рядок змінюється при перенесенні курсора по рядках в елементі діалогу Таблиця значень

Поточна рядок стає невизначеною, коли:

• методи КолічествоСтрок або Згорнути зменшують число рядків до величини, меншої ніж значення (до застосування методу) атрибута номерСтрокі

• метод УдалітьСтроку видаляє рядок, номер якої менше, ніж значення (до застосування методу) атрибута номерСтрокі або дорівнює йому

Поточна рядок стає рівною нулю після виконання методів ВибратьСтрокі і Очистити

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*