Я отвечу так:
Глобальный контекст (Global context)
ЗаполнитьЗначенияСвойств (FillPropertyValues)
Синтаксис:
ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>, <СписокСвойств>, <ИсключаяСвойства>)
Параметры:
<Приемник> (обязательный)
Тип: Произвольный.
Значение, чьи свойства будут заполнены значениями соответствующих свойств <Источника>.
<Источник> (обязательный)
Тип: Произвольный.
Значения свойств данного объекта будут установлены в соответствующие свойства <Приемника>.
<СписокСвойств> (необязательный)
Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо заполнить.
Если свойства не указаны, то копируются только те, которые представлены и в <Источнике> и в <Приемнике>.
Если свойства указаны, то они обязательно должны присутствовать в обоих объектах.
Если в <Источнике> или <Приемнике> заданное свойство отсутствует, то будет вызвано исключение.
<ИсключаяСвойства> (необязательный)
Тип: Строка.
Список имен свойств, разделенный запятыми, которые необходимо исключить из заполнения.
Описание:
Копирует значения свойств <Источника> в свойства <Приемника>. Сопоставление производится по именам свойств.
Если указаны копируемые свойства, то в заполнении участвуют только они, параметр <ИсключаяСвойства> игнорируется.
В противном случае, если указан параметр <ИсключаяСвойства>, то свойства перечисленные в нем, исключаются из обработки.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Добавлено через 12 минут
1C | ||
|
Добавлено через 3 минуты
Забыл дописать:
Параметром только передавать нельзя…
Либо так
1C | ||
|
либо так
1C | ||
|
Обязательно с директивой &наСЕРВЕРЕ
- 1 Как автоматизировать ввод основных значений в программах «1С Предприятие» и начать работать быстрее.
- 1.1 Подстановка единственного значения на который у пользователя есть права.
- 1.2 Подстановка значения по отбору, указанному в форме списка.
- 1.3 Заполнение реквизитов по статистике.
- 1.4 Подстановка значений по шаблону.
- 1.5 Ввод нового документа копированием.
- 2 Горячие клавиши в 1С Предприятие
- 3 Ввод строк и значений в новый документ копированием.
Очень часто, во время работы в программе 1С, бывает нужно быстро ввести несколько документов или добавить новые объекты в справочники (вид номенклатуры, организация, склад, касса и т.д.). При этом не у всех есть понимание, того как можно автоматизировать ввод основных значений, так, чтобы при создании сразу подставлялись в поля нужные значения. О том, как это сделать я расскажу в этой статье.
В программе 1С существуют механизмы, которые позволяют быстро заполнить значения реквизитов в документах и справочниках. По действию их можно разделить на следующие виды:
- Подстановка единственного значения
- Подстановка значения по отбору
- Заполнение реквизитов по статистике
- Подстановка ранее введенных реквизитов
- Подстановка значений по шаблону
- Ввод нового документа копированием
Подстановка единственного значения на который у пользователя есть права.
Допустим, в вашей организации есть три склада, они введены в базу. При этом менеджеру разрешено продавать товар только с какого-то одного. При создании нового документа этот склад будет подставляться автоматически. Это работает на основе установленных прав доступа у пользователя. То есть, выключая права на объекты, с которыми пользователь не работает, можно автоматизировать ввод данных.
Подстановка значения по отбору, указанному в форме списка.
Если в списке установлен отбор по какому-то реквизиту (касса, банковский счет, склад), то этот реквизит будет автоматически заполнен в новом документе. Например, вы в форме списка документов РКО устанавливаете отбор по кассе. При оформлении нового платежного документа из списка будет автоматически взята информация о выбранной кассе. И так как, для кассы указана организация, то будет автоматически заполнена информация об организации. Использовать отборы можно в любом списке документов.
Заполнение реквизитов по статистике.
Программа 1С ведет статистику ввода основных значений по каждому пользователю. В случае, если вы два раза ввели при создании нового документа одинаковые организацию, подразделение, склад, хозяйственную операцию и т.д., программа будет анализировать последние введенные значения. Таким образом, алгоритм заполнения по статистике автоматически «подстраивается» под каждого пользователя.
Если пользователь нарушает в новом документе эту цепочку, то программа это поймет и начнет подставлять через некоторое время новые значения, но в первом таком документе значения подставлены не будут.
Заполнение ранее введенных реквизитов при выборе значения другого реквизита возможно в случае если выбирается, например торговое соглашение или договор, где заполнены все основные поля (склад, график оплаты, цены и т.д.). При указании соглашения или договора в документе реквизиты будут заполнены по следующим правилам:
будут заполнены все те данные, которые были определены в соглашении или договоре;
если в соглашении или договоре не было указано какое-либо значение (например, подразделение), то это значение будет заполнено в соответствии со статистикой. Если при вводе нового документа значения были заполнены в соответствии со статистикой, то они будут перезаполнены, если они определены в соглашении или договоре.
Подстановка значений по шаблону.
Обратите внимание, когда создается новый вид номенклатуры, то можно указать значения по умолчанию, которые будут подставляется в новые объекты. При оформлении новой позиции номенклатуры данного вида эти значения будут подставляться автоматически. Еще одним примером может служить автоматическая подстановка информации о подразделении в документ, если для пользователя, оформляющего документ, определена информация о подразделении в карточке пользователя.
Ввод нового документа копированием.
Тут все просто. Если пользователь уже вводил похожий документ, то его можно скопировать и после этого поправить изменившиеся данные. Проверить все реквизиты, уделив особое внимание, такому реквизиту, как дата.
Горячие клавиши в 1С Предприятие
Открыть «Справку» системы | F1 |
Создать новый документ | Ctrl + N |
Открыть существующий документ | Ctrl + O |
Получить ссылку | Ctrl + F11 |
Перейти по ссылке | Shift + F11 |
Добавить в «Избранное» | Ctrl + D |
Открыть «Избранное» | Ctrl + Shift + B |
Открыть «История» | Ctrl + Shift + H |
Открыть встроенный «Калькулятор» | Ctrl + F2 |
Открыть «Свойства» | Alt + Enter или Ctrl + E |
Открыть / закрыть «Служебные сообщения» | Ctrl + Shift + Z |
Сохранить активный документ | Ctrl + S |
Печать активного документа | Ctrl + P |
Найти | Ctrl + F |
Найти следующий | F3 |
Найти следующий выделенный | Ctrl + F3 |
Найти предыдущий | Shift + F3 |
Найти предыдущий выделенный | Ctrl + Shift + F3 |
Развернуть (узел дерева, группу табличного документа) | Ctrl + Num+ |
Свернуть (узел дерева, группу табличного документа) | Ctrl + Num- |
Развернуть (узел дерева, группу табличного документа) и все подчиненные | Ctrl + Alt + Num+ |
Свернуть (узел дерева, группу табличного документа) и все подчиненные | Ctrl + Alt + Num- |
Ввод строк и значений в новый документ копированием.
Чтобы перенести строки из одного документа в другой их нужно выделить, нажимая левой кнопкой мыши с зажатой кнопкой Ctrl. Выделить все строки табличной части (ТЧ) можно нажав Ctrl + A. После этого, щелкнув правой кнопкой мыши по выделенному, мы открываем контекстное меню и выбираем пункт «Скопировать строки».
После этого открываем новый документ или тот, куда хотим их скопировать и нажимаем в табличной части «Вставить строки». Так можно переносить позиции номенклатуры между документами в рамках одной базы.
Вот основные способы облегчить ввод однотипных документов и справочников и строк в их ТЧ. Обязательно используйте их в своей повседневной работе
Автоматическое заполнение реквизита при проведении |
Я |
07.07.22 — 14:24
конфигурация Комплексная Автоматизация 2.4
нужно, чтобы при проведении документа автоматически заполнялась форма «Платежно-расчетные документы» и попадало в реквизит Платежно-расчетные документы на форму документа https://ibb.co/pdfHwmm
что сделала:
добавила расширение, в расширение добавила процедуру ПровестиДокументПосле(Команда), туда прописала получение формы
Форма = ПолучитьФорму(«Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы»);
в модуле формы «Платежно-расчетные документы» есть процедура, по ней и происходит заполнение
&НаСервере
Процедура ЗаполнитьПлатежноРасчетныеДокументыСервер()
ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
Организация);
ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
КонецПроцедуры
Как мне передать эту процедуру в расширение моей процедуры? https://ibb.co/80bMhHz
1 — 07.07.22 — 14:26
начинающий программист, поэтому не понимаю пока как это реализовать
2 — 07.07.22 — 14:26
Запполнять при проведении текущий документ — это не наш метод, заполнять нужно перед записью
3 — 07.07.22 — 14:29
(0) «при проведении» вы объект не сможете модифицировать так как уже открыта транзакция на запись. Максимум вы можете перед записью что-то до заполнить.
4 — 07.07.22 — 14:31
(2) (3) поняла, спасибо. а как вытянуть процедуру с формы документа в расширение?
5 — 07.07.22 — 14:32
(4) вы собираетесь из модуля объекта дергать процедуры формы?)
6 — 07.07.22 — 14:41
(5) Нет, думаю что нужно написать так https://ibb.co/d51rvdK , но ругается, что обращаюсь к объекту на клиенте
7 — 07.07.22 — 14:52
(6)Можно вытащить в серверную функцию, но ИМХО не совсем понятно по коду, для чего это нужно.
8 — 07.07.22 — 14:55
(6) Ну так и обращайся НаСервере
9 — 07.07.22 — 15:04
(7) нужно, чтобы при проведении документа автоматически заполнялась форма «Платежно-расчетные документы» и попадало в реквизит Платежно-расчетные документы на форму документа https://ibb.co/pdfHwmm
в модуле формы «Платежно-расчетные документы» прописывается эта процедура по заполнению
&НаСервере
Процедура ЗаполнитьПлатежноРасчетныеДокументыСервер()
ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
Организация);
ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
КонецПроцедуры
я могу воспользоваться этим кодом в процедуре «ПередЗаписью» документа или вообще не в том направлении иду?
10 — 07.07.22 — 15:07
Да
11 — 07.07.22 — 15:19
написала так
&НаКлиенте
Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
ПРД_ПередЗаписьюПослеСервер();
КонецПроцедуры
&НаСервере
Процедура ПРД_ПередЗаписьюПослеСервер()
форма = Документы.СчетФактураВыданный.ПолучитьФорму(«ФормаПлатежноРасчетныеДокументы»);
ТаблицаПлатежноРасчетныеДокументы = форма.ПлатежноРасчетныеДокументы.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
форма.Организация);
форма.ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
КонецПроцедуры
выдает ошибку при проведении дока:
Интерактивные операции недоступны
{ЗаполнитьПРД Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(9)}:форма = Документы.СчетФактураВыданный.ПолучитьФорму(«ФормаПлатежноРасчетныеДокументы»);
{ЗаполнитьПРД Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(4)}:ПРД_ПередЗаписьюПослеСервер();
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1472)}:Результат = Форма.Записать(ПараметрыЗаписи);
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1425)}:ЗаписатьОбъект(Форма, ПараметрыЗаписи);
{Документ.СчетФактураВыданный.Форма.ФормаДокумента.Форма(537)}:ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
по причине:
Интерактивные операции недоступны (10)
12 — 07.07.22 — 15:28
Форма — на клиенте, а объект и запись объекта — на сервере
13 — 07.07.22 — 15:37
(12) &НаКлиенте
Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
Форма = ПолучитьФорму(«Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы»);
ПРД_ПередЗаписьюПослеСервер();
КонецПроцедуры
&НаСервере
Процедура ПРД_ПередЗаписьюПослеСервер()
ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
Организация);
ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
КонецПроцедуры
ПлатежноРасчетныеДокументы, Организация — переменные неопределены, так как они с другой формы этого документа
14 — 07.07.22 — 15:41
(11) (13) » Форма = ПолучитьФорму(«Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы»);» — зачем вам вообще форма нужна?
ПлатежноРасчетныеДокументы, Организация — переменные неопределены — ну так откуда 1ска знает, что такое ПлатежноРасчетныеДокументы и как их можно .Выгрузить(); ?
Вместо Форма.ПлатежноРасчетныеДокументы.Выгрузить(); — вы можете сделать запрос и получить нужную таблицу.
Вместо «форма.Организация» — вы можете использовать ЭтотОъект.Организация (а если вы в модуле объекта, то просто Организация)
15 — 07.07.22 — 16:45
(14) теперь с запросом беда
&НаКлиенте
Процедура ПРД_ПередЗаписьюПосле(Отказ, ПараметрыЗаписи)
ПРД_ПередЗаписьюПослеСервер();
КонецПроцедуры
&НаСервере
Процедура ПРД_ПередЗаписьюПослеСервер()
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы
|ГДЕ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка = &Ссылка»;
Запрос.УстановитьПараметр(«Ссылка», документы.СчетФактураВыданный);
РезультатЗапроса = Запрос.Выполнить();
ТаблицаЗначений = РезультатЗапроса.Выгрузить();
Для Каждого ТекущаяСтрокаТаблицы Из ТаблицаЗначений Цикл
Таблица = ТаблицаЗначений.ссылка;
КонецЦикла;
ТаблицаПлатежноРасчетныеДокументы = Таблица.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
ЭтотОбъект.Организация);
Таблица.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
КонецПроцедуры
ошибка
Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка <<?>>= &Ссылка
16 — 07.07.22 — 16:46
(14) какой параметр нужно передавать?
17 — 07.07.22 — 16:52
(15) беда — это точно))
Попробую обрисовать вам ситуацию, что вы попытались в запросе сделать))
Приходите вы такая в больницу в регистратуру, чтобы получить там свою карточку медицинскую. Подходите в окошечку и говорите тетеньке, мол найдите мою мед карту, она у вас спрашивает, уточните, а кто вы, кого искать? А вы такая берете и суете ей свою мед карту, мол смотрите кто я)
Запрос.Текст =
«ВЫБРАТЬ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетФактураВыданный.ПлатежноРасчетныеДокументы КАК СчетФактураВыданныйПлатежноРасчетныеДокументы
|ГДЕ
| СчетФактураВыданныйПлатежноРасчетныеДокументы.Ссылка = &Ссылка»;
18 — 07.07.22 — 17:01
Проще наверное вам вот так ТЗ получить:
Док=Документы.СчетФактураВыданный.СоздатьДокумент();
ТаблицаПлатежноРасчетныеДокументы =Док.ПлатежноРасчетныеДокументы.Выгрузить();
19 — 07.07.22 — 17:04
Не туды уехали.
КА нет под рукой, но судя по (0) ПлатежноРасчетныеДокументы — это табличная часть документа СчетФактураВыданный.
Заполняется она не в форме ФормаПлатежноРасчетныеДокументы а в процедуре ЗаполнитьПлатежноРасчетныеДокументы модуля документа СчетФактураВыданный
Значит перехватить надо призаписи (после) документа СчетФактураВыданный вкорячив в нее
ТаблицаПлатежноРасчетныеДокументы = ПлатежноРасчетныеДокументы.Выгрузить();
Документы.СчетФактураВыданный.ЗаполнитьПлатежноРасчетныеДокументы(
ТаблицаПлатежноРасчетныеДокументы,
СписокОснований.ВыгрузитьЗначения(),
Организация);
ПлатежноРасчетныеДокументы.Загрузить(ТаблицаПлатежноРасчетныеДокументы);
20 — 07.07.22 — 21:32
(19) подскажите, что передать в список оснований?
21 — 07.07.22 — 21:56
(20) Скорее всего СписокОснований реквизит формы ФормаПлатежноРасчетныеДокументы который заполняется при ее открытии из формы документа
Надо в отладчике походить и посмотреть что там
22 — 07.07.22 — 22:09
(21) да, всё так
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство(«АвтоТест») Тогда
Возврат;
КонецЕсли;
Параметры.Свойство(«Организация», Организация);
Параметры.Свойство(«СписокОснований», СписокОснований);
Если Параметры.Свойство(«ДокументОснование») Тогда
СписокОснований.Добавить(Параметры.ДокументОснование);
КонецЕсли;
Если Параметры.Свойство(«АдресВХранилище») Тогда
ПлатежноРасчетныеДокументы.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище));
КонецЕсли;
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
23 — 07.07.22 — 22:12
(22) Ну так и подсунь в список основанийчто он там получает в присозданиинасервере
24 — 07.07.22 — 22:14
(23) получить документ основание?
25 — 07.07.22 — 22:21
(24) Не играй в угадайку.
Параметры.Свойство(«СписокОснований», СписокОснований); — тут заполняется список оснований из параметров переданный в форму.
Найти место где список оснований заполняется перед открытием формы.
26 — 07.07.22 — 22:54
(25)он создан на форме с типом «СписокЗначений», в модуле формы не описано где этот список заполняется, не понимаю куда смотреть
27 — 07.07.22 — 22:58
(26) https://ibb.co/pdfHwmm
при нажатии на гиперссылку открывается окно. вот в процедуре обработчике и ищи заполнение
28 — 07.07.22 — 23:16
при нажатии попадает на эту процедуру
&НаКлиенте
Процедура ПлатежноРасчетныеДокументыСтрокойНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить(«Организация», Объект.Организация);
ПараметрыФормы.Вставить(«СписокОснований», СписокОснований);
ПараметрыФормы.Вставить(«АдресВХранилище», ПоместитьПлатежноРасчетныеДокументыВХранилище());
НовыйАдресВХранилище = Неопределено;
ОткрытьФорму(
«Документ.СчетФактураВыданный.Форма.ФормаПлатежноРасчетныеДокументы»,
ПараметрыФормы,,,,, Новый ОписаниеОповещения(«ПлатежноРасчетныеДокументыСтрокойНажатиеЗавершение», ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры (27)
29 — 07.07.22 — 23:19
(28) ну вот он
ПараметрыФормы.Вставить(«СписокОснований», СписокОснований);
В форме документа есть реквизит СписокОснований значит в перехватчике при записи ничего менять не надо
30 — 07.07.22 — 23:27
(29) получается перехватчик делать процедуры «ПриЗаписи» у модуля формы документа? все это время делала перехват в модуле объекта
31 — 07.07.22 — 23:30
(30) В первом случае обработчик будет работать только при интерактивной записи.
Во втором — при интерактивной и при программной.
Решай как надо
32 — 07.07.22 — 23:36
(31) а как быть во втором случае со списком оснований?
33 — 07.07.22 — 23:42
(32) Формировать его самостоятельно. Толькоу тебя будет не список оснований а список значений.
Поройся в коде и структуре жддокумента счета фактуры — он где то формируется динамическеи, или сохраняется — от наркоманов, которые пилят типовые всего можно ожидать.
Natali15
34 — 07.07.22 — 23:44
(33) спасибо вам