Здравствуйте формучане. Есть справочник номенклатура, в нем есть есть реквизит штрихкод, который является динамическим списком. В нем выводится штрихкод номенклатуры, штрихкод берется из регистра сведений ШтрихкодыНоменклатуры. Помимо этого на форме справочника есть кнопка "СоздатьШтрихкод", которая открывает форму записи регистра сведений ШтрихкодыНоменклатуры. В этой форме 2 поля Номенклатура и Штрихкод.
Задача состоит в том, чтобы при открытии формы записи регистра сведений ШтрихкодыНоменклатуры, путем нажатия кнопки "СоздатьШтрихкод", автоматически заполнялось поле номенклатура.
Задача состоит в том, чтобы при открытии формы записи регистра сведений ШтрихкодыНоменклатуры, путем нажатия кнопки "СоздатьШтрихкод", автоматически заполнялось поле номенклатура.
По теме из базы знаний
- Передача параметров/значений во внешнюю печатную форму для конфигураций на БСП (1С:Предприятие 8.2/8.3)
- Передача реквизитов, данных между формами (УФ)
- Мобильное приложение 1С и приложение Java. Совместная работа через Intent. Часть 2. Получаем данные в 1С из приложения Java
- Неочевидные нюансы записи управляемой формы
- Универсальная загрузка данных формата Excel
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
В форме справочника:
В форме записи регистра
В форме справочника:
&НаКлиенте
Процедура НачатьСозданиеШтрихкода()
ТД = Элементы.Штрихкод.ТекущиеДанные;
Если ТД = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = новый Структура("Номенклатура", ТД.Номенклатура);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", ПараметрыФормы, Элементы.Штрихкод);
КонецПроцедуры
ПоказатьВ форме записи регистра
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Запись.ИсходныйКлючЗаписи.Пустой() Тогда //это новая запись
Если Параметры.Свойство("Номенклатура") Тогда
Запись.Номенклатура = Параметры.Номенклатура;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
(10)
Огромное спасибо, очень подробный ответ и все работает в моей базе. Есть только один вопрос, чем такой вариант кода лучше моего
в справочнике
в регистре
Просто мне бы не хотелось тупо копировать чужие решения, хочется понимать чем они лучше.
Огромное спасибо, очень подробный ответ и все работает в моей базе. Есть только один вопрос, чем такой вариант кода лучше моего
в справочнике
&НаКлиенте
Процедура СоздатьШтрихкод(Команда)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Номенклатура",Объект.Ссылка);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", СтруктураПараметров);
КонецПроцедуры
в регистре
&НаСервере
Функция ПолучитьПараметр()
Возврат ЭтаФорма.Параметры.Номенклатура;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Запись.Номенклатура = ПолучитьПараметр();
КонецПроцедуры
ПоказатьПросто мне бы не хотелось тупо копировать чужие решения, хочется понимать чем они лучше.
(12)
если при открытии формы ты передаешь в нее параметры, то получать ты их должен ПриСозданииНаСервере.
в других событиях твоих параметров уже не будет, т.к. они существуют только в рамках одного серверного вызова.
В твоем примере, в форме регистра ПриСозданииНаСервере у тебя будет существовать ЭтаФорма.Параметры.Номенклатура. ПриОткрытии в параметрах уже не будет номенклатуры, на сколько я помню.
если при открытии формы ты передаешь в нее параметры, то получать ты их должен ПриСозданииНаСервере.
в других событиях твоих параметров уже не будет, т.к. они существуют только в рамках одного серверного вызова.
В твоем примере, в форме регистра ПриСозданииНаСервере у тебя будет существовать ЭтаФорма.Параметры.Номенклатура. ПриОткрытии в параметрах уже не будет номенклатуры, на сколько я помню.
(16) Фишка в том, что мой вариант работает, может там конечно есть подводные камни, но он работает.
В вашем варианте кстати код работает не совсем корректно, или у меня есть какие-то косяки. Для созданной номенклатуры все норм, но вот при создании новой позиции ТД = Неопределно и кнопка не отрабатывает, я убрал это и немного переписал, вот так работает всегда
В вашем варианте кстати код работает не совсем корректно, или у меня есть какие-то косяки. Для созданной номенклатуры все норм, но вот при создании новой позиции ТД = Неопределно и кнопка не отрабатывает, я убрал это и немного переписал, вот так работает всегда
&НаКлиенте
Процедура НачатьСозданиеШтрихкода()
ПараметрыФормы = новый Структура("Номенклатура", Объект.Ссылка);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", ПараметрыФормы, Элементы.Штрихкод);
КонецПроцедуры
Показать
(4) Прочитал, параметр в форму передал, правда не могу его вывести, пишет поле объекта недоступно для записи
&НаСервере
Функция ПолучитьПараметр()
Возврат ЭтаФорма.Параметры.СсылкаСправочник;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ЭтаФорма.Элементы.Номенклатура = ПолучитьПараметр();
КонецПроцедуры
Показать
(5) параметр не нужно выводить! Он автоматически заполнит реквизиты, если правильно структуру заполнили!
Суть сводится к созданию структуры такого же формата как и объект, только табличные части придется постобработкой заполнить, ну т.е. либо передать структуры, а потом уже в объекте обрабатывать, но лучше конечно же это делать сразу в коде открытия, а не в самом объекте!
Суть сводится к созданию структуры такого же формата как и объект, только табличные части придется постобработкой заполнить, ну т.е. либо передать структуры, а потом уже в объекте обрабатывать, но лучше конечно же это делать сразу в коде открытия, а не в самом объекте!
(6) Ну вот в справочнике "Номенклатура" у меня такой такой код
В регистре сведений такой
Плюс еще в регистре сведений создан параметр "Номенклатура", тип "СправочникСсылка.Номенклатура"
В таком виде все функционирует как мне надо. Но это некорректно. Судя по тому как я вас понял, все должно работать и без кода в модуле формы регистра сведений, но у меня без него ничего не происходит.
Да, к слову говоря номенклатура у меня это не реквизит, а ресурс в регистре.
&НаКлиенте
Процедура СоздатьШтрихкод(Команда)
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Номенклатура",Объект.Ссылка);
ОткрытьФорму("РегистрСведений.ШтрихкодыНоменклатуры.ФормаЗаписи", СтруктураПараметров);
КонецПроцедуры
В регистре сведений такой
&НаСервере
Функция ПолучитьПараметр()
Возврат ЭтаФорма.Параметры.Номенклатура;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Запись.Номенклатура = ПолучитьПараметр();
КонецПроцедуры
ПоказатьПлюс еще в регистре сведений создан параметр "Номенклатура", тип "СправочникСсылка.Номенклатура"
В таком виде все функционирует как мне надо. Но это некорректно. Судя по тому как я вас понял, все должно работать и без кода в модуле формы регистра сведений, но у меня без него ничего не происходит.
Да, к слову говоря номенклатура у меня это не реквизит, а ресурс в регистре.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот