Как записать значение в реквизит документа 1с

как записать данные в реквизит на упр форме ?

Я
   Taiska

28.01.14 — 00:54

как записать данные в реквизит на упр форме ?

  

Партнерская программа EFSOL Oblako

   Ork

1 — 28.01.14 — 00:56

Объект.<ИмяРеквизита> = …

   Taiska

2 — 28.01.14 — 00:57

это реквизит объекта  а мне нужен реквизит на форме. он не входит в объект он отдельно

   Yea-Yea

3 — 28.01.14 — 00:58

(1) казалось бы, причем здесь «Объект»…

   Yea-Yea

4 — 28.01.14 — 00:59

<ИмяРеквизита> = …

   Ork

5 — 28.01.14 — 01:00

.<ИмяРеквизита> = …

   Taiska

6 — 28.01.14 — 01:02

Сотр  = справочники.Сотрудники.Выбрать();

    пока сотр.Следующий() цикл

        физлицо = справочники.ФизическиеЛица.НайтиПоНаименованию(сокрлп(сотр.Наименование));

        сотрудник = сотр.ПолучитьОбъект();

        сотрудник.ГоловнаяОрганизация = организация;

        сотрудник.ТекущаяОрганизация =    организация;

        форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);//.ЭлементыФормы.Найти(«ТекущаяОрганизация»);

        форма.ЭлементыФормы.ТекущаяОрганизация = организация;

   Taiska

7 — 28.01.14 — 01:02

пишется ошибка поле объекта не обнаружено текущаяорганизация

   Yea-Yea

8 — 28.01.14 — 01:03

Жесть ведь. Да?

   Taiska

9 — 28.01.14 — 01:04

(8) мне не до шуток я специально спать не пошла  — надо сделать а давно хочу…

   Dethmont

10 — 28.01.14 — 01:58

(0) Сначала попробуй разобраться что такое Упр формы…

   Taiska

11 — 28.01.14 — 12:56

ап

   Taiska

12 — 28.01.14 — 13:04

ап ап ап

   1dvd

13 — 28.01.14 — 13:05

форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);//.ЭлементыФормы.Найти(«ТекущаяОрганизация»);

        форма.ТекущаяОрганизация = организация;

   Taiska

14 — 28.01.14 — 13:44

ту же ошибку пишет… может потому чо на сервере вызываю..

   Asmody

15 — 28.01.14 — 13:48

давайте сначала. где и как вы пытаетесь это сделать?

   Taiska

16 — 28.01.14 — 13:51

во внешней обработке. в модуле формы.

&НаКлиенте

Процедура Команда1(Команда)

    ОКНаСервере();

КонецПроцедуры

&НаСервере

Процедура ОКНаСервере()

    орг = справочники.Организации.выбрать();

    пока орг.Следующий()  цикл

        организация  = орг.Ссылка;

    конеццикла;

    Сотр  = справочники.Сотрудники.Выбрать();

    пока сотр.Следующий() цикл

        физлицо = справочники.ФизическиеЛица.НайтиПоНаименованию(сокрлп(сотр.Наименование));

        сотрудник = сотр.ПолучитьОбъект();

        сотрудник.ГоловнаяОрганизация = организация;

        форма = сотрудник.ПолучитьФорму(«ФормаЭлемента»);

        форма.ЭлементыФормы.ТекущаяОрганизация = организация;

        Сообщить(«организация «+организация);

        попытка

        сотрудник.ФизическоеЛицо = физлицо;

        Сообщить(«физлицо «+ физлицо);

    исключение

        конецпопытки;

        сотрудник.Записать();

        сообщить(«записан «+сотрудник);

        конеццикла;

КонецПроцедуры

   Gbpltw

17 — 28.01.14 — 13:54

я щяс зарыдаю, посыплю голову пеплом и уйду в монастырь, женский…

где  хотя-бы «Орг=Справочники.Организации.НайтиПоКоду(«__»);

запросы  — нне, не надо?

   Taiska

18 — 28.01.14 — 13:56

там одна организация и выбирает он одну. и сотрудников 15 — зачем запрос.

   Люблю 1с

19 — 28.01.14 — 14:05

(14) гениально. не прошло и суток, как вы поняли смысл своей ошибки из (6)

   Люблю 1с

20 — 28.01.14 — 14:07

(18) самописная конфа?

   Taiska

21 — 28.01.14 — 14:16

но на клиенте тоже не работает((((

   Taiska

22 — 28.01.14 — 14:16

обычная бп 3.0… посоветуйте как сделать чтоб работала  а то только осуждать горазды а дельных советов 0!

   Люблю 1с

23 — 28.01.14 — 14:25

(21)так может-таки покажете полный вариант кода? текущее его состояние

   Kurbash

24 — 28.01.14 — 14:38

я чет не пойму-нафиг так? просто ЭтаФОрма.Реквизит=…

   Taiska

25 — 28.01.14 — 14:39

не работает так(24)

   Taiska

26 — 28.01.14 — 14:39

я из обработки вызываю форму

   1dvd

27 — 28.01.14 — 14:42

(26) в той форме точно есть такой реквизит?

   Kurbash

28 — 28.01.14 — 14:42

а открываешь?

   kotokent

29 — 28.01.14 — 14:42

ЭтаФорма.»Имя»

   Kurbash

30 — 28.01.14 — 14:43

и по моему в УФ нет ЭлементыФормы. есть просто ИмяФормы.Реквизит

   kotokent

31 — 28.01.14 — 14:45

(26) Вызываешь форму обработки или общую или…???

   Enders

32 — 28.01.14 — 14:45

В УФ элементы, а не ЭлементыФормы)

   kotokent

33 — 28.01.14 — 14:48

Объект.А11

   George Wheels

34 — 28.01.14 — 14:49

Если у этого реквизита формы не установлена галка «Сохраняемые данные», то заполнять нужно в событии ПриСозданииНаСервере.

   George Wheels

35 — 28.01.14 — 14:55

Глянул в БП 3.0.

ТекущаяОрганизация это реквизит справочника.

   Taiska

36 — 28.01.14 — 16:00

там в справочнике Сотрудники есть только реквизит УдалитьТекущаяОрганизация а ТекущаяОрганизация нет — у меня самы последний релиз стоит. еслиб был реквизит вообще не было бы вопросов как записать

   Taiska

37 — 28.01.14 — 16:00

там есть ГоловнаяОрганизация но это другой реквизит

   George Wheels

38 — 28.01.14 — 16:22

(36) Значит ТекущаяОрганизация теперь хранится в каком-то регистре сведений. У меня не установлен последний релиз.

  

Taiska

39 — 28.01.14 — 16:47

спасибо всем. простите если ругалась.

Как записать значение в реквизит (не объект) формы

Автор juuli_J, 29 апр 2022, 17:44

0 Пользователей и 1 гость просматривают эту тему.

Добрый день! Уже долго не могу разобраться, подскажите, как правильно программно занести из общей формы значение в реквизит формы документа, который НЕ является объектом и имеет тип строка. Пробовала так:

НовыйДокументЗаявка = Документы.СЦ_ПриемВРемонт.СоздатьДокумент();
Если СоздатьКонтрагента = 1 Тогда
  Форма = НовыйДокументЗаявка.ПолучитьФорму("ФормаДокумента");
  Форма.ПояснениеРежимВвода = НСтр("ru = 'Создан новый контрагент'");
Иначе
  Форма.ПояснениеРежимВвода = НСтр("ru = 'Выбран контрагент из списка имеющихся'");
КонецЕсли;


да вроде все правильно, форма через точку имя реквизита
только следите за совпадением типов

если помогло нажмите: Спасибо!


LexaK, вылетает ошибка «Интерактивные операции недоступны». В чем может быть дело?


LexaK, Точнее ошибка: «Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = НовыйДокументЗаявка.ПолучитьФорму(«ФормаДокумента»); по причине Интерактивные операции недоступны»


juuli_J, попробуйте такой код, и проверьте что бы он выполнялся в контексте &НаКлиенте

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

если помогло нажмите: Спасибо!


Ага, понял. Попробую — отпишусь

Добавлено через 13 часов 30 минут
смотрите, что получилось

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Если ИзвлечениеИзПроизводства.Пустая() тогда
        ДокументИзвлечение = Документы.ИзвлечениеТоваровИзПроизводства.СоздатьДокумент();
    Иначе
        ДокументИзвлечение = ИзвлечениеИзПроизводства.Ссылка.ПолучитьОбъект();
        ДокументИзвлечение.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    КонецЕсли;
    
    ДокументИзвлечение.Заполнить(ЗаказНаряд);
    
    ДокументИзвлечение.Дата = Дата - 1;
    ДокументИзвлечение.УстановитьНовыйНомер();
    
    ДокументИзвлечение.СкладКомпании = СкладКомпании;
    ДокументИзвлечение.Цех = ЗаказНаряд.Цех;
    
    //Александр Савенко. заполняю значения Отпустил, Получил
    
    ЗаписьВРегистр = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    СвойствоПроверен = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Проверен").Ссылка;
    ЗаписьВРегистр.Отбор.Объект.Установить(ДокументИзвлечение);
    ЗаписьВРегистр.Отбор.Свойство.Установить(СвойствоПроверен);
    ЗаписьВРегистр.Прочитать();
    ЗаписьВРегистр.Очистить();
    НоваяЗапись = ЗаписьВРегистр.Добавить();
    НоваяЗапись.Объект = ДокументИзвлечение;
    НоваяЗапись.Свойство = СвойствоПроверен;
    НоваяЗапись.Отпустил = Справочники.Сотрудники.НайтиПоКоду("ПТ00001152");
    НоваяЗапись.Получил = Справочники.Сотрудники.НайтиПоКоду("ПТ00000090");

при этом ругается на
{ВнешняяОбработка.ВнутренняяРеализацияТоваров.Форм а.БыстраяПродажа.Форма(710)}: Поле объекта не обнаружено (Отпустил)
НоваяЗапись.Отпустил = Справочники.Сотрудники.НайтиПоКоду(«ПТ00001152»);

1C
1
НоваяЗапись.Отпустил  //действильно нет такого значения

Добавлено через 7 минут
при этом

1C
1
2
НоваяЗапись.Объект = ДокументИзвлечение;    //  Неопределено
//хотя ДокументИзвлечение вычисляется, как ДокументОбъект.ИзвлечениеТоваровИзПроизводства

Добавлено через 2 часа 4 минуты
разобрался, в чем причина. изначально документ нужно было записать, а затем впихивать в него какие то реквизиты. а я пытался впихнуть в неизвестно что.

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.


Google maps : вывод точек на карту и режим панорамы 8
В отличие от яндекс карт в GMaps можно использовать панорамы — за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С возможностью просмотра панора


Google maps, поиск оптимального маршрута 5
В данном посте хочу коснуться основных аспектов построения оптимального маршрута с использованием API Google maps. Исходные данные для построения маршрута:
* Географические координаты объектов, которые хранятся в базе;
* Координаты начальной и коне


Посмотреть все результаты поиска похожих

В этой статье научимся приемами программного создания и заполнения документов в 1С 8.3, кроме того, мы узнаем, как программно записывать и проводить документ 1С,  а также узнаем, как программно открыть основную форму документа.

Прежде чем мы начнем разбирать вопросы программной работы с документами в 1С 8.3, хочу обратить Ваше внимание, что на управляемой форме в режиме тонкого клиента мы можем программно работать (создавать, записывать и проводить) с документами только в серверном контексте. То есть, ваша процедура или функция должна выполняться под директивами &НаСервере или &НаСервереБезКонтекста.

Все примеры в этой статье я буду показывать на управляемой форме обработки, которую создал «за кадром».

Создать документ 1С программно

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

Реквизиты документа в 1С 8.3

Для программного создания документов, я сделал обработку. У этой обработки , я разработал форму и создал команду управляемой формы, которую назвал  «Создать документ прихода», поместив её на форму обработки.

Форма обработки для создания документа

Для этой команды, я сделаю обработчики на клиенте и на сервере.

Создание обработчиков команды

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

&НаСервере
Процедура СоздатьДокументПриходаНаСервере()

    ДокПриход = Документы.ПриходТовара.СоздатьДокумент();

КонецПроцедуры

&НаКлиенте
Процедура СоздатьДокументПрихода(Команда)
    СоздатьДокументПриходаНаСервере();
КонецПроцедуры

В этом коде я обратился к менеджеру документа ПриходТовара  (строка Документы.ПриходТовара), и использовал функцию менеджера документа СоздатьДокумент, которая и создает документ-объект. Переменная ДокПриход, которую мы создали будет иметь тип ДокументОбъект.ПриходТовара.

Следующим шагом, я присвою дату этому документу, для простоты, это будет текущая дата.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();

Номер я присваивать не буду, потому что у объекта моего документа включено свойство Автонумерация.

Свойство автонумерация документа

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

Записать документ 1С программно

Для того, чтобы документ 1С появился в базе, его необходимо записать.  Делается это при помощи метода документа-объекта Записать. Этот метод позволяет и записать, и провести документ. Он имеет два параметра, которые я разберу ниже. Но, метод Записать также можно использовать и без параметров, тогда он будет просто записывать документ. Что мы и сделаем.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Записать();

Все теперь документ появится в базе.

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

Создание пустого документа

Для того, чтобы что-то в нем появилось, нам необходимо заполнить этот документ.

Заполнить документ 1С программно

У нашего документа два реквизита «шапки» – Склад и Комментарий. Создадим на форме обработки реквизит управляемой формы Склад с соответствующим типом, для последующей записи его в шапку документа, а реквизит комментарий заполним в ручную.

Создание реквизита управляемой формы

Присвоим реквизитам созданного объекта-документа нужные значения, просто обратившись через точку к этим реквизитам.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = "#Документ создан автоматически обработкой"
ДокПриход.Записать();

Так мы заполнили реквизиты «шапки», но у нас имеется еще табличная часть документа, необходимо заполнить и её. Для её заполнения, я создам таблицу значений в качестве реквизита формы обработки, и помещу её на эту форму.

Таблица значений на управляемой формеМы будем в цикле обходить эту таблицу значений, создавая в каждой итерации цикла новую строку табличной части документа и заполняя её данными.

ДокПриход = Документы.ПриходТовара.СоздатьДокумент();
ДокПриход.Дата = ТекущаяДата();
ДокПриход.Склад = Склад;
ДокПриход.Комментарий = "#Документ создан автоматически обработкой";
Для Каждого стрТЗ Из ТЗ Цикл
    НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить();
    НовСтрТЧДокумента.Номенклатура = стрТЗ.Номенклатура;
    НовСтрТЧДокумента.Количество   = стрТЗ.Количество;
    НовСтрТЧДокумента.Цена         = стрТЗ.Цена;
    НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;
ДокПриход.Записать();

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

Для Каждого стрТЗ Из ТЗ Цикл
    НовСтрТЧДокумента = ДокПриход.СписокТоваров.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтрТЧДокумента,стрТЗ);
    НовСтрТЧДокумента.Сумма = НовСтрТЧДокумента.Количество*НовСтрТЧДокумента.Цена;
КонецЦикла;


Всё! Мы можем смело создать документ, который будет заполнен.

Создание и заполнение документа 1С

Создание и заполнение документа 1С

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

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

Записать(<РежимЗаписи>,<РежимПроведения>)

Оба параметра это системные перечисления. Первый параметр это перечисление РежимЗаписиДокумента, которое может принимать следующие значения:

РежимЗаписиДокумента.Запись
РежимЗаписиДокумента.Проведение
РежимЗаписиДокумента.ОтменаПроведения

Т.е. мы можем записать документ, провести документ и отменить проведение документа.

Во втором параметр РежимПроведения необходимо указывать системное перечисление РежимПроведениеДокумента, которое может принимать следующие значения:

РежимПроведенияДокумента.Неоперативный
РежимПроведенияДокумента.Оперативный

Т.е. мы можем провести документ как в оперативном режиме, так и в неоперативном. Если этот параметр не указан, то документ проводится в неоперативном режиме.

Изменим запись нашего документа: пусть он проводится в оперативном режиме.

ДокПриход.Записать(РежимЗаписиДокумента.Проведение,
                   РежимПроведенияДокумента.Оперативный);

Теперь документ будет сразу проведен при создании.

Изменить документ 1С программно

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

Обработка изменения документа

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

&НаСервере
Процедура ИзменитьДокументНаСервере()

    ДокОбъект = ДокументПрихода.ПолучитьОбъект();

КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДокумент(Команда)
    ИзменитьДокументНаСервере();
КонецПроцедуры

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

Изменим склад и проведем документ. В этот раз проведем в неоперативном режиме.

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


Открыть документ 1С программно

Научимся открывать документ 1С программно. Для этого мы доработаем предыдущую обработку: после изменения документа откроем основную форму этого объекта для просмотра и возможного редактирования. Для открытия формы документа, мы будем использовать метод  ОткрытьФорму, в котором будем использовать параметр Ключ, где укажем ссылку на открываемый документ.

&НаСервере
Процедура ИзменитьДокументНаСервере()
    ДокОбъект = ДокументПрихода.ПолучитьОбъект();
    ДокОбъект.Склад = Склад;
    ДокОбъект.Записать(РежимЗаписиДокумента.Проведение,
                       РежимПроведенияДокумента.Неоперативный);
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьДокумент(Команда)
    ИзменитьДокументНаСервере();
    ПараметрыОткрытия = Новый Структура("Ключ",ДокументПрихода);
    ОткрытьФорму("Документ.ПриходТовара.ФормаОбъекта",
                 ПараметрыОткрытия,,,,,,
                 РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
КонецПроцедуры

Если мы сейчас выполним этот код, то откроется форма документа, с уже измененным реквизитом Склад.

Обработка изменения документа

Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

  • АКТУАЛЬНЫЕ РЕЛИЗЫ 1С
  • ПРИМЕРЫ КОДА НА ПЛАТФОРМЕ 1С
Документы в 1С 8.x
  • Как создать новый документ?
  • Как найти документ?
  • Как открыть форму документа?
  • Как изменить значение реквизита и записать документ?
  • Как добавить строку в табличную часть документа, имея ссылку на документ?
  • Как удалить строки из табличной части документа?
  • Как перебрать строки документа?
  • Как выгрузить табличную часть документа?
  • Как посчитать итог в табличной части документа?
  • Как провести документ?
  • Как перебрать документы?
  • Как пометить на удаление все приходные накладные?
  • Как, имея ссылку на документ, создать в базе его копию?
  • Как, имея ссылку на документ, прочитать его движения по регистру?
  • Как определить, по каким регистрам документ выполнил движения?
  • Как в табличной части документа удалить строки с нулевым значением реквизита «Количество»?
  • Как очистить колонку «СтавкаНДС» в табличном поле «Товары» уже заполненного документа?
  • Как заполнить значения свойств нового документа на основании существующего?
  • Как получить перечень приходных накладных, в которых не заполнены номенклатурные позиции?
  • Как на дату расходной накладной определить курс валюты управленческого учета? Валюта управленческого учета храниться в периодическом регистре сведений.
  • Как из формы документа вызвать его неоперативное проведение?
  • Как в обработке проведения получить остатки, актуальные на позицию документа?
  • Как определить количество документов и количество разных значений реквизита в таблице записей документа?
  • В последовательность «ПартионныйУчет» добавлено измерение «Организация». Как теперь получить данные по границам последовательности для каждого значения этого измерения?
  • Как быстро получить информацию, по всем объектам, находящимся в компетенции конкретного менеджера (элемент справочника «Пользователи») по продажам?

Как создать новый документ?

НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент(); 
НовыйДокумент.Дата = ТекущаяДата();          
Как найти документ?

ИскомыйДокумент = Документы.РеализацияТоваровУслуг.НайтиПоНомеру(НомерДок, Дата(2005, 1, 1)); 
Если НЕ ИскомыйДокумент.Пустая() Тогда 
	// Выполнить действия в случае обнаружения такого документа. … 
КонецЕсли;          
Как открыть форму документа?

Форма = ИскомыйДокумент.ПолучитьФорму(); 
Форма.Открыть();          
Как изменить значение реквизита и записать документ?

ДокОбъект = СсылкаНаДокумент.ПолучитьОбъект(); 
ДокОбъект.Ответственный = глТекущийПользователь; 
ДокОбъект.Записать(); 

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

// Запись с отменой проведения
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);          
Как добавить строку в табличную часть документа, имея ссылку на документ?

ОбъектДок = Док.ПолучитьОбъект(); 
НоваяСтрока = ОбъектДок.Товары.Добавить(); 

// Заполнить значения реквизитов. 
НоваяСтрока.Количество = 10; 
НоваяСтрока.Цена = 55;  

// Записать документ. 
ОбъектДок.Записать();          
Как удалить строки из табличной части документа?

ОбъектДокумента = Документ.ПолучитьОбъект(); 
ОбъектДокумента.Товары.Очистить();          
Как перебрать строки документа?

Для Каждого ТекущаяСтрока Из Документ.Товары Цикл 
	// Действия со строкой табличной части. 
КонецЦикла; 


СтаршийИндекс = Документ.Товары.Количество() - 1; 
Для Сч = 0 по СтаршийИндекс Цикл 
	// Действия со строкой табличной части.
КонецЦикла;          
Как выгрузить табличную часть документа?

ТаблицаТоваровДокумента = Документ.Товары.Выгрузить();          
Как посчитать итог в табличной части документа?

ВсегоПоКолонкеСумма = Документ.Товары.Итог("Сумма");         
Как провести документ?

НужныйДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);          
Как перебрать документы?

ВыборкаДокументов = Документы.Расходная.Выбрать(НачалоГода(ТекущаяДата()), КонецГода(ТекущаяДата())); 
Пока ВыборкаДокументов.Следующий() Цикл 
	// Действия с документом - элементом выборки, 
	// его значение содержится в переменной ВыборкаДокументов 
КонецЦикла 


Запрос = Новый Запрос; 
Запрос.Текст = " 
	|ВЫБРАТЬ 
	|	РеализацияТоваровУслуг.Ссылка 
	|ИЗ 
	|	Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг 
	|ГДЕ 
	|	РеализацияТоваровУслуг.Контрагент = &Контрагент 
	|	И 
	|	(РеализацияТоваровУслуг.Номер < 100 | ИЛИ | РеализацияТоваровУслуг.Дата < ДАТАВРЕМЯ(2005, 1, 1)) 
	|	И 
	|	РеализацияТоваровУслуг.Товары.Номенклатура В ИЕРАРХИИ(&Номенклатура)"; 

Запрос.УстановитьПараметр("Контрагент", ОтбКонтрагент); 
Запрос.УстановитьПараметр("Номенклатура", ОтбНоменклатура); 

Результат = Запрос.Выполнить(); 
Выборка = Результат.Выбрать(); 
Пока Выборка.Следующий() Цикл 
	// действия с документом - элементом выборки, 
	// его значение содержится в переменной Выборка 
КонецЦикла;         
Как пометить на удаление все приходные накладные?

ДокументыВида = Документы.ПоступлениеТоваровУслуг.Выбрать(); 
Пока ДокументыВида.Следующий() Цикл 
	ДокОбъект = ДокументыВида.ПолучитьОбъект(); 
	ДокОбъект.УстановитьПометкуУдаления(Истина); 
КонецЦикла;          
Как, имея ссылку на документ, создать в базе его копию?

ДокументКопия = ИсходныйДокумент.Скопировать(); 
ДокументКопия.Дата = РабочаяДата; 
ДокументКопия.Записать(); 

ДокументКопия.Дата = ИсходныйДокумент.Дата;          
Как, имея ссылку на документ, прочитать его движения по регистру?

Запрос = Новый Запрос; 
Запрос.Текст ="ВЫБРАТЬ * 
	|ИЗ 
	|	РегистрНакопления.ОстаткиНоменклатуры КАК ОстаткиНоменклатуры 
	|ГДЕ 
	|	ОстаткиНоменклатуры.Регистратор = &Регистратор"; 

Запрос.УстановитьПараметр("Регистратор", ПолеВводаРегистратор); 

НаборЗаписейРегистра = Движения.ОстаткиНоменклатуры; 
НаборЗаписейРегистра.Прочитать(); 
Для Каждого Запись из НаборЗаписейРегистра Цикл 
	// Чтение и модификация очередного движения. 
КонецЦикла; 


Для Каждого НаборЗаписейРегистра из Движения Цикл 
	НаборЗаписейРегистра.Прочитать(); 
	Для Каждого Запись из НаборЗаписейРегистра Цикл 
		// Чтение и модификация очередного движения. 
	КонецЦикла; 
КонецЦикла;          
Как определить, по каким регистрам документ выполнил движения?

ВЫБРАТЬ ПЕРВЫЕ 1 
	"Внутренние заказы" КАК Регистр 
ИЗ 
	РегистрНакопления.ВнутренниеЗаказы КАК ВнутренниеЗаказы 
ГДЕ 
	ВнутренниеЗаказы.Регистратор = &Регистратор 

ОБЪЕДИНИТЬ 

ВЫБРАТЬ ПЕРВЫЕ 1 
	"Заказы поставщикам" КАК Регистр 
ИЗ 
	РегистрНакопления.ЗаказыПоставщикам КАК ЗаказыПоставщикам 
ГДЕ 
	ЗаказыПоставщикам.Регистратор = &Регистратор 

ОБЪЕДИНИТЬ 

ВЫБРАТЬ ПЕРВЫЕ 1 
	"Размещение заказов покупателей" КАК Регистр 
ИЗ 
	РегистрНакопления.РазмещениеЗаказовПокупателей КАК РазмещениеЗаказовПокупателей 
ГДЕ 
	РазмещениеЗаказовПокупателей.Регистратор = &Регистратор 

ОБЪЕДИНИТЬ 

ВЫБРАТЬ ПЕРВЫЕ 1 
	"Товары в резерве на складах" КАК Регистр 
ИЗ 
	РегистрНакопления.ТоварыВРезервеНаСкладах КАК ТоварыВРезервеНаСкладах 
ГДЕ 
	ТоварыВРезервеНаСкладах.Регистратор = &Регистратор          
Как в табличной части документа удалить строки с нулевым значением реквизита «Количество»?

ОбъектДок = СсылкаДок.ПолучитьОбъект(); 
СтруктураДляПоиска = Новый Структура("Количество", 0); 

ТабличнаяЧастьДок = ОбъектДок.Товары; 
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска); 

Для каждого Строка Из МассивПустыхСтрок Цикл 
	ТабличнаяЧастьДок.Удалить(Строка); 
КонецЦикла; 

ОбъектДок.Записать(); 

СтруктураДляПоиска = Новый Структура("Количество", 0); 

МассивПустыхСтрок = Товары.НайтиСтроки(СтруктураДляПоиска); 

Для каждого Строка Из МассивПустыхСтрок Цикл 
	Товары.Удалить(Строка); 
КонецЦикла;          
Как очистить колонку «СтавкаНДС» в табличном поле «Товары» уже заполненного документа?

Процедура ТоварыСтавкаНДСПриИзменении(Элемент) 

	// Рассчитать реквизиты табличной части. 
	РассчитатьСуммуНДСТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект); 

КонецПроцедуры // ТоварыСтавкаНДСПриИзменении() 


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

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

// Заполнить табличную часть Товары. 
Для Каждого СтрокаТоваровЗаказа Из ДокументЗаказа.Товары Цикл 
	ЗаполнитьЗначенияСвойств(НовыйСчет.Товары.Добавить(), СтрокаТоваровЗаказа); 
КонецЦикла; 

// Заполнить табличную часть ВозвратнаяТара 
Для Каждого СтрокаТарыЗаказа Из ДокументЗаказа.ВозвратнаяТара Цикл 
	ЗаполнитьЗначенияСвойств(НовыйСчет.ВозвратнаяТара.Добавить(), СтрокаТарыЗаказа); 
КонецЦикла; 

// Заполнить табличную часть Услуги 
Для Каждого СтрокаУслугЗаказа Из ДокументЗаказа.Услуги Цикл 
	ЗаполнитьЗначенияСвойств(НовыйСчет.Услуги.Добавить(), СтрокаУслугЗаказа); 
КонецЦикла; 

НовыйСчет.ЗаказПокупателя = ДокументЗаказа; 

Форма = НовыйСчет.ПолучитьФорму(); 
Форма.Открыть();          
Как получить перечень приходных накладных, в которых не заполнены номенклатурные позиции?

Запрос = Новый Запрос; 
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ 
	|	ПриходнаяТовары.Ссылка как Накладные 
	|ИЗ 
	|	Документ.ПоступлениеТоваровУслуг.Товары КАК ПриходнаяТовары 
	|ГДЕ 
	|	ПриходнаяТовары.Номенклатура = &ПустаяНоменклатура"; 

Запрос.УстановитьПараметр("ПустаяНоменклатура", Справочники.Номенклатура.ПустаяСсылка()); 

ТаблицаНакладных = Запрос.Выполнить();          
Как на дату расходной накладной определить курс валюты управленческого учета? Валюта управленческого учета храниться в периодическом регистре сведений.

ВЫБРАТЬ 
	КурсыВалютСрезПоследних.Валюта КАК ВалютаУпр, 
	КурсыВалютСрезПоследних.Курс КАК КурсУпр 
ИЗ 
	РегистрСведений.КурсыВалют.СрезПоследних(&ДатаДокумента, Валюта В 
(ВЫБРАТЬ 
	УчетнаяПолитикаСрезПоследних.ВалютаУправленческая 
ИЗ 
	РегистрСведений.УчетнаяПолитика.СрезПоследних(&ДатаДокумента, ) 
	КАК УчетнаяПолитикаСрезПоследних ) 
) КАК КурсыВалютСрезПоследних          
Как из формы документа вызвать его неоперативное проведение?

Процедура ОсновныеДействияФормыОК(Кнопка) 
	ЭтаФорма.ИспользоватьРежимПроведения = ИспользованиеРежимаПроведения.Неоперативный; 
	ЗаписатьВФорме(РежимЗаписиДокумента.Проведение); 
	Закрыть(); 
КонецПроцедуры          
Как в обработке проведения получить остатки, актуальные на позицию документа?

Запрос.Текст = " ВЫБРАТЬ 
	|	ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, 
	|	ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток 
	|ИЗ 
	|	РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ПараметрПериод, 
	|								ДоговорКонтрагента = &Договор 
	|								И 
	|								Сделка =&Сделка) КАК ВзаиморасчетыСКонтрагентамиОстатки"; 

Запрос.УстановитьПараметр("ПараметрПериод", МоментВремени());           
Как определить количество документов и количество разных значений реквизита в таблице записей документа?

ВЫБРАТЬ 
	КОЛИЧЕСТВО(РегистрацияПростоевВОрганизации.Ссылка) КАК Случаев, 
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РегистрацияПростоевВОрганизации.ФизЛицо) КАК Работников 
ИЗ 
	Документ.РегистрацияПростоевВОрганизации КАК РегистрацияПростоевВОрганизации 
ГДЕ 
	РегистрацияПростоевВОрганизации.Проведен           
В последовательность «ПартионныйУчет» добавлено измерение «Организация». Как теперь получить данные по границам последовательности для каждого значения этого измерения?

ТаблицаГраниц = Последовательности.ПартионныйУчет.ПолучитьГраницы("Организация"); 
Для Каждого СтрокаТаблицыГраниц Из ТаблицаГраниц Цикл 
	Организация = СтрокаТаблицыГраниц.Организация; 
	ДатаГП = СтрокаТаблицыГраниц.Граница.Дата; 
	СсылкаГП = СтрокаТаблицыГраниц.Граница.Ссылка; 
КонецЦикла;          
Как быстро получить информацию, по всем объектам, находящимся в компетенции конкретного менеджера (элемент справочника «Пользователи») по продажам?

МассивСсылок = КритерииОтбора.КомпетенцияМенеджераПродаж.Найти(Менеджер); 
Для Каждого Ссылка из МассивСсылок Цикл 
	Сообщить(Ссылка); 
КонецЦикла; 

ВЫБРАТЬ 
	КомпетенцияМенеджераПродаж.Ссылка 
ИЗ 
	КритерийОтбора.КомпетенцияМенеджераПродаж(&Менеджер) КАК КомпетенцияМенеджераПродаж          

Задайте вопрос программисту 1С

Загрузил в свою базу данных каталог товаров с BTT. Необходимо записать значение ПартНомера(полученного в виде строки) в реквизит справочник ссылочного типа. Как это сделать?

задан 11 июл 2018 в 6:01

Саша Лямин's user avatar

В Справочнике (о котором идет речь) необходимо создать новый элемент (или найти уже существующий по ПартНомеру) в реквизит записать ссылку на этот элемент.

ответ дан 16 июл 2018 в 11:53

santavital's user avatar

santavitalsantavital

1,7587 серебряных знаков14 бронзовых знаков

Все просто. Получили например номенклатуру: «Стул МК»
Нам надо передать ссылку на данную номенклатуру в какой то справочник.
Для этого надо найти ссылку на данную номенклатуру.
пишем:
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоНаименованию(«Стул МК»);
Если найдет, то будет ссылка на номенклатуру, если нет, тогда будет пустая ссылка

ответ дан 19 сен 2018 в 7:37

Евгений's user avatar

Понравилась статья? Поделить с друзьями:
  • Как называется единый стиль одежды в компании
  • Как заплатить с карты сбербанка по реквизитам
  • Как называется иерархия должностей в компании
  • Как заполнить данные реквизитов в wildberries
  • Как называется клининговая компания по уборке