Новости экономики и финансов. Курсы валют, ситуация на биржах, акции, котировки, аналитика: 💫 💫 💫 💫 💫 💫 читайте на сайте

1C Удалить Колонку Табличного Документа Программно • Личный блог

Чтобы у таблицы появилась командная панель, в свойствах таблицы выберите значения в секции Использование Положение командной панели.

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Например, у вас имеется документ, в котором вы создали некую табличную часть в данном примере она называется Студенты , и вы хотите программно добавить в нее строки при возникновении какого-то события, тогда возникает вопрос как именно правильно обратиться к данному объекту документа. 1С очистить таблицу значений на форме Обращайтесь в форму связи

1С добавить строку в табличную часть программно

Например, у вас имеется документ, в котором вы создали некую табличную часть (в данном примере она называется «Студенты»), и вы хотите программно добавить в нее строки при возникновении какого-то события, тогда возникает вопрос: как именно правильно обратиться к данному объекту документа?

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

У нас имеется процедура, выполняемая на клиенте, поскольку мы не производим на данном этапе никаких изменений данных, поэтому нам не требуется запрос к серверу («СписокВыборНаСервере() в данном случае не нужен).

Создаем новую переменную «Стр», в которую записываем метод табличной части «Добвить()». Из данной строки видно, что непосредственное обращение к табличной части, называющейся «Студенты», происходит через «Объект». Им является сам документ, в котором создана табличная часть.

Затем происходит заполнение колонок, имеющихся в «Студентах». В данном примере табличная часть имеет лишь одну колонку «Студент» (см. Изображение), она и заполняется данными из динамического списка. В других случаях табличная часть может иметь множество колонок для заполнения. Обращение к ним будет производиться аналогичным образом.

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

1С добавить строку в табличную часть программно –

1С Предприятие, конфигурации, обработки, услуги программиста, помощь программиста

Нужно вставить обработчик события самой табличной части, который называется «При начале редактирования». В нем есть параметр «Новая строка», что дает нам возможность выполнять некоторые действия только при добавлении новой строки. При этом сама строка уже существует,

Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока тогда
текСтрока = ЭлементыФормы.Состав.ТекущиеДанные;
Если не текСтрока = неопределено тогда
текСтрока.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

в отличии от обработчика «ПередНачаломДобавления», который можно использовать с тем же успехом, но код будет другой

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

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

Итак, у нас есть справочник «Тест» с табличной частью «Тест», в табличной части присутствуют реквизиты «Тест1» и «Тест2», а нам нужно добавить еще один реквизит — «Тест3» и показать его на форме.

Не думаю, что приведенный код нуждается в комментариях, но на всякий случай скажу, что первые три строки создают новый реквизит типа «Строка» — тут важно указать путь к создаваемому реквизиту — третий параметр.

Какую часть дохода тратите на еду?
До 50%Больше 50%

Точно также можно добавить колонку любой таблице значений (не табличной части) — в этом случае нужно убрать часть «Объект.» из кода.

Следующие три строки добавляют саму колонку на форму.

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Делается это с помощью поэлементного вывода в табличный документ с помощью методов процессора компоновки данных НачатьВывод, Следующий, ВывестиЭлемент. Добавить реквизит табличной части программно Обращайтесь в форму связи

Создание внешней обработки

Создаем внешнюю обработку. В модуле внешней обработки создаем экспортную процедуру «СведенияОВнешнейОбработке». В параметр «Вид» устанавливаем значение «ЗаполнениеОбъекта», настройку команды «Использование» устанавливаем «ОткрытиеФормы».

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

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

1C Удалить Колонку Табличного Документа Программно
Элементы объединить в группу с горизонтальной группировкой. На текущий момент форма имеет следующий вид:

1С изменить значение в табличной части документа

Перенос изменений в документ

Учитывая данную возможность, обработаем в цикле строки документа и установим новые значения. Для поиска соответствующей строки используем реквизит «НомерСтроки».

Если мы меняем какое-либо числовое значение, то чаще всего необходимо выполнить пересчет связанных значений в строке. Например, изменяя цену необходимо пересчитать сумму, сумму НДС и что-то еще. Для этого лучше использовать типовые процедуры пересчета табличной части. Перенесем из документа в нашу форму типовой обработчик события изменения цены – «ТоварыЦенаПриИзменении».

1С-Предприятие 8.3. Попытался изменить значения столбца «Ставка НДС» в таблице «Номенклатура» на «Без НДС», за неимением группировок и работой со всем столбцом решил написать скрипт, значение столбца получить удалось, да и количество записей + значение, которое записать нужно, но столкнулся со следующим: функция Записать(); ругается на отсутствие метода или что-то такое.

Вот листинг:
Процедура УстановитьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| Номенклатура.СтавкаНДС КАК СтавкаНДС1,
| Номенклатура.СтавкаНДС.Ссылка,
| Номенклатура.СтавкаНДС.Порядок
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ДЛЯ ИЗМЕНЕНИЯ»;

Выборка=Запрос.Выполнить().Выгрузить();
//ТекЗапись = Справочник.Номенклатура.СоздатьМенеджерЗаписи();

Для каждого Строка из Выборка Цикл
Документ = Строка;
Документ.СтавкаНДС1 = Перечисления.СтавкиНДС.БезНДС;
Сообщить(Документ.СтавкаНДС1);
Записать();
КонецЦикла;

Горящие товары с бесплатной доставкой
 «AliExpress Россия» работает отдельно от глобального «AliExpress» принадлежащего Alibaba. Он не зависит от мировых банковских систем и не попал под санкционный список со стороны США и Великобритании. Из Китая соответственно тоже можно заказывать ничего не опасаясь.

Каким образом обновить/сохранить/записать эту несчастную «Без НДС» во все поля столбца ?
До этого никогда не работал с 1С и документации адекватной найти не получилось

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

Путь программиста. Нужно запросом отобрать не свойства ставки НДС из справочника номенклатуры, а ссылки на элементы справочника (с отбором на то, что это не группа). Далее по выборке из запроса по ссылке получаете объект, заменяете ставку НДС и записываете назад в базу. Выглядит примерно так:

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

Мнение эксперта
1С:Эксперт по технологическим вопросам
Задавайте мне вопросы, и я помогу разобраться!
Для этого нам достаточно добавить в форме документа новую колонку Цена в табличное поле, содержащее данные табличной части документа и написать следующий код в обработчике события ПриПолученииДанных этого табличного поля. 1С получить колонки табличной части Обращайтесь в форму связи

Комментарии 12

Автору для начала стоит разобраться что есть Форма, а что есть Объект, а затем лезть со своими статьями в интернет.

1. Ну очень конструктивная критика;
2. Читайте СП;
3. Не болейте)

P.S. Комментарии модерируются, ссылки не относящиеся к делу нещадно удаляются.

Внимание. Удалять можно только реквизиты созданные программно.

Альберт, спасибо!
Пишу код по заветам Стива Макконелла:

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте

А как добавить реквизит к табличной части документа?

Дмитрий, в статью добавлен пример добавления реквизита табличной части.

Спасибо, очень помогло.
Подскажите а как программно добавить табличную часть на форму?

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

Автору большой респект! Статья написана на отлично! Все очень доступно и красиво — просто, бери и пользуйся.

1С УФ: Отбор на формах и отключение видимости ненужных групп

Комментарии 12

Автору для начала стоит разобраться что есть Форма, а что есть Объект, а затем лезть со своими статьями в интернет.

1. Ну очень конструктивная критика;
2. Читайте СП;
3. Не болейте)

P.S. Комментарии модерируются, ссылки не относящиеся к делу нещадно удаляются.

Внимание. Удалять можно только реквизиты созданные программно.

Альберт, спасибо!
Пишу код по заветам Стива Макконелла:

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте

А как добавить реквизит к табличной части документа?

Дмитрий, в статью добавлен пример добавления реквизита табличной части.

Спасибо, очень помогло.
Подскажите а как программно добавить табличную часть на форму?

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

Автору большой респект! Статья написана на отлично! Все очень доступно и красиво — просто, бери и пользуйся.

💥Принимайте участие в опросе и получайте бесплатную консультацию

Related posts

Добавить комментарий

*