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

Содержание
  1. Три инструмента для быстрого изменения кода в 1С
  2. Групповая замена
  3. Быстрое переименование
  4. Быстрое создание процедур
  5. Табельный номер сотрудника в 1С 8.3
  6. Для чего предназначен табельный номер в 1С 8.3
  7. Как увидеть табельный номер в журнале Кадровые документы
  8. Как изменить табельный номер в 1С 8.3
  9. Примеры кода работы со справочниками
  10. Как работает механизм регистрации изменений
  11. Программная работа со справочниками
  12. Создание элемента справочника
  13. Поиск элементов справочника
  14. Удаление элементов справочника
  15. Обход элементов справочника
  16. Выбор элементов справочника запросом
  17. Открытие форм справочника
  18. Справочники в 1С — настройки, свойства, нумерация
  19. Справочники в конфигураторе 1С 8
  20. Вкладка «Основные»
  21. Вкладка «Иерархия справочника»
  22. Вкладка «Владельцы»
  23. Вкладка «Данные»
  24. Вкладка «Нумерация»
  25. Вкладка «Формы»
  26. Вкладка «Прочее»

Три инструмента для быстрого изменения кода в 1С

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

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

Групповая замена

При помощи инструмента «Групповая замена…» конфигуратора 1С  можно быстро поменять однотипный кусок кода на другой однотипный кусок кода.

Вызывается этот инструмент достаточно просто: Главное меню – Правка – Заменить (Ctrl +H)

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

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

Например, на рисунке выше мы искали слово «Товар», но флаг «Слово целиком» был убран, поэтому была найдена переменная «ТекстСтрокаТовары», в название которой входило слово «Товар».

Точно также можно искать с учетом регистра и без учета регистра (флаг «Учитывать регистр»).

Очень удобно при помощи этого инструмента менять код в выделенном блоке.  Для этого нужно выделить кусок кода и вызвать инструмент замены (признак «Изменить в блоке» встанет автоматом).

Быстрое переименование

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

Можно долго и нудно переименовывать вручную, а можно воспользоваться одной из функцией рефакторинга — «Переименовать»

Например, на скрине ниже приведен код, где задана переменная цикла Стр.

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

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

После этого будет предложено указать имя новой переменной

И после нажатия кнопки «ОК», произойдет замена кода

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

Точно также можно переименовывать процедуры и функции.

////

////

Быстрое создание процедур

Очень часто возникает ситуация, когда в процессе написания кода Вы решаете выделить кусок кода в процедуру. Быстро это можно сделать быстро при помощи инструмента рефакторинга – «Выделить фрагмент». Для этого нужно просто выделить кусок кода, из которого Вы хотите сделать процедуру или функцию, вызвать контекстное меню, в котором нажать на пункт «Выделить фрагмент»  меню «Рефакторинг».

После Вам нужно задать название новой процедуры

И новая процедура будет создана

Все три инструмента, перечисленные в этой статье уменьшат время на написание кода в 1С. Используйте их, чтобы не делать тупую работу.

Сохраняйте эту статью в соц. сетях, чтобы можно было быстро освежить память.

Семь полезных параметров конфигуратора 1С

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

Книга «Программировать в 1С за 9 шагов»

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

  1. Без сложных технических терминов.
  2. Более 500 страниц практического материала.
  3. Каждое задание сопровождается рисунком (скриншот).
  4. Сборник задач для домашней проработки.
  5. Книга написана понятным и простым языком — для новичка.
  6. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 16%: vCph8bW3rE

Книга «Основы разработки в 1С: Такси»

Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

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

Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей

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

Источник: https://www.1s-up.ru/tri-instrumenta-dlja-bystrogo-izmenenija-koda-v-1c/

Табельный номер сотрудника в 1С 8.3

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

Табельный номер сотрудника — один из важных кадровых реквизитов, который идентифицирует сотрудника у работодателя.

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

Для чего предназначен табельный номер в 1С 8.3

Табельный номер (ТН) в 1С — это уникальный числовой код из арабских цифр, который присваивается программой сотруднику при оформлении на работу. Он указывается в кадровых документах, например, в табеле учета рабочего времени, а также в приказах о:

Присвоение номера происходит автоматически по возрастанию и без пропусков с учетом следующих нюансов:

  1. Табельный номер должен быть не только у постоянных, но и у временных сотрудников, а также сезонных работников и внешних совместителей.
  2. Если сотрудник — внутренний совместитель (совмещает несколько должностей в одной организации по разным трудовым договорам), то в каждой из них ему присваивается отдельный номер. При этом в Табеле учета рабочего времени для одного работника будет не одна строка, а несколько — на каждую должность.Сотрудник совмещает две должности по двум разным трудовым договорам:
    • бухгалтер по расчетам с поставщиками — полная ставка, обязанности выполняются в течение рабочего времени;
    • табельщик — 0,5 ставки, обязанности выполняются после основной работы за пределами рабочего дня.
  3. Если сотрудник совмещает должности (исполняет обязанности по двум должностям в рамках одного трудового договора), то отдельный номер ему не присваивается.
    Старший бухгалтер на время отпуска главного бухгалтера выполняет его обязанности в течение рабочего дня. Отдельный трудовой договор на время отпуска не требуется, оформлено дополнительное соглашение к существующему трудовому договору.
  4. Номер уволенного работника не рекомендуется использовать в течение 1-2 лет (п. 18 Письма Госкомтруда СССР от 27.04.1973 N 75-АБ/89/10-80).

Порядок присвоения табельных номеров закрепите в своем локальном нормативном акте (ст. 5, ст. 8 ТК РФ).

Как увидеть табельный номер в журнале Кадровые документы

Для формирования реестров кадровых документов бухгалтеру может понадобиться информация по табельным номерам сотрудников, например, для сортировки или отбора. Однако при стандартных настройках журнала, как правило, такие данные не отображаются.

Чтобы добавить дополнительную графу, откройте журнал Кадровые документы (Зарплата и кадры – Кадры – Кадровые документы), затем нажмите кнопку Еще – Изменить форму.

Выберите в группе Список поле Сотрудник, установив на него курсор. По кнопке Добавить поля (либо двойным щелчком мышки вызовите меню и выберите из списка Добавить поля) откройте форму Выберите поля для размещения в форме, установите флажок Таб.номер и нажмите кнопку ОК.

Дополнительное поле Таб.номер (Сотрудник) появится в списке. Для определения места положения колонки в таблице поле можно переместить при помощи синих стрелок.

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

Код в справочнике Физические лица и Таб. номер в справочнике Сотрудники — это не одно и то же.

  • Табельный номер присваивается и меняется только из справочника Сотрудники. Именно он попадает во все кадровые документы.
  • Код в справочнике Физические лица — это порядковый номер в списке. Он отражается в стандартных отчетах, например, в ОСВ по счету 70 можно вывести Код, но не Таб. номер.

Как изменить табельный номер в 1С 8.3

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

Перейдите в карточку сотрудника (Зарплата и кадры — Сотрудники). По умолчанию поля Таб. Номер в ней нет. По кнопке Еще выберите Изменить форму.

Установите флажок Таб. номер и нажмите кнопку ОК.

В карточке сотрудника появится нужное поле.

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

Выбираем Да, и номер становится доступным для редактирования.

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

Все табельные номера присваиваются в хронологическом порядке. Следующему сотруднику автоматически будет присвоено значение поля Таб. номер по возрастанию.

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

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Источник: https://buhexpert8.ru/obuchenie-1s/1s-buhgalteriya-8-3/tabelnyj-nomer-sotrudnika-v-1s-8-3.html

Примеры кода работы со справочниками

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

01.03.2018

Категория: 1С:Предприятие

Как создать элемент (группу) справочника?

