Архив рубрики: Документы

Документы

Отмена создания документа в Обработке Заполнения

В процедуре ОбработкаЗаполнения установка СтандартнаяОбработка = Ложь не приводит к отмене создания документа. В Интернете нашел только советы передавать параметр в форму и при открытии формы его анализировать, что в принципе правильно, но как-то неудобно. Поэтому придумал вот такую конструкцию:

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

Найти строку в табличной части документа

Для поиска необходимого значения воспользуемся функцией НайтиСтроки().



Выгружаем колонку

Далее через НайтиЗначение ищем необходимую строку

Удаление документа




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

При необходимости как либо сгруппировать данные в табличной части могут пригодиться запрос и временная таблица.
Условие: имеем Табличную часть документа (Товары) в которой есть реквизиты: Номенклатура, Количество. Необходимо сделать так, чтобы номенклатура не повторялась:

Как Получить, Прочитать, Изменить Движения документа по регистру?

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

В запросе выбираем все поля (кроме виртуальных) из таблицы регистра РегистрНакопления.ОстаткиНоменклатуры с отбором по регистратору. Значением параметра Регистратор нужно будет установить ссылку на документ.

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

Если требуется изменить движения документа по всем регистрам, нужно обойти фиксированную коллекцию, содержащуюся в свойстве Движения:

Сначала открываем цикл перебора свойств свойства Движения – коллекций наборов записей регистров, для которых наш документ является регистратором.
Далее читаем наборы записей каждой коллекции и открываем цикл перебора записей данного набора записей.

Как Копировать Документ, имея ссылку источник?

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

Получение данных по границам последовательности

Для получения таблицы значений, в первой колонке которой будут указаны границы последовательности, а в последующих – значения измерений, можно применить метод последовательности ПолучитьГраницы():

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

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

Как из формы документа открыть форму списка данного документа, спозиционировавшись на нем же?

Как проверить какого Типа Документ?

Отменить проведение документа, отмена проведения документа

Проведен документ или нет?

Как одним запросом выбрать документы всех видов?

Используя метаданные и возможность объединения запросов:

Пример от Ненавижу 1С

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

Как перебрать документы в определённом интервале

Как сделать чтобы при удалении строки в табличном поле, появлялся вопрос?

Необходимо чтобы в табличной части при попытке удалить строку, возникал вопрос "Вы уверены?"

Как сделать чтобы в колонке табличного поля выводились текущие остатки?

На форме в табличное поле добавим Колонку (Имя — НачальноеСальдо, Данные — Пусто и все остальное тоже) и колонку КонечноеСальдо
Зайдем в свойства Табличного поля и в событиях определим процедуру при выводе строки: ДействиеПриВыводеСтроки

А в модуле напишем:

Как программно открыть и выбрать документ, выбор документа из списка?

Открыть список документов для выбора документа:

Открыть список документов для выбора документа и установить отбор:

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

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

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

Как удалить все строки, кроме тех которые соответсвуют заданному отбору?


В режиме управляемого приложения конструкция:

Работает некорректно, так как переписывает табличную часть и меняет индексы, сразу после удаления и Цикл полностью не обходит.
Решение пришло такое:

Как программно удалить текущую строку из табличной части документа?

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

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

В качестве параметра метода Удалить() передается текущая строка табличной части.

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