diff --git a/public/erp/harakteristiki-nomenklatury/1.png b/public/erp/harakteristiki-nomenklatury/1.png new file mode 100644 index 0000000..c72328c Binary files /dev/null and b/public/erp/harakteristiki-nomenklatury/1.png differ diff --git a/public/erp/harakteristiki-nomenklatury/2.png b/public/erp/harakteristiki-nomenklatury/2.png new file mode 100644 index 0000000..82afedf Binary files /dev/null and b/public/erp/harakteristiki-nomenklatury/2.png differ diff --git a/public/erp/serii-nomenklatury/1.png b/public/erp/serii-nomenklatury/1.png new file mode 100644 index 0000000..227ebb5 Binary files /dev/null and b/public/erp/serii-nomenklatury/1.png differ diff --git a/public/erp/serii-nomenklatury/2.png b/public/erp/serii-nomenklatury/2.png new file mode 100644 index 0000000..ef0dd8f Binary files /dev/null and b/public/erp/serii-nomenklatury/2.png differ diff --git a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд заполнения.md similarity index 97% rename from src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md rename to src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд заполнения.md index 584539f..9461183 100644 --- a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды заполнения/Добавление команд заполнения.md +++ b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд заполнения.md @@ -1,6 +1,6 @@ --- title: Добавление команд заполнения -slug: общие-подключаемые-команды-команды-заполнения/добавление-команд-заполнения +slug: общие-подключаемые-команды/добавление-команд-заполнения --- # Общий модуль ЗаполнениеОбъектовПереопределяемый diff --git a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды отчетов/Добавление команд отчетов.md b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд отчетов.md similarity index 96% rename from src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды отчетов/Добавление команд отчетов.md rename to src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд отчетов.md index fdbd74c..705d841 100644 --- a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды отчетов/Добавление команд отчетов.md +++ b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд отчетов.md @@ -1,6 +1,6 @@ --- title: Добавление команд отчетов -slug: общие-подключаемые-команды-команды-отчетов/добавление-команд-отчетов +slug: общие-подключаемые-команды/добавление-команд-отчетов --- # В общем модуле `ВариантыОтчетовПереопределяемый` добавляем свой объект diff --git a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды создания на основании/Добавление команд создания на основании.md b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд создания на основании.md similarity index 64% rename from src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды создания на основании/Добавление команд создания на основании.md rename to src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд создания на основании.md index 6047854..4f255ad 100644 --- a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды создания на основании/Добавление команд создания на основании.md +++ b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Добавление команд создания на основании.md @@ -1,9 +1,13 @@ --- title: Добавление команд создания на основании -slug: общие-подключаемые-команды-команды-создания-на-основании/добавление-команд-создания-на-основании +slug: общие-подключаемые-команды/добавление-команд-создания-на-основании --- -# В общем модуле `CозданиеНаОснованииПереопределяемый` +## Подключаемые команды + +Нужно подключить формы к подсистеме `Подключаемые команды` + +## В общем модуле `CозданиеНаОснованииПереопределяемый` В процедуру `ПриОпределенииОбъектовСКомандамиСозданияНаОсновании` добавляем менеджеры подключаемых объектов. Например: @@ -20,18 +24,18 @@ slug: общие-подключаемые-команды-команды-созд // Объекты.Добавить(Метаданные.Справочники.Организации); // Процедура ПриОпределенииОбъектовСКомандамиСозданияНаОсновании(Объекты) Экспорт - - // _Демо начало примера - Объекты.Добавить(Метаданные.Документы._ДемоЗаказПокупателя); - Объекты.Добавить(Метаданные.Документы._ДемоПоступлениеТоваров); - // _Демо конец примера + + // _Демо начало примера + Объекты.Добавить(Метаданные.Документы._ДемоЗаказПокупателя); + Объекты.Добавить(Метаданные.Документы._ДемоПоступлениеТоваров); + // _Демо конец примера КонецПроцедуры ``` -# В модуле менеджера -## Добавление команд создания на основании +## В модуле менеджера +### Добавление команд создания на основании Если необходимо создавать какие-то объекты на основании собственного, в первую очередь нужно вывести команды создания на основании на форму документа. Для этого: @@ -47,23 +51,23 @@ slug: общие-подключаемые-команды-команды-созд // Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт - Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказДавальца) Тогда - КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить(); - КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказДавальца.ПолноеИмя(); - КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказДавальца); - КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить"; - КонецЕсли; - + Если ПравоДоступа("Добавление", Метаданные.Документы.ЗаказДавальца) Тогда + КомандаСоздатьНаОсновании = КомандыСозданияНаОсновании.Добавить(); + КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.ЗаказДавальца.ПолноеИмя(); + КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.ЗаказДавальца); + КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить"; + КонецЕсли; + КонецПроцедуры ``` В этой процедуре определяется, какие документы будут создаваться на основании. Для многих типовых документов реализована экспортная процедура для добавления такой команды. Например, если нужно создавать только документы `ЗаказКлиента` и `ЗаказПоставщику` (для которых реализованы такие экспортные команды), то код может выглядеть так ```bsl Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт - - Документы.ЗаказКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании); - Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании); - + + Документы.ЗаказКлиента.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании); + Документы.ЗаказПоставщику.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании); + КонецПроцедуры ``` @@ -71,11 +75,14 @@ slug: общие-подключаемые-команды-команды-созд Если мы хотим дать возможность так же просто создавать команды создания на основании для своего документа, то нужно так же реализовать экспортную процедуру: ```bsl -// Добавляет команду создания документа +// Для использования в процедуре ДобавитьКомандыСозданияНаОсновании других модулей менеджеров объектов. +// Добавляет в список команд создания на основании этот объект. // // Параметры: -// КомандыСозданияНаОсновании - ТаблицаЗначений - Таблица с командами создания на основании. Для изменения. -// См. описание 1 параметра процедуры СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании(). +// КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено - описание добавленной команды. // Функция ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании) Экспорт @@ -85,20 +92,20 @@ slug: общие-подключаемые-команды-команды-созд КомандаСоздатьНаОсновании.Менеджер = Метаданные.Документы.<МойДокумент>.ПолноеИмя(); КомандаСоздатьНаОсновании.Представление = ОбщегоНазначенияУТ.ПредставлениеОбъекта(Метаданные.Документы.<МойДокумент>); КомандаСоздатьНаОсновании.РежимЗаписи = "Проводить"; - + Возврат КомандаСоздатьНаОсновании; - + КонецЕсли; - + Возврат Неопределено; - + КонецФункции ``` # Настройка формы Нужно создать группу в командной панели(скопируй из типового объекта) -// * ПодменюСоздатьНаОсновании -// ** ПодменюСоздатьНаОснованииВажное -// ** ПодменюСоздатьНаОснованииОбычное -// ** ПодменюСоздатьНаОснованииСмТакже -Нужно подключить форму к подсистеме `Подключаемые команды` +- ПодменюСоздатьНаОсновании + - ПодменюСоздатьНаОснованииВажное + - ПодменюСоздатьНаОснованииОбычное + - ПодменюСоздатьНаОснованииСмТакже + diff --git a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды печати/Добавление команд печати.md b/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды печати/Добавление команд печати.md deleted file mode 100644 index 09cf4f6..0000000 --- a/src/content/docs/knowledge-base/Общие/Подключаемые команды/Команды печати/Добавление команд печати.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Добавление команд печати -slug: общие-подключаемые-команды-команды-печати/добавление-команд-печати ---- - -См. Подключение к подсистеме Печать \ No newline at end of file diff --git a/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка серий номенклатуры в ТЧ.md b/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка серий номенклатуры в ТЧ.md new file mode 100644 index 0000000..126cb18 --- /dev/null +++ b/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка серий номенклатуры в ТЧ.md @@ -0,0 +1,161 @@ +--- +title: Проверка серий номенклатуры в ТЧ +slug: типовые-erp-обработка-тч-с-номенклатурой/проверка-серий-номенклатуры-в-тч +--- + +# НЕ ЗАКОНЧЕНО + +> Использование серий в 1С:ERP определяется функциональной опцией НСИ и администрирование – Настройка НСИ и разделов – Номенклатура – Разрезы учета – Серии товаров. +> Далее серии указываются для каждого вида номенклатуры отдельно + +[Подробнее про настройку серий в ERP](https://efsol.ru/manuals/serial-accounting-1c-erp/?ysclid=mepv3es1ej787928552) + +## Настройка формы +Создаем таблицу (далее - `СписокНоменклатуры`) с обязательными колонками +|Имя|Тип| +|-|-| +|`Номенклатура`|`СправочникСсылка.Номенклатура`| +|`Характеристика`|`СправочникСсылка.ХарактеристикиНоменклатуры`| +|`Серия`|`СправочникСсылка.СерииНоменклатуры`| +|`СтатусУказанияСерий`|`Число (2,0)`| +|`Склад`|`СправочникСсылка.Склады`| +|`ХарактеристикиИспользуются`|`Булево`| +|`ТипНоменклатуры`|`ПеречислениеСсылка.ТипыНоменклатуры`| + +Для поля `Серия` устанавливаем связи параметров выбора: +![Изображение](/erp/serii-nomenklatury/1.png) + +Поле `Склад` обычно не выводится в таблицу, а устанавливается отдельно для всех строк ТЧ. Для этого создадим реквизит объекта `Склад` и разместим в шапке + +Несмотря на то, что поле `СтатусУказанияСерий` служебное, его рекомендуется создавать на уровне **объекта**, а не **формы**. На форму выводится как `Поле картинки` с картинкой значений `СтатусыУказанияСерий` +![Изображение](/erp/serii-nomenklatury/2.png) + +Поля `ХарактеристикиИспользуются` и `ТипНоменклатуры` - служебные, и их создаем на уровне **формы**, а не **объекта** + +Создаем **реквизит формы** `ПараметрыУказанияСерий` с типом `Произвольный` + +> Пример для случая, когда серии указываются в той же ТЧ, что и номенклатура + +## ПриСозданииНаСервере + +> Пример для случая, когда серии указываются в той же ТЧ, что и номенклатура +```bsl + +// См. описание метода + +// Для каждого документа параметры серии могут отличаться, поэтому устанавливаются в менеджере целевого объекта. В примере параметры из документа "ПриобретениеТоваровУслуг" +СтруктураПараметров = НоменклатураСервер.ПараметрыУказанияСерий(Объект, <Менеджер объекта>); // где реализован экспортный метод "ПараметрыУказанияСерий" +ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(СтруктураПараметров); +НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий); + +НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтотОбъект, + "СерииВсегдаВТЧТовары", + "СписокНоменклатурыСерия", + "Объект.СписокНоменклатуры.СтатусУказанияСерий", + "Объект.СписокНоменклатуры.ТипНоменклатуры"); + +НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий); + +``` + +
+Пример реализации параметров учета серий в документе "Приобретение товаров и услуг + +```bsl +// Возвращает параметры указания серий для товаров, указанных в документе +// +// Параметры: +// Объект - Структура - структура значений реквизитов объекта, необходимых для заполнения параметров указания серий. +// +// Возвращаемое значение: +// Структура - см. НоменклатураКлиентСервер.ПараметрыУказанияСерий. +// +Функция ПараметрыУказанияСерий(Объект) Экспорт + + ПараметрыУказанияСерий = НоменклатураКлиентСервер.ПараметрыУказанияСерий(); + ПараметрыУказанияСерий.ПолноеИмяОбъекта = "Документ.ПриобретениеТоваровУслуг"; + + ПараметрыСерийСклада = СкладыСервер.ИспользованиеСерийНаСкладе(Объект.Склад, Истина); + + ЗакупкаУПоставщикаПоРеглУчету = (Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаРеглУчет); + + Если ЗакупкаУПоставщикаПоРеглУчету Тогда + ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; + ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; + ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Истина; + Иначе + ПараметрыУказанияСерий.ИспользоватьСерииНоменклатуры = + (ПараметрыСерийСклада.ИспользоватьСерииНоменклатуры И Не СкладыСервер.ИспользоватьОрдернуюСхемуПриПоступлении(Объект.Склад, Объект.Дата, Истина)) + Или ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; + ПараметрыУказанияСерий.УчитыватьСебестоимостьПоСериям = ПараметрыСерийСклада.УчитыватьСебестоимостьПоСериям; + ПараметрыУказанияСерий.ТолькоСерииДляСебестоимости = Ложь; + ПараметрыУказанияСерий.СерииПриПланированииОтгрузкиУказываютсяВТЧСерии = Истина; + КонецЕсли; + + ПараметрыУказанияСерий.СкладскиеОперации.Добавить(Перечисления.СкладскиеОперации.ПриемкаОтПоставщика); + ПараметрыУказанияСерий.ПоляСвязи.Добавить("Склад"); + ПараметрыУказанияСерий.ПоляСвязи.Добавить("Назначение"); + ПараметрыУказанияСерий.ЭтоНакладная = Истина; + ПараметрыУказанияСерий.Дата = Объект.Дата; + + ПараметрыУказанияСерий.ИменаПолейСтатусУказанияСерий.Добавить("СтатусУказанияСерий"); + + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Ссылка"); + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Соглашение"); + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Договор"); + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ПоступлениеПоЗаказам"); + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("Товары_ЗаказПоставщику"); + ПараметрыУказанияСерий.ИменаПолейДляОпределенияРаспоряжения.Добавить("ВариантПриемкиТоваров"); + ПараметрыУказанияСерий.ОперацияДокумента = Объект.ХозяйственнаяОперация; + + ОперацииВПути = Новый Массив(); + ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаТоварыВПути); + ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаПоИмпортуТоварыВПути); + ОперацииВПути.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСТоварыВПути); + + ОперацииНеотфактуровки = Новый Массив(); + ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаУПоставщикаФактуровкаПоставки); + ОперацииНеотфактуровки.Добавить(Перечисления.ХозяйственныеОперации.ЗакупкаВСтранахЕАЭСФактуровкаПоставки); + + ХозОперацияТоварыВПутиИНеотфактуровка = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено + Или ОперацииНеотфактуровки.Найти(Объект.ХозяйственнаяОперация) <> Неопределено; + ЭтоТоварыВПути = ОперацииВПути.Найти(Объект.ХозяйственнаяОперация) <> Неопределено; + + ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ЭтоТоварыВПути", ЭтоТоварыВПути); + ПараметрыУказанияСерий.ПараметрыЗапроса.Вставить("ХозОперацияТоварыВПутиИНеотфактуровка", ХозОперацияТоварыВПутиИНеотфактуровка); + + Возврат ПараметрыУказанияСерий; + +КонецФункции +``` + +
+ +## При изменении номенклатуры + +```bsl + +&НаКлиенте +Процедура СписокНоменклатурыНоменклатураПриИзменении(Элемент) + + ТекДанн = Элементы.СписокНоменклатуры.ТекущиеДанные; + + // см. описание метода + ПараметрыЗаполненияСклада = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(Объект, Ложь, "Склад", "СкладНаФорме"); + + СтруктураДействий = Новый Структура; + // Проверяем характеристики + СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекДанн.Характеристика); + // Заполняем склад в ТЧ из реквизита в шапке формы + СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", ПараметрыЗаполненияСклада); + // заполняем служебный реквизит "ТипНоменклатуры" + СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры")); + // Проверяем статус указания серий + СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекДанн.Склад, ПараметрыУказанияСерий)); + + ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекДанн, СтруктураДействий, КэшированныеЗначения); + +КонецПроцедуры +``` + + diff --git a/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка характеристик номенклатуры в ТЧ.md b/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка характеристик номенклатуры в ТЧ.md new file mode 100644 index 0000000..0dc4248 --- /dev/null +++ b/src/content/docs/knowledge-base/Типовые/ERP/Обработка ТЧ с номенклатурой/Проверка характеристик номенклатуры в ТЧ.md @@ -0,0 +1,62 @@ +--- +title: Проверка характеристик номенклатуры в ТЧ +slug: типовые-erp-обработка-тч-с-номенклатурой/проверка-характеристик-номенклатуры-в-тч +--- + +## Описание таблицы +Создаем таблицу (далее - `СписокНоменклатуры`) с обязательными колонками +|Имя|Тип| +|-|-| +|`Номенклатура`|`СправочникСсылка.Номенклатура`| +|`Характеристика`|`СправочникСсылка.ХарактеристикиНоменклатуры`| +|`ХарактеристикиИспользуются`|`Булево`| + +Поле `ХарактеристикиИспользуются` - служебное, поэтому создается **на форме** а не в объекте +![Изображение](/erp/harakteristiki-nomenklatury/1.png) + +Для поля `Характеристика` устанавливаем связи параметров выбора: +![Изображение](/erp/harakteristiki-nomenklatury/2.png) + +## КэшированныеЗначения +В модуле формы нужно объявить клиентскую переменную `КэшированныеЗначения` + +```bsl + +#Область ОписаниеПеременных + +&НаКлиенте +Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ + +#КонецОбласти + +``` + +## ПриСозданииНаСервере +При создании формы устнавливаем условное оформление поля `Характеристика` +```bsl +// См. описание метода + +НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтотОбъект, + "СписокНоменклатурыХарактеристика", + "Объект.СписокНоменклатуры.ХарактеристикиИспользуются"); + +РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.СписокНоменклатуры); + +``` + +## При изменении номенклатуры +```bsl +&НаКлиенте + +Процедура СписокНоменклатурыНоменклатураПриИзменении(Элемент) + + ТекДанн = Элементы.СписокНоменклатуры.ТекущиеДанные; + + СтруктураДействий = Новый Структура; + СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекДанн.Характеристика); + + ОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекДанн, СтруктураДействий, КэшированныеЗначения); + +КонецПроцедуры + +``` \ No newline at end of file