1с очистить значение элемента формы

Программирование в 1С для всех

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

Заполнение табличной части 1С 8.3

Очень часто встречается задача заполнить табличную часть какими-нибудь значениями, например результатом выполнения запроса. Для демонстрации реализуем пример, в котором выполняется заполнение табличной части. Сделаем небольшую учебную задачу: будем заполнять табличную часть документа всей номенклатурой, которая не помечена на удаление. Количество при этом будет равно 1. Для заполнения табличной части документа нам необходимо работать с одноименной таблицей реквизита Объект, который является основным реквизитом управляемой формы.

1 1

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

2 1

Исполнение команды будет выполняться в серверном контексте, поскольку объект Запрос не работает в клиентском контексте на тонком клиенте.

При обходе запроса, я использую метод Добавить табличной части объекта (вообще это метод объекта, который имеет тип ДанныйФормыКоллекция, именно в этот тип преобразуется табличная часть документа-объекта, при создании на сервере). Данный метод является функцией, которая создаёт и возвращает новую строку.

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

Очистка табличной части документа 1С 8.3

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

После выполнения этого метода вся табличная часть будет очищена.

Текущая строка табличной части 1С 8.3

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

3 1

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

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

4 1

Для того, чтобы отработать изменение текущего поля цены, создадим обработчик события ПриИзменении этого поля.

5 1

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

Ещё пример: я создал команду, которая должна увеличивать количество в текущий строке табличной части в два раза и пересчитывать сумму. Эта команда размещена в командной панели таблицы и имеет следующий код:

Теперь доработаем этот пример: после увеличения текущей строки будем сдвигать текущую строку на строку вниз. Для этого допишем предыдущий код:

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

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

В этом коде мы используем метод НайтиПоИдентификатору переменной Объект.СписокТоваров, которая имеет типа ДанныйФормыКоллекция, этот метод получает элемент коллекции по указанному идентификатору. Если этот элемент найден, то мы можем с ними работать, причем данные на форме изменяться автоматически.

Обход табличной части 1С

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

Остальные статьи по теме конфигурирования в 1С:

Более подробно и основательно конфигурирование в 1С дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

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

1 %D0%B2 %D0%B6%D0%B5%D0%BB%D1%82%D0%BE%D0%BC %D1%86%D0%B2%D0%B5%D1%82%D0%B5 3D %D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B0%D1%8F

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu

Источник

Работа с табличной частью объектов в 1С

Табличные части существуют у многих объектов в 1С:

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

Рассмотрим некоторые приемы работы с табличными частями.

Как обойти табличную часть

Для обхода табличной части можно использовать цикл Для каждого

Для каждого Строка из ТабличнаяЧасть Цикл

На каждой итерации в переменную Строка передается очередная строка табличной части. Значения реквизитов строки можно получить выражением Строка.ИмяРеквизита.

Как получить и обойти выделенные строки табличной части

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

%D0%A2%D0%A7Для получения перечня выделенных строк используется следующий код:

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

Для каждого Строка из ВыделенныеСтроки Цикл

Как программно выделить строки табличной части (табличного поля) и снять выделение

Чтобы программно снять выделение строк табличного поля:

Чтобы программно выделить все строки табличного поля:

Как очистить табличную часть

Как получить текущую строку табличной части

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

Для обычных форм код будет выглядеть так:

Для управляемых форм:

Как добавить новую строку в табличную часть

Добавление новой строки в конец табличной части:

Добавление новой строки в любое место табличной части (последующие строки будут сдвинуты):

Как программно заполнить реквизиты строки табличной части

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

Создаваемая обработчиком процедура имеет три параметра:

Рассмотрим пример. Допустим, нам нужно заполнить реквизит табличной части СчетУчета, в случае, когда добавляется новая строка. При редактировании существующей строки изменять счет учета не нужно.

//Если пользователь редактирует существующую строку, то ничего не делаем
Если НЕ НоваяСтрока Тогда
Возврат ;
КонецЕсли ;

Работа с табличной частью объектов в 1С : 13 комментариев

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

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

Я бы порекомендовал сделать запрос к табличной части документа (именно к табличной части, а не к документу). Выбрать там ваш столбец Стоимость и другие столбцы, если нужно. И применить функцию СУММА к этому столбцу. Подробнее и с примерами смотрите в статье Группировки в запросах 1С http://chel1c.ru/querry_group/

Спасибо!
Буду пробовать.

А может это подойдет?

Табличная часть (Tabular section)
Итог (Total)
Синтаксис:

Тип: Число; Строка.
Индекс либо имя колонки, по которой подсчитывается итог.
Возвращаемое значение:

Тип: Число; Неопределено.

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

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

Это подошло бы, если бы нужно было суммировать колонку в одном документе. А Юрию нужно суммировать колонку Стоимость всех документов.

Добрый день!
Достаточно ли будет обратиться в модуле формы к текущей строке табличной части или в модуле менеджера тоже нужно будет что-то прописать?

Не совсем понял, о чем конкретно вопрос.
Если о том, как получать и работать с текущей строкой табличной части, то в модуле менеджера ничего писать не нужно.

//Создаём новую коллекцию печатных форм
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм(«ПечатьЭтикеток»);
//Добавляем в коллекцию сформированный табличный документ
КоллекцияПечатныхФорм[0].ТабличныйДокумент = ТабДокумент;
//Устанавливаем параметры печати (при необходимости)
КоллекцияПечатныхФорм[0].Экземпляров = 1;
КоллекцияПечатныхФорм[0].СинонимМакета = «ПечатьЭтикеток»; //Так будет выглядеть имя файла при сохранении в файл из формы «Печать документов»
//Вывод через стандартную процедуру БСП
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, Неопределено);КонецПроцедуры

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

Макет = ДокСсылка.ПолучитьОбъект().ПолучитьМакет(«Этикетка»);
Для каждого Стр Из ДокСсылка.Картриджи Цикл
//Если Лев(Стр.СерийныйНомер,2) «30» Тогда
// Продолжить;
//КонецЕсли;
ОбластьМакета = Макет.ПолучитьОбласть(«ШПК»);

ЧтоТо = Стр.СерийныйНомер;
ПервыйМодуль.ВывестиШтрихкодДокументаВОбластьМакета(ВнешняяКомпонента,ОбластьМакета,ЧтоТо) ;

ОбластьМакета.Параметры.Клиент = ДокСсылка.Партнер;
ОбластьМакета.Параметры.Орг = «СК ПОТОК тел.78-06-78»;//Константы.пмОрганизацияДляСервиса.Получить();
ОбластьМакета.Параметры.КЖ = СокрЛП(Стр.Картридж.Артикул);
ОбластьМакета.Параметры.СерийныйНомер = Стр.СерийныйНомер;

ТабДокумент.Вывести(ОбластьМакета);
ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;

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

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

Доброго времени суток!
Создаю обработку на обычных формах, в которой имеется несколько Табличных частей. Они в свою очередь находят отображение в Форме обработки. И если данные первых 3, меня после закрытия Формы, не интересуют, то данные последней хотелось-бы использовать в дальнейшем, пока открыта обработка. В настоящее время при закрытии Формы Табличные части очищаются. В дальнейшем, в новом сеансе работы с обработкой эти данные не нужны. Насколько я понимаю Функции сохранения Данных Табличной части обработки не существует. Табличную часть в обработке решил использовать из-за возможности сохранить структуру Данных. Как мне сохранить эти данные для использования в других окнах?
Может у Вас есть видео по данному вопросу?

Источник

1С очистить таблицу значений на форме

Таблица значений — специальный объект в программировании 1С 8.3 (8.2), который позволяет хранить промежуточные значения в виде двумерного массива со строками и колонками. Таблицы значений можно использовать как источник данных в запросе.

Таблицу значений, как любую коллекцию, можно обойти циклом. Например:

Получить нужную строку можно по индексу, например:

Индексы в 1С начинается с 0 (нуля).

Рассмотрим основные свойства и методы этого объекта на примерах.

Создание и использование таблиц значений 1С в примерах

Создать таблицу можно следующим образом:

Добавить колонки в таблицу значений 1С:

Крайне рекомендую указывать кроме первого еще и второй параметр — тип данных. Он поможет избежать некоторых ошибок.

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

Получите 267 видеоуроков по 1С бесплатно:

Добавим еще одну колонку:

Которую мы можем заполнить одинаковыми значениями двумя способами — перебором таблицы или функцией ЗаполнитьЗначения:

Сообщим пользователю название первой в списке программы (индекс таблицы значений в 1С начинается с «0»:

Скопировать строку таблицы значений 1С, для примера — первую:

Поиск в таблице значений 1С с ценой «17400» с помощью структуры:

Сортировка программ в таблице по цене:

Количество строк в таблице:

Выгрузить колонку таблицы значений в массив 1С 8.3 или 8.2:

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

Полностью скопировать таблицу значений 1С можно так:

Просуммировать итог по колонке таблицы значений:

Свернуть таблицу можно так:

При этом в таблице останутся только различные значения из колонки «ВерсияПлатформы» с суммированными полями «Цена».

Ну и напоследок очистим строки таблицы значений 1С 8.3 (8.2) полностью:

И удалим все колонки:

Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Удаляет все строки таблицы значений

Синтаксис

Метод Очистить() имеет следующий синтаксис:

А также альтернативный англоязычный синтаксис:

Параметры

Метод Очистить не имеет формальных параметров.

Описание

Метод Очистить() удаляет все строки таблицы значений.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода Очистить() :

личный блог

Console

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

Стоит отметить, что предварительно нужно создать соответствующие РезультатуЗапроса колонки таблицы значений. Делается это также просто. Добавить ТаблицуЗначений следует в реквизиты Формы. Еще раз акцентирую внимание — Названия колонок и типы данных колонок ТЗ должны совпадать и на форме и в запросе. Можно вообще не создавать ТЗ на форме, а описать ее программно, примерно как то так:

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

Ниже пример такого преобразования.

Во всей этой истории следует обратить внимание на 2 строчки.

Первая

Вторая

Первый из типа данных ДанныеФормыКоллекция преобразует данные в тип ТаблицаЗначений. Второй соответственно конвертирует в обратном направлении.

Источник

1с очистить значение элемента формы

В этой статье будет постепенно публиковаться набор кратких шпаргалок по использованию методов языка и спосбов разработки на платформе 1С:8.2 (часть из них применима и к 8.1, но об этом упоминаться не будет).

Вопрос Как сделать так, чтобы автоматически рассчитывалась сумма (Сумма = Количество*Цена) при изменении Цены или Количества в форме документа.
Ответ В свойствах элементов формы «Количество» и «Цена» прописывается вызов события «ПриИзменении».
В модуле формы, процедура «при изменении»:

где Элементы.Материалы.ТекущиеДанные — обращение к коллекции элементов формы*, используя свойство «Элементы» объекта «УправляемаяФорма» (все свойства и методы объекта встроенного языка «УправляемаяФорма» доступны нам тут, т.к. мы находимся в Модуле Формы)

*Коллекция элементов формы является объектом встроенного языка «ВсеЭлементыФормы», содержащим все элементы формы. Т.е. это программный аналог корня дерева элементов формы. Каждый элемент формы можно получить через точку от объекта «ВсеЭлементыФормы», т.е. указав его имя в качестве свойства этого объекта. В данном случае идет обращение к табличной части «Материалы» документа (Элементы.Материалы). Табличная часть документа — это объект «ТаблицаФормы», у которого есть свойство «ТекущиеДанные». В результате выполнения команды «СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;» переменная СтрокаТабличнойЧасти будет содержать объект «ДанныеФормыСтруктура», в котором есть данные, находящиеся в текущей строке табличной части документа. Где текущая строка — это текущая интерактивно, т.е. та, на которой стоит курсор пользователя. В синакс-помощнике см. раздел «Интерфейс — ТаблицаФормы — Свойства».

Вопрос Что означает галочка «Клиент» в свойствах общих модулей.
Ответ Она означает, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента.

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

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

Вопрос о событиях форм.
Ответ Существует два вида событий форм:

Вопрос о видах модулей.
Ответ Виды модулей:
Модуль управляемого приложения. Выполняется при старте 1С:Предприятия в режимах тонкого клиента и веб-клиента. Переменные и процедуры этого модуля будут доступны в любом другом модуле конфигурации, кроме модуля внешнего соединения. Этому модулю доступны экспортируемые переменные и процедуры общих модулей.
Общие модули. Сами по себе не выполняются. Служат для хранения и исполнения процедур, вызываемых во время исполнения других модулей. Общий модуль будет глобальным, если в свойствах этого модуля установить флаг «Глобальный«. В этом случае процедуры этого модуля компилируются не при обращении к ним, а при запуске системы и обращение к этим функциям осуществляется по их имени, без приставки через точку наименования самого общего модуля.
Модули Объектов. Вызывается при интерактивном создании объекта(документа, элемента справочника) пользователем либо при программном создании объекта средствами встроенного языка (СоздатьЭлемент(), СоздатьДокумент()), а также при различных действиях с этим объектом (справочником, документом), которые влекут за собой вызов предопределенных процедур, которые могут быть описаны в модуле объекта, например, «ПриЗаписи()».
Модули формы. Модуль формы исполняется при создании объекта УправляемаяФорма — программно (ПолучитьФорму(), ОткрытьФорму()) или интерактивно при открытии формы пользователем.
Модуль сеанса. Выполняется при старте 1С:Предприятия в момент загрузки конфигурации — для инициализации параметров сеанса и отработки действий. связанных с сеансом работы. Не содержит экспортируемых процедур, но может использовать процедуры из общих модулей.
Модуль внешнего соединения. Используется для размещения процедур, прорабатываемых в сессии внешнего соединения.
Модуль менеджеров. Для каждого прикладного объекта существует менеджер, предназначенный для управления этим объектом как объектом конфигурации. Менеджер помогает создавать объекты, работать с формами и макетами. Процедуры модуля менеджера позволяют расширять функциональность менеджеров, предоставляемых системой — так можно описать собственные методы для объекта, которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации.
Модуль команды. Команды — объекты, подчиненные прикладным объектам и конфигурации в целом. У каждой команды есть модуль команды, в котором можно описать предопределенную процедуру ОбработкаКоманды() для выполнения этой команды.

Вопрос о контексте
Ответ Для доступа к свойствам и методам языка в каком-то контексте, нужно сначала понять их состав, названия, типы. Чтобы узнать, какие свойства контекста у модуля формы какого-либо объекта, удобно использовать свойство «ЭтаФорма». Рассчитывая в режиме отладки значение этого свойства, можно увидеть полный состав того, что доступно в этом контексте. Аналогично, свойства контекста модуля объекта или набора записей – при отладке в модуле объекта удобно использовать свойство «ЭтотОбъект».

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

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

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

Вопрос Что означает флажок «Предопределенное» в свойствах регламентного задания в конфигураторе
Ответ Флажок «Предопределенное» в свойствах регламентного задания (в конфигураторе) говорит о том, что после запуска в режиме 1С:Предприятие будет создано одно предопределенное регламентное задание. В противном случае такое задание пришлось бы создавать средствами встроенного языка.

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

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

Вопрос Почему открытие некоторых окон блокирует другие окна.
Ответ Так происходит, когда в свойствах формы свойство «РежимОткрытияОкна» установлено в значение «Блокировать окно владельца». Если изменить на значение «Независимый», то окно будет открываться, не блокируя другие окна (см. раздел «Использование» в свойствах формы).

Вопрос Как программно изменить структуру дерева распределенной информационной базы.
Ответ Механизм распределенных информационных баз содержит программное средство конфигурирования структуры узлов распределенной базы. Для этого существует метод УстановитьГлавныйУзел() объекта ПланыОбменаМенеджер. В параметре этого метода передается ссылка на узел плана обмена распределенной информационной базы, который устанавливается главным для текущей базы. Также в этом параметре может быть передано значение Неопределено, тогда у текущей базы будет отсутствовать главный узел, т.е. она станет корневым узлом.
Пример:

При этом будут удалены все записи регистрации изменений конфигурации Узла2, относящиеся к Узлу2, передача изменений конфигурации будет возможна теперь только от Узла2 к Узлу1. Записи регистрации изменения данных удалены не будут, т.к. передача данных будет по-прежнему возможна между этими узлами.

Создание распределенной информационной базы из баз с одинаковой конфигурацией:

Вопрос В каких случаях вызывается событие «ОбработкаВыбора» формы документа.
Ответ Это событие вызывается в двух случаях: когда в форме выполнен интрерактивный выбор и когда в форме вызван метод ОповеститьОВыборе().

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

Вопрос Как назначить произвольную форму выбора ссылки на объект, являющийся типом реквизита другого объекта сразу для всех форм этого другого объекта. Предположим, эта произвольная форма уже сконструирована в метаданных, например, произвольная форма выбора сотрудника в справочнике сотрудников. В документе «Оказание услуг» есть реквизит «Мастер», со ссылкой на справочник сотрудников. Требуется, чтобы во всех формах документа «Оказание услуг» при открытии списка сотрудников для выбора, открывалась эта произвольная сконструированная форма.
Ответ Для этого нужно указать ссылку на эту форму в свойстве Форма выбора реквизита документа «Оказание услуг» (а не указывать в каждой форме для каждого поля «Мастер» отдельно). Путь: Конфигурация — Документы — двойной щелчок на документе «ОказаниеУслуг» — Данные — Реквизиты — двойной щелчок на реквизите Мастер — свойство «Форма выбора» в разделе «Представление» открывшихся свойств.

Вопрос Где размещать проверку заполнения реквизита объекта.
Ответ Чтобы проверка заполнения выполнялась во всех формах, где используется этот реквизит, реализовывается это следующим образом.
Интерактивная проверка. Путь: Конфигурация — Документы — двойной щелчок на документе «ОказаниеУслуг» — Данные — Реквизиты (или Табличные части — нужный реквизит) — двойной щелчок на реквизите — свойство «Проверка заполнения» в разделе «Представление» открывшихся свойств = «Выдавать ошибку».
Программная проверка. В модуле объекта нужно разместить обработчик с предопределенным именем ОбработкаПроверкиЗаполнения() (он по умолчанию запускается автоматически при записи формы) примерно такого вида:

Вопрос О способах вызова экспортных процедур, описанных в модулях объектов.
Ответ Один из интересных способов — обращение к процедуре через точку после определения объекта. Пример. В модуле объекта справочника клиентов есть процедура «Проверка() Экспорт». Обратиться к ней можно, например, так: Справочники.Клиенты.НайтиПокоду(Код).ПолучитьОбъект().Проверка()

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

При этом особенности внутренней реализации объекта КонстантыНабор таковы, что при записи набора констант будут вызваны для каждой константы, входящей в записываемый набор, обработчики событий: ОбработкаПроверкиЗаполнения(), ПередЗаписью() и ПриЗаписи() модуля менеджера значения константы (если они там определены).
===

Вопрос Примеры программного кода работы со справочниками (аналогично с планами видов характеристик, с планами счетов, с планами видов расчета и с планами обмена).
Ответ

Вопрос Последовательность событий при записи элемента справочника из формы элемента (записать и закрыть), а также при записи вида характеристики из формы элемента (записать и закрыть), при записи счета из формы счета (записать и закрыть), при записи вида расчета из формы вида расчета (записать и закрыть).
Ответ МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Вопрос Последовательность событий при записи узла плана обмена из формы узла (записать и закрыть).
Ответ МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись узла плана обмена в базу данных)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Вопрос Примеры программного кода обработки документов.
Ответ

Вопрос Последовательность событий при записи документа из формы документа.
Ответ МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи».

Вопрос Последовательность событий при проведении документа из формы документа (провести и закрыть).
Ответ МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- (запись)- «При записи» — «Обработка проведения»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Вопрос Последовательность событий при отмене проведения документа из формы документа (провести и закрыть).
Ответ МОДУЛЬ ФОРМЫ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ ОБЪЕКТА СЕРВЕР: «Перед записью»- «Обработка удаления проведения» — (запись)- «При записи»- МОДУЛЬ ФОРМЫ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ КЛИЕНТ: «После записи».

Вопрос Примеры программного кода работы с перечислениями.
Ответ

Вопрос Примеры программного кода работы с регистрами сведений.
Ответ

Вопрос Последовательность событий при сохранении данных из формы записи регистра сведений (записать и закрыть).
Ответ МОДУЛЬ ФОРМЫ ЗАПИСИ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью»- (запись набора записей в базу данных (количество=0)) — «При записи» — «ПередЗаписью» — (запись набора записей в базу данных (количество=1)) — «При записи» — МОДУЛЬ ФОРМЫ ЗАПИСИ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ ЗАПИСИ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Особенность внутренней реализации объекта РегистрСведенийМенеджерЗаписи. таковы, что в случае сохранения существующей записи регистра сведений обработчики события ПередЗаписью() и ПриЗаписи() модуля набора записей будут вызваны дважды: сначала для старого набора записей (с количеством записей 0) и затем для нового (с количеством записей 1).

Вопрос Последовательность событий при сохранении данных из формы набора записей регистра сведений (записать и закрыть), а также при сохранении набора записей регистра накопления из формы набора записей, при сохранении набора записей регистра бухгалтерии из формы и при сохранении набора записей регистра расчета из формы.
Ответ МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ КЛИЕНТ: «Перед записью» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения на сервере» — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Обработка проверки заполнения» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью на сервере» — (Начало транзакции записи — МОДУЛЬ НАБОРА ЗАПИСЕЙ СЕРВЕР: «Перед записью»- (запись набора записей в базу данных) — «При записи» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ СЕРВЕР: «При записи на сервере» — Конец транзакции записи) — «После записи на сервере» — МОДУЛЬ ФОРМЫ НАБОРА ЗАПИСЕЙ КЛИЕНТ: «После записи» — «Перед закрытием» — «При закрытии».

Вопрос Примеры программного кода работы с регистрами накопления, регистрами бухгалтерии и регистрами расчета.
Ответ

Вопрос О проведении документов и видах блокировок в модуле проведения.
Ответ При проведении документов обычно нужно выполнить какие-то движения.
ВАРИАНТ 1. Если сначала выполняется запись движений, а потом их чтение (для контроля и отказа от проведения, если неудачно), то блокировка устанавливается командой типа:

ВАРИАНТ 2. Однако, бывают случаи, когда сначала нужно выполнить чтение, а уже потом запись.
В этом случае блокировка выполяняется методом «БлокировкаДанных», примерно так:

Пример модуля проведения по этой схеме:

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

Вопрос В табличной части документа есть реквизит сумма. Требуется вывести итог в шапку документа. Как это лучше сделать?
Ответ Подсчет итога по графе «Сумма» и заполнение реквизита шапки этим результатом лучше сделать в МодулеДокумента в процедуре-событии «Перед записью»:

Вопрос Как в запросе осуществить выборку остатков и оборотов регистра накопления за заданный период, включая последнюю секунду, когда период задан параметрами виртуальной таблицы.
Ответ Особенность виртуальной таблицы регистра накопления такова, что когда конец выборки задается значением вида 12.13.2011 23:59:59 (т.е. конец дня), то последняя секунда дня не попадает в выборку. А если указать 12.13.2011 23:59:59 + 1 (т.е. добавить секунду), то в выборку попадут данные следующего дня, что тоже не правильно. Чтобы этого не происходило, дату окончания нужно задавать, используя метод «Граница». Пример:

Вопрос На какие данные можно опираться при проведении документов и на какие нельзя? В частности, в каком случае можно опираться на валюту, указанную в реквизите справочника договоров контрагента при проведении документа.
Ответ При проведении документа нужно следить за тем, чтобы выполняемые им движения были стабильно воспроизводимыми. Нельзя допускать ситуации, когда документ при проведении определяет, например, валюту как рубль, затем пользователь изменяет в договоре с контрагентом валюту на другую, и при повторном проведении документа валюта определяется в движениях уже как другая.
Документ в своих движениях может опираться на:

Допустим, в документе есть реквизит «Договор». Для выполнения движений, предположим, требуется узнать валюту договора, т.е. валюта – это реквизит договора с контрагентом. И пусть договор – это элемент справочника «Договоры», подчиненного справочнику «Контрагенты». В таком случае при проведении документа мы можем использовать валюту из договора только в том случае, если конфигурированием мы добились того, что пользователь после записи в базу данных нового договора уже не может поменять в нем валюту. Такой запрет на изменение лучше всего разместить в предопределенной процедуре-событии модуля объекта справочника договоров «ПередЗаписью» (тогда при любом из возможных вариантов модификации этого справочника будет осуществляться соответствующая проверка):

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с очистить значение реквизита формы
  • 1с отчет скд как вывести параметр на форму