НовыйЭлемент = Справочники.ДокументыУдостоверяющиеЛичность.СоздатьЭлемент();НовыйЭлемент.Наименование = «военный билет»; // Установить другие реквизиты. // …..НовыйЭлемент.Записать(); НовыйЭлемент = Справочники.Банки.СоздатьЭлемент(); // Получить ссылку на группу, в которой будет находиться новый элементРодитель = Справочники.Банки.НайтиПоКоду(«000000001»); НовыйЭлемент.Наименование = «АКБ»; НовыйЭлемент.Код = «000000011»; НовыйЭлемент.Родитель = Родитель; // Установить другие реквизиты // …..НовыйЭлемент.Записать(); НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); // Получить ссылку на группу, в которой должна находиться создаваемая группаРодитель = Справочники.Номенклатура.НайтиПоНаименованию(«Обувь», Истина); НоваяГруппа.Наименование = «Модельная обувь»; НоваяГруппа.Родитель = Родитель; // Установить другие реквизиты // …..НоваяГруппа.Записать(); // Создать новый элемент в корне справочникаНовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = «IT отдел»; НовыйЭлемент.Записать(); // Получить ссылку на родителя для добавляемых элементовРодитель = НовыйЭлемент.Ссылка; // Создать дочерний элемент. НовыйЭлемент = Справочники.Подразделения.СоздатьЭлемент(); НовыйЭлемент.Наименование = «Группа разработки»; НовыйЭлемент.Родитель = Родитель; НовыйЭлемент.Записать();

Как найти элемент справочника?

// Поиск по кодуРезультатПоиска = Справочники.Номенклатура.НайтиПоКоду(«00030»); Если РезультатПоиска.Пустая() Тогда // Выполнить действия, предусмотренные в случае, когда элемент не найден. КонецЕсли; // Поиск по наименованиюРезультатПоиска = Справочники.Номенклатура.НайтиПоНаименованию(«Кроссовки»); // Поиск по реквизитуРезультатПоиска = Справочники.Номенклатура.НайтиПоРеквизиту(«Артикул», «К-120002»);

Как удалить элемент справочника?

// Найти ссылки на удаляемый элемент. МассивСсылок = Новый Массив; МассивСсылок.Добавить(СсылкаНаУдаляемыйЭлемент); НайденныеСсылки = НайтиПоСсылкам(МассивСсылок); Если НайденныеСсылки.Количество() > 0 Тогда Сообщить(«Нельзя удалять элемент, на него имеются ссылки»); Иначе УдаляемыйЭлемент = СсылкаНаУдаляемыйЭлемент.ПолучитьОбъект(); УдаляемыйЭлемент.Удалить(); КонецЕсли; УдаляемыйЭлемент.УстановитьПометкуУдаления(Истина);

Как перебрать элементы справочника?

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

Как выбрать все элементы из определенной группы?

Выборка = Справочники.Номенклатура.Выбрать(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование;КонецЦикла; Запрос = Новый Запрос( «ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель = &Родитель |АВТОУПОРЯДОЧИВАНИЕ»); Запрос.УстановитьПараметр(«Родитель», ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла; Выборка=Справочники.Номенклатура.ВыбратьИерархически(ПолеВводаРодитель); Пока Выборка.Следующий() Цикл Наименование = Выборка.Наименование; КонецЦикла; Запрос = Новый Запрос( «ВЫБРАТЬ | Ссылка, | Наименование |ИЗ | Справочник.Номенклатура |ГДЕ | Родитель В ИЕРАРХИИ(&Родитель) |АВТОУПОРЯДОЧИВАНИЕ»); Запрос.УстановитьПараметр(«Родитель», ПолеВводаРодитель); Результат = Запрос.Выполнить().Выбрать(); Пока Результат.Следующий() Цикл Наименование = Результат.Наименование; КонецЦикла;

Как перебрать элементы подчиненного справочника с помощью запроса?

Процедура ПереборПодчиненыхЭлементов(Контрагент) Запрос = Новый Запрос(); Запрос.Текст = «ВЫБРАТЬ | КонтактныеЛица.Ссылка |ИЗ | Справочник.КонтактныеЛица КАК КонтактныеЛица |ГДЕ | КонтактныеЛица.Владелец = &Владелец»; Запрос.УстановитьПараметр(«Владелец», Контрагент); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры

Как перебрать элементы подчиненного справочника с помощью выборки справочника?

Процедура ПереборПодчиненыхЭлементов(Контрагент) // Получить выборку по указанному контрагенту Выборка = Справочники.КонтактныеЛица.Выбрать( , Контрагент); Пока Выборка.Следующий() Цикл ОчереднойПодчиненый = Выборка.Ссылка; КонецЦикла; КонецПроцедуры

Как открыть форму списка (элемента) справочника?

Форма = Справочники.Номенклатура.ПолучитьФормуСписка(); Форма.Открыть(); Элемент = Справочники.Номенклатура.НайтиПоКоду(«00070»); Форма = Элемент.ПолучитьФорму(); Форма.Открыть();

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

ЭлементОбъект = СсылкаКонтрагент.ПолучитьОбъект(); НоваяСтрока = ЭлементОбъект.ВидыДеятельности.Добавить(); // Заполнить реквизитыНоваяСтрока.ВидДеятельности = ПолеВводаВидДеятельности; // …..ЭлементОбъект.Записать();

Как удалить строки из табличной части справочника?

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду(«Ю0006»); ОбъектСправочника = ЭлементСправочника.ПолучитьОбъект(); ОбъектСправочника.ВидыДеятельности.Очистить(); ОбъектСправочника.Записать(); ОбъектСправочника = ВыбранныйЭлемент.ПолучитьОбъект(); // Создать структуру для отбора удаляемых строкСтруктураОтбора = Новый Структура(«ВидДеятельности», ВыбранныйВидДеятельности); // Получить массив удаляемых строкПодходящиеСтроки = ОбъектСправочника.ВидыДеятельности.НайтиСтроки(СтруктураОтбора); // Удалить строкиДля Каждого ОчереднаяСтрока Из ПодходящиеСтроки Цикл ОбъектСправочника.ВидыДеятельности.Удалить(ОчереднаяСтрока); КонецЦикла; ОбъектСправочника.Записать();

Как перебрать строки табличной части справочника?

ЭлементСправочника = Справочники.Контрагенты.НайтиПоКоду(«Ю0006»); Для Каждого ТекущаяСтрока Из ЭлементСправочника.ВидыДеятельности Цикл Сообщить(ТекущаяСтрока.ВидДеятельности); КонецЦикла;

Как создать элемент в нужной группе?

КодГруппы = «330100»; ПоискПоПолномуКоду = Ложь; // значение по умолчанию Группа = Справочники.Номенклатура.НайтиПоКоду(КодГруппы, ПоискПоПолномуКоду); Если Группа.Пустая() Тогда Группа = Справочники.Номенклатура.СоздатьГруппу(); Группа.Код = КодГруппы; Группа.Наименование = «Загруженные»; Группа.Записать(); ИначеЕсли НЕ Группа.ЭтоГруппа Тогда Сообщить(«Найден элемент справочника с указанным кодом!»); // Предусмотреть прерывание алгоритма…КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = «Программно созданный»; // Реквизиты заполняются в соответствии с задачей// …..Спр.Родитель = Группа.Ссылка; Спр.Записать(); Группа = Справочники.Номенклатура.Загруженные; КодЭлемента = «330100»; ПоискПоПолномуКоду = Ложь; // Значение по умолчанию Родитель = Справочники.Номенклатура.НайтиПоКоду(КодЭлемента, ПоискПоПолномуКоду); Если Родитель.Пустая() Тогда Родитель = Справочники.Номенклатура.СоздатьЭлемент(); Родитель.Код = КодЭлемента; Родитель.Наименование = «Загруженные»; Родитель.Записать(); КонецЕсли; Спр = Справочники.Номенклатура.СоздатьЭлемент(); Спр.Наименование = «Программно созданный»; // Реквизиты заполняются в соответствии с задачей// …..Спр.Родитель = Родитель.Ссылка; Спр.Записать();

Как узнать, есть ли у текущего элемента подчиненные?

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

Как узнать количество подчиненных элементов у выбранного элемента справочника?

Выборка = Справочники.ЕдиницыИзмерения.Выбрать( , Владелец); КоличествоЭлементов = 0; Пока Выборка.Следующий() Цикл КоличествоЭлементов = КоличествоЭлементов + 1; КонецЦикла; Запрос = Новый Запрос(); Запрос.Текст = «ВЫБРАТЬ | КОЛИЧЕСТВО(*) КАК КоличествоЗаписей |ИЗ | Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения |ГДЕ | ЕдиницыИзмерения.Владелец = &Владелец»; Запрос.УстановитьПараметр(«Владелец», Владелец); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда КоличествоЗаписей = Выборка.КоличествоЗаписей; КонецЕсли;

Как узнать количество подчиненных элементов у выбранного элемента справочника, если подчиненных справочников несколько?

ВЫБРАТЬ СУММА(КоличествоПодчиненных) КАК КоличествоПодчиненныхЭлементов ИЗ (ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК КоличествоПодчиненных ИЗ Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения ГДЕ ЕдиницыИзмерения.Владелец = &Владелец ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ КОЛИЧЕСТВО(*) ИЗ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ГДЕ СерииНоменклатуры.Владелец = &Владелец ) КАК ВложенныйЗапрос

Как получить всех родителей выбранного элемента справочника?

МассивРодителей = Новый Массив; Родитель = СсылкаНаЭлемент.Родитель; Пока НЕ Родитель.Пустая() Цикл МассивРодителей.Добавить(Родитель); Родитель = Родитель.Родитель; КонецЦикла; Для Каждого ТекущийРодитель Из МассивРодителей Цикл // Работа с текущим родителемКонецЦикла; ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ ТекущийЭлементНоменклатуры = ЭлементНоменклатура; Запрос = Новый Запрос( «ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры»; Пока Истина Цикл Запрос.УстановитьПараметр(«ТекущийЭлементНоменклатуры», ТекущийЭлементНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() — 1 Цикл ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущийЭлементНоменклатуры); КонецЕсли; КонецЦикла; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла;

Как получить запросом «полный» код элементов справочника, если тип кода — Строка?

ВЫБРАТЬ Контрагенты.Ссылка, ВЫБОР КОГДА (Контрагенты.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Код КОГДА (Контрагенты.Родитель.Родитель.Код ЕСТЬ NULL ) ТОГДА Контрагенты.Родитель.Код + «/» + Контрагенты.Код ИНАЧЕ Контрагенты.Родитель.Родитель.Код + «/» + Контрагенты.Родитель.Код + «/» + Контрагенты.Код КОНЕЦ КАК ПолныйКод ИЗ Справочник.Контрагенты КАК Контрагенты

Как получить все элементы справочника, содержащие в наименовании определенную подстроку, со всей иерархией, в которую они входят?

Запрос = Новый Запрос( «ВЫБРАТЬ | Контрагенты.Ссылка КАК Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | (Контрагенты.Наименование ПОДОБНО &ЧастьНаименования) И (НЕ Контрагенты.ЭтоГруппа) |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ»); Запрос.УстановитьПараметр(«ЧастьНаименования», «%» + ПолеВводаПодстрока + «%»);

Как найти все элементы справочника, в которых не заполнен строковый реквизит?

ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.ИНН = «») ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ (ФизическиеЛица.СтраховойНомерПФР = «») ИЛИ (ФизическиеЛица.СтраховойНомерПФР = » — -«)

Как перенести все элементы справочника «Контрагенты» из одной группы в другую?

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

Как организовать программный выбор элемента справочника?

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

Как сохранить фотографию сотрудника в справочнике «Сотрудники»?

Процедура ЗагрузитьФотографию(Элемент) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = «»; Фильтр = «Текст (*,*)|*.*»; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = «Выберите картинку»; Если ДиалогОткрытияФайла.Выбрать() Тогда ВыбраннаяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла); ЭлементХранилища = Новый ХранилищеЗначения(ВыбраннаяКартинка); Фотография = ЭлементХранилища; КонецЕсли;КонецПроцедуры ВыбФайл = Новый ДвоичныеДанные(ДиалогОткрытияФайла.ПолноеИмяФайла);элХранилища = Новый ХранилищеЗначения(ВыбФайл);Фотография = элХранилища;

28.05.2018

Как работает механизм регистрации изменений

Механизм регистрации изменений используется для обмена данными. При выполнении обмена из базы-источника в базу-приемник передаются не все данные, а только те, для которых были зарегистрированы изменения. В 1С регистрация изменений доступна для следующих объектов: константа, справочник, документ…

Источник: https://tokmakov.msk.ru/articles/item/9

Программная работа со справочниками

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

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

Создание элемента справочника

Поиск элементов справочника

Удаление элементов справочника

Обход элементов справочника

Выбор элементов справочника запросом

Открытие форм справочника

Создание элемента справочника

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

  1. Создание элемента или группы;
  2. Заполнение владельца (если справочник подчиненный);
  3. Заполнение родителя (если справочник иерархический);
  4. Заполнение наименования и реквизитов (если не задана автоматическая нумерация, то и кода);
  5. Заполнение табличных частей;
  6. Запись элемента.

Создание новой группы:

НоваяГруппа = Справочники.Контрагенты.СоздатьГруппу(); // Создание группы НоваяГруппа.Наименование = «Покупатели»; // Заполнение наименования НоваяГруппа.Записать(); // Запись группы

Создание нового элемента:

НовыйЭлемент = Справочники.Контрагенты.СоздатьЭлемент(); // Создание элемента НовыйЭлемент.Родитель = Справочники.Контрагенты.НайтиПоНаименованию(«Покупатели»); // Заполнение родителя НовыйЭлемент.

Наименование = «Ромашка ООО»; // Заполнение наименования НовыйЭлемент.ИНН = «123456789»; // Заполнение реквизита // Добавление новой строки табличной части НоваяСтрока = НовыйЭлемент.КонтактнаяИнформация.Добавить(); НоваяСтрока.Тип = «Адрес»; НоваяСтрока.

Представление = «Москва»; НовыйЭлемент.Записать(); // Запись элемента

Поиск элементов справочника

Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:

  • НайтиПоКоду(, , , )
  • НайтиПоНаименованию(, , , )
  • НайтиПоРеквизиту(, , , )

Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.

НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду(«123»); // Поиск контрагента с кодом «123» НайденныйДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(«1», , , НайденныйКонтрагент); // Поиск подчиненного найденному контрагенту договора с номером «1» НайденныйКонтрагент = Справочники.Контрагенты.

НайтиПоНаименованию(«Покупатели»); // Поиск элемента с наименованием «Покупатели» НайденныйКонтрагент1 = Справочники.Контрагенты.НайтиПоНаименованию(«Ромашка ООО», , НайденныйКонтрагент); // Поиск элемента с наименованием «Ромашка ООО» в группе «Покупатели» НайденныйКонтрагент = Справочники.Контрагенты.

НайтиПоРеквизиту(«ИНН», «123456789»); // Поиск контрагента с ИНН «123456789»

Удаление элементов справочника

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

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

Пометку на удаление можно установить/снять двумя разными способами:

// Способ 1. Использование метода УстановитьПометкуУдаления() НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду(«123»); КонтрагентОбъект = НайденныйКонтрагент.ПолучитьОбъект(); КонтрагентОбъект.УстановитьПометкуУдаления(Истина); // Способ 2. Изменение свойства ПометкаУдаления НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду(«123»); КонтрагентОбъект = НайденныйКонтрагент.ПолучитьОбъект(); КонтрагентОбъект.ПометкаУдаления = Истина; КонтрагентОбъект.Записать();

Пример непосредственного удаления элемента справочника:

НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоКоду(«123»); КонтрагентОбъект = НайденныйКонтрагент.ПолучитьОбъект(); КонтрагентОбъект.Удалить();

Обход элементов справочника

Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:

  • Выбрать(, , , )
  • ВыбратьИерархически(, , , )

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

Рассмотрим примеры обхода элементов справочника:

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

Выбор элементов справочника запросом

Поиск данных в базе 1С предпочтительнее выполнять при помощи запросов. Запрос позволяет описать практически любые условия для отбора, в отличие от методов Выбрать() и ВыбратьИерархически(), на которые накладываются существенные ограничения. К тому же, в большинстве случаев работа с использованием запросов быстрее, чем работа с использованием программного кода.

Простой пример поиска и вывода товаров со стоимостью больше 1000:

Запрос = Новый Запрос; Запрос.Текст = «ВЫБРАТЬ | Товары.Наименование |ИЗ | Справочник.Товары КАК Товары |ГДЕ | Товары.Стоимость > 1000»; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Наименование); КонецЦикла;

