1С обработкапроверкизаполнения когда вызывается

1С:Предприятие. Способы проверки заполненности реквизитов в форме средствами платформы и программно

Справка

ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

УправляемаяФорма.ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)

  • Отказ. Тип: Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет. Значение по умолчанию Ложь.
  • ПроверяемыеРеквизиты. Тип: Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.

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

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

Для формы документа, если при конфигурировании для документа свойство Проведение установлено в Разрешить, событие вызывается только при проведении. Если документ не проводится (свойство Проведение установлено в Запретить), то вызывается при записи.

ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

ДокументОбъект.ИмяДокумента.ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

  • Отказ. Тип: Булево. Если в теле процедуры-обработчика установить данному параметру значение Истина, то будет выполнен отказ от продолжения работы после выполнения проверки заполнения. Значение по умолчанию Ложь.
  • ПроверяемыеРеквизиты. Тип: Массив. Массив путей к реквизитам, для которых будет выполнена проверка заполнения. Массив может быть модифицирован удалением или добавлением путей к необходимым реквизитам.

Вызывается расширением формы при необходимости проверки заполнения реквизитов при записи или при проведении документа в форме, а также при выполнении метода ПроверитьЗаполнение(). Если для документа при конфигурировании свойство Проведение установлено в Разрешить, то вызывается только при проведении. Если документ не проводится (установлено Запретить), то вызывается при записи.

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

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Проверим заполненность реквизита «Покупатель» Покупатель = ПроверяемыеРеквизиты.Найти(“Покупатель”); Если Не ЗначениеЗаполнено(Покупатель) Тогда // Если он не заполнен, сообщим об этом пользователю Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = “Не указан Покупатель, на которого выписывается товарная накладная!”; Сообщение.Поле = “Покупатель”; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); // Сообщим платформе, что мы сами обработали проверку заполнения реквизита «Покупатель» ПроверяемыеРеквизиты.Удалить(Покупатель); // Так как информация не консистентна, то продолжать работу дальше смысла нет Отказ = Истина; КонецЕсли; // Сообщим платформе, что мы сами обрабатываем проверку реквизита товар в табличной части «Товары» ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти(“Товары.Товар”)); // Обходим строки и проверяем заполнение реквизита Для Индекс = 0 По Товары.Количество()1 Цикл СтрокаТовар = Товары.Получить(Индекс); Если Не ЗначениеЗаполнено(СтрокаТовар.Товар) Тогда Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = “В строке “ + Индекс + ” не заполнено значение товара”; Сообщение.Поле = “Товары[“ + Индекс + “].Товар”; Сообщение.УстановитьДанные(ЭтотОбъект); Сообщение.Сообщить(); Отказ = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры

Поиск: 1С:Предприятие • Обработка проверки заполнения • Проверяемые реквизиты • Реквизит • Управляемая форма

Действие Записать

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

1.png
1. Последовательность событий при записи документа
  1. Модуль формы (&НаКлиенте) – перед записью;
  2. Модуль формы (&НаСервере) – перед записью на сервере;
  3. Модуль объекта – перед записью (начинается транзакция, документ еще не записан);
  4. Модуль объекта – при записи (документ записан);
  5. Модуль формы (&НаСервере) – при записи на сервере (фиксация транзакции);
  6. Модуль формы (&НаСервере) – после записи на сервере;
  7. Модуль формы (&НаКлиенте) – после записи.

Заметим, что для расширения формы документа платформа 1С по-умолчанию устанавливает значение 

Истина

 для свойства 

ПриЗаписиПерепроводить

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

2.png
2. Последовательность событий при записи проведенного документа
  1. Модуль формы (&НаКлиенте) – перед записью;
  2. Модуль формы (&НаСервере) – обработка проверки заполнения на сервере;
  3. Модуль объекта – обработка проверки заполнения;
  4. Модуль формы (&НаСервере) – перед записью на сервере;
  5. Модуль объекта – перед записью (начало транзакции, документ еще не записан);
  6. Модуль объекта – при записи (документ записан);
  7. Модуль объекта – обработка проведения (формирование набора записей движений документа);
  8. Модуль формы (&НаСервере) – при записи на сервере (записан набор записей движений документа, фиксация транзакции);
  9. Модуль формы (&НаСервере) – после записи на сервере;
  10. Модуль формы (&НаКлиенте) – после записи.

Если для свойства

ПриЗаписиПерепроводить

установить значение

Ложь

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

Последовательность выполнения событий при записи документа из формы, у которого запрещено проведение (свойство

Проведение

установлено в значение

Запретить

) будет следующей:

3.png
3. Последовательность событий для не проводимого документа

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

ОбработкаПроведения

. Но, при записи проведенного документа с перепроведением и при записи документа, у которого запрещено проведение, кроме самой записи, в контексте формы и в контексте объекта вызывается также событие

ОбработкаПроверкиЗаполнения

. Это событие вызывается расширением формы для проверки заполнения реквизитов при записи или при проведении документа в форме.

 Документы

Описание:

Документ – одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.

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

Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существуют реквизиты, которые создаются автоматически – это “Дата” и “Номер”. Номер создается, если при конфигурировании длина номера указана больше 0. Другие реквизиты документа определяются в конфигураторе отдельно для каждого создаваемого вида документа.

/// Как выбрать и упорядочить документы за период/// в 1с 8.3, 8.2 &НаСервереПроцедура КакВыбратьИУпорядочитьДокументыЗаПериодНаСервере()  // найдём все документы поступления еды за 2014 год // упорядочив их по возрастанию даты  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата |УПОРЯДОЧИТЬ ПО | Дата ВОЗР”;  Запрос.УстановитьПараметр(“НачДата”, ‘20140101’); Запрос.УстановитьПараметр(“КонДата”, ‘20141231’);  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДокументов = РезультатЗапроса.Выбрать();  Пока ВыборкаДокументов.Следующий() Цикл Сообщить(ВыборкаДокументов.Ссылка); КонецЦикла; КонецПроцедуры /// Как найти документ по номеру в 1с 8.3, 8.2 &НаСервереПроцедура КакНайтиДокументПоНомеруНаСервере()  // найдём поступление еды № ВМБП-000005 за 2014 год  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Дата МЕЖДУ &НачДата И &КонДата И | Номер = &ВыбНомер”;  Запрос.УстановитьПараметр(“НачДата”, ‘20140101’); Запрос.УстановитьПараметр(“КонДата”, ‘20141231’); Запрос.УстановитьПараметр(“ВыбНомер”, “ВМБП-000005”);  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДокументов = РезультатЗапроса.Выбрать();  Если ВыборкаДокументов.Следующий() Тогда Сообщить(ВыборкаДокументов.Ссылка); Иначе Сообщить(“Документ с таким номером не существует!”); КонецЕсли; КонецПроцедуры /// Как найти документы по реквизиту в 1с 8.3, 8.2 &НаСервереПроцедура КакНайтиДокументПоРеквизитуНаСервере()  // найдём все документы поступления еды // от поставщика ООО “Поле”  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка, | Поставщик |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Поставщик = &ВыбПоставщик |УПОРЯДОЧИТЬ ПО | Дата ВОЗР”;  Запрос.УстановитьПараметр( “ВыбПоставщик”, Справочники.Поставщики.НайтиПоНаименованию(“ООО ““Поле”“”) );  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДокументов = РезультатЗапроса.Выбрать();  Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + ” “ + ВыборкаДокументов.Поставщик ); КонецЦикла; КонецПроцедуры /// Как выбрать все документы, которые не проведены и/// не помечены на удаление в 1с 8.3, 8.2 &НаСервереПроцедура КакВыбратьВсеДокументыКоторыеНеПроведеныИНеПомеченыНаУдалениеНаСервере()  // найдём не проведенные и не помеченные на удаление // документы поступления еды  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка, | Проведен, | ПометкаУдаления |ИЗ | Документ.ПоступлениеЕды КАК ПоступлениеЕды |ГДЕ | Проведен = ЛОЖЬ И | ПометкаУдаления = ЛОЖЬ |УПОРЯДОЧИТЬ ПО | Дата ВОЗР”;  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДокументов = РезультатЗапроса.Выбрать();  Пока ВыборкаДокументов.Следующий() Цикл Сообщить( Строка(ВыборкаДокументов.Ссылка) + ” “ + ВыборкаДокументов.Проведен + ” “ + ВыборкаДокументов.ПометкаУдаления ); КонецЦикла; КонецПроцедуры /// Как найти подчиненные документы в 1с 8.3, 8.2 &НаСервереПроцедура КакНайтиПодчиненныеДокументыНаСервере()  // Рассмотрим работу с подчиненными (связанными) документами // на примере документов: ПоступлениеТоваровУслуг и СчетФактураПолученный.  // Документ СчетФактураПолученный вводится на основании документа // ПоступлениеТоваровУслуг, то есть счет фактура является подчиненной // по отношению к поступлению.  // Факт подчиненности обычно (в типовых) фиксируется в самом подчиненном // документе через табличную часть ДокументыОснования. // Почему через табличную часть? Потому что один документ может зависеть // (быть подчиненным) сразу от нескольких родителей (оснований).  // Пример №1. // У нас есть ссылка на поступление товаров и услуг. Требуется найти // счёт-фактуры, которые были введены на основании этого поступления. // В дереве подчиненности эти фактуры будут подчинены (зависимы) от // документа поступления.  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | Ссылка |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.ДокументОснование = | &ВыбПоступление”;  Запрос.УстановитьПараметр(“ВыбПоступление”, Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(“0000-000004”, ‘20160101’) );  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПодчиненнаяФактура = ВыборкаДетальныеЗаписи.Ссылка; Сообщить(ПодчиненнаяФактура); КонецЦикла;  // Пример №2. // У нас есть ссылка на счет-фактуру полученную. Требуется найти, // документы, на основании которых она была введена (родителей).  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | ДокументОснование |ИЗ | Документ.СчетФактураПолученный.ДокументыОснования КАК | СчетФактураПолученныйДокументыОснования |ГДЕ | СчетФактураПолученныйДокументыОснования.Ссылка = | &ВыбСчетФактура”;  Запрос.УстановитьПараметр(“ВыбСчетФактура”, Документы.СчетФактураПолученный.НайтиПоНомеру(“0000-000007”, ‘20160101’) );  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл РодительФактуры = ВыборкаДетальныеЗаписи.ДокументОснование; Сообщить(РодительФактуры); КонецЦикла; КонецПроцедуры /// Как перебрать (перечислить) строки табличной части документа в 1с 8.3, 8.2 &НаСервереПроцедура КакПеречислитьСтрокиИзТабличнойЧастиДокументаНаСервере()  // У документа ПоступлениеЕды есть табличная часть ‘Еда’. // У этой табличной части есть колонки: Номенклатура, Количество, // Сумма.  ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( “ВМБП-000002”, ‘20141231’);   // перечислим строки табличной части этого документа  // при помощи объектной техники  Для Каждого Строка Из ПоступлениеСсылка.Еда Цикл Сообщить( Строка.Номенклатура.Наименование + ” “ + Строка.Количество + ” шт. “ + Строка.Сумма + ” руб.” ); КонецЦикла;  // при помощи запроса   Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | ПоступлениеЕдыЕда.Номенклатура, | ПоступлениеЕдыЕда.Количество, | ПоступлениеЕдыЕда.Сумма |ИЗ | Документ.ПоступлениеЕды.Еда КАК ПоступлениеЕдыЕда |ГДЕ | ПоступлениеЕдыЕда.Ссылка = &ВыбПоступление”;  Запрос.УстановитьПараметр(“ВыбПоступление”, ПоступлениеСсылка);  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл  Сообщить( ВыборкаДетальныеЗаписи.Номенклатура.Наименование + ” “ + ВыборкаДетальныеЗаписи.Количество + ” шт. “ + ВыборкаДетальныеЗаписи.Сумма + ” руб.” );  КонецЦикла; КонецПроцедуры &НаСервереПроцедура СозданиеИИзменениеДокументовНаСервере()     /// Как создать новый документ в 1с 8.3, 8.2  // создадим новый документ поступление еды Поступление = Документы.ПоступлениеЕды.СоздатьДокумент(); // заполним шапку документа Поступление.Дата = ТекущаяДата(); Поступление.Поставщик = Справочники.Поставщики.НайтиПоНаименованию( “ООО ““Кузбас”“” ); Поступление.Склад = Справочники.Склады.НайтиПоНаименованию( “Основной” ); // заполним табличную часть Еда НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( “Банан” ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550;     /// Как записать документ в 1с 8.3, 8.2  Поступление.Записать(РежимЗаписиДокумента.Запись);     /// Как провести документ в 1с 8.3, 8.2  Поступление.Записать(РежимЗаписиДокумента.Проведение);     /// Как отменить проведение документа в 1с 8.3, 8.2  Поступление.Записать(РежимЗаписиДокумента.ОтменаПроведения);     /// Как внести изменения в документ по ссылке в 1с 8.3, 8.2  // зачастую у нас есть только ссылка на документ // и чтобы по ней получить сам объект документа // для изменения нужно вызывать метод ПолучитьОбъект  // найдём документ продажа еды под номером ВМБП-000001 // для лаконичности примера воспользуемся не запросом, // а объектной техникой  СсылкаНаПродажу = Документы.ПродажаЕды.НайтиПоНомеру( “ВМБП-000001”, ‘20141231’ // поиск среди документов 2014 года ); // нам вернули не сам документ, а ссылку (указатель) на него  // проверим – нашёлся ли вообще документ Если СсылкаНаПродажу.Пустая() Тогда Сообщить(“Документ не найден.”); Иначе // получим сам документ по ссылке Продажа = СсылкаНаПродажу.ПолучитьОбъект(); // вот его уже можно изменять и записывать Продажа.Клиент = Справочники.Клиенты.НайтиПоНаименованию( “Пётр” ); Продажа.Записать(); КонецЕсли;     /// Как получить пустую ссылку типа документ в 1с 8.3, 8.2  ПустаяСсылка = Документы.ПродажаЕды.ПустаяСсылка(); Если ПустаяСсылка.Пустая() Тогда Сообщить(“Ссылка действительно пустая.”); КонецЕсли;     /// Как скопировать существующий документ в 1с 8.3, 8.2  // скопируем найденный документ на продажу и запишем // как новый документ от сегодняшнего числа  КопияПродажи = СсылкаНаПродажу.Скопировать(); КопияПродажи.Дата = ТекущаяДата(); КопияПродажи.Комментарий = “Копия документа “ + Строка(СсылкаНаПродажу); // запишем и проведём документ КопияПродажи.Записать(РежимЗаписиДокумента.Проведение);     /// Как заблокировать документ перед изменениями     /// в 1с 8.3, 8.2  // выполним блокировку документа // от изменения другими режимами или пользователями  Продажа = СсылкаНаПродажу.ПолучитьОбъект(); Если Не Продажа.Заблокирован() Тогда Продажа.Заблокировать(); // тут идёт какой-то долгий алгоритм // в результате которого мы меняем // заблокированный элемент Продажа.Комментарий = “Документ изменён.”; Продажа.Записать(); // и только потом освобождаем его // для других режимов и пользователей Продажа.Разблокировать(); КонецЕсли;     /// Как создать новый документ на основании другого объекта    /// в 1с 8.3, 8.2  // создадим документ продажа на основании поступления // скопировав из поступления табличную часть  // в модуле документа ПродажаЕды я определил процедуру // ОбработкаЗаполнения, которая обрабатывает ситуации // когда мы заполняем один элемент на основании // данных другого (см. в базе для скачивания)  ПродажаНаОсновании = Документы.ПродажаЕды.СоздатьДокумент(); ПродажаНаОсновании.Дата = ТекущаяДата(); ПродажаНаОсновании.Комментарий = “Документ введён на основании “ + Строка(Поступление.Ссылка); ПродажаНаОсновании.Заполнить(Поступление.Ссылка); ПродажаНаОсновании.Записать(РежимЗаписиДокумента.Проведение);     /// Как пометить на удаление документ в 1с 8.3, 8.2  ПродажаНаОсновании.УстановитьПометкуУдаления(Истина); // метод Записать вызывать не нужно КонецПроцедуры /// Как найти и изменить программно движения документа/// по регистрам в 1с 8.3, 8.2 &НаСервереПроцедура КакНайтиИИзменитьДвиженияДокументаНаСервере()  // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002  ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( “ВМБП-000002”, ‘20141231’);  // мы знаем, что этот документ делает записи по // двум регистрам: // – регистр накопления “ЗапасЕды” // – регистр бухгалтерии “Хозрасчетный”  // наша задача: найти записи по регистру “ЗапасЕды” // изменить их (например, удвоим количество) // и записать вместо старых  // используем объектную технику получения движений, // ведь мы будем их изменять  Поступление = ПоступлениеСсылка.ПолучитьОбъект();  // получим набор записей этого документа в регистр ЗапасыЕды НаборЗаписей = Поступление.Движения.ЗапасыЕды;  // прочитаем записи из базы данных НаборЗаписей.Прочитать();  Для Каждого Запись Из НаборЗаписей Цикл  // выведем старые значения Сообщить( Строка(Запись.ВидДвижения) + ” “ + Запись.Еда + ” “ + Запись.Количество );  // изменим запись, удвоив количество Запись.Количество = Запись.Количество * 2;  КонецЦикла;  // добавим новую запись НоваяЗапись = НаборЗаписей.ДобавитьПриход(); НоваяЗапись.Склад = Справочники.Склады.НайтиПоНаименованию(“Основной”); НоваяЗапись.Еда = Справочники.Еда.НайтиПоНаименованию(“Банан”); НоваяЗапись.Количество = 3; НоваяЗапись.Период = ТекущаяДата();  // разом запишем набор записей НаборЗаписей.Записать( Истина // удалим старые движения и запишем вместо них новые );  // теперь движения документа № ВМБП-000002 отличаются от тех, // что были записаны документом при проведении // чтобы вернуть их к начальному виду – нужно // перепровести документ КонецПроцедуры /// Как прочитать движения документа по регистрам запросом/// в 1с 8.3, 8.2 &НаСервереПроцедура КакПрочитатьДвиженияДокументаЗапросомНаСервере()  // этот приём используется, если не требуется изменять // найденные записи   // предположим у нас есть ссылка на проведенный // документ поступления еды № ВМБП-000002  ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( “ВМБП-000002”, ‘20141231’);  // мы знаем, что этот документ делает записи по // двум регистрам: // – регистр накопления “ЗапасЕды” // – регистр бухгалтерии “Хозрасчетный”  // прочитаем записи по регистру “ЗапасЕды” запросом  Запрос = Новый Запрос; Запрос.Текст = “ВЫБРАТЬ | ЗапасыЕды.НомерСтроки, | ЗапасыЕды.ВидДвижения, | ЗапасыЕды.Еда, | ЗапасыЕды.Количество |ИЗ | РегистрНакопления.ЗапасыЕды КАК ЗапасыЕды |ГДЕ | ЗапасыЕды.Регистратор = &ВыбРегистратор | |УПОРЯДОЧИТЬ ПО | ЗапасыЕды.НомерСтроки”;  Запрос.УстановитьПараметр(“ВыбРегистратор”, ПоступлениеСсылка);  РезультатЗапроса = Запрос.Выполнить();  ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Сообщить( “#” + ВыборкаДетальныеЗаписи.НомерСтроки + ” “ + ВыборкаДетальныеЗаписи.ВидДвижения + ” “ + ВыборкаДетальныеЗаписи.Еда + ” “ + ВыборкаДетальныеЗаписи.Количество ); КонецЦикла; КонецПроцедуры /// Как изменить проведенный документ, не меняя его/// движений (проводок) в 1с 8.3, 8.2 &НаСервереПроцедура КакИзменитьПроведенныйДокументНеМеняяЕгоДвиженийНаСервере()  // бывает так, что есть проведенный документ // в уже закрытом периоде и нужно изменить // некоторое поле документа, но так чтобы // не поменялись проводки документа  ПоступлениеСсылка = Документы.ПоступлениеЕды.НайтиПоНомеру( “ВМБП-000005”, ‘20141231’);  // Изменим количество в табличной части этого документа // на 1, но чтобы проводки (движения) остались прежними  Поступление = ПоступлениеСсылка.ПолучитьОбъект();  Для Каждого Строка Из Поступление.Еда Цикл Строка.Количество = 1; КонецЦикла;  // если сейчас просто записать документ // изменятся его проводки, ведь он уже проведён  // но если установить флаг Загрузка Поступление.ОбменДанными.Загрузка = Истина;   // то можно записать проведенный документ // без повторного проведения  Поступление.Записать(); КонецПроцедуры &НаСервереБезКонтекстаФункция ПолучитьПродажуПоНомеру(Номер, Интервал)  Возврат Документы.ПродажаЕды.НайтиПоНомеру( Номер, Интервал ); КонецФункции /// Как открыть форму существующего документа /// по ссылке в 1с 8.3, 8.2 &НаКлиентеПроцедура КакОткрытьФормуСуществующегоДокумента(Команда)  СсылкаНаДокумент = ПолучитьПродажуПоНомеру(“ВМБП-000006”, ‘20141231’);  ПараметрыФормы = Новый Структура(“Ключ”, СсылкаНаДокумент);  ОткрытьФорму( “Документ.ПродажаЕды.ФормаОбъекта”, // имя формы ПараметрыФормы // параметры для формы ); КонецПроцедуры /// Как открыть форму выбора документа и/// отследить её закрытие в 1с 8.3, 8.2 &НаКлиентеПроцедура КакОткрытьФормуВыбораДокумента(Команда)  ОповещениеОЗакрытии = Новый ОписаниеОповещения(“ПослеВыбораДокумента”, ЭтотОбъект);  ОткрытьФорму( “Документ.ПродажаЕды.ФормаВыбора”,,,,,,ОповещениеОЗакрытии ); КонецПроцедуры &НаКлиентеПроцедура ПослеВыбораДокумента(Результат, Параметры) Экспорт  Если Результат <> Неопределено Тогда Сообщить(“Был выбран документ “ + Результат); КонецЕсли; КонецПроцедуры &НаСервереБезКонтекстаФункция НайтиПоставщикаПоИмени(Имя)  Возврат Справочники.Поставщики.НайтиПоНаименованию( Имя ); КонецФункции /// Как открыть форму списка (журнал) документов и/// с отбором по реквизиту в 1с 8.3, 8.2 &НаКлиентеПроцедура КакОткрытьФормуСпискаДокументовСОтбором(Команда)  // откроем список поступлений, оставив // только те, что от поставщика ООО “Поле”  ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить(“Поставщик”, НайтиПоставщикаПоИмени(“ООО ““Поле”“”));  ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить(“Отбор”, ПараметрыОтбора);  ОткрытьФорму( “Документ.ПоступлениеЕды.ФормаСписка”, ПараметрыФормы ); КонецПроцедуры /// Как открыть форму только что созданного, но ещё/// не записанного документа в 1с 8.3, 8.2 &НаКлиентеПроцедура КакОткрытьФормуНовогоНеЗаписанногоДокумента(Команда)  // получаем форму нового документа ФормаНовогоДокумента = ПолучитьФорму( “Документ.ПоступлениеЕды.ФормаОбъекта”,,, Истина);   // делаем копию её данных (так как напрямую их менять // нельзя) КопияДанныхФормы = ФормаНовогоДокумента.Объект;  // заполняем эти данные на сервере ЗаполнитьДанныеФормыНаСервере(КопияДанныхФормы);   // копируем заполненные данные в исходную форму КопироватьДанныеФормы(КопияДанныхФормы, ФормаНовогоДокумента.Объект);  // показываем форму нового заполненного // документа пользователю ФормаНовогоДокумента.Открыть(); КонецПроцедуры &НаСервереПроцедура ЗаполнитьДанныеФормыНаСервере(ДанныеФормы)  // преобразуем данные формы в документ Поступление = ДанныеФормыВЗначение(ДанныеФормы, Тип(“ДокументОбъект.ПоступлениеЕды”));  // заполним только табличную часть НоваяСтрока = Поступление.Еда.Добавить(); НоваяСтрока.Номенклатура = Справочники.Еда.НайтиПоНаименованию( “Банан” ); НоваяСтрока.Количество = 10; НоваяСтрока.Сумма = 550;  // преобразуем документа обратно в данные формы ЗначениеВДанныеФормы(Поступление, ДанныеФормы); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

).

расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте

, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Описание проблемы

При работе в онлайн-режимеиногда возникает ситуация, что документ Mobile SMARTS невозможно сохранить и (или) провести в информационной базе 1C.

При этом на ТСД выводится сообщение с предложением загрузить документ в интерактивном режиме (через обработку обмена).

Возможны два варианта данной проблемы:

  1. Документ записывается, но не проводится в интерактивном режиме (логические ошибки).
  2. Документ записывается и проводится в интерактивном режиме (технологические причины).

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

Структура документа

Каждому документу в 1С система автоматически присваивает порядковый номер, дату и время создания документа. Помимо автоматической нумерации в 1С 8.3 предусмотрена уникальность номеров, которая не позволит запутаться и создать документы с одинаковыми номерами.

Рис.1 Номер и дата документаРис.1 Номер и дата документа

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

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

Рис.2 Тип документа «Заказ Поставщику»Рис.2 Тип документа «Заказ Поставщику»

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

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

Рис.3 Структура документаРис.3 Структура документа

Дополнительные сведения документа

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

Рис.4 Общие настройкиРис.4 Общие настройки

В форме «Общие настройки» выбираем вкладку «Дополнительные реквизиты и сведения» и ставим галочку в одноименном поле. Затем из меню «Администрирование-Формы-Дополнительные сведения».

Рис.5 Раздел «Формы»Рис.5 Раздел «Формы»

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

Рис.6 Дополнительные сведения документаРис.6 Дополнительные сведения документа

Перед нами появляется таблица создания дополнительного сведения. Заполняем ее. Указываем наименование сведения, а также тип значения. Тип значения может иметь различные варианты: дата, строка, число, валюта, договор и т.д.

Рис.7 ЗаполнениеРис.7 Заполнение

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

Рис.8 Вкладка «Значения»Рис.8 Вкладка «Значения»

Созданные дополнительные сведения отображаются в списке.

Рис.9 Дополнительные сведения в спискеРис.9 Дополнительные сведения в списке

Нажимаем «Записать и закрыть». Теперь в документе «Поступление (акты, накладные)» появилась возможность присоединить конкретного менеджера по закупкам, который ведет заказ.

Для проверки зайдем в «Покупки-Покупки-Поступление (акты, накладные)». Открывается список документов поступления. В шапке списка находим значок «Дополнительные сведения», который появился после нашей настройки.

Рис.10 ПроверкаРис.10 Проверка

Проведение документов в 1С

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

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

Рис.11 Проведение документов в 1СРис.11 Проведение документов в 1С

Различия между обработчиками ОбработкаПроверкиЗаполнения() и ОбработкаПроверкиЗаполненияНаСервере()

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

  1. Отказ (сюда после проверки передается ее результат);
  2. ПроверяемыеРеквизиты (тип данных – массив, если не заполнено, то будут проверяться все реквизиты, для которых в свойствах стоит «Проверять заполнение», в противном случае будут обрабатываться реквизиты, выбранные программно).

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

Процедура ОбработкаПроверкиЗаполнения() проверяет основные реквизиты.

it-soprovogdenie-700x120.jpg
Джон фон Нейман

Оснащение для магазина с доставкой от компании Ru-Holod

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

Проверка отчетности 6-НДФЛ и 2-НДФЛ в 1С ЗУП 3.1

Какие проверки необходимо произвести для успешной сдачи отчетов 6-НДФЛ и 2-НДФЛ и какие средства в 1С ЗУП 3.1 в этом …

Как сократить издержки в производственной компании малого бизнеса. Вебинар

18 февраля 2020 г. состоялся вебинар «Как сократить издержки в производственной компании малого бизнеса. Планирование, фактическая себестоимость, анализ в 1С:Управление …

Интервью с Сергеем Кукановым

На предприятии есть производство, но вы ещё не доросли до крупных систем управления? Тогда вполне можете попробовать обойтись решением 1С:Управление …

Годовая отчетность за 2019 г.: бухгалтерская и налоговая

Оформить заявку на участие в онлайн-семинаре “Годовая отчетность за 2019 г.: бухгалтерская и налоговая” https://buhexpert8.ru/dostup#buh ПРОГРАММА СЕМИНАРА НАЛОГОВАЯ ОТЧЕТНОСТЬ: • …

Новое в ЗУП за 5 мин [выпуск от 17.02.2020]

Выпуск на нашем сайте – https://buhexpert8.ru/1s-zup#tt-5min В этом выпуске: • Разместили ответы на вопросы с семинара по СЗВ-ТД • Обновили …

1С:ERP Урок 55. Исполнение заказа на производство

Пятьдесят пятый видеоурок вводного курса по «1С:ERP Управление предприятием». Тема на сегодня – исполнение заказа на производство (без использования пооперационного …

1C:Розница. «Поступление маркируемой табачной продукции при отсутствии электронного УПД»

Так как до 1.07.2020 г. сопровождение поставки электронным УПД не является обязательным для всех участников оборота табачной продукции, то могут …

Новое в учете и отчетности по НДФЛ в 2020 году

Изменения по НДФЛ в 2020 году. Изменения сроков и порядка представления отчетности по НДФЛ. Как представить отчетность по доходам по …

Ошибки при учете договоров ГПХ в 1С ЗУП 3.1

Кого считать работниками по договорам ГПХ. Ошибки квалификации договоров ГПХ. Выплаты по договорам ГПХ в 1С ЗУП 3.1. Смотрите тест-драйва …

Ответы на популярные вопросы по ЭТК - часть 2

Фрагмент вебинара по электронным трудовым от 11.02.2020 – Если все оставляют бумажные трудовые, можно ли не сдавать СЗВ-ТД? – Нужно …

Ответы на популярные вопросы по ЭТК - часть 1

Фрагмент вебинара по электронным трудовым от 11.02.2020 …

Юридическая и организационная (управленческая) структура Компании в 1С:ЗУП КОРП

✔️ Как настроить в 1С:ЗУП КОРП юридическую и организационную (управленческую) структуру Компании? ✔️ Какой отчет показывает сотрудников в разрезе оргструктуры? …

1С:Электронные трудовые книжки - бесплатный сервис от фирмы 1С

Если вы не используете программу 1С, предлагаем вам воспользоваться сервисом для формирования отчета СЗВ-ТД совершенно бесплатно. Переходите по ссылке etk.1c.ru …

Сведения о среднесписочной численности работников в 1С 8.3 ЗУП

Кем и в какие сроки сдаются сведения по среднесписочной численности. Что входит в понятие среднесписочная численность и как она рассчитывается …

Макеты документов

Ко всем документам в 1С составлены макеты, которые содержат всю информацию, внесенную в документ. Эти макеты необходимы для составления печатной формы документа.

Рис.14 Макеты документовРис.14 Макеты документов

Макеты используются не только для печати, но и для просмотра дополнительной информации, имеющей отношение к данному типу документа.

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

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...