• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Подскажите новичку поджалайста!

  • Автор темы Explorer
  • Дата начала
E

Explorer

Есть форма "ЗаявкаНаОтгрузку" в ней табличная часть, в которой есть "Цена" и "Количество".
В табличной части я создал колонку "Сумма" (Цена*Количество) считает нормально для каждой строки.
Теперь стоит задача вывести не в табличной части "Итого", которое будет считать Итог полей "Сумма" всех строк таблицы.

Пробовал Итог("Сумма"); - не работает.
 
G

gorlanovmax

А в реквизите табличной части "Сумма" в свойсвах стоит "Итог по колонке" ???
 
E

Explorer

Нет. Это вообще не реквизит. Сейчас попробую сделать реквизит такой.
Добавил реквизит табличной части "Сумма", поставил галочку, где сказали и ввел формулу КолВо*Цена.
Перестал считать строку.

Рядом создал обратно текстовое поле "Сумма2" и ввел формулу КолВо*Цена
Считает нормально.
 
Д

Дайнеко

Эх, молодь. Когда-то и я был таким.

Это 2 принципиально разных варианта:
1. поле текстовое, в нем формула вычисляет значение. Вызывается после всех изменений и документе. Результат только на экране и нигде не хранится.
2. поле в базе (реквизит док-та). В его свойствах ничего не писать. В колонках, Цена и Кол поставить Выч_Сумма(). Создать процедуру Выч_Сумма(). В ней: Сумма = Цена * Кол;
Тогда к полю можно обращаться и к его итогу.
 
V

vbs

Тогда к полю можно обращаться и к его итогу.
Если речь о 7.7 - без указания итога по колонке будет работать только внутри формы документа.
Во внешних обработках Док.Итог("Сумма") выдаст ошибку - года два назад обсуждали эту проблему
 
S

SupremeMax

Здравствуйте! Я начинающий программист (всего месяц), работаю в версии 8.2, требуется ваша неоценимая помощь! Имеется ИЕРАРХИЧЕСКИЙ справочник "Сотрудники", состоящий из 2х групп: Работающие и Уволенные. Справочник состоит из 4х колонок: Код, Наименование(имеется ввиду ФИО сотрудника), Дата рождения, Процент премии. Мне необходимо выполнить отбор по Дате рождения, т.е. в соответствующих полях я назначаю интервал дат, в соответствии с которым при нажатии кнопки "Вывести" на печать будет выведен список сотрудников, чьи даты рождения входят в назначенный пользователем интервал. Для того, чтобы лучше понять мой вопрос, в прикрепленных файлах имеются картинки. Я вписывал следующий код:
Код:
Процедура ВывестиНажатие(Элемент)
ТабДок = Новый ТабличныйДокумент;
Макет = Справочники.Сотрудники.ПолучитьМакет("Печать");
// Заголовок
Область = Макет.ПолучитьОбласть("Заголовок");
ТабДок.Вывести(Область);
//Шапка
Область = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(Область);
ДатаРождения = СправочникСписок.Отбор.ДатаРождения;
Если ДатаРождения.Использование = Истина Тогда
СтруктураОтбора = Новый Структура("ДатаРождения", ДатаРождения.Значение);
КонецЕсли;
Выборка = Справочники.Сотрудники.ВыбратьИерархически(С,По1,"возр");
Группа = Макет.ПолучитьОбласть("Группа");
Элемент = Макет.ПолучитьОбласть("Элемент");
Пока Выборка.Следующий()= Истина Цикл
Если Выборка.ЭтоГруппа Тогда
Область = Макет.ПолучитьОбласть("Группа");
Группа.Параметры.Код = Выборка.Код;
Группа.Параметры.Наименование = Выборка.Наименование;
Группа.Параметры.ДатаРождения = Выборка.ДатаРождения;
Группа.Параметры.ПроцентПремии = Выборка.ПроцентПремии;
ТабДок.Вывести(Группа);
Иначе 
Область = Макет.ПолучитьОбласть("Элемент");
Элемент.Параметры.Код = Выборка.Код;
Элемент.Параметры.Наименование = Выборка.Наименование;
Элемент.Параметры.ДатаРождения = Выборка.ДатаРождения;
Элемент.Параметры.ПроцентПремии = Выборка.ПроцентПремии;
ТабДок.Вывести(Элемент);
КонецЕсли;

КонецЦикла;

ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Ложь;
ТабДок.Показать();

КонецПроцедуры
При нажатии кнопки "Вывести" в режиме исполния мне выдается следующая ошибка:

{Справочник.Сотрудники.Форма.ФормаСписка.Форма(159)}: Ошибка при вызове метода контекста (ВыбратьИерархически): Несоответствие типов (параметр номер '1')
Выборка = Справочники.Сотрудники.ВыбратьИерархически(С,По1,"возр");
по причине:
Несоответствие типов (параметр номер '1')

Подскажите, пожалуйста, что я делаю непарвильно?
 

Вложения

  • __________.png
    __________.png
    12,7 КБ · Просмотры: 530
  • _________.png
    _________.png
    7,7 КБ · Просмотры: 321
U

unknown181538

СправочникМенеджер.<Имя справочника> (CatalogManager.<Имя справочника>)
ВыбратьИерархически (SelectHierarchically)
Синтаксис:

ВыбратьИерархически(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
Параметры:

<Родитель> (необязательный)

Тип: СправочникСсылка. Отбор по родителю. Имеет смысл только для многоуровневых справочников. Если параметр не задан, то отбор по родителю не производится.
<Владелец> (необязательный)

Тип: СправочникСсылка. Отбор по владельцу. Имеет смысл только для подчиненных справочников. Если параметр не задан, то отбор по владельцу не производится.
<Отбор> (необязательный)

Тип: Структура. Ключ структуры описывает имя поля, а значение структуры - значение отбора по этому полю. Могут задаваться только "Код", "Наименование" и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение "Индексировать" или в значение "Индексировать с доп. упорядоч.".
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
<Порядок> (необязательный)

Тип: Строка. Строка с именем реквизита справочника, определяющая упорядочивание элементов в выборке. Может быть указано "Код", "Наименование" или имя одного из реквизитов примитивного типа (Число, Строка, Дата, Булево), для которого установлен признак "Индексирование" в значение "Индексировать" или "Индексировать с дополнительным упорядочиванием" в конфигураторе. После имени реквизита через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Если параметр не указан, то порядок определяется основным представлением справочника.
Значение по умолчанию: Пустая строка
Возвращаемое значение:

Тип: СправочникВыборка.
Описание:

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

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

Товары = Справочники.Номенклатура;
ВыборкаСправочника = Товары.ВыбратьИерархически();
 
S

SupremeMax

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

unknown181538

Намного эффективней будет, если вы потратите время на смостоятельный их поиск.
 
S

SupremeMax

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

SupremeMax

unknown181538, спасибо вам большое, я ежу разобрался!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!