Открытие форм справочника

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

ОткрытьФорму(, , , , , , , )

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

ПоказатьЗначение(, )

Кроме методов ОткрытьФорму() и ПоказатьЗначение() есть и другие (ОткрытьФормуМодально, ОткрытьЗначение, ПолучитьФорму), но их использование не рекомендуется, т.к. часть этих методов использует режим модального открытия, часть противоречит свежим рекомендациям фирмы 1С.

Приведем примеры программного открытия форм справочника:

// Открыть форму списка ОткрытьФорму(«Справочник.Контрагенты.ФормаСписка»); // Открыть форму элемента // Контрагент – реквизит формы, заполняемый пользователем интерактивно ПоказатьЗначение(, Контрагент); // Еще один способ открытия формы элемента ПараметрыОткрытия = Новый Структура(«Ключ», Контрагент); ОткрытьФорму(«Справочник.Контрагенты.Форма.ФормаЭлемента», ПараметрыОткрытия); // Открыть форму группы // ГруппаКонтрагентов– реквизит формы, заполняемый пользователем интерактивно ПоказатьЗначение(, ГруппаКонтрагентов); // Еще один способ открытия формы группы ПараметрыОткрытия = Новый Структура(«Ключ», ГруппаКонтрагентов); ОткрытьФорму(«Справочник.Контрагенты.Форма.ФормаГруппы», ПараметрыОткрытия);

