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

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. Исходные данные для построения маршрута:
* Географические координаты объектов, которые хранятся в базе;
* Координаты начальной и коне


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

На чтение 6 мин. Просмотров 2.6k. Опубликовано 15.12.2019

Содержание

  1. Как изменить значение реквизита документа 1С?
  2. Изменение команд формы
  3. Изменение реквизитов формы
  4. Изменение элементов формы
  5. Документы
  6. Документы в языке 1С 8.3, 8.2 (в примерах)

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

Как изменить значение реквизита документа 1С?
Часто возникает потребность изменить какое-то значение в отдельном реквизите. И не в одном документе, в в нескольких документах. Возможно использовать запрос.
Например:

В статье был рассмотрен вопрос:
Как изменить значение реквизита документа 1С?

Платформа 1С:Предприятие позволяет программно добавлять и изменять элементы управляемой формы. Разберемся для чего это может потребоваться.

Программная модификация формы может потребоваться в нескольких случаях:

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

В управляемой форме можно программно добавить, изменить и удалить:

Все указанные операции возможны только на сервере.

Программное изменение формы имеет ограничения:

  • Удалить можно только программно добавленные реквизиты/команды/элементы. Нельзя программно удалить объекты, созданные в конфигураторе.
  • Нельзя назначить реквизит основным.

Изменение команд формы

Для управления составом команд у объекта УправляемаяФорма есть коллекция Команды . У коллекции есть несколько методов:

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

В качестве примера работы с командами формы создадим новую команду ИсторияИзменений с заголовком «История изменений…», которая будет вызвать обработчик ОтобразитьИсторию () . Создание выполняется при открытии формы.

&НаСервере
Процедура ПриСозданииНаСервере ( Отказ , СтандартнаяОбработка )
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ;
Команда . Заголовок = «История изменений…» ;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОтобразитьИсторию ( Команда )
// действия команды
КонецПроцедуры

Обработчик команды должен располагаться в форме и иметь директиву компиляции &НаКлиенте .

Изменение реквизитов формы

Чтение состава реквизитов формы выполняется функцией ПолучитьРеквизиты ( Путь >) , возвращающей массив типа РеквизитФормы . Параметр функции указывает путь к родительскому реквизиту (в виде строки). Если параметр опущен или указана пустая строка, возвращаются реквизиты верхнего уровня.

Изменение реквизитов выполняется методом ИзменитьРеквизиты ( ДобавляемыеРеквизиты >, УдаляемыеРеквизиты >) объекта УправляемаяФорма . В параметры ДобавляемыеРеквизиты и УдаляемыеРеквизиты передаются массивы с элементами типа РеквизитФормы .

Внимание!

Процесс изменения состава реквизитов является достаточно ресурсоемким. Фактически выполняется пересоздание формы. В связи с этим работа с реквизитами формы выполняется в пакетном режиме.

Создадим новый реквизит формы с именем Покупатель:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив ;
ДобавляемыеРеквизиты . Добавить(Новый РеквизитФормы («Покупатель», Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));

// Изменения состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );

Изменение элементов формы

Для управления составом элементов у объекта УправляемаяФорма есть коллекция Элементы . У коллекции есть несколько методов:

Коллекция Элементы доступна как на клиенте, так и на сервере. Изменять коллекцию (методы Вставить () , Добавить () , Переместить () и Удалить () ) можно только на сервере. Искать и получать количество элементов (методы Найти () и Количество () ) можно как на клиенте, так и на сервере. Элементами коллекции могут быть:

Элементам формы можно программно назначить обработчики событий. Для этих целей предназначен метод УстановитьДействие ( ИмяСобытия >, Действие >) .

Рассмотрим несколько наиболее распространенных на практике примеров работы с командами, реквизитами и элементами формы.

Добавление команды и связанной с ней кнопки:

// Создание команды
Команда = Команды . Добавить ( «ИсторияИзменений» );
Команда . Действие = «Подключаемый_ОтобразитьИсторию» ; // В форме должна быть процедура с указанным наименованием
Команда . Заголовок = «История изменений…» ;
// Создание кнопки и связь ее с командой
Элемент = Элементы . Добавить ( «ИсторияИзменений» , Тип ( «КнопкаФормы» ));
Элемент.ИмяКоманды = «ИсторияИзменений» ;

Добавление реквизита и связанного с ним поля ввода:

// Описание добавляемых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
ДобавляемыеРеквизиты . Добавить (Новый РеквизитФормы ( «Покупатель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ), , «Клиент» ));
// Изменение состава реквизитов
ИзменитьРеквизиты ( ДобавляемыеРеквизиты );
// Создание поля ввода и связь с реквизитом
Элемент = Элементы . Добавить ( «Покупатель» , Тип ( «ПолеФормы» ));
Элемент . Вид = ВидПоляФормы . ПолеВвода ;
Элемент . ПутьКДанным = «Покупатель» ;

Назначение элементу формы обработчика события:

ЭлементПокупатель . УстановитьДействие ( «ПриИзменении» , «Подключаемый_ПокупательПриИзменении» );

&НаКлиенте
Процедура Подключаемый_ПокупательПриИзменении ( Элемент )
// Действия события
КонецПроцедуры

Внимание!

Процедурам, которые устанавливаются в качестве обработчиков событий из кода с помощью метода УстановитьДействие () , рекомендуется задавать префикс Подключаемый_.

Внимание!

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

Остались вопросы?
Спросите в комментариях к статье.

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Документы

Описание:

Документ — одно из основных понятий системы 1С:Предприятие. При помощи документов организуется ввод в систему информации о совершаемых хозяйственных операциях, а также ее просмотр и корректировка.

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

Структура каждого конкретного вида документа определяется при его создании в конфигураторе. У любого вида документа существуют реквизиты, которые создаются автоматически — это «Дата» и «Номер». Номер создается, если при конфигурировании длина номера указана больше 0. Другие реквизиты документа определяются в конфигураторе отдельно для каждого создаваемого вида документа.

Документы в языке 1С 8.3, 8.2 (в примерах)

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться:

Как программно изменить значение реквизита

Я
   Himoza

04.02.11 — 10:31

При проведении документа необходимо изменить значение реквизитов табличной части.

       Для Каждого СтрокаТаблицы Из ТаблицаПоТоварам Цикл

           СтрокаТаблицы.СчетУчетаБУ= ПланыСчетов.Хозрасчетный.НайтиПоКоду(«44.01»);

           СтрокаТаблицы.СчетУчетаНУ = ПланыСчетов.Налоговый.НайтиПоКоду(«44.01»);

       КонецЦикла;

Теперь надо как-то записать внесенные изменения, но как

ТаблицаПоТоварам.Записать(); не верно, выдает ошибку.

  

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

   Dmitrii

1 — 04.02.11 — 10:32

(0) Не надо делать этого при проведении документа.

Пожалуйста!!!!

   John83

2 — 04.02.11 — 10:33

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

   chelentano

3 — 04.02.11 — 10:33

(0) ну в общем то логично

   palpetrovich

4 — 04.02.11 — 10:33

а че, просто так не записывает? :)

   John83

5 — 04.02.11 — 10:33

(1) только без паники :)

   73

6 — 04.02.11 — 10:34

Записывать весь объект.
Но.
Менять реквизиты при проведении? Объект к этому времени уже записан. И вообще, нехорошо.

   Salvador Limones

7 — 04.02.11 — 10:36

(0) Сделай это в ПередЗаписью!

   Himoza

8 — 04.02.11 — 10:49

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

   73

9 — 04.02.11 — 10:50

(8) И чем ПередЗаписью не подходит?

   Himoza

10 — 04.02.11 — 10:53

сейчас сделаю ПередЗаписью. Мне еще надо определить ДокументОбъект.
ДокументОбъект=ТекущийДокумент();?

   chelentano

11 — 04.02.11 — 10:53

(10) позовите вы лучше программиста

   Salvador Limones

12 — 04.02.11 — 10:54

(10) Не надо.
Или ты внешней обработкой меняешь документы?

   Axel2009

13 — 04.02.11 — 10:55

вызов обработки проведения в любом случае вызовет события перед записью и после записи

   Dmitrii

14 — 04.02.11 — 10:56

(10) >> ДокументОбъект=ТекущийДокумент();?

Отойдите от компьютера! Немедленно!

   Dmitrii

15 — 04.02.11 — 10:57

(8) >> за эту неделю изменяться остатки по счетам, и в зависимости от этого будут меняться проводки в документах.

Проводки может и изменяться, но как могут измениться счета учета номенклатуры? Или у вас учетная политика каждую неделю изменяется?

   Himoza

16 — 04.02.11 — 11:00

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

   Salvador Limones

17 — 04.02.11 — 11:01

Такая красавица, и пишет такие ужасные вещи. :-(

   Himoza

18 — 04.02.11 — 11:02

все такие умные, и были с рождения умными? срочно убирать фотку.

   Axel2009

19 — 04.02.11 — 11:02

(16) а как вы вызывали обработку проведения у документа?

   Salvador Limones

20 — 04.02.11 — 11:06

(18) Прости, пожалуйста, я не хотел обидеть.
Опиши подробнее, чего ты делаешь. И чего делает бух в конце недели.

   Dmitrii

21 — 04.02.11 — 11:12

(18) >> срочно убирать фотку.

Без фотки тут с тобой даже разговаривать не станут ;)

>> все такие умные…

Просто ты изначально несешь такую редкостную ахинею, что тут даже не знаешь что подсказать…

Во-первых, изменять реквизиты объекта в обработке проведения не следует. Если что-то и надо поменять, то делать это надо ПередЗаписью().
Во-вторых, (по поводу каким методом выполнить запись) достаточно посмотреть СП и включить мозг. Если с первым ты разобралась (нашла метод Записать()), то со вторым как-то хуже. Может быть два обработчика события ПередЗаписью — в модуле формы и в модуле объекта. В первом случае можно указать ДокументОбъект (это основной реквизит формы документа), но необязательно. Во втором случае (в модуле объекта) ты и так работаешь в контексте документа следовательно вызывать его нет необходимости.

   Himoza

22 — 04.02.11 — 11:12

я вторую неделю на 8ке. рука тянется применить методы 7ки.
Я перенесла текст в процедуру ПередЗаписью, помогло. Спасибо за помощь.

   Salvador Limones

23 — 04.02.11 — 11:13

(22) Фотку верни! Правда красавица, ведь!

   Himoza

24 — 04.02.11 — 11:17

Можно задать еще один дурацкий вопрос. В документе Поступление товаров и услуг, есть внешние печатные формы, но я их не могу найти. В конфигураторе в макетах их нету, в сервис — дополнительные отчеты их тоже нету, где еще можно поискать?? мне их надо перенести во вновь созданный документ.

   Axel2009

25 — 04.02.11 — 11:19

нужно искать в дополнительных внешних печатных формах. а не доп.отчетах

   Himoza

26 — 04.02.11 — 11:20

спасибо, нашла.

   Salvador Limones

27 — 04.02.11 — 11:22

(24) сервис — дополнительные печатные формы!
Общие макеты.
Ну и самый надёжный — в ПриОткрытии найти что-то типа ФормированиеПечатныхФорм.СоздатьКнопкиПечати(… и проследить, что как где создаётся.

   Himoza

28 — 04.02.11 — 11:23

(27) спасибо)

   Himoza

29 — 04.02.11 — 11:26

Ну тогда еще один вопрос. Когда я создала новый документ. почему-то в режиме предприятия, когда я его открываю подвал документа и кнопки находяться по середине экрана, после кнопок еще мног свободного места и из-за этого табличная часть документа меньше. как настроить? (объяснила как смогла)

   Axel2009

30 — 04.02.11 — 11:28

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

   Живой Ископаемый

