Документdom 1С

Содержание

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

ПолучитьФорму(«Документ.ПоступлениеТоваровУслуг.ФормаДокумента»).Открыть()

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

Форма=ПолучитьФорму(«Документ.ПоступлениеТоваровУслуг.ФормаДокумента»);
//Тут выполняем действия с формой
Форма.Открыть();

Надо учитывать, что при получении формы будет выполняться еще процедура события ПриСозданииНаСервере.

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

Как открыть форму объекта в управляемом приложении, если есть ссылка на него.

В этом случае все предельно просто.

СпрСсылка=Справочники.Номенклатура.НайтиПоКоду(«000000001»);
ОткрытьЗначение(СпрСсылка);

Как открыть форму выбора и получить потом выбранное значение.

Для этого существует функция ВвестиЗначение(). У функции 3 параметра:

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

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

Перем Значение;
Массив=новый массив;
Массив.Добавить(Тип(«СправочникСсылка.Номенклатура»));
Массив.Добавить(Тип(«СправочникСсылка.Контрагенты»));
ОписаниеТипов=новый ОписаниеТипов(Массив);
Рез=ВвестиЗначение(Значение, «Подсказка», ОписаниеТипов);

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

Эта функция имеет довольно много параметров. Рассмотрим некоторые из них:

  • Имя формы — тут можно выбрать либо одну из стандартных форм объекта, например, ФормаВыбора или ФормаСписка. Или конкретную, созданную разработчиками форму.
  • Параметры — позволяет передать в форму в виде структуры некоторые параметры перед ее открытием, тем самым определив выводимые данные. Параметры могут представлять собой любые данные, которые можно передавать с клиента на сервер. Переданные при открытии формы параметры можно обработать в процедуре ПриСозданииНаСервере() у открываемой формы.
  • Режим открытия формы — имеет 3 варианта: независимый, блокировать весь интерфейс, блокировать форму владельца.

Рассмотрим, как применяется функция ОткрытьФорму() в различных ситуациях.

Как открыть форму существующего объекта

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

&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Параметр.Вставить(«Ключ», НайтиС());
ОткрытьФорму(«Справочник.Контрагенты.ФормаОбъекта»,Параметр);
КонецПроцедуры
&НаСервере
Функция НайтиС();
Возврат Справочники.Контрагенты.НайтиПоРеквизиту («ИНН», «745107734623»)
КонецФункции

Как открыть форму нового объекта

Тут подойдет просто функция ОткрытьФорму() без всяких параметров.

&НаКлиенте
Процедура Команда1(Команда)
ОткрытьФорму(«Справочник.Контрагенты.ФормаОбъекта»);
КонецПроцедуры

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

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

&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Параметр.Вставить(«Основание», СсылкаНаСчетПокупателю);
ОткрытьФорму(«Документ.РеализацияТоваровУслуг.ФормаОбъекта», Параметр);
КонецПроцедуры

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

Как открыть форму и задать на ней отбор

Отбор на формах 1С может быть простым и сложным. Простой отбор предусматривает выражения типа Организация = ООО «Рога и копыта». Сложный отбор предполагает и другие типы сравнения, например, В списке. В данной статье рассмотрим организацию простого отбора, а сложному будет посвящена отдельная статья.

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

Например, откроем форму списка справочника НомераГТД и сделаем там отбор по владельцу — элементу справочника Номенклатура.

&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
Отбор=новый Структура;
Отбор.Вставить(«Владелец», СсылкаНаНоменклатуру);
Параметр.Вставить(«Отбор», Отбор);
ОткрытьФорму(«Справочник.НомераГТД.ФормаСписка», Параметр);
КонецПроцедуры

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

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

Ключ записи — это значения всех измерений и период (если регистр периодический). То есть ключ записи — это параметры, по которым можно однозначно идентифицировать запись.

Алгоритм открытия следующий:

  1. Заносим в структуру данные ключа записи с необходимыми значениями.
  2. Помещаем полученную структуру в массив.
  3. Из массива создаем ключ записи.
  4. Передаем в открываемую форму параметр Ключ с ключом записи из п.3 в качестве значения.

&НаКлиенте
Процедура Команда1(Команда)
Параметр=новый структура;
ПараметрыКлюча=новый Структура;
ПараметрыКлюча.Вставить(«Номенклатура», СсылкаНаНоменклатуру);
ПараметрыКлюча.Вставить(«ТипЦены», СсылкаНаТипЦен);
ПараметрыКлюча.Вставить(«Период», Дата);
МассивКлюча = Новый Массив;
МассивКлюча.Добавить(ПараметрыКлюча);
КлючЗаписи = Новый(«РегистрСведенийКлючЗаписи.ЦеныНоменклатуры», МассивКлюча);
Параметр.Вставить(«Ключ», КлючЗаписи);
ОткрытьФорму(«РегистрСведений.ЦеныНоменклатуры.ФормаЗаписи», Параметр);

КонецПроцедуры

В форме документа счет-фактура выданный аванс заполнить табличную часть Авансы на основании документа поступление безналичных денежных средств.
Условия:
1) Перед заполнением табличной части документа получить от пользователя подтверждение на это действие;
2) Обработку создания документа сделать внешней и подключаемой к форме документа счет-фактура на аванс выданный;
3) После заполнения табличной части не записывать документ, а разрешить пользователю продолжить редактирование изменной табличной части или самостоятельно записать документ.
Решение:
Пункты 1 и 2 не представляют особой сложности, но пункт 3 заставил меня задуматься и написать, по-моему мнению, топорный, но исправно действующий код.
Понятно, что от нас требуется создать внешнюю обработку вида «ЗаполнениеОбъекта» и подключить её в информационную базу.
Приведу код в модуле обработки:
Код 1C v 8.2 УП Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить(«Документ.СчетФактураВыданныйАванс»);
ПараметрыРегистрации.Вставить(«Вид», «ЗаполнениеОбъекта»);
ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений);
ПараметрыРегистрации.Вставить(«Наименование», «Заполнить документ»);
ПараметрыРегистрации.Вставить(«Версия», «1.0»);
ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина);
ПараметрыРегистрации.Вставить(«Информация», «Дополнительная обработка табличной части к документу счет-фактура выданный аванс»);
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд,
«Заполнить документ»,
«Заполнить документ»,
«ВызовКлиентскогоМетода»,
Истина);
ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»));
Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»));
Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = «»)
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Так как нам придется работать с формами объектов мы просто вынуждены использовать метод ВызовКлиентскогоМетода для вызова команды внешней обработки.
Напомню, при использовании ВызовСерверногоМетода с формами объектов работать не получится.
Так как мы использовали ВызовКлиентскогоМетода, то обязательную процедуру, для внешней подключаемой обработки заполнения объектов, ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт, необходимо выполнять &НаКлиенте в модуле формы обработки, а значит создадим любую форму обработки, пользователь её всеравно не увидит, и поместим внутрь модуля формы следующий код:
Код 1C v 8.2 УП &НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
//Спросим у пользователя разрешение на продолжение обработки
Режим = РежимДиалогаВопрос.ДаНет;
Текст = «Текущие данные документа будут заменены новыми без возможности восстановления.
|Продолжить?»;
Ответ = Вопрос(Текст, Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
//Если пользователь дал разрешение на продолжение, то начнем перебирать все
//документы, у которых мы планируем заполнить табличную часть
Для каждого Элемент из ОбъектыНазначенияМассив Цикл
//Зададим ключ поиска документа, из которого вызвана данная обработка,
//чтобы получить ссылку на редактирумый документ в удобном виде для
//функции ОткрытьФорму()
КлючПоиска = Новый Структура(«Ключ», Элемент);
//Но нам не надо открывать новую форму (окно) для изменяемого документа, а
//Нам надо все изменения показать в уже открытых у клиента окнах
Окна = ПолучитьОкна();
Для каждого Окно из Окна Цикл
//Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому
//сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна
//изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться
//Наименование, номер и дата нужного документа — будем изменять
Если НЕ Окно.Основное
И Найти(Окно.Заголовок, Элемент) Тогда
//Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне
//в функцию ОткрытьФорму()
//Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного
Форма = ОткрытьФорму(«Документ.СчетФактураВыданныйАванс.Форма.ФормаДокумента»,КлючПоиска,,,Окно);
//Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
//В объекте содержатся все реквизиты (элементы) формы
НовыйОбъект = Форма.Объект;
//Мы помещаем объект формы в переменную,
//так как должны передать её в процедуру на сервере,
//где нельзя изменять объект формы, зато можно править переменную содержащую его
ЗаполнитьОбъект(НовыйОбъект);
//После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект,
//которую необходимо передать в уже полученную нами форму
КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Ниже приведу код, который у вас может быть совершенно другим и делать, какие-либо другие манипуляции с объектом формы:
Код 1C v 8.2 УП &НаСервере
Функция ЗаполнитьОбъект(НовыйОбъект)
Если ТипЗнч(НовыйОбъект.ДокументОснование) = Тип(«ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств») Тогда
Если НовыйОбъект.ДокументОснование.РасшифровкаПлатежа.Количество() > 0 Тогда
НовыйОбъект.Авансы.Очистить();
КонецЕсли;
Для каждого СтрокаТЧ из НовыйОбъект.ДокументОснование.РасшифровкаПлатежа Цикл
НоваяСтрока = НовыйОбъект.Авансы.Добавить();
Если ЗначениеЗаполнено(СтрокаТЧ.СчетНаОплату) Тогда
НоваяСтрока.Содержание = «Предварительная оплата» + ФормированиеПечатныхФорм.СформироватьЗаголовокДокумента(СтрокаТЧ.СчетНаОплату, НСтр(«ru=’ по счету на оплату'»));
КонецЕсли;
НоваяСтрока.Сумма = СтрокаТЧ.Сумма;
НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118;
ТекПроцентНДС = ЦенообразованиеКлиентСервер.ПолучитьСтавкуНДСЧислом(НоваяСтрока.СтавкаНДС);
НоваяСтрока.СуммаНДС = ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(НоваяСтрока.Сумма, ТекПроцентНДС);
КонецЦикла;
КонецЕсли;
КонецФункции
Автор ApocalypseNTC
Информация взята с сайта http://helpf.pro

DOM или XML DOM — объектная модель работы с XML, где XML представлен деревом, где каждая ветка (узел) это тоже объект со своими свойствами, методами и т.п.

ДокументDOM – объект XML DOM 1С, который позволяет работать с XML файлом в «объектной» оболочке. Поддерживается массив (список) узлов, подчиненные узлы, поиск и т.п.

ПостроительDOM 1C – позволяет считывать XML в объект ДокументDOM (XML DOM 1С).

ЗаписьDOM 1C – позволяет записать ДокументDOM в файл XML.

Пример 1 – создание документа XML DOM 1С и последующая запись в файл с помощью ЗаписьDOM 1С

//создаем объект XML DOM 1С документа
XML = Новый ДокументDOM(«http://howknow1c.ru/demo/configxml», «Конфигурация»);

//по метаданным обходим все справочники (подробнее см. «Работа с метаданными»)
Для каждого Справочник из Метаданные.Справочники Цикл
//создаем элемент и указываем у него 2 атрибута
элСправочник = XML.СоздатьЭлемент(«Справочник»);
элСправочник.УстановитьАтрибут(«Имя», Справочник.Имя);
элСправочник.УстановитьАтрибут(«Синоним», Справочник.Синоним);
//по метаданным обходим все реквизиты справочника
Для каждого Реквизит из Справочник.Реквизиты Цикл
//создаем элемент и указываем у него 2 атрибута
элРеквизит = XML.СоздатьЭлемент(«Реквизит»);
элРеквизит.УстановитьАтрибут(«Имя», Реквизит.Имя);
элРеквизит.УстановитьАтрибут(«Синоним», Реквизит.Синоним);
//добавляем в список подчиненных элементов узла «Справочник», созданный элемент
элСправочник.ДобавитьДочерний(элРеквизит);
КонецЦикла;
//по метаданным обходим все табличные части справочника
Для каждого ТЧ из Справочник.ТабличныеЧасти Цикл
элТч = XML.СоздатьЭлемент(«ТабличнаяЧасть»);
элТч.УстановитьАтрибут(«Имя», ТЧ.Имя);
элТч.УстановитьАтрибут(«Синоним», ТЧ.Синоним);
Для каждого Реквизит из ТЧ.Реквизиты Цикл
элРеквизит = XML.СоздатьЭлемент(«Реквизит»);
элРеквизит.УстановитьАтрибут(«Имя», Реквизит.Имя);
элРеквизит.УстановитьАтрибут(«Синоним», Реквизит.Синоним);
элТч.ДобавитьДочерний(элРеквизит);
КонецЦикла;
элСправочник.ДобавитьДочерний(элТч);
КонецЦикла;
//»ЭлементДокумента» — корневой узел XML документа
//добавляем в список подчиненных элементов корневого узла созданный ранее элемент
XML.ЭлементДокумента.ДобавитьДочерний(элСправочник);
КонецЦикла;

Пример 2 – чтение XML из файла и последующая обработка списка узлов в цикле по порядку с помощью ПостроительDOM 1С

//»ЭлементДокумента» — это корневой узел файла XML
//ДочерниеУзлы — это список (массив) дочерних узлов у любого узла XML документа
//В нашем файле сначала идет список «Справочник»
Для каждого элСправочник из XML.ЭлементДокумента.ДочерниеУзлы Цикл
Сообщить(«Справочник » + элСправочник.Атрибуты.ПолучитьИменованныйЭлемент(«Имя»).ЗначениеУзла);
//У каждого справочника внутри список «Реквизит»
Для каждого элРеквизит из элСправочник.ДочерниеУзлы Цикл
Сообщить(» реквизит » + элРеквизит.Атрибуты.ПолучитьИменованныйЭлемент(«Имя»).ЗначениеУзла);
КонецЦикла;
КонецЦикла;

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

Рассмотрим настройку и свойства последовательностей в 1С 8.2.

Настройка и свойства последовательностей в 1С

Для настройки последовательности необходимо указать документы, с которыми связана последовательность, и какие регистры влияют на последовательность. Это указывается на вкладке Использование:

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

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

На вкладке Данные можно указать дополнительные измерения для контроля последовательности. Например, последовательности можно контролировать в разрезе организации.

Пример использования последовательности в 1С

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

Пример получения текущей границы для последовательности в 1С:

Последовательность и производительность 1С Предприятие

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

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

Восстановление границы последовательности проведения документов в 1с 8.3

Произвести восстановление последовательности границы в 1С 8.3 можно с помощью встроенного механизма. Обработка расположена в меню «Все функции» — «Стандартные»:

На вкладке «Восстановление последовательностей» можно выбрать интересующие пункты или восстановить все последовательности:

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

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

Что же такое «Последовательность документов”?
Ответ может показаться сложным для пользователей, который еще не сталкивались с данной спецификой при работе в программах 1С.

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

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

Свойство последовательности документа можно увидеть зайдя в конфигурацию прикладного решения.

Данные последовательности описывают документы, которые входят в нее, и определяют механизм проведения их при необходимости. Открыв свойство последовательности и перейдя на вкладку «Использование”, можно увидеть список документов, которые входят входят в нее.

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

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

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

Восстановление последовательности в 1С

Введя в программу новый документ или изменяя его «задним числом” программа при выполнении операции «Закрытие месяца” автоматически предложит перепровести документы.

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

Также в данной операции можно принудительно запустить перепроведение документов, нажав на одноименную гиперссылку «Перепроведение документов”.

В форме «перепроведения документа” также можно посмотреть какие документы были изменены или добавлены.

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

В программе есть еще возможность проведения документа и восстановление последовательности. Для этого воспользуемся режимом «Все функции”. Чтобы отображался данный режим нужно воспользоваться пунктом меню «Сервис” и выбрать «Параметры”. В открывшемся окне поставить галку напротив строки «Отображать команду ‘Все функции’”.

Нажав на «все функции” появится окно.

Выбираем пункт меню «Стандартные” и выбираем «Проведение документов”

Данный функционал состоит из двух вкладок «Проведение документов” и «Восстановление последовательности”.

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

На вкладке «Восстановление последовательности” будет указаны последовательности и дата с которой будет начинаться выполнение операции. Так как в конфигураторе у нас установлено «Не перемещать” то граница последовательности будет равно «01.01.0001 0:00:00”

Также в программе существует обработка «Групповое перепроведение документов”. В банной обработке устанавливается период за которой нужно сделать перепроведение.

Выбрав период нужно затем нажать на кнопку «Выполнить” и запустится выполнение.

Хотя в программе и существует несколько вариантов восстановлений последовательности дкоументов 1С Бухгалтерии предприятия – самым удобным для пользователя будет «Закрытие месяца”.

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

Последовательность в 1С Предприятие 8.3 – это объект метаданных, позволяющий контролировать хронологический порядок документов. Это важно при учете списания материалов, взаиморасчетах с контрагентами, например, при проведении документа оприходования задним числом будет некорректно определена стоимость ранее списанных материалов, так как при списании ТМЦ были проанализированы данные на момент проведения документа списания.

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

Если мы откроем 1С в режиме Конфигуратора и развернем узел «Документы» дерева метаданных, то увидим строку «Последовательности».

Рис.1 Здесь мы используем «1С:Бухгалтерия предприятия 3.0»

Рис.2 Дерево «1С:Управление торговлей 11.3»

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

Рис.3 Пример в «1С:Бухгалтерии предприятия 3.0»

В 1С:УТ мы видим список регистров, влияющих на последовательность.

Рис.4 На примере 1С:УТ 11.3

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

Восстановление последовательностей 1С

Откроем «1С:Бухгалтерия 3.0» в пользовательском режиме. В данной конфигурации важен контроль изменений – перепроведение и ввод «задним числом». Рассмотрим, как программа выполнит перепроведение с момента, когда было обнаружено нарушение.

При закрытии месяца

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

Рис.5 При «Закрытии месяца» автоматом контролируется правильность последовательности

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

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

Рис.6 Принудительное перепроведение

Нажатие по гиперссылке «1 документ», откроет отчет со списком измененных документов за период, и мы проанализируем, надо ли их перепровести.

Рис.7 Отчет об изменениях

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

Перепроводка и установка границ в разделе «Все функции»

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

Рис.8 Отображать все функции

В «Стандартных» мы увидим нужный нам пункт.

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

У нас граница на дате 01.01.0001. Поскольку мы видели в конфигураторе, что стоит режим – «Не перемещать», дата границы постоянно в одном положении и не изменяется.

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

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

Обработка «Групповое перепроведение документов»

В разделе все функции доступна обработка «Группового перепроведения» (узел «Обработки»).

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

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

Несмотря на имеющийся выбор вариантов, первый рассмотренный нами способ – при поведении в закрытии месяца, является максимально удобным в «Бухгалтерии».

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

1С Запросы Отбор по виду документа Пример. В данной статье разберем пример запроса, в котором будет присутствовать отбор по типу документа.

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

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

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

|ВЫБРАТЬ | СтатусыДокументов.Документ, | СтатусыДокументов.Статус, | СтатусыДокументов.Организация |ИЗ | РегистрСведений.СтатусыДокументов КАК СтатусыДокументов |ГДЕ | СтатусыДокументов.Организация = &Организация | И СтатусыДокументов.Документ ССЫЛКА Документ.РеализацияТоваровУслуг

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

Ссылку на документ (СтатусыДокументов.Документ) мы сравниваем с видом ссылки (Документ.РеализацияТоваровУслуг),

Чтобы обозначить вид ссыли мы должны:

  • Указать тип метаданных, эта может быть Документ, Справочник, Константа и т.д.
  • Далее через точку указываем тип документа, в нашем случае это РеализацияТоваровУслуг.

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

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

Оставьте комментарий