Внимание!

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

Источник: https://pro1c8.ru/programmnaya-rabota-spravochniki/

Справочники в 1С — настройки, свойства, нумерация

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

Справочники 1С — специализированный объект древа метаданных, который служит для хранения статичной информации справочного характера.

Например, в типовых конфигурациях можно увидеть следующие виды: Контрагенты, Номенклатура, Сотрудники, Основные средства и т.д. Информация в справочниках, как правило, часто не изменяется.

Справочники в дальнейшем используются практически во всех объектах учета как разрез учета или справочная информация.

Справочники в конфигураторе 1С 8

Ниже мы рассмотрим настройку и проектирование справочника из конфигуратора на примере справочника «Номенклатура».

Вкладка «Основные»

На вкладке «Основные» указывается имя, синоним, представление объектов, описание назначения.

Вкладка «Иерархия справочника»

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Здесь устанавливается иерархичность справочника.

Иерархия в 1С 8.3 бывает двух типов — «групп и элементов» и «элементов«. Отличается тем, что в первом случае родителем (папкой) может быть только папка (группа), а во втором случае родителем может быть и элемент.

«Размещать группы сверху» — флаг отвечает за отображение групп в форме списка.

Также в настройках можно ограничить количество групп иерархии справочника соответствующей настройкой.

Вкладка «Владельцы»

Справочник может быть подчинен другому справочнику. С точки зрения конфигурирования 1С 8.3 это значит, что у подчиненного элемента становится обязательным реквизит «Владелец». Пример такой связи справочников в типовых конфигурациях «Номенклатура — Единицы Измерения», «Контрагенты-Договоры Контрагентов».

Владельцем справочника могут также быть следующие объекты метаданных: планы обмена, планы видов характеристик, планы счетов, планы видов расчета.

Вкладка «Данные»

Самая важная вкладка с точки зрения программиста. На ней указываются реквизиты справочника.

У справочника есть набор стандартных реквизитов, которые не редактируются программистом 1С 8.2, список их можно увидеть, нажав кнопку «Стандартные реквизиты»:

Остановлюсь на каждом подробнее:

  • ЭтоГруппа — реквизит  с типом булево, показывающий, группа это или элемент. Доступен только в иерархическом справочнике. Обратите внимание, значение этого реквизита невозможно изменить в режиме 1С: Предприятие.
  • Код — реквизит, тип число или строка (как правило строка). Номер, присваиваемый системой автоматически. Как правило, рассчитывается как (предыдущий код + 1). Рекомендую использовать именно строковый тип, потому как сортировка числовых значений происходит не так, как нужно. Можно использовать как представление справочника в списке и в полях ввода. Как правило, используется для поиска элемента при вводе по строке. Если Вам нужно убрать поле Код, укажите в длине строки ноль.
  • Наименование — реквизит, обязательный к заполнению, строкового типа. Максимальная длина строки — 150 символов. Можно использовать как представление справочника в списке и в полях ввода. Как правило, используется для поиска элемента при вводе по строке. Если Вам нужно убрать поле Наименование, укажите в длине строки ноль.
  • Родитель — реквизит, имеющий тип СправочникСсылка.. Доступен только в иерархическом справочнике. Указывает на вышестоящего родителя в иерархии. Если Элемент или Группа находятся в корне справочника, указывается значение Справочник..ПустаяСсылка.
  • Владелец — ссылка на элемент-владелец текущего элемента (группы) справочника. Доступен только в подчиненном справочнике 1С.
  • ПометкаУдаления — реквизит с типом булево. Отвечает за отображение «пометки удаления» в системе. Помеченный на удаление элемент считается непригодным к использованию, однако на нём могут оставаться старые движения в документах.
  • Ссылка — поле строкового типа. В этом реквизите хранится уникальный идентификатор объекта — GUID.  То, что в системе мы видим в визуальном отображении под название «ссылка», — это всего лишь представление объекта. Невозможно изменить.
  • Предопределенный — тип булево, отображает, является ли элемент предопределенным, об этом позже. Невозможно изменить.

На вкладке «Данные» так же указывается представление справочника в системе, до версии 8.2.16 представление могло быть лишь Кодом или Наименованием. В свежих версиях платформы (начиная с  8.3) представление можно описать самостоятельно в модуле менеджера с помощью обработчика «ОбработкаПолученияПредставления».

Вкладка «Нумерация»

Здесь указываются настройки справочника по части нумерации. Рекомендуется использовать именно автонумерацию. Контроль уникальности — флаг, который помогает, если нужно, сделать код уникальным. Если с установленным флагом Вы попытаетесь записать элемент справочника с неуникальным кодом, в 1С Вы получите сообщение «Код справочника стал неуникальным».

Серия кодов — определяет, как нумеровать справочник, можно ввести нумерацию справочника в разрезе владельца. Например, у контрагента «Рога и копыта» будет иметься своя нумерация договоров — «1, 2, 3»  и тд.

Вкладка «Формы»

Тут описываются формы для справочника. Если конфигурация запускается как в обычном, так и управляемом режиме, тогда вкладок с формами по умолчанию будет две: «основные» и «дополнительные» — для обычного и управляемого приложения разные.

На этой странице есть немаловажное свойство справочника — «Ввод по строке«. Это очень удобная функция 1С 8, позволяющая при заполнении данных в поле ввода не заходить в справочник, а набрать его наименование, код или т.п. и выбрать из выпадающего списка нужный элемент. Выглядит это так:

Вкладка «Прочее»

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

На странице можно также определить список предопределенных элементов справочника. Это элементы, которые невозможно удалить в режиме Предприятия. К предопределенным элементам можно обратиться в конфигураторе напрямую, по имени, например: Справочники.Номенклатура.Услуга.

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

Источник: https://programmist1s.ru/spravochniki-1s-8/

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

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: