Заполнение регистра сведений данными из формы
Как сделать так, чтобы запись в регистр сведений осуществлялась после закрытия формы и некоторые колонки заполнялись, полями, которые находятся в этой форме? В данном случае чтобы заполнялась колонка "комментарии". Форма регистра сведений, куда записываются данные.
И как обратится к номенклатуре, количестве и цене, которые находятся в таблице? Обращение осуществляется в той же форме документа, где находится таблица.
И как обратится к номенклатуре, количестве и цене, которые находятся в таблице? Обращение осуществляется в той же форме документа, где находится таблица.
ПриИзмененииКоличестваТовары(Элемент);
КоличествоИзмененоВручную = ИСТИНА;
Если КоличествоИзмененоВручную Тогда
Режим = РежимДиалогаВопрос.ДаНетОтмена;
Ответ = Вопрос("Выполнить?", Режим, 0);
Если Ответ =КодВозвратаДиалога.Да Тогда
Форма=РегистрыСведений.РедактированияДокументов.ПолучитьФорму("Форма");
Форма.Открыть();
Движение=Движения.ЛогРедактированияДокументов.Добавить();
Движение.Документ=ЭтотОбъект.Ссылка;
Движение.Пользователь=ПараметрыСеанса.ТекущийПользователь;
Движение.Комментарий=Форма.ПолеВвода1;
Движение.Период=ТекущаяДата();
Движение.Товар=Справочники.Номенклатура.НайтиПоКоду("00000046625");
Движение.Активность=Истина;
Движения.Записать();
ПоказатьПо теме из базы знаний
- Просмотр и очистка регистра сведений (управляемые формы)
- Версионирование справочников, документов и регистров сведений на SQL-сервере
- Регистр сведений как дополнение объекта
- Заполнение регистра сведений "Основные сотрудники физических лиц" (ERP 2, КА 2, ЗУП 3.1)
- Заполнение регистра сведений "Фамилия, имя, отчество физического лица" (ERP 2.5, КА 2.5, ЗУП 3.1)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Добрый день. 1) В глобальную переменную записываете нужные Вам данные с формы
2) Создаете глобальное "ОбработкаОжидания" с периодом секунды две. И после записи формы будет вызвана через две секунды процедура с ОбработкаОжидания - и записываете из этой глобальной переменной в регистр сведений. Еще можно в глобальную переменную (я бы структуру сделал) передал форму - и анализировать на то, уничтожена форма или нет если хотите писать только после уничтожения формы.
2) Создаете глобальное "ОбработкаОжидания" с периодом секунды две. И после записи формы будет вызвана через две секунды процедура с ОбработкаОжидания - и записываете из этой глобальной переменной в регистр сведений. Еще можно в глобальную переменную (я бы структуру сделал) передал форму - и анализировать на то, уничтожена форма или нет если хотите писать только после уничтожения формы.
(8) Это к первому пункту. По поводу второго пункта - просто создаете менеджер записи и прочитайте данные записи регистра сведений - и отсюда можете их прочитать.
И из Запись можете читать уже данные реквизитов
МенеджерЗаписи = РегистрыСведений.МойРегистр.СоздатьНаборЗаписей
МенеджерЗаписи.Отбор.Регистратор = Ссылка
МенеджерЗаписи.Прочитать();
Запись = МенеджерЗаписи.Получить(0);
И из Запись можете читать уже данные реквизитов
У вас вся архитектура решения неправильная. Насколько я понял, пользователь работает с документом, меняет количество в ТЧ, при этом он должен написать комментарий/объяснение зачем он изменяет это количество. Далее эти комментарии должны писаться в РС. Если так, то РС следовало выбирать независимый, так как отмена проведения может удалить накопленную информацию об изменениях. Также, запись в РС не должна происходить во время работы пользователя, так как если пользователь откажется от изменений документа, РС будет содержать неактуальные данные.
Логичнее накапливать информацию в переменных формы пока пользователь работает с документом. При закрытии формы передавать эти данные в модуль объекта через ДокументОбъект.ДополнительныеСвойства и в процедуре ПередЗаписью модуля объекта (либо в подписке) записывать эти данные в РС.
Логичнее накапливать информацию в переменных формы пока пользователь работает с документом. При закрытии формы передавать эти данные в модуль объекта через ДокументОбъект.ДополнительныеСвойства и в процедуре ПередЗаписью модуля объекта (либо в подписке) записывать эти данные в РС.
(10)
объясните это подробнее пожалуйста. И было бы хорошо,если код пример кода смогли бы привести
Для чего передавать данные в модуль объекта? И куда именно передавать?
Как нужно правильно использовать ДополнительныеСвойства ?
Логичнее накапливать информацию в переменных формы пока пользователь работает с документом. При закрытии формы передавать эти данные в модуль объекта через ДокументОбъект.ДополнительныеСвойства и в процедуре ПередЗаписью модуля объекта (либо в подписке) записывать эти данные в РС.
объясните это подробнее пожалуйста. И было бы хорошо,если код пример кода смогли бы привести
Для чего передавать данные в модуль объекта? И куда именно передавать?
Как нужно правильно использовать ДополнительныеСвойства ?
(17)
Для того чтобы не зависеть от формы, так как ДополнительныеСвойства принадлежат ДокументОбъекту, а значит они будут доступны в модуле объекта или модуле подписки ПередЗаписью.
Я не очень все таки понял, что вы хотите видеть в итоге, поэтому смутно понимаю решение. Может быть вообще проще эти комментарии хранить в новой табличной части, связанной с ТЧ Товары по какому-нибудь идентификатору строки.
Для чего передавать данные в модуль объекта
Для того чтобы не зависеть от формы, так как ДополнительныеСвойства принадлежат ДокументОбъекту, а значит они будут доступны в модуле объекта или модуле подписки ПередЗаписью.
Я не очень все таки понял, что вы хотите видеть в итоге, поэтому смутно понимаю решение. Может быть вообще проще эти комментарии хранить в новой табличной части, связанной с ТЧ Товары по какому-нибудь идентификатору строки.
(20) А как идентифицируются строки ТЧ Товары? Это может быть Номенклатура или связка полей, например, Номенклатура + Серия + Характеристика. Если идентификация по полям, тогда необходимо вести контроль уникальности этих полей в ТЧ. Либо, что проще, добавить реквизит в ТЧ ИдентификаторСтроки типа УникальныйИдентификатор и заполнять его при добавлении новой строки.
Вопрос идентификации необходимо решить, чтобы понять структуру РС.
Вопрос идентификации необходимо решить, чтобы понять структуру РС.
(41) Сейчас компьютера нету под рукой и не знаю как объяснить.
В " Перем НашПараметр Экспорт;"
И "НашПараметр" передать в глобальный модуль "Подписки". А не передавать НашПараметр в подписки на события, в потом в общий модуль "Подписки".
Или я не понимаю для чего и как работают подписки на события?
В " Перем НашПараметр Экспорт;"
И "НашПараметр" передать в глобальный модуль "Подписки". А не передавать НашПараметр в подписки на события, в потом в общий модуль "Подписки".
Или я не понимаю для чего и как работают подписки на события?
(44) Если с подписками сложно, можно вообще ограничиться модулем формы документа без всяких подписок, общих модулей и модулей объекта, без передачи таблиц значений куда-либо. Пишите в РС сделанные изменения прямо в модуле формы документа в процедуре ПередЗаписью.
(46) Да, вместо:
Вставить:
И не забудьте в таком случае удалить подписку.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ЭтотОбъект.ДополнительныеСвойства.Вставить("ИзмененияКоличества", ИзмененияКоличества);
КонецПроцедуры
Вставить:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
НаборЗаписей = РегистрыСведений.ЛогРедактированияДокументов.СоздатьНаборЗаписей();
Для Каждого Стр Из ИзмененияКоличества Цикл
МассивСтрок = ПервоначальныеДанные.НайтиСтроки(Новый Структура("ИдентификаторСтроки", Стр.ИдентификаторСтроки));
Если МассивСтрок.Количество() > 0 И МассивСтрок[0].Количество = Стр.КоличествоСтало Тогда
Продолжить;
КонецЕсли;
НоваяЗапись = НаборЗаписей.Добавить();
ЗаполнитьЗначенияСвойств(НоваяЗапись, Стр);
НоваяЗапись.Документ = Ссылка;
НоваяЗапись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
КонецЦикла;
НаборЗаписей.Записать(Ложь);
КонецПроцедуры
Показать
(47)спасибо.В форму изменения количества нужно добавить таблицу, в котором должна быть таблица "Товары", документа. Добавил колонки, но данные этих колонок не заполняются. Как заполнить данные этих колонок? И вообще как скопировать таблицу "Товары" в форму изменения количества?
Колонки добавил так:
Колонки добавил так:
ЭлементыФормы.ТабТовары.Значение=ИзмененияКоличества;
ЭлементыФормы.ТабТовары.СоздатьКолонки();
(48) Достаточно так:
В ТЗ ИзмененияКоличества хранятся только текущие изменения проделанные с открытым документом. Зачем выводить эту ТЗ в форму изменения количества?
Вывести таблицу Товары на общую форму:
Форма.ТабТовары= ИзмененияКоличества;
Форма.ЭлементыФормы.ТабТовары.СоздатьКолонки();
В ТЗ ИзмененияКоличества хранятся только текущие изменения проделанные с открытым документом. Зачем выводить эту ТЗ в форму изменения количества?
Вывести таблицу Товары на общую форму:
Форма.ТабТовары= Товары.Выгрузить(, "НомерСтроки,Номенклатура,Количество");
Форма.ЭлементыФормы.ТабТовары.СоздатьКолонки();
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот