Пример создания документа с движениями в ERP 2.5.7

Публикация № 1494836 10.08.21

Разработка - БСП (Библиотека стандартных подсистем)

ERP Разработка Серии УправлениеДоступом ДатыЗапретаИзменения ДвиженияДокументов УправлениеПечатью ВариантыОтчетов

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

Введение

В данной статье я приведу пример создания документа с движениями по регистру накопления, включая контроль остатков, используя встроенные средства ERP 2.5.7, в том числе функционал БСП. Полностью код не привожу, чтобы не засорять листингами кода данную статью. Но на примере любого типового документа можно посмотреть реализацию по ключевым словам. К статье приложено расширение с описанным функционалом, конфигурация остается полностью на поддержке. Описанный в статье документ будет подключен к основным подсистемам, необходимым нам для работы, а именно:

  • Даты запрета изменения

  • Префиксация объектов

  • Варианты отчетов

  • Управление доступом

  • Печать

  • Подключаемые команды

  • Ввод документов на основании

А также подключим функционал:

  • Отчет "Движения документа"

  • Учет характеристик

  • Учет серий

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

 

Встраивание документа в подсистемы

В первую очередь опишу реализуемую схему:

Учет ведется по новому регистру накопления "Дополнительный учет товаров" с типом остатки в разрезе номенклатуры, характеристик, серий и документа оприходования.

Типовой документ "Приобретение товаров и услуг" будет делать приход по этому регистру, а новый документ "Дополнительный расход товаров", который вводится на основании, будет делать расход.

Думаю с самим документом у нас нет вопросов. Создали документ, добавили необходимые реквизиты и табличные части. Не забываем установить периодичность и нужную длину номера документа (в ERP 11 символов), а так же необходимые параметры выбора и связи параметров выбора для добавляемых в объекты реквизиты.

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

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

 

Подсистема "Даты запрета изменения"

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

ДатыЗапретаИзменения.ДобавитьСтроку(ИсточникиДанных,
	Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров.ПолноеИмя(),
	"Дата",
	"Закупки",
	"Организация");

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

Добавить подписку "Проверить дату запрета изменения перед записью документа"

Имя РасшСт_ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента
Источник ДокументОбъект.РасшСт_ДополнительныйРасходТоваров
Событие ПередЗаписью
Обработчик* ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента

 

Добавить подписку "Проверить дату запрета изменения перед удалением"

Имя РасшСт_ПроверитьДатуЗапретаИзмененияПередУдалением
Источник ДокументОбъект.РасшСт_ДополнительныйРасходТоваров
Событие ПередУдалением
Обработчик* ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередУдалением

* При использовании расширений Общий модуль ДатыЗапретаИзменения необходимо добавить в расширение, чтобы подписка видела обработчик.

Подсистема "Префиксация объектов"

Добавить подписку "Проверить номер документа по дате и организации"

Имя РасшСт_ПроверитьНомерДокументаПоДатеИОрганизации
Источник ДокументОбъект.РасшСт_ДополнительныйРасходТоваров
Событие ПередЗаписью
Обработчик* ПрефиксацияОбъектовСобытия.ПроверитьНомерДокументаПоДатеИОрганизации

 

Добавить подписку "Установить префикс информационной базы и организации номеру документа"

Имя РасшСт_УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокумента
Источник ДокументОбъект.РасшСт_ДополнительныйРасходТоваров
Событие ПриУстановкеНовогоНомера
Обработчик* ПрефиксацияОбъектовСобытия.УстановитьПрефиксИнформационнойБазыИОрганизации

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

Подсистема "Варианты отчетов"

Добавим отчет "Дополнительный учет товаров".

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

ОписаниеОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.РасшСт_ДополнительныйУчетТоваров);
ОписаниеОтчета.ОпределитьНастройкиФормы = Истина;
ОписаниеВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, ОписаниеОтчета, "");
ОписаниеВарианта.Описание = НСтр("ru = 'Состояние дополнительного учета товаров'");

В общем модуле ВариантыОтчетовПереопределяемый.ОпределитьОбъектыСКомандамиОтчетов определим, что наш отчет будет выводится в панели для нового документа

Объекты.Добавить(Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров);

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

Разделы.Добавить(Метаданные.Подсистемы.РасшСт_ДополнительныйУчетТоваров,
	НСтр("ru = 'Отчеты по дополнительному учету товаров'"));

В модуле менеджера документа необходимо прописать добавление отчета

Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
  КомандаОтчет = КомандыОтчетов.Добавить();
  КомандаОтчет.Менеджер = Метаданные.Отчеты.РасшСт_ДополнительныйУчетТоваров.ПолноеИмя();
  КомандаОтчет.Представление = Метаданные.Отчеты.РасшСт_ДополнительныйУчетТоваров.Синоним;
  КомандаОтчет.МножественныйВыбор = Истина;
  КомандаОтчет.Важность = "Важное";
  КомандаОтчет.ДополнительныеПараметры.Вставить("ИмяКоманды", "РасшСт_ДополнительныйУчетТоваров");
  КомандаОтчет.ВидимостьВФормах = "ФормаДокумента,ФормаСписка";
  Отчеты.ДвиженияДокумента.ДобавитьКомандуОтчетОДвиженияхДокумента(КомандыОтчетов, Параметры);
КонецПроцедуры

А в модуле отчета нам необходимо прописать установку параметров ОпределитьНастройкиФормы и сопутствующие процедуры (ПриСозданииНаСервере, ПередЗагрузкойВариантаНаСервере, УстановитьОбязательныеНастройки, СформироватьПараметрыОтчета).

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

 

Подсистема "Управление доступом"

Создать в расширении роли "Добавление изменение дополнительный учет товаров" и "Чтение дополнительный учет товаров", куда добавить шаблоны и прописать доступ к документу

#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе
#ПоЗначениям( "Документ.РасшСт_ДополнительныйРасходТоваров","Чтение","",
"Организации","Организация",
"","",
"","",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
#КонецЕсли

Про "Чтение", "Добавление", "Изменение" думаю не нужно объяснять. 

В общем модуле УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа пропишем наш документ

Списки.Вставить(Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров, Истина);

Если используем расширение, то добавим в него роль "ПолныеПрава" и добавим права на все новые объекты, иначе под полными правами у вас будут доступны такие действия как "Интерактивное удаление".

В модуль менеджера документа добавим процедуру

Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
	
	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";
	
КонецПроцедуры

В форме документа в событие "ПриЧтенииНаСервере" необходимо добавить следующий код

	// СтандартныеПодсистемы.УправлениеДоступом
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда
		МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
		МодульУправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	КонецЕсли;
	// Конец СтандартныеПодсистемы.УправлениеДоступом

 

Подсистема "Печать"

В общий модуль УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати добавим наш новый документ

СписокОбъектов.Добавить(Документы.РасшСт_ДополнительныйРасходТоваров);

В модуле менеджера должны быть определены процедуры ДобавитьКомандыПечати и Печать.

 

Подсистема "Ввод документов на основании"

В общий модуль СозданиеНаОснованииПереопределяемый.ПриОпределенииОбъектовСКомандамиСозданияНаОсновании добавляем

Объекты.Добавить(Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров);

В модуле менеджера добавляем пустую процедуру ДобавитьКомандыСозданияНаОсновании()

Т.к. на основании нового документа пока ничего не вводим.

А для ввода на основании "Приобретения товаров и услуг" нам нужно добавить процедуру

Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт
  Если ПравоДоступа("Добавление", Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров) Тогда
	КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить();
	КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров.ПолноеИмя();
	КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.РасшСт_ДополнительныйРасходТоваров);
	КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить";
    Возврат КомандаСоздатьНаОсновании;
  КонецЕсли;
  Возврат Неопределено;
КонецФункции

И в модуль менеджера документа "Приобретение товаров и услуг" в процедуру ДобавитьКомандыСозданияНаОсновании вносим новую команду на основании

Документы.РасшСт_ДополнительныйРасходТоваров.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);

 

Подсистема "Подключаемые команды"

Вызовом всех ранее названных подсистем управляем подсистема "Подключаемые команды". Вызов происходит через обработчики формы документа и списка.

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

Код подсистемы обозначен в коде с комментарием

// СтандартныеПодсистемы.ПодключаемыеКоманды

 

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

У документа в параметре "Удаление движений" устанавливаем "Не удалять автоматически". Удалением движений мы будем управлять самостоятельно.

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

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

МеханизмыКонфигурации.Вставить("РасшСт_ДополнительныйУчетТоваров", "РасшСт_ДополнительныйУчетТоваров");

Первый параметр - Имя механизма

Второй параметр - Общий модуль или менеджер, где располагается логика.

В модуле менеджера нового документа, а так же "Приобретение товаров и услуг" определим или расширим процедуру, которая добавит наш документ к новому механизму.

Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
  МеханизмыДокумента.Добавить("РасшСт_ДополнительныйУчетТоваров");
КонецПроцедуры

Добавим общий модуль РасшСт_ДополнительныйУчетТоваров (сервер, внешнее соединение).

В общем модуле пропишем процедуры

Функция ПараметрыДляПроведенияДокумента(Документ, Свойства) Экспорт
	Параметры = ПроведениеДокументов.ПараметрыУчетногоМеханизма();
	// Проведение
	Если Свойства.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
		Параметры.ПодчиненныеРегистры.Добавить(Метаданные.РегистрыНакопления.РасшСт_ДополнительныйУчетТоваров);
	КонецЕсли;
	Параметры.КонтрольныеРегистрыИзменений.Добавить(Метаданные.РегистрыНакопления.РасшСт_ДополнительныйУчетТоваров);
	Возврат Параметры;
КонецФункции

и

Процедура ОтразитьДвижения(ТаблицыДляДвижений, Движения, Отказ) Экспорт
	Если Отказ Тогда
		Возврат;
	КонецЕсли;
	ПроведениеДокументов.ОтразитьДвижения(ТаблицыДляДвижений, Движения, "РасшСт_ДополнительныйУчетТоваров");
КонецПроцедуры

Добавление регистра в параметры "КонтрольныеРегистрыИзменений" указывает, что по регистру проводится контроль.

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

Ошибки фиксируются и выводятся в процедуре "СообщитьОРезультатахКонтроляИзменений"

При этом в модуле набора записей регистра накопления "Дополнительный учет товаров" добавляем процедуры "ПередЗаписью" где формируем временную таблицу "ДвиженияДополнительныйУчетТоваровПередЗаписью" и процедуру "ПриЗаписи", где вычисляем изменения и помещаем во временную таблицу "ДвиженияДополнительныйУчетТоваровИзменение".

Вызовы подсистемы проведения документов при событиях документа:

Событие "Перед записью"

ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);

Событие "Обработка проведения"

ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);

Событие "Обработка удаления проведения"

ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);

Событие "При записи"

ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);

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

Функция ТекстЗапросаТаблицаДополнительныйУчетТоваровНоменклатуры(Запрос, ТекстыЗапроса, Регистры)
	
	ИмяРегистра = "РасшСт_ДополнительныйУчетТоваров";
	
	Если Не ПроведениеДокументов.ТребуетсяТаблицаДляДвижений(ИмяРегистра, Регистры) Тогда
		Возврат "";
	КонецЕсли;
	
	ТекстЗапроса = "
	|ВЫБРАТЬ
	|	&Период									КАК Период,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)	КАК ВидДвижения,
	|	Товары.НомерСтроки						КАК НомерСтроки,
	|	Товары.Ссылка							КАК Ссылка,
	|	Товары.Номенклатура						КАК Номенклатура,
	|	Товары.Характеристика					КАК Характеристика,
	|	Товары.Серия							КАК Серия,
	|	&ДокументОприходованияСклад				КАК Склад,
	|	&ДокументОприходования					КАК ДокументОприходования,
	|	Товары.Количество						КАК Количество
	|ИЗ
	|	Документ.РасшСт_ДополнительныйРасходТоваров.Товары КАК Товары
	|
	|ГДЕ
	|	Товары.Ссылка = &Ссылка";
	
	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

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

 

Прочий функционал

 

Отчет "Движения документа"

  1. Добавим в расширение типовой отчет "ДвиженияДокумента".

  2. В модуль менеджера документа в процедуру ДобавитьКомандыОтчетов добавим команду отчета

Отчеты.ДвиженияДокумента.ДобавитьКомандуОтчетОДвиженияхДокумента(КомандыОтчетов, Параметры);

 

Учет характеристик

Предполагается что у нас в ТЧ Товары уже есть реквизит Характеристика с типом СправочникСсылка.ХарактеристикиНоменклатуры.

В форме в Объект.Товары добавляем реквизит

Имя

Тип

ХарактеристикиИспользуются

Булево

 

Устанавливаем условное оформление для поля характеристика. По умолчанию подразумевается что ТЧ имеет имя "Товары", а поле характеристика - "ТоварыХарактеристика"

НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);

При событиях формы ПриЧтенииНаСервере, ПриСозданииНаСервере и ПослеЗаписиНаСервере нам необходимо перезаполнить служебный реквизит ХарактеристикиИспользуются для каждой строки ТЧ Товары.

Для этого вызывается процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре(), где в параметрах вызова процедуры НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции указывается ключ "ЗаполнитьПризнакХарактеристикиИспользуются".

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

СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу",    ТекущаяСтрока.Характеристика);

Думаю нет смысла описывать обработчик строки. 

ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

Но если интересно как он работает, просто посмотрите код обработчика.

 

Учет серий

В ERP есть два способа хранения серий. В ТЧ Товары и в ТЧ Серии. В данном решении я опишу упрощенный вариант хранения серий в ТЧ Товары.

В объекте в ТЧ Товары у нас должно быть добавлено два реквизита

 

В форме в Объект.Товары добавляем реквизиты

Имя

Тип

Серия СправочникСсылка.СерииНоменклатуры

СтатусУказанияСерий

Число (2,0)

 

В форме документа в Объект.Товары добавляем реквизит

Имя

Тип

ТипНоменклатуры ПеречислениеСсылка.ТипыНоменклатуры

 

Устанавливаем условное оформление для полей

НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСтатусовУказанияСерий(ЭтаФорма, Истина);

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

ЗаполнитьПризнакТипНоменклатуры            = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры", ЗаполнитьПризнакТипНоменклатуры);

Далее в этой процедуре у нас идет общий обработчик заполнения служебных реквизитов

НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары, ПараметрыЗаполненияРеквизитов);

В обработчике "ТоварыНоменклатураПриИзменении" у нас должны быть ключи

ЗаполнитьПризнакТипНоменклатуры          = Новый Структура("Номенклатура", "ТипНоменклатуры");
ПроверитьСериюРассчитатьСтатус           = Новый Структура("ПараметрыУказанияСерий, Склад", ПараметрыУказанияСерий, Объект.Склад);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры",       ЗаполнитьПризнакТипНоменклатуры);
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус",        ПроверитьСериюРассчитатьСтатус);

Обработчики поля серия

Событие "ТоварыСерияПриИзменении"

ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение                   = ТекущаяСтрока.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = ТекущаяСтрока.ПолучитьИдентификатор();
	
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);

Событие "ТоварыСерияНачалоВыбора", которое вызывает процедуру открытия формы подбора серий ОткрытьПодборСерий()

	СтандартнаяОбработка = Ложь;
	ОткрытьПодборСерий(Элемент.ТекстРедактирования);

Процедура ОткрытьПодборСерий

Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
	Если НоменклатураКлиент.ДляУказанияСерийНуженСерверныйВызов(ЭтаФорма, ПараметрыУказанияСерий, Текст, ТекущиеДанные) Тогда
		ТекстИсключения = НСтр("ru = 'Ошибка при попытке указать серии - в этом документе для указания серий не нужен серверный вызов.'");
		ВызватьИсключение ТекстИсключения;
	КонецЕсли;
КонецПроцедуры

Подбор серий вызывает форму обработки "ПодборСерийВДокументы" в зависимости от настроек. При выборе серии идет оповещение о выборе. Для его обработки в форму документа в событие "ОбработкаВыбора" нам необходимо добавить код

Если НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
	НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецЕсли;

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

Функция ИменаРеквизитовДляЗаполненияПараметровУказанияСерий() Экспорт
	Возврат "Дата,Склад";
КонецФункции
// Возвращает параметры указания серий для товаров, указанных в документе.
Функция ПараметрыУказанияСерий(Объект) Экспорт
	ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();
	Возврат ПараметрыУказанияСерий;	
КонецФункции

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

//Инициализация параметров
ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий();

//Проверка что серии используются
ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Ложь);
ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;
ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры  = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям;

//Указание, что серии используются в ТЧ "Товары"
ПараметрыУказанияСерий.ИмяТЧСерии = "Товары";

 

Так же должна быть определена функция ТекстЗапросаЗаполненияСтатусовУказанияСерий для вычисления статусов серий

Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт

	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	Товары.Номенклатура,
	|	Товары.Характеристика,
	|	Товары.Серия,
	|	Товары.Количество,
	|	Товары.СтатусУказанияСерий,
	|	Товары.НомерСтроки
	|ПОМЕСТИТЬ Товары
	|ИЗ
	|	&Товары КАК Товары

    ...

	|ВЫБРАТЬ
	|	Статусы.НомерСтроки КАК НомерСтроки,
	|	Статусы.СтатусУказанияСерий КАК СтатусУказанияСерий
	|ИЗ
	|	Статусы КАК Статусы
	|ГДЕ
	|	Статусы.СтатусУказанияСерий <> Статусы.СтарыйСтатусУказанияСерий
	|
	|УПОРЯДОЧИТЬ ПО
	|	НомерСтроки";
	
	Возврат ТекстЗапроса;
КонецФункции

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

При реализации через расширение проверьте, что реквизит ТипНоменклатуры для ТЧ Объект.Товары должен иметь тип ПеречислениеСсылка.ТипыНоменклатуры. Одна из ошибок, что копируя реквизит, не добавляют в расширение непосредственно само перечисление. В результате не работает условное оформления по сериям и соответственно нет возможности выбрать серию.

 

Заключение

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

Скачать файлы

Наименование Файл Версия Размер
Пример создания документа с движениями в ERP 2.5.7:

.cfe 122,70Kb
29
.cfe 122,70Kb 29 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. dj_tol 105 10.08.21 09:30 Сейчас в теме
Однозначно ПЛЮС. А в целом описано кратко и по сути. ИТС пока прочитаешь, разрознено все, пока поймешь, блин целая история... ERP отдельный мир но очень интересный.
6. ovasiliev 6 14.08.21 20:53 Сейчас в теме
(1) Причём здесь ERP.
Название конфигурации выбрано просто для кликбейта.
А ключевая конфигурация здесь - БСП.
7. maraty 346 15.08.21 10:16 Сейчас в теме
(6) Название выбрано исключительно потому, что расширение делал в erp. Если бы не было характеристик, серий и отчета по движениям, можно было бы и БСП в заголовке написать.
8. ovasiliev 6 15.08.21 10:42 Сейчас в теме
(7) А я и не говорю, что в данном случае кликбейт - это плохо. Далеко не все читающие здесь заголовки знают, что такое БСП. А за ERP зацепятся.
2. xrrg 292 10.08.21 09:57 Сейчас в теме
Не надо ли использовать обработчик из подписки ПроверитьНомерДокументаПоДатеИОрганизации?
Вместо указанного обработчика из подписки УстановитьПрефиксИнформационнойБазыНомеруДокумента, может, надо использовать обработчик из УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокумен­та?
3. maraty 346 10.08.21 11:00 Сейчас в теме
(2)
УстановитьПрефиксИнформационнойБазыНомеруДокумента

Да, полностью согласен. спасибо! Выбрал не ту подписку для примера. Я использовал подписку для документов без организации.
Нужно использовать две подписки
ПроверитьНомерДокументаПоДатеИОрганизации
И УстановитьПрефиксИнформационнойБазыИОрганизацииНомеруДокумен­та
Вернее создать свои копии в расширении. Немного позже отредактирую статью и поправлю пример.
4. Fominro 13.08.21 11:26 Сейчас в теме
Конечно плюс, но вот бы еще описать и добавить остальные разделы БСП: версионирование, работу с файлами, заметками, запрет редактирования реквизитов объектов.
Был бы такой свозной пример - шаблон по внедрению основных разделов БСП в документы
5. maraty 346 13.08.21 12:08 Сейчас в теме
(4)
Конечно плюс, но вот бы еще описать и добавить остальные разделы БСП: версионирование, работу с файлами, заметками, запрет редактирования реквизитов объектов.
Был бы такой свозной пример - шаблон по внедрению основных разделов БСП в документы

Эти подсистемы достаточно просто внедряются без использования расширений, могу сделать сквозной пример в отдельном описании (версионирование, присоединяемые файлы, запрет редактирования реквизитов, дополнительные реквизиты и свойства, подключаемые отчеты и обработки). К тому же мое решение ориентируется на функционал ERP.
Сложность реализации в расширении - использование определяемых типов, что требует некоторого усложнения реализации, поэтому не стал выносить в расширение и в статью соответственно. Ок, сделаю дополнительное описание подключения указанных подсистем БСП, без специфики определенной конфигурации.
itoptimum; +1 Ответить
9. rpgshnik 3321 23.08.21 10:53 Сейчас в теме
10. maraty 346 23.08.21 18:56 Сейчас в теме
(9) в моей статье описание полностью нового документа. В приведенной статье - точки входа в существующих документах. Т.е. по второй статье можно доработать документ, созданный по моей статье :)
11. Gladkov_Anton 280 02.09.22 14:06 Сейчас в теме
Возможно кому-то поможет:
Описание "СтатусУказанияСерий" см. в описании процедуры НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий
12. rozer 299 07.12.22 15:20 Сейчас в теме
очень помогли переложить логику проведения самописных документов из КА2.4 на 2.5
Оставьте свое сообщение

См. также

Многопоточное выполнение процедуры с помощью ДлительныеОперации

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

26.02.2023    3515    egoriy111    23    

61

Отправка счетов и актов за период из 1С:Бухгалтерии 3.0 программно с помощью функций БСП

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

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

1 стартмани

23.05.2022    1368    lenastep    4    

5

Отчет на СКД с использованием форм из БСП. Варианты передачи списка значений в параметр СКД

БСП (Библиотека стандартных подсистем) СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

20.04.2022    4428    eugene-p    8    

27

Распознавание и загрузка документов в 1С Промо

Универсальная программа-обработка для распознавания любых сканов или фото первичных документов в 1С (счета-фактуры, УПД, ТТН, акты и тд). Точность распознания до 98%.

от 11 рублей

Решение ошибок "Нет кнопки Создать на основании" или "Задвоились пункты в меню Создать на основании"

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Абонемент ($m)

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

2 стартмани

30.08.2021    3788    Bor_ka    1    

14

БСП. Подключаемые команды. Команды заполнения

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

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

1 стартмани

11.05.2021    15040    kondrp    8    

89

Подсистема сложносочиненного версионирования

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Статья описывает мою личную боль при работе в Управление холдингом, редакция 3.0, и может не совпадать с вашими ощущениями. Прощу учитывать, что это лишь мысленный эксперимент. В качестве эксперимента поставил себе задачу: "Как отслеживать изменения, для объектов, которые состоят из нескольких других объектов?".

1 стартмани

04.05.2021    1074    johnnyshut23    0    

5

Связи параметров выбора номенклатуры и характеристики в 1С 8.3

Механизмы типовых конфигураций Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Из этой статьи вы узнаете, как, используя системы стандартов и методик разработки 1С, правильно настроить связи параметров выбора номенклатуры и характеристики в новой табличной части.

1 стартмани

22.02.2021    3874    plotnikov1c    2    

11

1СПАРК РИСКИ. Сервис оценки благонадежности контрагентов. Промо

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

История данных и БСП

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

История данных от платформы и Версионирование объектов от БСП. Как мигрировать историю из подсистемы БСП и начать использовать функции платформы уже сейчас.

1 стартмани

09.06.2020    8989    zeegin    17    

57

Графики работы из БСП

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Не очень давно на канале 1С:БСП была опубликована заметка по использованию Графиков работы и Календарных графиков.

1 стартмани

23.05.2019    5297    fenixnow    0    

13

Поле адреса в своем справочнике на примере 1С:Бухгалтерия 3

Механизмы типовых конфигураций Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

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

1 стартмани

17.05.2019    11617    vasilievil    9    

17

Табличная часть из дополнительных реквизитов с обработкой событий в расширении

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

13.05.2019    16914    mvxyz    18    

19

Пример настройки шаблонов и реализации печати отчетов в документ MS Word используя функциональную часть "Библиотеки Стандартных Подсистем 1С" (БСП)

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Россия Абонемент ($m)

В конфигурации выбраны и использованы только необходимые объекты библиотеки стандартных подсистем для реализации вывода отчёта, с табличными частями, в документ MS Word. Показан пример создания необходимых областей в шаблоне для вывода параметров в отчёт.

1 стартмани

23.04.2019    12077    olegpkc    13    

31

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

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

Механизмы типовых конфигураций Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

12.03.2019    79679    ni_cola    36    

129

Технология кэширования результата разузлования продукции по спецификации

Производство готовой продукции (работ, услуг) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление производственным предприятием Управленческий учет Абонемент ($m)

Рассматривается технология кэширования результата разузлования продукции по спецификации. Данная технология может оказаться полезной для значительного ускорения работы системы в части разузлования в конфигурациях УПП. Тестировалось на платформе 1С 8.3.12.1469, релизы УПП 1.2, 1.3.

1 стартмани

01.03.2019    4284    kiba    2    

5

Механизм подбора из справочника номенклатуры и передача отобранных позиций в документ

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

29.12.2018    5222    AlexHelmer    0    

11

Использование подсистемы БСП "Заполнение объектов"

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Абонемент ($m)

Применение механизмов БСП для добавления новых команд заполнения к формам различных объектов. Использование расширений конфигурации для доработки. Шаблоны для реализации собственных команд заполнения.

1 стартмани

23.11.2018    33206    ids79    29    

175

БСП: Дополнительная обработка (Регламенты) + Расширения, примеры от сложного к универсальному

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Продолжение статьи «БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному». Пойдем от финального примера той статьи и сделаем несколько шагов навстречу к универсальному решению.

2 стартмани

21.05.2018    22032    dsdred    17    

78

Видеокурс-практикум: как подготовить и написать ТЗ, ЗНР, ЧТЗ. Промо

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

3 500 рублей

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    66902    dsdred    47    

319

Рисуем Робота в диаграмме Ганта с использованием Регистра расчетов и Плана видов расчета

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

1 стартмани

18.02.2018    11143    jan-pechka    12    

40

Начало внедрения БСП в новую конфигурацию

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Начало внедрения БСП 2.4.4.80. Первые "проблемы" и пути их решения. !!! UPD !!! Как подсказывают более умные коллеги в комментариях: необходимо использовать чистую конфигурацию БСП, которую можно найти в каталоге шаблонов конфигураций!!!

1 стартмани

24.11.2017    23356    Kim1C    18    

16

Использование механизма редактирования макетов БСП для внешних обработок

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Абонемент ($m)

Небольшие изыскания по применению механизма редактирования внешних печатных форм для своих внешних обработок.

1 стартмани

24.11.2017    15788    Boneman    9    

44

Внешняя печатная форма с использованием БСП и вызовом клиентского метода

БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

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

1 стартмани

02.11.2017    29907    Andrew189100    15    

13

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Знакомство с 1С:Документооборот. История автоматизации и доработок. Печатная форма Лист согласования

Документооборот и делопроизводство (СЭД) Механизмы типовых конфигураций Платформа 1С v8.3 1С:Документооборот Управленческий учет Абонемент ($m)

Документооборот 2.1.10.2 ПРОФ, КОРП. История автоматизации и доработок. Ввод на основании внутреннего документа из задачи согласование с переносом прикрепленных файлов(копировать и вставить файлы). ПФ Лист согласования для процесса Согласование и для справочника Внутренние документы(печатается с историей). Автоматическая загрузка справочника по com-соединению из другой базы. Печатные формы работают и на последнем релизе 2.1.20.5.

1 стартмани

04.07.2017    23493    SPonomareff    21    

31

Ценообразование по группам контрагентов от закупочной цены УТ10, УПП, КА

Ценообразование, анализ цен Механизмы типовых конфигураций Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Управленческий учет Абонемент ($m)

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

1 стартмани

07.11.2012    22569    Ibrogim    13    

10

Подборка программ для взаимодействия с ЕГАИС Промо

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