При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях или о событиях, произошедших в жизни предприятия вообще, а также ее просмотр и корректировка.
Как при разворачивании формы на весь экран сделать, чтобы табличное поле изменяло свой размер?
Если вставить на форму элемент управления табличное поле, тогда автоматически формируются необходимые привязки для этого табличного поля. Бывает, что привязки сбрасываются из-за каких-то наших действий. Из-за того табличное поле перестает масштабироваться или растягиваться по форме. Поэтому привязки табличного поля необходимо настроить.
Где, «Период» — колонка табличного поля «ЭлементыФормы.РегистрСведенийСписок».
Павел Чистов
- Создать на форме невидимую командную панель, т.е. убрать флажок «Видимость» в свойствах командной панели.
- В свойствах табличного поля убрать флажок «АвтоКонтекстноеМеню».
- Из выпадающего списка «КонтекстноеМеню» выбрать только что созданную командную панель.
Как программно активизировать строку табличного поля с типом значения РегистрСведенийСписок?
В 1С:Предприятии 8 для активизации строки конкретного табличного поля следует выполнить установку свойства ТекущаяСтрока соответствующего элемента управления. Этому свойству присваивается значение, идентифицирующее строку, которую необходимо активизировать. Тип значения зависит от типа данных, с которыми связано табличное поле.
Например, для списка справочника это будет ссылка на элемент справочника, а для табличной части — строка табличной части. Если тип значения РегистрСведенийСписок, тогда свойству ТекущаяСтрока присваивается значение типа — РегистрСведенийКлючЗаписи. Пример:
Отбор должен однозначно идентифицировать запись в табличном поле. Чтобы узнать как в регистре сведений обеспечить уникальность каждой записи посмотрите тут.
Тип данных можно проверить следующим образом с помощью функций ТИП и ТИПЗНАЧЕНИЯ или с помощью логического оператора ССЫЛКА.
Заполнение табличной части документа
Теперь нам необходимо добавить на созданной форме новую команду. Предполагается, что она будет автоматически менять данные в табличной части как одного, так и нескольких документов (их формы списка) одновременно, записывая их впоследствии.
В рамках нашего примера будет произведена обработка уже существующей табличной части «Товары». Для каждой строки будет установлена ручная скидка в размере 5%. Так же, мы рассчитаем саму сумму данной скидки, равную сумме товаров в строке, умноженных на 0,05.
Промокоды на Займер на скидки
&НаСервере Процедура ВыполнитьКоманду(Команда, ОбъектыНазначения) Для каждого ЗаказКлиента из ОбъектыНазначения Цикл ЗаказКлиентаОбъект = ЗаказКлиента. ПолучитьОбъект() ; Для каждого СтрокаТЗ из ЗаказКлиентаОбъект. Товары Цикл СтрокаТЗ. ПроцентРучнойСкидки = 5 ; СтрокаТЗ. СуммаРучнойСкидки = СтрокаТЗ. Сумма * 0 . 05 ; КонецЦикла ; ЗаказКлиентаОбъект. Записать() ; КонецЦикла ; КонецПроцедуры
Решение задач по управляемым формам — Тема № 10: Как реализовать заполнение табличной части документа при помощи формы подбора, Курсы по 1С
- Элемент — содержит элемент управления ТабличноеПоле .
- НоваяСтрока — булево. Содержит значение Истина , если добавляется новая строка табличной части, и Ложь, если пользователь начал редактировать уже существующую строку.
- Копирование — булево. Содержит значение Истина , если пользователь копирует строку, и Ложь в остальных случаях.
Регистрация внешней обработки
Запустите 1С в режиме «Предприятие» и откройте справочник «Дополнительные отчеты и обработки». Найдем его через меню «Все функции».
Создайте новый элемент в открывшемся справочнике и по одноименной кнопке загрузите из файла свою обработку. Разместим ее одновременно и на форме списка и на форме самой карточки документа.
Теперь в форме списка документов «Заказ клиента» появится кнопку «Заполнение…», которая позволит произвести изменить ручные скидки товаров сразу у нескольких документов.
Так же данная кнопка будет доступна и в карточке самого документа.
Для того, чтобы учитывать деньги и товары, в бизнесе широко используют разные таблицы. Почти каждый документ – это таблица.
В одной таблице перечислены товары к отгрузке со склада. В другой таблице – обязательства по оплате этих товаров.
Поэтому в 1С видное место занимает работа с таблицами.
Таблицы в 1С также называют «табличные части». Они есть у справочников, документов и других .
Запрос в результате своего выполнения возвращает таблицу, доступ к которой возможно получить двумя разными способами.
Первый – более быстрый – выборка, получение строк из нее возможен только по порядку. Второй – выгрузка результата запроса в таблицу значений и далее произвольный доступ к ней.
//Вариант 1 – последовательный доступ к результатам запроса
//получение таблицы
Выборка = Запрос.Выполнить().Выбрать();
//по порядку обходим все строки результата запроса
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
//Вариант 2 – выгрузка в таблицу значений
Запрос = Новый Запрос(«ВЫБРАТЬ Наименование ИЗ Справочник.Номенклатура»);
//получение таблицы
Таблица = Запрос.Выполнить().Выгрузить().
//далее можем также обойти все строки
Для каждого Строка из Таблица Цикл
Сообщить(Строка.Наименование);
КонецЦикла;
//или произвольно обращаться к строкам
Строка = Таблица.Найти(«Лопата», «Наименование»);
Важная особенность – в таблице, которая получена из результата запроса, все колонки будут строго типизированы. Это значит, что запросив поле Наименование из справочника Номенклатура, Вы получите колонку вида Строка с допустимой длиной не более N символов.
Пользователь работает с таблицей, когда она размещена на форме.
Базовые принципы работы с формами мы с Вами обсуждали в уроке по и в уроке по
Итак, разместим таблицу на форме. Для этого можно перетащить таблицу с панели элементов управления. Аналогично можно выбрать в меню Форма/Вставить элемент управления.
Данные могут храниться в конфигурации – тогда нужно выбрать существующую (ранее добавленную) табличную часть того объекта конфигурации, форму которого Вы редактируете.
Нажмите кнопку «…» в свойстве Данные. Для того, чтобы увидеть список табличных частей, нужно раскрыть ветку Объект.
При выборе табличной части 1С сама добавит колонки у таблицы на форме. Строки введенные пользователем в такую таблицу будут сохраняться автоматически вместе со справочником/документом.
В обработчике в форму подбора будем передавать склад, на котором нужно получить остатки, после чего открывать форму подбора.
Связанные табличные части (управляемые формы)
Про «ОтборСтрок» я уже писал в недалеком прошлом поэтому не буду повторяться. Что это и для чего это используется можно изучить в статье Отборы (поиск) в табличной части либо таблице значений (управляемые формы)
Для демонстрации механизма я снова подготовил небольшую конфигурацию, которую можно скачать.
Конфигурация состоит из двух справочников: «Контрагенты» и «Товары» и одного документа «Поступление товаров». Данный документ имеет 2 соответствующие табличные части и предназначен для получения товаров от разных клиентов в одном документе.
Мы хотим сделать так, чтобы клиенту было удобно и он выбирая клиента видел только те товары, которые приходят от него.
В качестве ключа связи мы будем использовать само значение контрагента. При этом можно в качестве ключа связи использовать произвольные ключи, уникальные в пределах документа или любые ссылочные элементы, например договора контрагентов — все зависит только от вашей необходимости.
Для нашей левой табличной части «Контрагенты» нам надо добавить следующие обработчики событий:
Нам надо при активизации строки показывать только товары, принадлежащие выбранному контрагенту (События «При активизации строки» и «При окончании редактирования») и так же отработать ситуацию удаления контрагента — нам надо удалить все товары со второй табличной части.
Для правой табличной части «Товары» нам также надо обработать несколько событий:
Мы должны отклонить выбор номенклатуры если у нас нет или не выбран контрагент и автоматически заполнять значение ключа связи — в нашем случае это ссылка на контрагента. Сами процедуры:
Ну и в основном для вопросов отладки нам надо посмотреть все товары всех клиентов, для этого добавляем команду по очистке отборов и размещаем ее в интерфейсе с ограничением по правам (если требуется). Процедура простейшая:
Для того, чтобы учесть возможность смены самого контрагента, мы добавили в форме реквизит табличной части :
Сделали его заполнение при открытии формы и обрабатываем его изменение в коде:
Для большей универсальности стал использовать реквизит формы «НаименованиеКлючаСвязи», который устанавливаю 1 раз и использую потом везде.
При этом хочу обратить ваше внимание вопрос повторности контрагентов остается открытым — т.е. при выборе слева одного контрагента 2 раза система не сможет различить номенклатуру по строкам. Вам либо надо контролировать, чтобы информация слева была уникальная и/или неизменной.
Для презентации того, как можно учесть и данный случай, я добавил в конфигурацию еще один документ «ПродажаТовара», в котором в качестве ключа связи испльзуется уникальный индекс — простое число, которое уникально для каждой строки слева и привязка идет непосредственно к нему:
1С перебор строк таблицы формы – ПК портал
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы