1С присоединить область справа – 4apple.org

Лучшие методы сравнения таблиц значений
Промо

Универсальные функции v8 1cv8. cf Абонемент ($m)

Задача сравнения таблиц значений встречается на практике довольно часто и может решаться по-разному. Недавняя дискуссия на форуме показала, что до сих пор не сложилось единого мнения о том, какой метод сравнения лучше. В этой статье описываются поиски ответа на данный вопрос, и делается субъективная попытка обобщить и подвести итоги дискуссии.

2015   
145488   
70   
ildarovich   

67

  • Автоподсчёт итогов по колонке в табличной части 1С
  • Похожие FAQ
  • Еще в этой же категории

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

В предыдущих статья я рассказывал, как создать новый документ потом мы с вами написали пару процедур для автоматического подсчета суммы в табличной части. Теперь сделаем итог для этой колонки. Сегодня в примере я буду использовать тот же документ, который мы создали ранее. Поэтому советую вам ознакомиться с предыдущими статья, Создание документа, Подсчет итогов в строке табличной части.

Общая схема

Общая схема формирования печатной формы на основе макета:

  • Создание макета в табличном редакторе (определение областей, имен параметров, форматирования).
  • Создание нового табличного документа (этот пункт не требуется, если отчет выводится в элемент управления ПолеТабличногоДокумента).
  • Получение макета в переменную (метод ПолучитьМакет).
  • Получение областей макета (метод ПолучитьОбласть).
  • Заполнение параметров области (свойство Параметры).
  • Вывод области в табличный документ (методы Вывести и Присоединить).
  • Установка свойств отображения табличного документа (сетка, заголовки, только просмотр и т.д.).
  • Отображение табличного документа на экране (а может быть отправка на принтер или сохранение).

В данной статье хочу рассказать как подготовить документ к печати. Настраивая табличный документ программно облегчается работа пользователей данной програмДиалог выбора файла Выберем режим для диалога выбора файла, в данном случае это открытие: Режим = РежимДиалогаВыбораФайла. Открытие; Создадим сам диалог выбМетод получения правильных результатов запроса, если в таблицу для выборки необходимо передать параметром1. Создание колонок в новой таблице значений ТабЗначений = Новый ТаблицаЗначений; ТабЗначений. Колонки. Добавить(«НомерСтроки», Новый ОписаниеТипоЗапрос динамической таблицы

Основные методы

Основные методы формирования итогового табличного документа следующие:

Программирование системы 06. 2016 10:31 4855

Для заполнения табличного документа удобно использовать макет. Макеты создаются в конфигураторе в специальном редакторе. Из макета получаютя области, а затем выводятся в табличный документ. Так же можно вывести не отдельные области, а макет целиком.

Основные функцииПолучитьОбласть() – возвращает область макета в виде табличного документа. Вывести() – выводит область в табличный документ добавляя её снизу, начиная с первой колонки. Присоединить() – выводит область в табличный документ добавляя её справа, начиная со строки, в которую выводился предыдущий элемент.

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

  • Общая схема
  • Пример вывода табличного документа
  • Основные методы
  • Пример заполнения табличного документа
  • Задача.
  • Решение

Обычно табличный документ формируется на основе макета как из строительных блоков. Макет представляет собой шаблон для формирования печатной формы. Построение макета производится в конфигураторе в специальном табличном редакторе. Разработчик может создавать области, изменять высоту строк и ширину колонок, задавать форматирование ячеек и всего табличного документа, включать в макет рисунки, диаграммы и сводные таблицы.

Области макета предназначены для однократного или многократного вывода, например, ниже представлен макет для печати расходной накладной:

Некоторые ячейки содержат только текст, который должен быть выведен. Другие ячейки содержат имена параметров (в угловых скобках). Значения этих параметров должны указываться в программном модуле. В отличие от версии 7. 7, в ячейку нельзя вписать выражение. В версии 8. 0 весь программный код сосредоточен в программных модулях и при выводе секций нет связи с текущим контекстом программного модуля. Назначение параметров табличного документа должно производиться явно из программного модуля через коллекцию «Параметры» объекта «ТабличныйДокумент».

Область может состоять из нескольких расположенных подряд строк или колонок, либо быть прямоугольной областью таблицы. К области можно обратиться по имени или по координатам. Можно также обращаться к пересечению областей, используя вертикальную черту (как в версии 7.

Описание некоторых свойств построителя отчета

Вывести в печатную форму, на подобии печати ценников, мини-прайсы. некий набор номенклатуры с ценами.

Для тех кто не в курсе как печатаются ценники (на примере УТ11) выводятся фиксированные блоки поочередно присоединяя их, пока они по размеру входят в выводимую область. Как только присоединение не возможно, данные выводятся на «новой строке» Таблицы. Проверка осуществляется ч/з проверить присоединение и проверить вывод

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

Решение, приведенное выше, конечно, рабочее и может применяться (даже применяется) на практике. Но к моему глубокому сожалению, для меня не приемлемо по моим внутренним убеждениям (люблю, чтоб код был простым и красивым). Поэтому у меня придумался другой подход.

Работа с данными выбора

Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений — уже задать без программирования не получится.

2018   
80814   
25   
kalyaka   

17

Расширенная настройка динамического списка УФ

Работа с интерфейсом v8 v8::УФ 1cv8. cf Абонемент ($m)

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

2017   
42577   
165   
tormozit   

25

Редактор движений документа. Сохранение в XML, обмен между базами, замена регистратора.

Обработка документов Универсальные обработки Файловые протоколы обмена (TXT, XML, DBF), FTP v8 Абонемент ($m)

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

2016   
56559   
175   
Aphanas   

5

Построитель отчета

Построитель отчета — это объект,
позволяющий на основе заданного текста запроса и настроек получить
результат и вывести
его в табличный документ
или диаграмму.

Настройки построителя отчета включают:

Настройки построителя имеют средства визуализации, что позволяет
программисту с минимальными трудозатратами предоставить пользователю
интерфейс
для их установки.

Перед выводом макет построителя отчета можно оформить с помощью
макета оформления.

Вывод результата выполнения запроса построителя отчета осуществляется
одной командой.

Где можно использовать построитель отчета?

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

Немного о понятиях

По сравнению с версией 7. 7 в версии 8. 0 произошла
небольшая смена понятий, поэтому стоит немного остановиться на
этом.

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

Главное отличие заключается в том, что доступное поле не имеет
свойства “ПутьКДанным” (пример: “Номенклатура. Код”, “Количество”),
так как это просто своеобразное описание поля, по которому будет
произведена попытка найти соответствие среди полей выборки запроса
в момент добавления его в список группировок, фильтра, сортировки
или выбранных полей.

При этом нет возможности программно добавить одно
из доступных полей в какой-либо из вышеперечисленных списков, так
как, с одной
стороны, у доступного поля нет методов а-ля “ДобавитьВОтбор()”
или “ДобавитьВВыбранныеПоля()”, а, с другой стороны, при добавлении
нового элемента в любой из вышеперечисленных списков требуется
указать свойство “ПутьКДанным”, которое не всегда совпадает
с именем поля (пример: поля “Номенклатура. Родитель” и “Номенклатура. Родитель. Родитель”
имеют одинаковое имя “Родитель”).

Типовой вариант использования построителя отчета

В общем случае последовательность действий при работе с построителем
отчета следующая:

  • Создать новый объект “ПостроительОтчета”;
  • Присвоить свойству “Текст” текст запроса;
  • Если в тексте запроса не были заданы настройки построителя
    отчета, то выполнить метод “ЗаполнитьНастройки()”;
  • Предоставить пользователю возможность изменения настроек
    построителя отчета;
  • При необходимости можно отказаться от автогенерации
    макета построителем отчета и присвоить свойству “Макет”
    фиксированный
    макет;
  • При необходимости можно присвоить свойству “МакетОформления”
    один из стандартных или свой макет, при этом, если
    автогенерируемый макет построителя отчета был заменен
    на фиксированный,
    то выполнить метод “ОформитьМакет()”;
  • Вызвать метод “Выполнить()”;
  • Вызвать метод “Вывести()”.

Построитель = Новый «ПостроительОтчета»;

//Здесь можно дать пользователю возможность
//изменить настройки построителя отчета

Построитель. Макет = ПолучитьМакет(«СвойМакет»);Построитель. МакетОформления = ПолучитьМакетОформления(СтандартноеОформление. Классика);

Обработка Расшифровки с помощью построителя отчета

Свойство “ЗаполнениеРасшифровки” содержит один из трех вариантов
заполнения
расшифровки при выводе:

1-ый вариант: не заполнять (не использовать расшифровку).

2-ой вариант: значения группировок (при расшифровке ячейки будет
открываться значение группировки, выведенное в ней).

3-ий вариант: расшифровка (расшифровка будет заполняться
структурой, содержащей значения всех группировок). В этом
случае требуется
обрабатывать событие табличного документа “Обработка расшифровки”,
где нужно анализировать переданную структуру и выполнять
те или иные действия.

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

Если используется третий вариант заполнения расшифровки,
то можно использовать метод “НастроитьРасшифровку()”,
предназначенный для того, чтобы выполнить и вывести
отчет
с учетом
расшифровки,
выполненной пользователем.

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

Процедура РезультатТаблицаОбработкаРасшифровки (Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Построитель. НастроитьРасшифровку(Построитель, Расшифровка); Построитель. Выполнить(); Построитель. Вывести();
КонецПроцедуры

Оформление отчета

Свойство “Макет” содержит макет, который используется при выводе
результата в табличный документ. Если Неопределенно, то макет генерируется
автоматически.

Свойства “МакетЗаголовкаОтчета”, “МакетШапкиТаблицы”,
“МакетДетальныхЗаписей”, “МакетОбщихИтогов”, “МакетПодвалаТаблицы”
и “МакетПодвалаОтчета” содержат
имя области в макете построителя отчета или отдельные макеты, используемые
при выводе, соответственно, заголовка отчета, шапки таблицы, детальных записей,
общих итогов, подвала таблицы и подвала отчета в табличный документ. Если имена
областей соответствуют именам в макете построителя отчета, то свойства заполнять
не требуется.

Свойство “МакетОформления” содержит макет, используемый
для оформления макета построителя отчета. Оформление ячеек в макете
оформления
будет применено к
ячейкам макета построителя отчета.

Для получения одного из стандартного вариантов оформления можно
использовать метод глобального контекста “ПолучитьМакетОформления()”.

В случае, если свойству “Макет” построителя отчета был присвоен
фиксированный макет, для его оформления требуется выполнить метод
“ОформитьМакет()”.

Свойство “РазмещениеИзмеренийВСтроках определяет
один из трех вариантов вывода группировок по строкам. 1-ый вариант: вместе (в одной колонке). Пример:

1С присоединить область справа – 4apple.org

2-ой вариант: отдельно (в разных колонках). Пример:

1С присоединить область справа – 4apple.org

3-ий вариант: отдельно и только в итогах. Пример:

1С присоединить область справа – 4apple.org

Свойство “РазмещениеИзмеренийВКолонках” определяет один из трех
вариантов вывода группировок по колонкам. 1-ый вариант: вместе (в одной строке). Пример:

1С присоединить область справа – 4apple.org

2-ой вариант: отдельно (в разных строках). Пример:

3-ий вариант: отдельно и только в итогах. Пример:

1С присоединить область справа – 4apple.org

Свойство “РазмещениеИтоговВСтроках” определяет один из четырех
способов вывода итогов в строках. 1-ый вариант: в заголовке (только выше последующих группировок
и детальных записей).

1С присоединить область справа – 4apple.org

2-ой вариант: в заголовке и подвале (выше и ниже последующих группировок
и детальных записей).

1С присоединить область справа – 4apple.org

3-ий вариант: в подвале (ниже последующих группировок и детальных
записей, выше них выводится только описание группировки).

1С присоединить область справа – 4apple.org

4-ый вариант: только в подвале (только ниже последующих группировок
и детальных записей).

1С присоединить область справа – 4apple.org

Свойство “РазмещениеИтоговВКолонках” определяет один из четырех
способов вывода итогов в колонках.

1-ый вариант: в заголовке (только левее последующих группировок
и детальных записей).

1С присоединить область справа – 4apple.org

2-ой вариант: в заголовке и подвале (левее и правее последующих
группировок и детальных записей).

1С присоединить область справа – 4apple.org

3-ий вариант: в подвале (правее последующих группировок и детальных
записей, левее них выводится только описание группировки).

1С присоединить область справа – 4apple.org

4-ый вариант: только в подвале (только правее последующих группировок
и детальных записей).

1С присоединить область справа – 4apple.org

Свойство “РазмещениеРеквизитовИзмеренийВСтроках” определяет один
из трех вариантов вывода реквизитов группировок по строкам.

1-ый вариант: вместе (в одной дополнительной колонке). Пример:

1С присоединить область справа – 4apple.org

2-ой вариант: вместе с измерениями (в колонках с группировками). Пример:

1С присоединить область справа – 4apple.org

3-ий вариант: отдельно (в разных дополнительных колонках). Пример:

1С присоединить область справа – 4apple.org

Свойство “РазмещениеРеквизитовИзмеренийВКолонках” определяет один
из трех вариантов вывода реквизитов группировок по колонкам.

1-ый вариант: вместе (в одной дополнительной строке). Пример:

1С присоединить область справа – 4apple.org

2-ой вариант: вместе с измерениями (в строках с группировками). Пример:

1С присоединить область справа – 4apple.org

3-ий вариант: отдельно (в разных дополнительных строках). Пример:

1С присоединить область справа – 4apple.org

Сохранение и восстановление настроек построителя

Измерение построителя отчета – это группировка по строкам или
колонкам.

Основными реквизитами группировки являются

и, если группировка строится по справочнику, то еще

Кроме этого, есть несколько свойств, позволяющих
назначить группировке макеты, которые будут использоваться при
выводе
в табличный документ.

  • “Макет” – имя области в макете построителя отчета
    или отдельный макет, используемый при выводе группировки.
  • “МакетИерархии” – имя области в макете построителя отчета
    или отдельный макет, используемый при выводе иерархии
    группировки.
  • “МакетПодвала” – имя области в макете построителя или
    отдельный макет, используемый при выводе подвала группировки.
  • “МакетПодвалаИерархии” – имя области в макете построителя
    или отдельный макет, используемый при выводе подвала
    иерархии группировки.
  • “МакетыПодваловУровней” – массив макетов подвалов
    для различных уровней группировок.
  • “МакетыУровней” – массив макетов для различных
    уровней группировок.

Со списком группировок или полей можно выполнять
ряд действий.

  • “Вставить()“ – добавить группировку/поле в указанную
    позицию.
  • “Добавить()“ – добавить группировку/поле в конец списка.
  • “Индекс()“ – получить индекс группировки/поля в списке.
  • “Количество()“ – получить количество группировок/полей в
    списке.
  • “Найти()“ – найти группировку/поле в списке по
    имени.
  • “Очистить()“ – очистить список группировок/полей.
  • “Получить()“ – получить группировку/поле по
    индексу.
  • “Сдвинуть()“ – сдвинуть группировку/поле
    на указанное количество позиций.
  • “Удалить()“ – удалить группировку/поле
    из списка.

Язык построителя

Если поле выборки позволяет получить что-то через
точку, то можно указать “. *” после поля, тогда пользователь сможет
выбирать реквизиты
поля. Например, “Номенклатура. *”
позволяет сделать сортировку по “Номенклатура. Код” или отбор по “Номенклатура. Услуга”. А вот “Количество. *” смысла не имеет, так как поле “Количество” реквизитов
не имеет, а, значит, достаточно указать просто “Количество”.

Поля, указанные в конструкции “ВЫБРАТЬ”, ограничивают
список полей, доступных пользователю. Поля, указанные в конструкции “ГДЕ”, ограничивают список полей, которые можно
использовать в фильтре. Поля, указанные в конструкции “УПОРЯДОЧИТЬ ПО”, ограничивают список полей для
сортировки. Поля, указанные в конструкции “ИТОГИ ПО”, ограничивают список полей для группировки
итогов.

А теперь интересные вещи.

При этом, в первом случае обязательно требуется
установить параметр построителя отчета “ДатаОкончания”, во втором
же случае этого не
требуется, кроме того,
если отбор по полю “ДатаОкончания” не будет задан, то этот параметр таблицы
“РегистрНакопления. ОстаткиТоваровКомпании. Остатки” вообще не будет учитываться.

то левое соединение по регистру партий будет выполняться
только в том случае, если в списке выбранных полей будет присутствовать
поле “КоличествоПоПартиям”.

имеет смысл писать

Есть один нюанс, для того, чтобы группировка по
периодам работала, необходимо добавить фильтр по параметру “Периодичность”. Чтобы
не делать это вручную,
для удобства можно перед выполнением построителя отчета программно его добавлять,
а после выполнения удалять, чтобы он не смущал, так как с точки зрения здравого
смысла понять такой фильтр невозможно. Делается это примерно так

Если ПостроительОтчета. ДоступныеПоля. Найти(«Периодичность») <> Неопределено Тогда

Периодичность = Неопределено;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодГод») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодГод») <> Неопределено Тогда

Периодичность = 9;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодПолугодие») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодПолугодие») <> Неопределено Тогда

Периодичность = 8;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодКвартал») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодКвартал») <> Неопределено Тогда

Периодичность = 7;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодМесяц») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодМесяц») <> Неопределено Тогда

Периодичность = 6;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодДекада») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодДекада») <> Неопределено Тогда

Периодичность = 5;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодНеделя») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодНеделя») <> Неопределено Тогда

Периодичность = 4;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«ПериодДень») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«ПериодДень») <> Неопределено Тогда

Периодичность = 3;

КонецЕсли;

Если ПостроительОтчета. ИзмеренияСтроки. Найти(«Регистратор») <> Неопределено
ИЛИ ПостроительОтчета. ИзмеренияКолонки. Найти(«Регистратор») <> Неопределено
ИЛИ ПостроительОтчета. ВыбранныеПоля. Найти(«Регистратор») <> Неопределено Тогда

Периодичность = 2;

КонецЕсли;

Если Периодичность <> Неопределено Тогда

ПолеОтбораПоПериодичности = ПостроительОтчета. Отбор. Добавить(«Периодичность»);

ПолеОтбораПоПериодичности. Значение = Периодичность;
ПолеОтбораПоПериодичности. Использование = Истина;

КонецЕсли;

КонецЕсли;

Если ПолеОтбораПоПериодичности <> Неопределено Тогда

ПостроительОтчета. Отбор. Удалить(ПостроительОтчета. Отбор. Индекс(ПолеОтбораПоПериодичности));

КонецЕсли;

Пользовательская настройка построителя

Для того, чтобы дать пользователю возможность изменить
список группировок, фильтр, выбранные поля или сортировку, достаточно
создать реквизит отчета
“Построитель” и разместить на форме отчета табличное поле и указать ему
в качестве источника данных “Построитель. ИзмеренияСтроки”,
“Построитель. ИзмеренияКолонки”, “Построитель. Отбор”, “Построитель. ВыбранныеПоля”
или “Построитель. Порядок”.

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

Расширенная настройка динамического списка УФ
Промо

Работа с интерфейсом v8 1cv8. cf Абонемент ($m)

Обработка автоматически генерирует полный код создания условного оформления формы любой сложности. Достаточно настроить для формы в конфигураторе условное оформление, а затем выбрать данную форму в обработке. В результате будет сгенерирован программный код создания условного оформления.

2019   
14892   
65   
XilDen   

7

Многоуровневые списки выбора с оформлением элементов

Данная статья — попытка решить один маленький кусочек большой проблемы платформы 1С, а именно — бедные и невыразительные пользовательские интерфейсы. Поскольку 1С в режиме управляемого приложения позволяет задействовать веб-клиент, то хочется реализовывать интерфейсы как у взрослых веб-приложений — красивые, дружелюбные для пользователя и, желательно, с положительным UX. Возможно, кто-то со мной не согласится и скажет, что учетные системы должны быть строгие и линейные. Но мы все знаем, что 1С — это уже не только про бухгалтерию. Небольшое отступление для разработчиков, работающих с типовыми конфигурациями. Я не знаю, использует ли фирма 1С что-то похожее в своих разработках. Если да, то данная статья навряд ли будет вам полезна.

2019   
15729   
2   
azhilichev   

5

Интерактивный интерфейс
Промо

Рабочее место Работа с интерфейсом v8 1cv8. cf Россия Абонемент ($m)

Обработка (отдельная панель меню), позволяющая настраивать интерфейс пользователя интерактивно (права не настраивает). Мне очень пригодилось, так как приходится прописывать индивидуальный интерфейс, каждому пользователю (а их уже сотни). Выложил 2 версии одна в виде таблицы, вторая в виде выпадающего меню

2011   
24195   
65   
Vin_Tik   

9

Простой редактор плана помещения JavaScript

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

2016   
30869   
110   
igel9780   

23

Подчеркивание текста в макете

Работа с интерфейсом Универсальные функции v8 1cv8. cf Абонемент ($m)

Часто возникала проблема с тем, что в макете нужно выводить частично подчеркнутый, «динамический» текст. То бишь с различного содержания, разной длины (пять слов или сто пять — неважно). Но всегда используется определенный текст, к примеру: «статья УК РФ №666 п. 666». И если в этом тексте еще и требуется подчеркнуть что-то отдельно, к примеру: «статья УК РФ №666 п. 666», то это была просто трагедия. Приходилось корячить макет вдоль и поперек, чтобы все красиво отображалось.

2016   
16532   
9   
papa_harlo   

33

Структура макета

1С присоединить область справа – 4apple.org

Может быть на картинке не заметно, но колонки с итогами содержат параметры, которые называются так же, как итоги в таблице значений, т. например «Сумма», «Остаток», «Количество».

Кроме измерений и итогов, можно выводить доп. параметры, например на рисунке виден параметр Адрес.

Замечания по коду

ПостроительОтчета=Новый ПостроительОтчета();
ПостроительОтчета. ИсточникДанных=Новый ОписаниеИсточникаДанных(ТЗ);

Допустим, в списке значений спзГруппы у нас находится список колонок-группировок для отчета, в структуре спзИтоги — список колонок-итогов (колонки-итоги должны иметь явно указанный тип число, иначе не будет суммироваться итог).

Нужно указать, что колонки спзГруппы будут измерениями построителя — функция обПостроительОтчетаУстановитьИзмерения. Нужно указать, что колонки спзИтоги будут итогами построителя и назначить им некоторую функцию итогов  (Количество,Сумма) — функция обПостроительОтчетаУстановитьИтоги. Затем вызывает заполнение настроек построителя:

Настройки построителя сформировались, но порядок измерений может не соответствовать тому порядку, который есть у нас в стрГруппы, нужно поправить порядок групп — функция обПостроительОтчетаСкорректироватьПорядокИзмерений.

Затем мы выполняем построитель и заполняем параметры вывода макета:

Теперь нужно подставить в построитель наш собственный макет. Но в макете построителя и в нашем названия групп могут не совпадать, поэтому нужно скорректировать названия. В переменной Макет хранится наш макет, мы его обработаем и подставим в макет построителя:

ПостроительОтчета. Макет=ПреобразоватьМакетПостроителя(Макет, спзГруппы);

Затем мы заполняем параметры вывода макета:

Ну и теперь можно вывести результаты построителя в табличный документ:

Библиотека функций

Публикация № 1292709

14

Приемы и методы разработки — Работа с интерфейсом

Дружелюбный интерфейс итогов в диалоге табличных частей для Управляемых форм.

Небольшой набор функций и процедур, дающий возможность организовать итоги в подвале табличных частей с учетом быстрого отбора. Работает только для: табл. частей справочников; табл. частей документов; табл. частей обработок; таблиц значений на форме. (Обрабатываются колонки, содержащие числовой тип)

Предлагаю вашему внимаю процедуру «ИнициализироватьИтоговыеПоляТаблиц», которая позволяет организовать расчет итогов в зависимости от выполненного быстрого отбора в табличной части на форме.

Кусочек кода помещаемый в процедуру на форме «ПриСозданииНаСервере»:

#Область Обработка_Итогов

//Инициализируем кнопки по Итогам Товары
пПараметрыИтогов = Новый Структура;
пПараметрыИтогов. Вставить(«ИмяЭлемента», «Товары»); //Имя элемента, как он объявлен на форме. пПараметрыИтогов. Вставить(«ИмяГруппыПанели», Неопределено); //Имя группы Панели, куда будут добавлены кнопки, если не задано, то кнопки просто добавятся

//Добавим исключения
МассивКолонокИсключений = Новый Массив;
МассивКолонокИсключений. Добавить(«Коэффициент»);
МассивКолонокИсключений. Добавить(«Цена»);
пПараметрыИтогов. Вставить(«МассивКолонокИсключений», МассивКолонокИсключений); //Массив строк, Можно Неопределено. //Добавим индивидуальные
СоотвФормулКолонок = Новый Соответствие;
СоотвФормулКолонок. Вставить(«Объект. Товары. НомерСтроки», «Счетчик»);
пПараметрыИтогов. Вставить(«СоотвФормулКолонок», СоотвФормулКолонок); //Можно неопределено. //
пПараметрыИтогов. Вставить(«ПропуститьЗаполненныйПодвал», Ложь); //Булево, можно неопределено. пПараметрыИтогов. Вставить(«ИспользоватьТиповойПодвал», Истина); //Булево, можно неопределено. пПараметрыИтогов. Вставить(«ЗаголовокКнопки», «»); //Строка, можно пустую, можно Неопределено, необязателен
//
СОГ_ИнтерфейсВызовСервера. ИнициализироватьИтоговыеПоляТаблиц(ЭтаФорма, пПараметрыИтогов);

#КонецОбласти

Данный кусочек кода помещается в процедуру на форме «ПриСозданииНаСервере» и вызывается один раз.

При этом на табличной части формы будут размещены две кнопки «Обновить итоги» и «Показать / скрыть нижнюю панель итогов». (Картинки для кнопок при необходимости можно поменять, прописав другое название, прописанное в конфигураторе)

1С присоединить область справа – 4apple.org

Описание передаваемых параметров в процедуру «ИнициализироватьИтоговыеПоляТаблиц»

Также на форме необходимо добавить две процедуры для обработки нажатия кнопок: «СОГ_ОбработатьИтогиТаблицы» и «СОГ_ОбработатьИтогиТаблицыНаСервере».

  • Процедура «СОГ_ОбработатьИтогиТаблицы» для обработки кнопок.
  • Мене не удалось в общих модулях эстетично передать с клиентского модуля на серверный, форму. Так что пришлось добавить на форму «СОГ_ОбработатьИтогиТаблицыНаСервере», в которой происходит подмена данных подвала на «наши» итоги и обратно на те, что были прописаны в конфигураторе.

Общий модуль «СОГ_ИнтерфейсВызовСервера»

Общий модуль «СОГ_ИнтерфейсКлиент»

Тестирование проводилось на продукте 1С.

1С:Предприятие 8. 3 (8. 1830)
Бухгалтерия предприятия КОРП, редакция 3. 0 (3. 40)

Скачать файлы

пользователь
14. 20 12:03

Сообщение было скрыто модератором.

AnryMc

12. 21 17:18
Сейчас в теме

ТаблицаФормы (FormTable)
ПроверитьСтроку (CheckRow)
Синтаксис:
ПроверитьСтроку(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Произвольный. Строка таблицы. Тип параметра зависит от типа редактируемого значения. Возвращаемое значение:
Тип: Булево. Описание:

Проверяет, соответствует ли строка, установленному в таблице отбору.

Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).

DrZombi
219
13. 21 12:05
Сейчас в теме

(2) Не нравится, не ешь. Это статья Архив, пример рабочий. Записки же надо, где то хранить.

А там смотришь, и другие чего к себе подметят 🙂

AnryMc
836
14. 21 08:40
Сейчас в теме

DrZombi
219
14. 21 10:02
Сейчас в теме

(4) Вы случаем не путаете Итоги, и просто пометку с быстрым отбором?
Это как сравнивать воду в озере и воду в стакане (она там и там мокрая)

С ваших слов — «Зачем она в озере, если есть в стакане» 🙂

Дружище, спасибо за ваше замечательное замечание, что кусочки кода в разных статьях повторяются, я учту на будущее это замечание.

AnryMc
836
15. 21 10:37
Сейчас в теме

Прошу обратить внимание что используется одинаковые методы но КОД РАЗНЫЙ. и соответствует заявленому в публикации. Количество процедур и строк кода на порядок меньше. Нет передачи данных между сервером и клиентом.

Код есть — можете попробовать — если не работает тогда и возмущайтесь, что я «гоню».

DrZombi
219
14. 21 10:06
Сейчас в теме

Так Вы уже продублировали в: Дружелюбный интерфейс пометки и отмены пометки в диалоге табличных полей, для управляемых форм.

Таки дублировал я не кусочки кода, а принцип использования двух различных алгоритмов, для двух различных задач.

Спасибо что не обвинили меня в плагиате использования русского алфавита

DrZombi
219
15. 21 20:39
Сейчас в теме

(7) Пройди мимо, я не обижусь 🙂
,. Ваше мнение важно нам.

DrZombi
219
15. 21 20:40
Сейчас в теме

(7) Мужик, я не хочу смотреть на твой код. Просто мне побоку как и что там у тебя. Даже не уговаривай

DrZombi
219
15. 21 20:46
Сейчас в теме

(7) Сынок, что ты несешь? Там два общих модуля, «Серверный» и «Клиентский»
Все остальное копирастишь в свою форму и наслаждаешься трудом мысли чужой головы, не думая, что и как 🙂

Не стесняйся, возьми мой код и назови своим, я не жаден, дарю, Брат.

И так преступим, запускаем 1С в режиме конфигуратора. Далее переходим в созданный ранее документ. Открываем его и переходим на вкладку формы и открываем её.

1С присоединить область справа – 4apple.org

В окне формы нужно кликнуть два раза на табличную часть справа должно появиться окно свойств таблицы. В нем ищем пункт Подвал и ставим галочку.

1С присоединить область справа – 4apple.org

После чего на форме в табличной части снизу должен появиться подвал.

1С присоединить область справа – 4apple.org

Теперь на нужно чтобы в колонке Сумма подсчитывался итого. Для этого на вкладке Элементы ищем пункт с Название МатериалыСумма и кликаем на нем два раза. Справа появиться свойства поля в них ищем пунктТекстПодвала и вписываем Итого. А в пункте ПутьКДаннымПОдвала кликаем на три точечки.

1С присоединить область справа – 4apple.org

В открывшемся окне нужно выбрать ИтогоСумма.

1С присоединить область справа – 4apple.org

Теперь запускаем отладку и проверяем считается ли итог по колонке в табличной части документа.

1С присоединить область справа – 4apple.org

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

Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями программного продукта «1C:Предприятие», авторское право на который принадлежит ЗАО 1С.

Отображение ИТОГа в Подвале таблицы

1С присоединить область справа – 4apple.org

Похожие FAQ

Как на управляемой форме разместить список регистра сведений с отбором? 15 Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника. ) с типом » ДинамическийСписок» В поле » Основная табли Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10 //Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип – Произвольный, Использование – Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные. РегламентныеЗадания Цикл ЭлементыФормы. МетаданныеВыбор. Спи Как установить параметр динамического списка? 9 Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Как обновить динамический список или реквизит на форме клиента? 7 Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Форма

Программное создание таблицы значений с условным оформлением 6 Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Посмотреть все в категории Работа с Формой (Диалог) и её элементами

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

  • Открыть конфигуратор;
  • Открыть форму документа, где присутствует табличная часть, по которой будем выводить итоги;
  • Заполнить свойства в соответствии в соответствии со скриншотом;

1С присоединить область справа – 4apple.org

При этом как видно из скриншота есть возможность выбрать сумму по колонке, либо количество строк в документе.

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

Этот очень быстрый и удобный способ доступен для управляемых форм.

Решение

Если коротко, то алгоритм следующий:

  • Создаем «подставной» табличный документ
  • Получаем из макета области для формирования мини-прайса (в примере Шапка, строка, подвал)
  • В цикле по сгруппированным данным (по данным шапки)
  • Очищаем подставной макет
  • Выводим в него шапку
  • Выводим все строки (цикл по строкам)
  • Выводим подвал
  • Получаем область из подставной табличной части, в которую вывели данные.
  • Далее работаем с этой областью так же, как как если бы мы получили ее из макета целиком (проверяем на вывод и выводим)

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

PS: Возможно, данная реализация не самая красивая и есть еще варианты. Предлагаю обсудить в комментах.

Ниже небольшая выдержка из кода обработки, прикрепленной для скачивания (демо пример в которой на ряду со «сборной» областью выводится фиксированная область, типа ценника)

ТабличныйДокумент = Новый ТабличныйДокумент ; ВременнаяОбласть = Новый ТабличныйДокумент ;

ПерваяКолонка = Истина; Если ВыводитьФиксированнуюОбласть Тогда Область = ФиксОбласть ; ВывестиОбласть ( ТабличныйДокумент , Область , ПерваяКолонка ); КонецЕсли; Для х = 1 по СтрокиТаблицы. Количество () Цикл

(2 голоса, среднее: 2 из 5)

Пример вывода табличного документа

Ниже приведен пример формирования печатной формы расходной накладной из модуля документа:

Процедура Печать(ТабДок) Экспорт

//создание нового табличного документаТабДок = Новый ТабличныйДокумент ;

//получение макета для печати расходной накладнойМакет = Документы. РасходнаяНакладная. ПолучитьМакет («Основной»);

//получим область «Заголовок» как новый табличный документ (!)Область = Макет. ПолучитьОбласть («Заголовок»);

//укажем параметры областиОбласть. Параметры. НомерДокумента = Номер;Область. Параметры. От = Дата;Область. Параметры. Кому = Контрагент;

//выведем заполненную область «Заголовок» в табличный документТабДок. Вывести (Область);

//выведем область «Шапка» в табличный документТабДок. Вывести(Макет. ПолучитьОбласть(«Шапка»));

//получение области «Строка»//обратите внимание, что это можно сделать до цикла по строкамОбласть = Макет. ПолучитьОбласть(«Строка»);

//вывод строк документа в печатную формуДля Каждого СтрСостава Из Состав Цикл

//заполнение параметров области из строки табличной части Область. Параметры. Заполнить (СтрСостава);

//вывод сформированной области в табличный документ ТабДок. Вывести(Область);

//вывод области «Подвал»Область = Макет. ПолучитьОбласть(«Подвал»);Область. Параметры. ИтогоКоличество = Состав. Итог(«Количество»);Область. Параметры. ИтогоСумма = Состав. Итог(«Сумма»);ТабДок. Вывести(Область);

//установим параметры отображения табличного документаТабДок. ТолькоПросмотр = Истина;ТабДок. ОтображатьЗаголовки = Истина;ТабДок. ОтображатьСетку = Ложь;

//покажем табличный документ на экране ТабДок. Показать ();

Отображение итогов в подвале табличной части документа (управляемая форма) с учетом отбора.

Публикация № 551786

28

Пользовательские инструменты — Обработка документов

отбор итоги подвал пересчет

Встроенный типовой функционал при отображении итогов в таб. части документа (УФ) не учитывает произведенные отборы. сделали некий отбор в таб. части (кн. «Найти»), данные в таб. части изменились, а итоги в подвале остались прежними.

В предлагаемой информационной базе способ решения данной проблемы можно посмотреть на примере документа «Приходная накладная».

В документе нет ничего лишнего, только функционал по  альтернативному поиску (отбору) в табличной части и выводу итогов в подвал.

В документ добавлена своя форма поиска.

В модуле формы документа добавлен код.

В форме документа добавлены реквизиты.

dj_serega
383
29. 16 08:56
Сейчас в теме

hr7095
54
29. 16 11:41
Сейчас в теме

(1) dj_serega,. Форма Поиска копируется и вставляется в нужную конфу целиком, вместе с кодом. В форме документе — немного. Так же код копируется и вставляется в нужную конфигурацию. Все что нужно будет — поменять название табличной части. (ну и реквизит формы добавить, как в примере

jenyavp
91
20. 19 13:15
Сейчас в теме

и у вас срабатывало сочетание клавиш?? Не вызывалась типовая форма поиска?

Метод “Выполнить()” выполняет запрос
построителя отчета и заполняет свойство “Результат”. С помощью метода “ПолучитьЗапрос()” можно получить запрос построителя
отчета, который выполняется при вызове метода “Выполнить()”.

Метод “Вывести()” выводит результат в табличный документ или диаграмму. Если не указать объект, в который требуется выполнить вывод, то будет создан
новый
табличный документ.

Пример вывода в новый табличный документ:
Построитель. Вывести();

Пример вывода в существующий табличный документ:
Построитель. Вывести(ЭлементыФормы. РезультатТаблица);

Пример вывода в диаграмму:
Построитель. Вывести(ЭлементыФормы. РезультатДиаграмма, » Количество»);

Если требуется вывести результат построителя отчета
в сводную таблицу или сводную диаграмму, то тогда нужно не использовать
метод “Вывести()”,
а
заполнять свойство
сводной таблицы или сводной диаграммы “ИсточникДанных”. В качестве источника
можно указать результат построителя отчета или сам построитель отчета. Результат построителя отчета не требует перевыполнения запроса, зато
построитель отчета
позволяет менять состав группировок.