31 — 04.02.11 — 11:28

это привязки, и они многих бесят (меня например) может есть гуру, которые справляются с ними, но у меня, если случается такое как у тебя — легче форму заново перерисовать

   Salvador Limones

32 — 04.02.11 — 11:30

(29) Смотришь на эту форму, жмешь Ctrl-R (проверка формы), дергаешь мышью за правый нижний угол, какой из элементов формы дергается с красным крестом — тому меняешь привязки.

   Axel2009

33 — 04.02.11 — 11:30

(31) Ctrl+R и смотришь что мешает форме разворачиваться. там элемент управления начнет красной рамкой окрашиваться когда сдвигаешь границы формы

  

Himoza

34 — 04.02.11 — 11:35

понятно, буду пробовать.

&НаСервере
Процедура Изменение_значения_реквизита_объекта(ДокСсылка, Новое_значение_реквизита)// Процедура программно меняет значение реквизита объекта (документа)
    // ДокСсылка — документ в котором необходимо изменить реквизит
    // Новое_значение_реквизита — новое значение реквизита «Реквизит_для_корректировки»

    // или так: ДокументССылка=Документы.ТТН.НайтиПоНомеру(СокрЛП(Ном),Дата(‘2021-05-16’));

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

        Попытка

ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
           
Сообщить(ОписаниеОшибки());
        КонецПопытки

    Иначе

Сообщить(Новое_значение_реквизита+» не записано в «+ДокСсылка+«! Документ не определен»);
    КонецЕсли

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

Программно изменить реквизит документа

Автор Ruslan09609, 03 дек 2018, 09:31

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

Добрый день! Я с помощью запроса получил все  документы ОПЗС теперь мне надо в документе ОПЗС табличной части продукция перевыбрать строку номенклатура и провести документ,помогите пожалуйста совсем зеленому программисту.
Какой код должен быть в цикле ?Заранее благодарю за то что вникаете в мою проблему.
      Запрос = Новый Запрос;
   Запрос.Текст =
      «ВЫБРАТЬ
      |   ОтчетПроизводстваЗаСмену.Ссылка,
      |   ОтчетПроизводстваЗаСмену.Дата,
      |   ОтчетПроизводстваЗаСмену.Продукция.(
      |      Номенклатура
      |   )
      |ИЗ
      |   Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену»;

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
   ОтчетПроизводстваЗаСмену.Записать(РежимЗаписиДокумента.Запись);//не знаю какой код должен быть       
   КонецЦикла;


Конечная цель какая? «Перевыбрать» — это чтобы выполнились действия при выборе номенклатуры в интерактивном режиме?


Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОтчетПроизводстваЗаСмену = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
СтрокаПоиска = ОтчетПроизводстваЗаСмену.Материалы.Найти(НоменклатураДляЗамены, "Номенклатура");
Если СтрокаПоиска <> Неопределено Тогда
СтрокаПоиска.Номенклатура = ЗаменяемаяНоменклатура;
ОтчетПроизводстваЗаСмену.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;     
КонецЦикла;


Ну, вообще то задача самая тривиальная, какая только может быть. Запрос у вас неправильно написан, с избыточной выборкой информации. В нём сейчас выбираются ссылки на все документы + дата каждого документа + для каждого документа, зачем-то, колонка «номенклатура» из табличной части «продукция». Дата, допустим, нужна для упорядочивания, чтоб проводить документы в хронологическом порядке. Но для этого нужно в запросе дописать

"УПОРЯДОЧИТЬ ПО ОтчетПроизводстваЗаСмену.Дата"

Поле «номенклатура» же в запросе Вам не нужно совершенно. Вы будете в цикле получать по каждой ссылке документ-объект. Объект считывается из БД целиком, включая все реквизиты и табличные части.

В общем случае как-то так нужно написать

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

ДокументОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); // тут вы получаете объект
Для каждого Стр из ДокументОбъект.Продукция Цикл
    Стр.Номенклатура = Номенклатура //ссылка на вашу номенклатуру. Если нужно менять не на одну и ту же, а по какому-то условию, то пишете ваше условие
КонецЦикла;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение); //Вам же провести нужно? Вот и пишите "проведение", а не "запись".

       КонецЦикла;


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Программно изменить реквизит документа

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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

ОБЪЕДИНИТЬ 

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

ОБЪЕДИНИТЬ 

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

ОБЪЕДИНИТЬ 

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Опубликовано 15.03.2021 06:29
Автор: Administrator
Просмотров: 14102

Как часто вам достается от предыдущего бухгалтера хорошая база 1С, в которой почти нет ошибок? Да, практически, никогда! «Задвоенные», а то и «затроенные» данные, куча лишних договоров у контрагентов, некорректные счета учета, отрицательные остатки по номенклатуре – вот лишь малая часть того, с чем сталкивается новый бухгалтер. И, зачастую, совсем мало времени остается на исправление. Пользователи могут сутками вручную переносить данные на верную позицию в базе, однако в этом материале мы хотим рассказать об интересном функционале программы 1С, с помощью которого вы управитесь за считанные минуты! Речь пойдет о групповом изменении реквизитов в программе 1С: Бухгалтерия предприятия ред. 3.0. 

Изменение значений реквизитов в документах

Как часто вы сталкивались с проблемой раздвоения информации по договорам или контрагенту? Например, при выгрузке из клиент-банка создался новый элемент в справочнике, и пользователь, не обратив внимание, использует оба наименования при вводе документов.

Рассмотрим на примере ИП Симоновой А.И.

В оборотно-сальдовой ведомости по счету 60 «Расчеты с поставщиками и подрядчиками» видно, что поставщик ООО «Гладиолус» повторяется дважды. Кроме этого, по второй строке ООО «Гладиолуса», в оборотах 2021 года, в документах фигурирует договор 2020 года. 

Если такой случай единичный, конечно же пользователь может исправить недочет вручную. А как быть, если документов много?

В такой ситуации поможет данная обработка.

ВНИМАНИЕ: Если у вас недостаточно опыта, лучше доверить это специалистам, т.к. данная процедура необратима. И если вы всё же решите поэкспериментировать со своей базой, не забудьте сделать резервную копию.

Рассмотрим действия пошагово.

Шаг 1. Перейдите в раздел «Администрирование» — «Обслуживание».

Шаг 2. Разверните меню «Корректировка данных» и перейдите по гиперссылке «Групповое изменение реквизитов».

Кредиторская задолженность в оборотно-сальдовой ведомости по первой строке ООО «Гладиолус» образована документами «Поступление (акт, накладная, УПД)». Значит в первую очередь нам надо заменить в них ООО «Гладиолус» №1 на ООО «Гладиолус» №2. А следующим этапом приступись к обработке договоров.

Шаг 3. Выполните настройку формы.

• В поле «Изменять» укажите обрабатываемый документ. В нашем примере это «Поступление (акты, накладные, УПД)».

• Изменяемый реквизит документа отметьте галочкой «Контрагент» и в поле «Новое значение» установите ООО «Гладиолус», на который надо сделать замену.

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

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

Шаг 4. Нажмите кнопку «Добавить условие» и задайте: «Контрагент» равно ООО «Гладиолус». При выборе значения выберите тот элемент, который нужно заменить.

Лишние документы отсеются и останутся лишь удовлетворяющие условию отбора.

Нажмите «Ок».

Итак, задано две настройки:

Первая – отбор по контрагенту ООО «Гладиолус» (№1);

Вторая – указание нового значения поля «Контрагент» — ООО «Гладиолус» (№2).

В окне обработки нажмите «Изменить реквизиты».

Подождите окончания выполнения действия и проверьте Оборотно-сальдовую ведомость снова.

ООО «Гладиолус» у нас остался в единственном экземпляре, но с разбивкой по договорам.

Аналогично рассмотренному варианту перенесите договора «Без договора» и «Договор 2020 г.» на одну строку – «Договор 2021 г.»

Шаг 5. Выполните новую настройку.

Перейдя по гиперссылке «Все реквизиты», одновременно с отбором по контрагенту ООО «Гладиолус» (новое значение), установите отбор – «Договор» равно «Без договора».

Шаг 6. Нажмите «ОК» и в поле «Новое значение» для реквизита «Договор» укажите тот, на который производится замена – «Договор 2021».

Шаг 7. Нажмите «Изменить реквизиты».

Аналогично проделайте со вторым договором – «Договор 2020 г.». Но обратите внимание, что расхождение в данном договоре по дебету счета 60 «Расчеты с поставщиками и подрядчиками», а значит задействована оплата поставщику и документ «Списание с расчетного счета».

Шаг 8. Выберите вид обрабатываемого документа – «Списание с расчетного счета».

Перейдите по гиперссылке «Все элементы» и установите отбор по полю «Получатель» — «Контрагент» — ООО «Гладиолус» и полю «Договор» – «Договор 2020 г.».

Обратите внимание, что значение состава реквизитов в таблице меняется в зависимости от выбранного элемента обработки.

Нажмите «Изменить реквизиты». Действие замены выполнено.

Проверьте Оборотно-сальдовую ведомость по счету 60: все договора перенесены на один – «Договор 2021 г.»

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

Изменение значений реквизитов в справочках

Например, изменим единицу измерения у товаров, находящихся в группе «Крупы».

В карточке номенклатуры товара, с одноименным названием группы – «Крупа» — установлена единица измерения – граммы. Предположим, что пользователь ошибочно, копируя при внесении в справочник номенклатуру, указал всем наименованиям эту единицу измерения. Установим с помощью обработки верное значение – килограммы.

Шаг 1. Выполните настройку, указав в поле «Изменять» справочник «Номенклатура».

Значение изменяемого реквизита «Единица» установите – «Кг».

В настройке отбора добавьте условие: «Входит в группу» равно «Крупы».

Нажмите «Ок» и кнопку выполните команду «Изменить реквизиты».

Проверим справочник «Номенклатура» группу «Крупы». Единица измерения «Кг» на входящие в нее элементы установлена.

Таким образом, можно произвести замену любого реквизита справочника.

И еще один лайфхак 1С: с помощью обработки «Групповое изменение реквизитов» можно ставить и снимать пометку на удаление.

Установка (снятие) пометки на удаление с помощью обработки
«Групповое изменение реквизитов»

Шаг 1. В нижней части обработки нажмите кнопку «Дополнительные параметры…»

Разверните пункт «Специальные возможности» и установите галочку «Показывать служебные реквизиты».

В результате этого действия в списке реквизитов появилось поле – «Пометка на удаление», где пользователь может задать значение «Да» или «Нет».

Шаг 2. Установите значение пометки на удаление «Да» и выберите объект, который надо удалить. В нашем примере обрабатываются документы «Поступление на расчетный счет».

Шаг 3. Перейдите по гиперссылке «Все элементы» и установите отбор.

Обратите внимание, если ведется учет по нескольким организациям, в условие отбора добавьте и обрабатываемую организацию.

В данном условии заложена команда – отобрать все документы «Поступления на расчетный счет», по организации «ИП Симонова А.И.», введенные датой позже 01.01.2021 года.

Нажав кнопку «Изменить реквизиты», на документы, удовлетворяющие заданному условию, установится пометка на удаление.

Одновременно установите значение реквизита проведен «Нет», чтобы при обработке система сделала их непроведенными. В противном случае 1С выдаст сообщение: «Проведенный документ не может быть помечен на удаление!»

По окончании действия обработки программа сообщит, что реквизиты изменены и покажет количество обработанных объектов.

Подведем итог: работая с большим объемом информации, пользователь может допускать некоторые ошибки, исправить которые легко можно с помощью данного инструмента, зная о его существовании.

Автор статьи: Ольга Круглова

Text.ru - 100.00%

Понравилась статья? Подпишитесь на рассылку новых материалов

Добавить комментарий

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