Конфигурирование и программирование на платформе «1С:Предприятие 8.3»
Занятие 1
Назначение и основные понятия системы 1С: Предприятие. История создания и развития 1С
Назначение и основные понятия системы 1С: Предприятие. Основные решаемые задачи
Назначение и основные понятия системы 1С: Предприятие. Конкуренты
Назначение и основные понятия системы 1С: Предприятие. Программирование, конфигурирование, разработка.
Назначение и основные понятия системы 1С: Предприятие. Платформа и конфигурация
Прикладные решения фирмы 1С и партнеров
Ссылка для скачивания учебной версии
Ссылка для скачивания учебной версии
Установка платформы
Установка платформы
Установка платформы
Установка платформы
Установка платформы
Стартовое окно запуска 1С:Предприятия
Занятие 2
Основные типы данных (базовые)
Понятие “Ссылка”
Иерархические справочники
Владельцы справочников
Предопределенные элементы справочника
Объект метаданных “Константы”
Объект метаданных “Перечисление”
Самостоятельная работа №1
Объект метаданных “Документ”.
Объект метаданных “Документ”. Структура
Объект метаданных “Документ”. Проведение
Объект метаданных “Документ”. Движения
Объект метаданных “Документ”. Ввод на основании
Самостоятельная работа №2
Основные формы объектов
Самостоятельная работа № 3
Реквизиты и элементы формы
“Команды” формы
Занятие 3
Основные правила (особенности) языка 1С
Основные правила (особенности) языка 1С
Переменные
Переменные
Условная команда
Логические выражения
Сравнение
Сравнение
Циклы (Цикл «Для…»)
Циклы (Цикл «Для Каждого…»)
Циклы (Цикл «Пока…»)
Занятие 4
Директивы компиляции
Директива &НаКлиенте
Директива &НаСервере
Директива &НаСервереБезКонтекста
Директива &НаКлиентеНаСервереБезКонтекста
Директивы
Структура (универсальная коллекция 1С)
Регистр сведений
Регистр сведений
Занятие 5
Общие модули
Регистры накопления
Регистры накопления
Регистры накопления
Особенности проектирования регистра накопления
Занятие 6
Запросы в 1С
Основная структура запроса
Основная структура запроса
Основная структура запроса
Условия
Группировки
Итоги
Сортировка
Соединения
Левое соединение
Левое соединение
Левое соединение
Правое соединение
Правое соединение
Правое соединение
Внутреннее соединение
Внутреннее соединение
Внутреннее соединение
Полное соединение
Полное соединение
Полное соединение
Перекрестное соединение
Занятие 7
Временные таблицы
Временные таблицы
Вложенные запросы
Объединение таблиц
Занятие 8
Контроль остатков при списании
Алгоритм старой методики проведения
Алгоритм новой методики проведения
Преимущества контроля остатков по новой методике
Значит, нужно всегда использовать новую методику, верно?
Занятие 9
Журналы документов
Журналы документов
Отчеты
СКД
СКД
Занятие 10
Обработка
Внешний отчет и внешняя обработка
Занятие 11
Роли
Роли
Привилегированный режим
Параметры сеанса
Особенности использования параметров сеанса
Занятие 12
Методы интерактивной работы
Методы интерактивной работы
Методы интерактивной работы (ознакомительные)
Методы интерактивной работы
Методы интерактивной работы
Модальные окна
Методы интерактивной работы
Модальный метод
Асинхронный метод ПоказатьВводЧисла()
Асинхронный метод ПоказатьВводСтроки()
Как быстро преобразовать синхронный метод в асинхронный
Как отличить модальный (синхронный) метод от асинхронного
Временно хранилище
Как это работает? Как отобразить картинку на форме
Как это работает? Как отобразить картинку на форме
Занятие 13
Работа с текстовыми файлами (*.TXT)
Работа с текстовыми файлами. ЧтениеТекста()
Работа с текстовыми файлами. ЧтениеТекста()
Работа с текстовыми файлами. ТекстовыйДокумент()
Работа с файлами XLS
Работа с файлами XLS
Перехват исключений в коде
Занятие 14
Возможности интеграции с 1С
Механизмы интеграции в платформе 1С
Сериализация и десериализация данных
Сериализация объекта
Сериализация XML
Сериализация XML
Десериализация XML
Сериализация XDTO
Сериализация XDTO
Десериализация XDTO
Сериализация JSON
Сериализация JSON
Десериализация JSON
ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С
ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С
Занятие 15
Механизм расширений конфигурации
Какие возможности предоставляет механизм?
Механизм расширений конфигурации
Сравнение и объединение конфигураций
Рекомендации для начинающих программистов 1с.
Список литературы
Полезные ссылки
Последовательность вызова событий при записи документа
Действие Записать
Действие Записать
Действие Записать
Действие Провести (Провести и Закрыть)
Действие Отмена проведения

Презентация курса

1. Конфигурирование и программирование на платформе «1С:Предприятие 8.3»

Преподаватель курса:
Бужан Максим
Александрович
buzhanmaksim@gmail.com

2. Занятие 1

• 1.1 Назначение и основные понятия системы 1С: Предприятие 8.
• 1.2 Создание информационной базы.
• 1.3 Отличия файловой от клиент-серверной информационной базы.
• 1.4 Основные возможности настройки интерфейса в пользовательском режиме.
• 1.5 Основные возможности работы в конфигураторе.
• 1.6 Структура хранения данных 1С.
• 1.7 Объект метаданных «Справочник».
• 1.8 Работа с подсистемами.
• 1.9 Выгрузка/Загрузка информационной базы.
• 1.10 Выгрузка/Загрузка конфигурации.
1

3. Назначение и основные понятия системы 1С: Предприятие. История создания и развития 1С

Linux
Масштабирование
(кластер серверов)
2003г.
Управление
торговлей
2006г.
1С: Предприятие 8.1
1999г.
1С: Предприятие 7.7
1992г.
Первый собственный
продукт - прототип
программы «МиниБухгалтерия".
1994г.

Бухгалтерия 6.0
2002г.
1С: Предприятие 8.0
2012г.
Ознакомительная версия
1С: Предприятие 8.3
2013г.
1С: Предприятие 8.3
2009г.
1С: Предприятие 8.2
2004г.
Прекращение
поддержки
1С: Предприятие 7.7
Оптимизирована скорость
работы;
Балансировка нагрузки;
Повышена отказоустойчивость;
Защищенные данные;
Управляемая форма (Такси);
Позже механизм расширений;
Боты;
1996г.
1С: Предприятие 7.0
1993г.
1С Бухгалтерия
1991г.
для DOS
Возникновение
компании "1С".
•Бухгалтерский учет;
•Оперативный учет;
•Расчет;
2

4. Назначение и основные понятия системы 1С: Предприятие. Основные решаемые задачи

а) автоматизация производственной и торговой деятельности;
б) финансовых организаций;
в) деятельности в сфере обслуживания;
г) поддержка оперативного управления предприятием;
д) организационной и хозяйственной деятельности;
е) автоматизация бухгалтерского учета;
ж) формирование отчетности в государственные контролирующие органы;
з) решение задач планирования;
и) бюджетирования и финансового анализа;
к) расчет зарплаты и управление персоналом.
Ключевым направлением развития «типовых решений» является развитие нового поколения
управленческих и учетных решений на технологической платформе.
3

5. Назначение и основные понятия системы 1С: Предприятие. Конкуренты

Галактика
• класс ERP-решений;
• полноценная альтернатива 1С;
• интеграции по средствам XML, COM, ActiveX,
ODBC.
• систему нельзя корректировать;
• все доработки необходимо заказывать у разработчика системы;
• интерфейс с первого взгляда не очень дружелюбный, напоминает
MS Excel.
Парус
• состоит из модулей: финансы, бухгалтерия, MRP,
CRM и т.д.
• масштабируемость решения.
• систему имеют право дорабатывать только сами разработчики;
• софт приходится использовать «как есть»;
• как правило, устанавливается в БД Oracle, что выходит достаточно
дорого.
SAP
• программа класса ERP;
• состоит из модулей, различающихся по видам
назначения;
• масштабируемость решения.
• высокая цена лицензий и услуг (в 3-10 раз выше, чем 1С).
Microsoft
Dinamics
Axapta
(NAVISION)
• все современные модули: MRP, HR, CRM и т.д.;
• высокая степень интегрируемости с продуктами
Microsoft — Outlook, Excel и тд
• доработки софта, подобно САП, достаточно трудоемкие;
• специалистов на отечественном рынке не так уж много.
*на данный момент у 1С 8 нет достойных аналогов по соотношению цена/качество/масштабируемость/настраиваемость (особенно с выходом ERP 2.0). В
отечественных альтернативах 1С, как правило, невозможно вносить изменения, а зарубежные достаточно дорогие. Плюс в зарубежных аналогах 1C очень не
торопятся вносить изменения, связанные с изменением законодательства. (мнение автора).
4

6. Назначение и основные понятия системы 1С: Предприятие. Программирование, конфигурирование, разработка.

Термины:
Программист 1С;
Релиз;
Разработчик 1С;
Версия;
Технологическая платформа;
Редакция;
Конфигурация;
и др.
Конфигурируемость;
Программа;
Внедрение;
Типовое решение;
Разработка прикладных решений;
Типовая и нетиповая конфигурация;
5

7. Назначение и основные понятия системы 1С: Предприятие. Платформа и конфигурация

Завод «Покрышкин»
1С:
Бухгалтерия
1С:
Документооборот
1С:
Документооборот
ПЛАТФОРМА
1С:
Бухгалтерия
Конфигурации
ПЛАТФОРМА
Кафе «У Дома»
ПЛАТФОРМА
1С:
Розница
1С:
УПП
1С:
Розница
1С:
Управление
торговлей
6

8. Прикладные решения фирмы 1С и партнеров

- "1С: Бухгалтерия 8";
- "1С: Налогоплательщик 8";
- "1С: Зарплата и Управление Персоналом";
- "1С: Управление производственным предприятием";
- "1С: Консолидация 8";
- "1С: Управление торговлей";
Типовые прикладные решения фирмы «1С» и
партнеров, предназначенных для автоматизации
одной определенной области деятельности.
- "1С: Бухгалтерия бюджетного учреждения 8";
- "1С: Бухгалтерия автономного учреждения 8";
- "1С: Платежные документы 8";
- "1С: Розница 8";
Конфигурируемость системы – возможность
внесения изменений в используемую
конфигурацию.
- "1С: Архив 8";
- "1С: Управление небольшой фирмой 8";
- "1С: Зарплата и кадры автономного учреждения 8".
https://1c.by/v8/generic_products/index.php
https://v8.1c.ru/tekhnologii/tipovye-prikladnye-resheniya-dlya-rossiyskikh-organizatsiy-na-platforme-1s-predpriyatie-8/
7

9. Ссылка для скачивания учебной версии

https://online.1c.ru/catalog/free/learning
http://online.1c.ru/catalog/free/31684486/
8

10. Ссылка для скачивания учебной версии

https://online.1c.ru/catalog/free/learning
http://online.1c.ru/catalog/free/31684486/
9

11.

10

12. Установка платформы

Понятие «релиз» применяется в компьютерной
индустрии для обозначения обновления программы,
немного отличающегося от предыдущего. Каждый
номер фиксирует некое уникальное состояние.
Версия – исправление текущих ошибок и внесение
незначительных усовершенствований (выпуск новой
версии
должен
обеспечивать
переход
с
предыдущей с сохранением данных).
Редакция – внесение существенных изменений в
структуру
учета,
требующих
преобразования
данных.
11

13. Установка платформы

12

14. Установка платформы

13

15. Установка платформы

14

16. Установка платформы

15

17. Стартовое окно запуска 1С:Предприятия

16

18.

Создание информационной базы
Файловые информационные базы.
Клиент-серверные информационные базы.
- их различия, плюсы и минусы
Версии платформы 1С.
17

19.

Схема работы в файловом режиме
Преимущества:
• Оптимален для небольшого количества
пользователей (до 5-ти);
• Простота установки и эксплуатации системы;
• Для работы с информационной базой не
требуются дополнительные программные средства
кроме операционной системы и 1С Предприятие;
• Простое создание резервных копий путем простого
копирования файла информационной базы;
• Невысокая стоимость.
Минусы:
• Размер базы до 10 ГБ в одной таблице;
• Менее надёжная чем клиент-серверный вариант;
• Без активных пользователей не работают
регламентные задания.
• Нет отказоустойчивости. База 1С - это папка в сети,
любое повреждение файлов в этой папке по сети
может повредить информационную базу;
https://its.1c.ru/db/metod8dev#content:5924:hdoc
https://its.1c.ru/db/metod8dev#content:5932:hdoc
Файл базы данных - 1Cv8.1CD
18

20.

Схема работы в клиент-серверном режиме
Преимущества:
• Распределение нагрузки между серверами;
• Лучшая надежность данных от сбоев
клиентских компьютеров и локальной сети;
• Оптимально для крупных производственных
компаний;
• Удобство администрирования;
• Размер базы не ограничен;
• Регламентные задания работают без
пользователей;
• Отказоустойчивость (переключение на другой
сервер).
Минусы:
• Более высокие затраты.
19

21.

Обычное приложение (обычные формы)
20

22.

Обычное приложение (обычные формы)
21

23.

Обычное приложение (обычные формы)
22

24.

Управляемое приложение
23

25.

Управляемое приложение(Такси)
24

26.

Конфигуратор 1С
• Что такое конфигуратор и зачем он нужен.
• Основные возможности.
• Панели конфигуратора.
• Параметры конфигуратора.
• Окно редактирования объекта конфигурации.
• Дерево объектов конфигурации.
25

27.

Пользовательский режим (1с Предприятие)
• Настройка интерфейса
• Настройка панелей.
• Настройка панели разделов.
• Все функции
26

28.

Объект метаданных “подсистема”
Основной элемент построения интерфейса разрабатываемого прикладного решения,
для выделения в конфигурации функциональных частей, на которые логически
разбивается прикладное решение.
Подсистемы могут иметь иерархическую структуру, т. е. одна подсистема может включать
в себя несколько других подсистем
Каждый объект конфигурации можно включить в состав одной или нескольких подсистем.
Разделы прикладного решения, по которым пользователь осуществляет основную
навигацию, однозначно соответствуют первому уровню подсистем конфигурации
27

29.

Объект метаданных “подсистема”
Для существующих Подсистем можно определять
вложенные (подчиненные). Данные Подсистемы будут
образовывать группы Панели навигации.
В принципе, Подсистемы являются не обязательным объектом. Т.е. конфигурация, разработанная на Платформе
8.3, вполне сможет работать без каких-либо Подсистем.Но в этом случае Панели разделов вообще не будет, все
будет отображаться на Рабочем столе. Очень простые конфигурации с малым набором объектов смогут
работать и без Подсистем.
27

30.

Объект метаданных “справочник”
Позволяют хранить в информационной базе данные, имеющие одинаковую структуру и
списочный характер. Это может быть, например, список сотрудников, перечень товаров,
список поставщиков или покупателей.
Каждый элемент справочника характеризуется кодом и наименованием.
Каждый элемент справочника, как правило, содержит некоторую дополнительную
информацию, которая подробно описывает этот элемент.
Каждый элемент справочника может содержать некоторый набор информации, которая
одинакова по своей структуре, но различна по количеству, для разных элементов
справочника.
28

31.

Структура хранения данных в системе 1С
29

32.

Структура хранения данных в системе 1с
30

33.

Выгрузка / Загрузка информационной базы
• Зачем это нужно?
• Расширение .dt
• Что хранится в файле .dt
31

34.

Выгрузка / Загрузка конфигурации
• Зачем это нужно?
• Расширение .cf
• Что хранится в файле .cf
32

35. Занятие 2

• 2.1 Реквизиты, табличные части и их свойства.
• 2.2 Иерархические справочники.
• 2.3 Владельцы справочников.
• 2.4 Предопределенные элементы справочника.
• 2.5 Объект метаданных «Перечисление».
• 2.6 Объект метаданных «Документ».
• 2.7 Основные формы объектов.
• 2.8 Основная форма элемента.
• 2.9 Реквизиты и элементы формы.
• 2.10 Элемент формы «Команда».
33

36. Основные типы данных (базовые)

Виды примитивных типов 1С (неделимых на другие типы):
• СТРОКА (содержат строку произвольной длины с возможностью одновременного
использования слов на разных языках);
• ЧИСЛО (может быть представлено любое десятичное число);
• ДАТА (всегда содержит дату и время);
• БУЛЕВО (только значения "Истина" или "Ложь", задаваемые соответствующими
литералами);
• НЕОПРЕДЕЛЕНО (пустое значение с незаданным типом в памяти компьютера);
• NULL (пустое значение с незаданным типом в базе данных);
• ТИП (используются для идентификации типов значений).
34

37. Понятие “Ссылка”

Всего в платформе 1С 8.3 можно выделить несколько видов объектов – это объекты
конфигурации (или объекты метаданных, прикладные объекты), общие объекты и
универсальные коллекции значений.
Объекты конфигурации 1С или объекты метаданных создаются на этапе конфигурирования
разработчиком – это справочники, документы, константы и т.п.
Общие объекты – это объекты встроенного языка программирования 1С, необходимые для
различных технических и вспомогательных нужд.
Универсальные коллекции значений – это объекты встроенного языка программирования,
которыми может оперировать разработчик. Предназначены для хранения наборов
данных, причем эти наборы данных хранятся в оперативной памяти компьютера.
Ссылка указывает на данные экземпляра объекта, но не хранит их, т.е. получив ссылку на
конкретный экземпляр объекта, мы сможем узнать всю информацию об экземпляре этого
объекта, но не сможем внести какие-нибудь коррективы в эту информацию. Так вот, ссылка
может быть только у объектов метаданных.
35

38.

Структура хранения данных в системе 1с
36

39.

37

40. Иерархические справочники

В справочнике Номенклатура могут быть созданы группы:
Бытовая техника, Обувь, Продукты и т. д., в которых
располагаются элементы, относящиеся к этим группам.
Кроме того группы справочника могут включать в себя и
другие группы, создавая тем самым многоуровневую
иерархическую структуру.
Элементы справочника будут относиться не к группам, а
к другим элементам этого же справочника. Такой вид
иерархии может использоваться, например, при
создании справочника Задачи, где одна задача может
включать в себя несколько других задач.
38

41. Владельцы справочников

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

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

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

43. Объект метаданных “Константы”

«Константы» - объект конфигурации (объект метаданных), предназначенный для хранения
редко изменяющейся информации, в т.ч. о настройках системы. Каждая константа
позволяет хранить одно значение
Например:
• Название организации;
• ИНН;
• Генеральный директор и т.д.
41

44. Объект метаданных “Перечисление”

«Перечисление»

объект
конфигурации(объект
метаданных),
конфигураторе задать список предопределенных значений, которые:
• пользователь сможет выбирать в тех или иных полях;
• пользователь не может изменить;
• напрямую доступны для обращения в программном коде.
позволяющий
в
Стандартными реквизитами Перечисления являются:
• Ссылка — уникальный идентификатор объекта;
• Порядок — определяет, в каком порядке выводятся значения перечисления пользователю.
Например:
• ставки налога на добавленную стоимость (0, 10 или 20%);
• статусы заказов ("Согласован", "К отгрузке", "Закрыт");
• пол (мужской/женский) и т.д.
42

45. Самостоятельная работа №1

1. Создать перечисление “Виды контактной информации”. Значения: “Адрес”, “Телефон”,
“Email”.
2. Установить тип перечисление “Виды контактной информации” для колонки “Вид контактной
информации” табличной части “Контактная информация” справочника “Контрагенты”.
3. Создать справочник “Физические лица”. Справочник должен быть иерархическим,
максимальное количество уровней 2. Добавить табличную часть “Виды контактной информации”
аналогичную табличной части справочника “Контрагенты”.
4. Создать справочник “Сотрудники”. Сделать его с неограниченной иерархией. Справочник
должен быть подчинен справочнику “Физические лица”. Добавить реквизит с типом строка (длина
30) “Должность”.
- Оба справочника добавить в подсистему “Оперативный учет -> Справочники”
43

46. Объект метаданных “Документ”.

«Документы» — объект метаданных, с помощью которого в прикладном решении хранится
информация о совершенных хозяйственных операциях или о событиях, произошедших в
"жизни" предприятия вообще. Это могут быть, например, приходные накладные, приказы о
приеме на работу, счета, платежные поручения и т.д.
Каждый созданный документ в конфигурации создается для отражения своего типа
операции (например, поступление товаров, списание товаров и т.д.).
Документы могут:
• проводиться;
• просто записываться.
Состояния документа 1С:
• не помечен на удаление и не проведен;
• не помечен на удаление и проведен;
• помечен на удаление и не проведен.
44

47. Объект метаданных “Документ”. Структура

Объект встроенного языка "Момент времени" содержит дату проведения документа и
ссылку на него, что позволяет однозначно идентифицировать положение документа на
временной оси.
Значения свойств "Дата" и "Ссылка" реальных полей таблицы документа определяют его
хронологическую позицию среди других документов.
Каждый документ 1С содержит:
• номер;
• дату и время (позволяют установить строгую временную последовательность
совершения операций);
• набор реквизитов (набор информации, которая является одинаковой для всех
документов этого конкретного вида);
• табличные части (набор информации, которая одинакова по своей структуре, но
различна по количеству, для разных документов этого конкретного вида);
Рекомендуется устанавливать строковый тип номера, так как в дальнейшем возможно
потребуется указывать в номере и префикс организации.
45

48. Объект метаданных “Документ”. Проведение

Важным свойством документа является возможность его проведения:
• если документ проводится, то он может изменить состояние тех или иных учитываемых
данных, и как правило, при проведении создает записи в регистрах сведений, регистрах
накопления, регистрах бухгалтерии, регистрах расчета, тем самым внося изменения в
учет организации;
• если же документ не является "проводимым", значит, что событие, которое он отражает,
не влияет на состояние учета, который ведется в данном прикладном решении
(документы, у которых запрещено проведение, обычно используются как печатные
формы, например: счет, доверенность и т.д.).
Если флаг "Проведен" у документа установлен в "Истина", то для системы это означает, что
документ проведен (в общем списке такие документы выделены соответствующей
пиктограммой).
С точки зрения логики программы проведенный документ может влиять на отчетность
(финансовый результат компании).
46

49. Объект метаданных “Документ”. Движения

Вкладка "Движения" определяет состав регистров, по которым будет делать движения
документ, и позволяет устанавливать следующие свойства документа:
1. Проведение (Разрешить или Запретить) - определяет, разрешено ли проведение
(движения) данного документа.
2. Оперативное проведение (Разрешить или Запретить) - если установлено "Разрешить", то
проведение документа будущей датой невозможно.
3. Удаление движений — определяет режим очистки движения документа:
• Удалять автоматически при отмене проведения — движения будут очищены только
при нажатии кнопки «Отмена проведения», но не удаляются при перепроведении;
• Удалять автоматически — движения будут удаляться в любом случае, даже если
документ 1С перепроводится;
• Не удалять автоматически — значит, что удаление движений осуществляется
разработчиком.
47

50. Объект метаданных “Документ”. Ввод на основании

Ввод на основании обычно создает объект другого типа, данные которого лишь
функционально зависят от "объекта-основания" (в отличие от "копирования" – создания
нового объекта копированием существующего, причем того же типа и с идентичными
данными).
Документ может быть введен на основании:
• плана обмена,
• справочника,
• бизнес-процесса,
• задачи,
• другого документа.
• Для удобства можно воспользоваться специальным конструктором ввода на основании,
который автоматически сгенерирует модуль обработчика заполнения.
48

51. Самостоятельная работа №2

1. Создать документ “Списание товаров” аналогичный по структуре документу
“Поступление товаров”
2. Добавить документ “Списание товаров” в подсистему “Оперативный учет -> Документы”
49

52. Основные формы объектов

Форма элемента (основная) - предназначена для просмотра и изменения данных
отдельных объектов.
Как правило, она представляет данные в удобном для восприятия и редактирования виде.
Форма списка - предназначена для просмотра объектов одного вида и позволяет:
• выполнять навигацию по списку объектов;
• задавать временной интервал отображаемых объектов;
• добавлять, помечать на удаление и удалять объекты;
• выполнять сортировку и отбор отображаемой информации по нескольким критериям.
Форма выбора - предназначена для выбора конкретных объектов из списка, и обычно
содержит минимальный набор информации, необходимой для выбора того или иного
объекта.
50

53. Самостоятельная работа № 3

Повторить вид формы документа “Списание товаров”
51

54. Реквизиты и элементы формы

• Назначение и использование реквизитов формы;
• Назначение и использование элементов формы;
• Типы реквизитов;
• Декорация. Поле. Группа. Страница;
• Команда.
52

55. “Команды” формы

Модуль формы - модуль, в котором определяется поведение формы и действия,
выполняемые из нее (например, открытие других форм).
События свойств - выполнение определенного механизма после выполнения события;
События формы;
События элементов формы;
53

56. Занятие 3

• 3.1 Основные правила языка 1С.
• 3.2 Логические выражения.
• 3.3 Переменные и их объявление.
• 3.4 Циклы.
• 3.5 Процедуры, функции и их параметры.
• 3.6 Отладка программного кода.
• 3.7 Ссылочный тип данных.
54

57. Основные правила (особенности) языка 1С

Особенностью встроенного языка программирования 1С является двуязычный синтаксис
команд: русский и английский.
Программный код – это последовательность команд (слов). Команды делятся на:
•Переменные
•Операторы
•Функции и процедуры.
Разделителем операторов является символ «;». Этот знак является признаком окончания
оператора.
Имеются модули: у каждого справочника и документа их несколько, кроме того, модули
есть у регистров, отчетов и обработок и у каждой формы, а также в составе конфигурации
имеется возможность создавать общие модули;
55

58. Основные правила (особенности) языка 1С

Предварительная компиляция — перед исполнением модули, содержащие текст на
встроенном языке, преобразуются во внутренний код;
Кэширование скомпилированных модулей в памяти;
Мягкая типизация — тип переменной определяется типом значения, которое она содержит,
и может изменяться в процессе работы;
Отсутствие программного описания объектов конфигурации — разработчик может
использовать либо встроенные в платформу объекты, либо объекты, созданные системой
в результате визуального конструирования прикладного решения;
Событийная ориентированность встроенного языка.
56

59. Переменные

Переменные должны именоваться, начинаясь с символов русского или английского
алфавита или символа подчеркивания(«_»);
Не могут начинаться на цифру, но могут ее содержать;
Не рекомендуется именовать переменные используя имена конструкций языка, свойств
реквизитов объектов, в некоторых случаях система не даст этого сделать, в других может
привести к неявным ошибкам;
Имя должно быть понятным, запоминаемым. Допускается использование префиксов для
удобства восприятия, например: лЛокальнаяПеременная, фПеременнаяФормы;
Длина имени переменных не ограничена в разумных пределах, опирайтесь на удобство
чтения кода;
Платформа инициализирует переменные значением «Неопределено» по умолчанию
В момент объявления переменные явно присвоить значение возможно только, если это
параметр функции.
57

60. Переменные

Можно складывать переменные со значениями разных типов, при этом, тип результата
будет таким, каким был тип у первой переменной,
Например:
к = “25”+1; // к = “251”, не 26
Переменные со значениями разных типов можно сравнить на равенство или неравенство
(но не на больше-меньше, это вызовет исключение) — естественно, такие переменные не
равны;
58

61. Условная команда

Если <Логическое выражение> Тогда
//Код выполняется, если логическое выражение = Истина
Иначе
//Код выполняется, если логическое выражение = Ложь
КонецЕсли;
59

62. Логические выражения

Операции сравнения
Операция
Описание
>
Строго больше
>=
Больше, либо равно
=
Равно
<>
Не равно
<
Строго меньше
<=
Меньше, либо равно
Булевы операции
Операция
Operation
Описание
НЕ
NOT
Логическое
отрицание
И
AND
Логическое
умножение
ИЛИ
OR
Логическое
сложение
60

63. Сравнение

1>2
2 >= 2
|
|
|
2 >= 2
3 <> 3
19.02.2022 > 19.02.2022
01.01.2020 <> 19.02.2020
61

64. Сравнение

(Истина) или (Ложь)
НЕ (Истина)
(Ложь) И (Истина)
(Ложь) ИЛИ (Истина)
( 1 = 1 ) И (2 = 2)
НЕ ( 10 > 5 )
НЕ (“Кровать” = “Стул”) ИЛИ (“Кресло” = “Кресло”)
НЕ ( “Кровать” = “Стул” )
(10 <> 5) ИЛИ ( 5 = 5)
62

65. Циклы (Цикл «Для…»)

Для <Переменная> = <Знач1> По <Знач2> Цикл
//Код
КонецЦикла;
63

66. Циклы (Цикл «Для Каждого…»)

Для Каждого <Переменная> Из <КоллекцияЗначений> Цикл
//Код
КонецЦикла;
64

67. Циклы (Цикл «Пока…»)

Пока <Выражение> Цикл
//Код
КонецЦикла;
65

68. Занятие 4

• 4.1 Свойства и методы объектов.
• 4.2 Коллекция “Структура”.
• 4.3 Директивы компиляции.
• 4.4 Объект метаданных “Регистр сведений”.
• 4.5 Объектное получение данных.
66

69. Директивы компиляции

Директива компиляции (препроцессора) — это специальный способ указать командой
препроцессору 1С, где будет выполнен код 1С.
Это новшество реализовано только в управляемом приложении. Использование директив в
обычном
приложении
недоступно.
В
обычном
приложении
нет
разделения
программирования для клиента и сервера.
Пример:
Нельзя выдать пользователю диалоговое сообщение на сервере – это будет работать только
на клиенте.
Директива 1С определяется символом "&".
67

70. Директива &НаКлиенте

Директива &НаКлиенте
&НаКлиенте
Процедура НашаПроцедура()
НашЭлемент = Элементы.Контрагент; // - ДОСТУПНО
ЗначениеОбъекта = Объект.Контрагент; // - ДОСТУПНО
КодКонтрагента = Объект.Контрагент.Код; // - НЕДОСТУПНО
ОсновнойПоставщик = Константы.ОсновнойПоставщик.Получить(); // - НЕДОСТУПНО
СуммаЧисел = 10 + 20; // - ДОСТУПНО
КонецПроцедуры;
68

71. Директива &НаСервере

Директива &НаСервере
&НаСервере
Процедура НашаПроцедура()
НашЭлемент = Элементы.Контрагент; // - ДОСТУПНО
ЗначениеОбъекта = Объект.Контрагент; // - ДОСТУПНО
КодКонтрагента = Объект.Контрагент.Код; // - ДОСТУПНО
ОсновнойПоставщик = Константы.ОсновнойПоставщик.Получить(); // - ДОСТУПНО
СуммаЧисел = 10 + 20; // - ДОСТУПНО
КонецПроцедуры;
69

72. Директива &НаСервереБезКонтекста

Директива &НаСервереБезКонтекста
&НаСервереБезКонтекста
Процедура НашаПроцедура()
НашЭлемент = Элементы.Контрагент; // - НЕДОСТУПНО
ЗначениеОбъекта = Объект.Контрагент; // - НЕДОСТУПНО
КодКонтрагента = Объект.Контрагент.Код; // - НЕДОСТУПНО
ОсновнойПоставщик = Константы.ОсновнойПоставщик.Получить(); // - ДОСТУПНО
СуммаЧисел = 10 + 20; // - ДОСТУПНО
КонецПроцедуры;
70

73. Директива &НаКлиентеНаСервереБезКонтекста

Директива &НаКлиентеНаСервереБезКонтекста
&НаКлиентеНаСервереБезКонтекста
Процедура НашаПроцедура()
НашЭлемент = Элементы.Контрагент; // - НЕДОСТУПНО
ЗначениеОбъекта = Объект.Контрагент; // - НЕДОСТУПНО
КодКонтрагента = Объект.Контрагент.Код; // - НЕДОСТУПНО
ОсновнойПоставщик = Константы.ОсновнойПоставщик.Получить(); // - ДОСТУПНО
СуммаЧисел = 10 + 20; // - ДОСТУПНО
КонецПроцедуры;
71

74. Директивы

Директива
&НаКлиенте
&НаСервере
&НаСервереБезКонтекста
&НаКлиентеНаСервереБезКонтекста
Данные формы
База данных
+
+
+
-
+
-
&НаКлиенте - определяет клиентскую процедуру (функцию).
&НаСервере - определяет серверную процедуру (функцию) с контекстом.
&НаСервереБезКонтекста - определяет серверную процедуру (функцию) без контекста.
&НаКлиентеНаСервереБезКонтекста - определяет процедуру (функцию), исполняемую в
модуле формы на клиенте и на сервере.
&НаКлиентеНаСервере - определяет процедуру (функцию), исполняемую в модуле
команды, выполняемую на клиенте и на сервере.
Без контекста - это означает без доступа к данным формы.
72

75. Структура (универсальная коллекция 1С)

Структура - поименованная коллекция, состоящая из пар "ключ - значение". Обычно
используется для хранения небольшого количества значений, каждое из которых имеет
некоторое уникальное имя.
Ключ может быть только строковым, значение - произвольного типа.
К элементу структуры можно обращаться по значению его ключа, т.е. по имени.
СтруктураВозврата = Новый Структура();
//Способ 1
СтруктураВозврата.Вставить("ЦенаПроизводителя",
178);
СтруктураВозврата.Вставить("ПроцентСкидки",
25);
//Способ 2
СтруктураВозврата = Новый Структура("ЦенаПроизводителя,ПроцентСкидки",
178,
25);
73

76. Регистр сведений

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

77. Регистр сведений

Информация в регистре сведений хранится в виде записей, каждая из которых содержит:
• значения измерений регистра (описывают разрезы, в которых хранится информация);
• соответствующие им значения ресурсов (непосредственно содержат хранимую
информацию).
75

78. Занятие 5

• 5.1 Общие модули и их свойства.
• 5.2 Экспортные процедуры и функции.
• 5.3 Объект метаданных “Регистр накопления”.
• 5.4 Конструктор движений документов.
• 5.5 Модуль объекта.
76

79. Общие модули

Объект "Общие модули" содержит программный код (процедуры и функции), вызываемый
из других мест конфигурации (используемый в других программных модулях), и может
принадлежать всей конфигурации.
Примеры общего модуля 1С:
•расчет количества разницы рабочих дней;
•пересчет курсов валют;
•пересчет количества/цены/суммы в табличной части;
•обработка проведения по какому-то регистру, и др.
77

80. Регистры накопления

Объект 1С "Регистры накопления" - это прикладные объекты конфигурации, которые
составляют основу механизма учета движения средств (финансов, товаров, материалов и
т.д.), предназначены для хранения показателей оперативного учета и позволяют
автоматизировать такие направления, как складской учет, взаиморасчеты, планирование.
Регистр накопления представляет собой таблицу с информацией, в которой собраны все
движения определенных документов (поступления, списания или обороты).
Остаточный регистр (Остатки) хранит движения, а также исходя из них, остатки после
каждого движения. Остаточные регистры накопления используются, например, для учета
товаров на складах.
Оборотный регистр (Обороты) хранит движения без указания их направленности, и не
предполагает отдельного хранения остатков.
78

81. Регистры накопления

При формировании структуры регистра накопления обязательно должен быть назначен
регистратор, а также создан хотя бы один ресурс.
Обязательным атрибутом регистра накопления является "Период", причем периодичность
регулировке не подлежит - записи хранятся с точностью до секунды. Информация,
хранящаяся в регистре накопления, всегда привязана к оси времени.
При записи данных в регистр накопления "Период" не должен быть пустым. "Период" - это
стандартный реквизит, который обязателен к заполнению.
Регистры накопления всегда подчинены документу-регистратору. Поэтому среди их
стандартных реквизитов всегда есть "Регистратор".
79

82. Регистры накопления

Информация в регистре накопления хранится в виде записей, каждая из которых содержит:
1.значения измерений (описывают разрезы, в которых хранится информация);
2.соответствующие им значения ресурсов (накапливают нужные числовые количественные
данные).
Разрезом учета могут являться, например,
номенклатуры, серия номенклатуры, качество.
склад,
номенклатура,
характеристика
Задав интересующие нас измерения, мы можем в любой момент получить количество —
ресурс.
В разрезе разных измерений в дальнейшем, например, можно получать остатки на
определенную дату.
80

83. Особенности проектирования регистра накопления

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

Правильнее проиндексировать «Номенклатуру», а поле «Склад» индексировать не стоит,
так как количество складов в системе, как правило, не существенное.
81

84. Занятие 6

• 6.1 Условия, группировки и итоги в запросах.
• 6.2 Упорядочивание в запросах.
• 6.3 Виртуальные таблицы.
• 6.4 Соединения в запросах.
82

85. Запросы в 1С

Механизм запросов - это один из способов доступа к данным, которые поддерживает
платформа 1С:Предприятие. Используя этот механизм, разработчик может читать и
обрабатывать данные, хранящиеся в информационной базе.
ВАЖНО! Изменение данных с помощью запросов невозможно. Запросы специально
предназначены для быстрого получения и обработки некоторой выборки из
больших массивов данных, которые могут храниться в базе данных.
Для того чтобы разработчик имел возможность использовать запросы для реализации
собственных алгоритмов, в платформе реализован язык запросов.
Этот язык основан на SQL, но при этом содержит значительное количество расширений,
ориентированных на отражение специфики финансово-экономических задач и на
максимальное сокращение усилий по разработке прикладных решений.
83

86. Основная структура запроса

ВЫБРАТЬ
<ИмяПоля1> КАК <ПредставлениеПоля1>,
Сумма(<ИмяПоля2>) КАК <ПредставлениеПоля2>
ИЗ
<ИмяТаблицы1> КАК <ПредставлениеТаблицы1>
<ТипСоединения> СОЕДИНЕНИЕ <ИмяТаблицы2> КАК <ПредставлениеТаблицы2>
ПО <УсловиеСоединениеТаблиц>
ГДЕ
<УсловиеОтбораДанных>
СГРУППИРОВАТЬ ПО
<ИмяПоля1>
УПОРЯДОЧИТЬ ПО
<ИмяПоля1>
ИТОГИ
<ИмяПоля2>
ПО
<ИмяПоля1>
84

87. Основная структура запроса

ПОЛЕ - выбираемая колонка из таблицы выборки
ИМЯ_ПОЛЯ - псевдоним для поля
ТАБЛИЦА_ВЫБОРКИ - из какой таблицы происходит выборка
ИМЯ_ТАБЛИЦЫ_ВЫБОРКИ - псевдоним для таблицы выборки
ПОЛЕ_ДЛЯ_УСЛОВИЯ - условие для выборки
ЗНАЧЕНИЕ_УСЛОВИЯ - значение условия
ПОЛЕ_ГРУППИРОВКИ - имя поля, по которому должна происходить группировка
СОРТИРОВКА_ПО_ИМЕНИ_ПОЛЯ - имя поля, по которому должны упорядочиваться записи.
ИТОГИ_ПО_ИМЕНИ_ПОЛЯ - имя поля, по которому будут сворачиваться записи
85

88. Основная структура запроса

ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Код КАК Код
ИЗ
Справочник.Номенклатура КАК Номенклатура
86

89. Условия

ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование,
Номенклатура.Код КАК Код
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.ЭтоГруппа = ИСТИНА
87

90. Группировки

ВЫБРАТЬ
ПоступлениеТоваровСписокНоменклатуры.Номенклатура КАК Номенклатура,
СУММА(ПоступлениеТоваровСписокНоменклатуры.Количество) КАК Количество,
СУММА(ПоступлениеТоваровСписокНоменклатуры.Сумма) КАК Сумма
ИЗ
Документ.ПоступлениеТоваров.СписокНоменклатуры КАК
ПоступлениеТоваровСписокНоменклатуры
СГРУППИРОВАТЬ ПО
ПоступлениеТоваровСписокНоменклатуры.Номенклатура
Сумма
Среднее
Минимум
Максимум
Количество [различные]
88

91. Итоги

ВЫБРАТЬ
ПоступлениеТоваровСписокНоменклатуры.Номенклатура КАК Номенклатура,
ПоступлениеТоваровСписокНоменклатуры.Количество КАК Количество,
ПоступлениеТоваровСписокНоменклатуры.Сумма КАК Сумма
ИЗ
Документ.ПоступлениеТоваров.СписокНоменклатуры КАК
ПоступлениеТоваровСписокНоменклатуры
ИТОГИ
СУММА(Количество),
СУММА(Сумма)
ПО
Номенклатура
89

92. Сортировка

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
УПОРЯДОЧИТЬ ПО
Номенклатура.Наименование
90

93. Соединения

• Левое соединение
• Правое соединение
• Внутреннее соединение
• Полное соединение
• Перекрестное соединение
91

94. Левое соединение

92

95. Левое соединение

A
Люди
Характеристики
ИМЯ
ИМЯ
ВОЗРАСТ
Алена
Алена
21
Алефтина
Павел
18
Владимир
Петр
25
Владислав
Максим
26
Алефтина
30
B
РЕЗУЛЬТАТ ЛЕВОГО СОЕДИНЕНИЯ (внутреннее + строки левой)
ИМЯ из табл. Люди
ИМЯ из табл. Характеристики
ВОЗРАСТ из табл Характеристики
Алена
Алена
21
Алефтина
Алефтина
30
Владимир
NULL
NULL
Владислав
NULL
NULL
93

96. Левое соединение

ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура КАК Номенклатура,
СписаниеТоваровТовары.Количество КАК Количество,
ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
ПО СписаниеТоваровТовары.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
94

97. Правое соединение

95

98. Правое соединение

A
Люди
Характеристики
ИМЯ
ИМЯ
ВОЗРАСТ
Алена
Алена
21
Алефтина
Павел
18
Владимир
Петр
25
Владислав
Максим
26
Алефтина
30
B
РЕЗУЛЬТАТ ПРАВОГО СОЕДИНЕНИЯ (внутреннее + строки правой)
ИМЯ из табл. Люди
ИМЯ из табл. Характеристики
ВОЗРАСТ из табл Характеристики
Алена
Алена
21
Алефтина
Павел
18
NULL
Петр
25
NULL
Максим
26
NULL
Алефтина
30
96

99. Правое соединение

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

100. Внутреннее соединение

98

101. Внутреннее соединение

A
Люди
Характеристики
ИМЯ
ИМЯ
ВОЗРАСТ
Алена
Алена
21
Алефтина
Павел
18
Владимир
Петр
25
Владислав
Максим
26
Алефтина
30
B
РЕЗУЛЬТАТ ВНУТРЕННЕГО СОЕДИНЕНИЯ (сопоставление строк из А с B)
ИМЯ из табл. Люди
ИМЯ из табл. Характеристики
ВОЗРАСТ из табл Характеристики
Алена
Алена
21
Алефтина
Алефтина
30
99

102. Внутреннее соединение

ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура КАК Номенклатура,
СписаниеТоваровТовары.Количество КАК Количество,
ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
ПО СписаниеТоваровТовары.Номенклатура = ОстаткиТоваровОстатки.Номенклатура
100

103. Полное соединение

101

104. Полное соединение

A
Люди
Характеристики
ИМЯ
ИМЯ
ВОЗРАСТ
Алена
Алена
21
Алефтина
Павел
18
Владимир
Петр
25
Владислав
Максим
26
Алефтина
30
B
РЕЗУЛЬТАТ ПОЛНОГО СОЕДИНЕНИЯ (левое + правое)
ИМЯ из табл. Люди
ИМЯ из табл. Характеристики
ВОЗРАСТ из табл Характеристики
Алена
Алена
21
Алефтина
Алефтина
30
Владимир
NULL
NULL
Владислав
NULL
NULL
NULL
Павел
18
NULL
Петр
25
NULL
Максим
26
102

105. Полное соединение

ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура КАК Номенклатура,
СписаниеТоваровТовары.Количество КАК Количество,
ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
ПОЛНОЕ СОЕДИНЕНИЕ Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ПО ОстаткиТоваровОстатки.Номенклатура = СписаниеТоваровТовары.Номенклатура
103

106. Перекрестное соединение

ВЫБРАТЬ
СписаниеТоваровТовары.Номенклатура КАК Номенклатура,
СписаниеТоваровТовары.Количество КАК Количество,
ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ОстаткиТоваровОстатки.Номенклатура = СписаниеТоваровТовары.Номенклатура
104

107.

105

108.

106

109.

107

110.

108

111. Занятие 7

• 7.1 Временные таблицы в запросах.
• 7.2 Вложенные запросы.
• 7.3 Объединения в запросах.
109

112. Временные таблицы

Временные таблицы — это объекты СУБД, никаких временных таблиц на сервере 1С нет.
Физически временные таблицы по умолчанию создаются в оперативной памяти, а
именно в буферном кэше.
ВАЖНО! есть исключения. Например, если таблица слишком большая, то сервер может
принять решение сбросить ее на диск. Также возможна ситуация, когда сервер по какимлибо причинам решил отдать память под другие данные, тогда таблица тоже будет
записана на диск.
110

113. Временные таблицы

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ ЭлементыНоменклатуры
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ЭтоГруппа
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЭлементыНоменклатуры.Ссылка КАК Ссылка
ИЗ
ЭлементыНоменклатуры КАК ЭлементыНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО ЭлементыНоменклатуры.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
111

114. Вложенные запросы

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

115. Объединение таблиц

113

116. Занятие 8

• 8.1 Контроль остатков при списании.
• 8.2 Конструктор печатных форм
• 8.3 Работа с макетами.
• 8.4 Работа со строками.
114

117. Контроль остатков при списании

2 методики контроля остатков – “Новая” и “старая” методики контроля отрицательных
остатков при проведении документов в системе 1С:Предприятие 8.3, причем не только
остатков на складе, но и, например, взаиморасчетов.
Обе методики применяются и в типовых конфигурациях, и в Аттестационных заданиях. И
поскольку их две – нужно четко понимать, когда применима “новая” методика, а когда только
“старая”.
Принцип старой методики контроля остатков следующий: проверяем, есть ли остаток
товаров в нужном количестве. Если есть – списываем, если нет – сообщаем об ошибке.
В новой методике используется принцип:
списываем необходимые товары, далее
проверяем – образовались ли отрицательные остатки по товарам документа. Если да, то
нужно откатить проведение документа.
115

118. Алгоритм старой методики проведения

Алгоритм в старой методике состоит из следующих блоков:
1. Очистка старых движений регистра.
2. Получение запросом данных документа и остатков регистра.
3. Обход результатов запроса и проверка на достаточность товаров.
4. Переход в начало цикла, если были ошибки.
5. Выполнение движений в регистры.
6. Установка флага записи движений в конце транзакции.
Если товаров недостаточно, то документ не проводится.
Если товаров достаточно – выполняются движения-расход.
116

119. Алгоритм новой методики проведения

Алгоритм в новой методике состоит из следующих блоков:
1. Получение запросом данных документа.
2. Формирование движений-расход регистра.
3. Запись движений в БД.
4. Запрос, получающий отрицательные остатки из регистра.
5. Вывод сообщений о недостатке товаров.
Если товаров недостаточно, то документ не проводится.
Если товаров достаточно – выполняются движения-расход.
117

120. Преимущества контроля остатков по новой методике

1. Нет необходимости очищать старые движения документа. По сути это операция записи в
БД пустого набора движений и удаление существующих движений – это довольно
ресурсоемкие операции.
2. Запрос, получающий данные по отрицательным остаткам, обращается только к одной
таблице – нет необходимости делать левое соединение с данными документа и
применять функцию «ЕСТЬNULL()».
118

121. Значит, нужно всегда использовать новую методику, верно?

Нет, это не так!
Новая методика может использоваться только в том случае, если для проведения
документа есть все необходимые данные в самом документе.
То есть для получения данных не нужно обращаться к регистрам, по которым производится
контроль остатков.
Так, например, если в регистре «Свободные остатки» учитывалась бы и сумма, то
пришлось бы использовать старую методику контроля.
Почему?
Просто, чтобы рассчитать сумму списания себестоимости, придется обратиться к регистру.
И раз уж мы делаем этот запрос ДО формирования движений, то будет иметь смысл сразу
получить доступный остаток.
В типовой «1С:Управление торговлей 11» реализован контроль остатков по новой методике, а
в «1С:Бухгалтерии 8» – по старой методике.
https://xn----1-bedvffifm4g.xn--p1ai/articles/2017-02-12-two-methods-for-inventory-check/
119

122. Занятие 9

• 9.1 Объект метаданных “Журналы документов”.
• 9.2 Работа с динамическими списками.
• 9.3 Объект метаданных “Отчет”.
• 9.4 Создание печатных форм с помощью СКД.
120

123. Журналы документов

Объекты 1С "Журналы документов" предназначены для визуальной группировки
документов разных видов при просмотре: они позволяют объединить несколько документов
по одной теме в один список. Работая с журналом документов, пользователь может
вводить документы, просматривать их, редактировать и удалять.
Журналы документов - это вторичные данные, не несущие никакой первичной
информации и являющиеся не более чем еще одним представлением списка
документов.
Журнал 1С – это интерфейсный объект, предназначенный для удобства пользователя.
Создавать журнал для отображения документов одного вида не нужно, поскольку у
каждого документа есть форма списка, которая генерируется автоматически или которую
можно создать самостоятельно. Журналы полезны только для группировки документов
разного вида.
121

124. Журналы документов

В метаданных для журнала документов:
• указывается, какие виды документов будут в него входить (документ может входить в
один или несколько журналов или не входить ни в один журнал);
• описываются несколько граф (перечней реквизитов документов разных видов, значения
которых нужно отображать в одной колонке списка журнала).
Для каждого журнала система создает в базе данных таблицу, в которой:
• хранятся ссылки документов тех видов, которые входят в журнал;
• продублировано содержание документов, включенное в графы журнала, номера
документов, пометка проведенности и т.п.
• при записи документа в базу данных система вносит записи в таблицы тех журналов, к
которым относится данный документ или обновляет уже существующие там записи
документа.
122

125. Отчеты

Объект 1С "Отчеты" - прикладной объект, предназначенный для представления, просмотра
и печати накопленных данных в удобном для анализа виде;
это специальный
объект метаданных, предназначенный для формирования удобного для пользователя
представления данных из таблиц базы данных 1С.
Отчеты могут иметь реквизиты и табличные части, но их смысл отличается от реквизитов и
табличных частей справочников и документов. Отчет (и обработки) - это объекты, которые
не сохраняются в базе данных, а существуют только в определенные периоды времени,
пока с ними работает пользователь. Поэтому назначение реквизитов и табличных частей
отчетов (обработок) - указание параметров формирования отчетов и выполнения
обработок.
Для отладки отчетов в процессе разработки был создан механизм внешних
отчетов. Внешний отчет 1С находится не в конфигурации, а сохранен в отдельный файл
(обычно с расширением .erf). Его можно просто открыть, как обычный файл, как в
Конфигураторе, что в режиме Предприятие (Файл / Открыть).
123

126. СКД

Система компоновки данных представляет собой механизм, основанный на
декларативном описании отчетов и предназначенный:
1. Для построения отчетов;
2. Вывода информации, имеющей сложную структуру и содержащей произвольный
набор таблиц и диаграмм.
Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой
фирмой 1С.
Система компоновки данных интегрирована в объект конфигурации "Отчет", что позволяет
создавать отчеты без программирования.
124

127. СКД

Схема компоновки данных описывает данные, которые предоставляются отчету (откуда
получать данные и как можно управлять компоновкой данных) и представляет собой базу,
на основе которой могут быть сформированы всевозможные отчеты.
Схема компоновки данных может содержать:
• текст запроса с инструкциями системы компоновки данных;
• описание нескольких наборов данных;
• подробное описание доступных полей;
• описание связей между несколькими наборами данных;
• описание параметров получения данных;
• описание макетов полей и группировок;
• и др.
В режиме 1С:Предприятие система автоматически, на основании схемы компоновки
данных, содержащейся в отчете, может создать форму отчета и форму настроек отчета.
125

128. Занятие 10

• 10.1 Объект метаданных “Обработка”.
• 10.2 Создание внешней обработки.
• 10.3 Создание внешнего отчета.
126

129. Обработка

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

130. Внешний отчет и внешняя обработка

Внешние обработки (можно хранить в виде отдельных файлов с расширением .epf)
Внешний отчет 1С находится не в конфигурации, а сохранен в отдельный файл (обычно
с расширением .erf).
Главное различие – назначение использования объекта: отчеты нужны для отображения
информации, а обработки — для изменения информации.
Основные различия в свойствах метаданных – в отчетах можно указать основную Схему
компоновки данных (СКД) и указать настройки для сохранения параметров отчетов, а в
обработках этого нет.
128

131. Занятие 11

• 11.1 Роли, их применение и настройка.
• 11.2 Параметры сеанса.
129

132. Роли

Объект "Роли" предназначен для определения набора прав (совокупности разрешений)
пользователей конфигурации (ограничения прав доступа в прикладных решениях). Роль
определяет, какие действия, над какими объектами метаданных может выполнять
пользователь, выступающий в этой роли.
Роль в конфигурации может соответствовать:
• Должностям групп пользователей или
• Видам деятельности групп пользователей, для работы которых
данная конфигурация (например, "Администратор" или "Продавец").
предназначена
• В процессе ведения списка пользователей прикладного решения каждому пользователю
ставится в соответствие одна или несколько ролей (т.е. в версии 1C 8.х каждый
пользователь может иметь несколько ролей).
• Для каждого из объектов (справочники, документы) разработчик устанавливает свой
набор прав — чтение, запись, изменение, и т.д.
130

133. Роли

В 1С общая логика управления доступом - это логика разрешений (нет никаких
механизмов запрета доступа, а есть только механизмы выдачи доступа).
По умолчанию доступ ко всем данным запрещен. Настройка доступа заключается в
выдаче каждому пользователю нужных ему прав: если какой-то ролью пользователю дано
право на просмотр, например, документов "Накладная", то никакими способами нельзя
это право отнять (другими ролями или любыми другими механизмами платформы и
конфигурации). Т.е. если доступ уже выдан, то забрать его другими ролями
нельзя. Поэтому при ограничении ролями доступа пользователям к справочнику очень
важно проверять, что пользователю не назначена никакая другая роль на тот же справочник.
Можно изначально выдать не полный доступ к справочнику, а отфильтровать с
помощью RLS данные, на которые мы даем доступ.
131

134. Привилегированный режим

ВАЖНО!
Потенциально опасны любые экспортные процедуры и функции, которые выполняют на
сервере
какие-либо
действия
с
предварительной
безусловной
установкой
привилегированного режима, так как это отключает проверку прав доступа текущего
пользователя. Особого внимания требуют экспортные процедуры и функции клиентского
прикладного программного интерфейса сервера 1С:Предприятия.
Включать привилегированный режим следует точечно, чтобы остальной код не терял
возможности проверки прав пользователя. Для этого нужно:
1. установить привилегированный режим точно перед выполнением действия;
2. выполнить действие без проверки прав;
3. отключить привилегированный режим сразу же после выполнения действия;
4. продолжить выполнение кода в непривилегированном режиме.
132

135. Параметры сеанса

Объект "Параметры сеанса" предназначен для хранения значений определенных типов для
каждого клиентского сеанса на время работы этого сеанса. По сути, это некая глобальная
переменная, привязанная к сеансу текущего пользователя.
Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже), а их
значения рекомендуется использовать в запросах и условиях ограничения доступа к
данным для текущего сеанса. Если параметр не определен, во время обращения к нему
будет вызвана ошибка.
Параметры сеанса задаются только программно, универсального интерфейса для
установки параметров сеанса в системе нет.
133

136. Особенности использования параметров сеанса

1. Не рекомендуется использовать параметры сеанса для хранения значений, используемых
исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия
параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе
работы на клиенте потребует дополнительного серверного вызова и увеличит объем
передаваемых данных с клиента на сервер и обратно. В таких случаях следует использовать
глобальные переменные модуля управляемого приложения (и обычного приложения – для
режима обычного приложения, соответственно).
2. Не рекомендуется использовать параметры сеанса для кеширования вычисленных значений,
которые многократно используются в серверной бизнес-логике. В таких случаях следует
определять
функцию
в
серверном
общем
модуле
с
повторным
использованием возвращаемых значений. Исключение составляют случаи, когда время
вычисления результата функции модуля с повторным использованием возвращаемых
значений соизмеримо с периодом сброса платформенного кеша.
3. Не следует производить инициализацию параметров сеанса при запуске программы, так
как:
1. не все параметры сеанса запрашиваются из кода конфигурации при запуске
программы;
2. при работе программы возможно намеренное обнуление значений параметров сеанса
из кода на встроенном языке.
134

137. Занятие 12

• 12.1 Модальные и немодальные окна.
• 12.2 Временное хранилище.
135

138. Методы интерактивной работы

Вывод сообщений в пользовательском режиме решает ряд задач:
• отражение хода выполнения текущего процесса (показ стадии выполнения процесса;
• показ расчетных значений, полученных в ходе работы алгоритма);
• выдача ошибок пользователю для возможного их исправления;
• выдача рекомендаций;
Типы сообщений:
• терминирующие, которые останавливают выполнение программы и не дают
продолжить ее, пока пользователь не ознакомится с этим сообщением и не выполнит
определенные действия.
Например, на экран пользователю будет выдан вопрос, на который нужно будет ответить
Да или Нет. Пока пользователь не ответит – программа не выполняет дальнейшие
действия;
• ознакомительные сообщения, которые просто выводятся для пользователя и позволяют
работать дальше (т.е. используются в режиме оповещения).
136

139. Методы интерактивной работы

Терминирующими сообщениями - сообщения об ошибках.
Ознакомительные:
• рекомендации;
• сообщения о текущем этапе процесса;
• показ расчетных значений (отладочная печать).
137

140. Методы интерактивной работы (ознакомительные)

//способ 1
Сообщить("Текст сообщения");
//способ 2 (рекомендуется использовать вместо Сообщить())
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Текст сообщения";
Сообщение.Сообщить();
//способ 3
ПоказатьОповещениеПользователя("Текст сообщения");
//способ 4 (с использованием таймаута)
Предупреждение("Текст сообщения");
138

141. Методы интерактивной работы

//открытие формы элемента справочника «Номенклатура»
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта");
//открытие формы списка справочника «Номенклатура»
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
//открытие формы выбора справочника «Номенклатура»
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора");
//открытие формы справочника «Номенклатура» с именем «ФормаЭлемента»
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента");
139

142. Методы интерактивной работы

&НаКлиенте
Процедура ОткрытьФормуНоменклатуры(Команда)
//ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");
НоменклатураСсылка = ПолучитьНоменклатуруПоКоду("00000003");
ПараметрыФормы = Новый Структура("ЗначениеКопирования", НоменклатураСсылка);
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", ПараметрыФормы);
КонецПроцедуры
&НаСервере
Функция ПолучитьНоменклатуруПоКоду(Код)
Возврат Справочники.Номенклатура.НайтиПоКоду(Код);
КонецФункции // ПолучитьНоменклатуруПоКоду()
140

143. Модальные окна

Модальное окно выводится на самый верх и блокирует работу с другими окнами до
завершения действий с модальным окном. Кроме того, останавливается выполнение
программного кода на том месте, где происходит вызов этого окна. Выполнение кода
продолжится только после закрытия модального окна.
Модальный метод – метод, выполнение которого, приводит к открытию модального
окна. Синхронный метод.
Недостатки:
Во-первых, проблемы по использованию модальных окон возникают для мобильного
приложения.
Во-вторых, в браузере модальность окон реализуется с помощью отдельных
всплывающих окон.
https://its.1c.ru/docs/v8nonmodal/
141

144. Методы интерактивной работы

Функции глобального контекста для вызова диалога ввода данных
Модальные (синхронные) методы:
• ВвестиЗначение()
• ВвестиСтроку()
• ВвестиЧисло()
• ВвестиДату()
• Вопрос()
Асинхронные методы:
• ПоказатьВводЗначения()
• ПоказатьВводЧисла()
• ПоказатьВводСтроки()
• ПоказатьВводДаты()
• ПоказатьВопрос()
142

145. Модальный метод

143

146. Асинхронный метод ПоказатьВводЧисла()

144

147. Асинхронный метод ПоказатьВводСтроки()

145

148. Как быстро преобразовать синхронный метод в асинхронный

146

149. Как отличить модальный (синхронный) метод от асинхронного

Асинхронные методы отличаются от синхронных тем, что имя асинхронного метода (как
правило) начинается со слов Начать или Показать.
147

150. Временно хранилище

Временное хранилище в 1С используется для передачи данных между сервером и
клиентом. После прочтения данных — информация стирается из временного хранилища.
Временное хранилище в 1С для разработчика представлено в виде строковой переменной,
в которую помещён адрес, где хранятся данные.
Хранилище Значения – это объект в языке 1С, который позволяет хранить в базе данных
прочие значения, например картинки и файлы, структуры и таблицы значений.
Хранилище значения недоступно в данных формы.
https://its.1c.ru/db/metod8dev/content/2597/hdoc
148

151. Как это работает? Как отобразить картинку на форме

149

152. Как это работает? Как отобразить картинку на форме

1. Создать реквизит типа «Хранилище значения» в справочнике «Номенклатура» для
картинки.
2. В форме элемента создать реквизит формы «АдресКартинки» типа «Строка».
3. Создать элемент формы связанный с реквизитом формы «АдресКартинки» (тип
элемента – Поле картинки).
4. Обеспечить выбор картинки. Поместить двоичные данные во временное хранилище
(НачатьПомещениеФайла) и реквизиту «АдресКартинки» присвоить адрес во временном
хранилище.
5. Обеспечить сохранение картинки в реквизит «Изображение» и отображение при открытии
формы (ПолучитьНавигационнуюСсылку).
150

153. Занятие 13

• 13.1 Работа с текстовыми файлами.
• 13.2 Работа с файлами Microsoft Excel.
• 13.3 Попытка-исключение.
151

154. Работа с текстовыми файлами (*.TXT)

Для работы с текстовыми документами в 1С используется объекты встроенного языка:
//Файл считывается целиком и далее построчно можно обработать его
//Подходит для работы с небольшими файлами.
ФайлTXT = Новый ТекстовыйДокумент;
//Предназначен для последовательного чтения текстовых файлов (большой длины)
Текст = Новый ЧтениеТекста;
Объект встроенного языка ТекстовыйДокумент универсальный, но медлительный, т.к.
считывает файл сразу.
Если памяти мало, его использование может вызвать ошибку нехватки памяти;
Например, использовать данные функции для чтения/записи HTML log-файлов;
152

155. Работа с текстовыми файлами. ЧтениеТекста()

//способ 1.Формирует неинициализированный объект ЧтениеТекста.
//Для инициализации объекта используется метод Открыть
ПолноеИмяФайла = "C:\Док.txt";
ДлинныйТекст = Новый ЧтениеТекста;
ДлинныйТекст.Открыть(ПолноеИмяФайла);
//способ 2.По имени файла. Аналог метода Открыть
//ДлинныйТекст = Новый ЧтениеТекста(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>, <МонопольныйРежим>)
ДлинныйТекст = Новый ЧтениеТекста(ПолноеИмяФайла, КодировкаТекста.UTF16);
//способ 3.На основании потока.
выполняет никаких действий.
Аналог
метода
Открыть.
Метод
Закрыть
не
//ДлинныйТекст = Новый ЧтениеТекста(<Поток>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>)
ДлинныйТекст = Новый ЧтениеТекста(ПолноеИмяФайла, КодировкаТекста.UTF16);
153

156. Работа с текстовыми файлами. ЧтениеТекста()

Стр = "";
ПолноеИмяФайла = "C:\Док.txt";
//проверка на существование файла
ВыбФайл = Новый Файл(ИмяФайла);
Если ВыбФайл.Существует() Тогда //синхронный метод Существует().НачатьПроверкуСуществования()
Текст = Новый ЧтениеТекста;
Текст.Открыть(ПолноеИмяФайла);
//Неопределено будет означать конец файла
Пока Стр <> Неопределено Цикл
//строки читаются до символа перевода строки метода ПрочитатьСтроку(<РазделительСтрок>)
Стр = Текст.ПрочитатьСтроку();
Сообщить(Стр);
КонецЦикла;
Текст.Закрыть();
Иначе
Сообщить("Файл не найден!");
//создание пустого файла, в случае его отсутствия
//Текст = Новый ЗаписьТекста(ПолноеИмяФайла);
//Текст.Закрыть();
КонецЕсли;
https://koder.by/asinhronnye_funkcii.php
154

157. Работа с текстовыми файлами. ТекстовыйДокумент()

Стр = "";
ПолноеИмяФайла = "C:\Док.txt";
//проверка на существование файла
ТекстДок = Новый ТекстовыйДокумент;
ТекстДок.УстановитьТекст("Установленный текст");
ТекстДок.ДобавитьСтроку("Метод добавления строки. 2 Строка");
ТекстДок.ДобавитьСтроку("Метод добавления строки. 3 Строка");
ТекстДок.ЗаменитьСтроку(2,"Метод замены строки по индексу на указанную");
ТекстДок.ВставитьСтроку(10,"Вставка текста");
ТекстДок.УдалитьСтроку(4);
ТекстДок.НачатьЗапись(Новый ОписаниеОповещения,ПолноеИмяФайла);
ТекстДок.НачатьЧтение(Новый ОписаниеОповещения,ПолноеИмяФайла);
ТекстДок.КоличествоСтрок();
ТекстДок.ПолучитьСтроку(3);
ТекстДок.Показать("Новый файл",ПолноеИмяФайла);
ТекстДок.ПолучитьТекст();
НачатьЗапускПриложения(Новый ОписаниеОповещения,ПолноеИмяФайла);
155

158. Работа с файлами XLS

ТабДок = Новый ТабличныйДокумент;
//Метод для выгрузки данных в файл;
Записать(<ИмяФайла>, <ТипФайлаТаблицы>);
//Метод для загрузки данных из файла.
Прочитать(<ИмяФайла>, <СпособЧтенияЗначений>);
//СпособЧтенияЗначенийТабличногоДокумента.Значение – системное перечисление
//Метод получает область табличного документа по указанному адресу.
ПолучитьОбласть(<ИмяОбласти>)
- Пример адреса области: «R1C2» (1-ястрока, 2-я колонка)
Свойство ВысотаТаблицы – количество строк в считанной таблице
Внимание!
Метод Записать() доступен как на клиенте, так и на сервере. Метод Прочитать() доступен
только на стороне сервера. Необходимо помнить об этом при планировании клиентсерверного взаимодействия.
156

159. Работа с файлами XLS

Табличный документ
&НаСервере
Процедура ПрочитатьФайл_ТабличныйДокумент()
ПолноеИмяФайла = "C:\Док.xls";
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(ПутьКФайлу, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось прочитать указанный файл: " + ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для НомСтроки = 2 По КоличествоСтрок Цикл
……
КонецЦикла;
КонецПроцедуры;
157

160. Перехват исключений в коде

//Оператор Попытка/Исключение
Попытка
//операторы попытки
Исключение
//операторы исключения
КонецПопытки;
https://its.1c.ru/db/v8std/content/499/hdoc
158

161. Занятие 14

• 14.1 Сериализация и десериализация данных.
• 14.2 Работа с HTTP/HTTPS запросами.
• 14.3 Пример работы с форматом JSON.
159

162. Возможности интеграции с 1С

Существуют различные подходы к реализации интеграции с приложениями 1С:
1. Реализация на основе механизмов интеграции, предоставляемых платформой, своего
собственного специализированного API на стороне приложения 1С (например, набора
Web- или HTTP-сервисов, которые будут вызывать сторонние приложения для обмена
данными с приложением 1С).
2. Использование механизмов интеграции платформы, которые предоставляют доступ
снаружи к объектной модели приложения и не требуют доработки приложения или
создания расширения.
3. Использование готовых прикладных протоколов, реализованных в типовых решениях 1С.
Какой из них выбрать – зависит от требований задачи.
160

163. Механизмы интеграции в платформе 1С

• Импорт/экспорт файлов;
• HTTP- и веб-сервисы;
• REST интерфейс и протокол Odata;
• Внешние источники данных;
• Механизм обмена данными;
• Внешние компоненты;
• Устаревшие механизмы интеграции(объекта XBase, COM – доступен на Windows).
Механизмы интеграции, реализованные в типовых конфигурациях:
• Формат EnterpriseData, основанный на XML (готовый механизм обмена данными с внешними приложениями);
• Квитирование сообщений (приложения 1С ведут учет отправленных и полученных сообщений синхронизации и ожидают
того же от сторонних приложений);
• Упрощенный обмен данными без квитирования;
• Специализированные интеграционные решения (типовое решение «1С:Конвертация данных»);
• Интеграция с банковскими решениями (Стандарт «Клиент банк»; технология DirectBank).
161

164. Сериализация и десериализация данных

Сериализация – механизм сохранения значения объекта базы данных в некотором виде,
который позволяет выполнить последующее восстановление (десериализацию) в объект
базы данных.
Выделяют следующие типы сериализации:
• Сериализация объекта;
• Сериализация XML;
• Сериализация XDTO;
• Сериализация JSON.
162

165. Сериализация объекта

Сериализация объекта:
• Сохранение значения в файл и восстановление из файла
методы ЗначениеВФайл()и ЗначениеИзФайла()
• Сохранение значения в объекте ХранилищеЗначений
чаще всего это применяется для хранения картинок или других двоичных данных
• Сохранение параметров между сеансами
методы СохранитьЗначение()и ВосстановитьЗначение()
• Сохранение значения в строку и восстановление из строки
методы ЗначениеВСтрокуВнутр()и ЗначениеИзСтрокиВнутр()
163

166. Сериализация XML

XML-сериализация — это процесс
преобразования данных 1С:Предприятия 8
в последовательность данных формата
XML
и
наоборот,
преобразование
последовательности данных формата
XML в данные 1С:Предприятия 8, если
существует подходящий тип данных.
Средства XML-сериализации активно
используются при реализации различных
схем обмена данными.
164

167. Сериализация XML

&НаСервере
Процедура СерилизацияXMLНаСервере()
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Справочники.Контрагенты.НайтиПоКоду("000000001").ПолучитьОбъект());
ТекстXML = ЗаписьXML.Закрыть();
Сообщить(ТекстXML);
КонецПроцедуры
Результат Тип(Строка) значение в переменной ТекстXML:
<CatalogObject.Контрагенты>
<Ref>5ac266a8-4fcf-11ed-be08-88d7f67f1c75</Ref>
<DeletionMark>false</DeletionMark>
<Code>000000001</Code>
<Description>МинскТранс</Description>
<РезидентРБ>true</РезидентРБ>
<ОсновнойДоговор>5ac266a9-4fcf-11ed-be08-88d7f67f1c75</ОсновнойДоговор>
<КонтактнаяИнформация/>
</CatalogObject.Контрагенты>
165

168. Десериализация XML

&НаСервере
Процедура СерилизацияИДесериализацияXMLНаСервере()
//сериализация элемента данных справочника
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
ЗаписатьXML(ЗаписьXML, Справочники.Контрагенты.НайтиПоКоду("000000001").ПолучитьОбъект());
ТекстXML = ЗаписьXML.Закрыть();
//десериализация
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТекстXML);
ОбъектИБ = ПрочитатьXML(ЧтениеXML);
Сообщить(ОбъектИБ);
КонецПроцедуры
Результат Тип(СправочникОбъект) значение в переменной ОбъектИБ экзепляр данных справочника Контрагенты
166

169. Сериализация XDTO

XDTO (XML Data Transfer Objects) – механизм объектного
моделирования данных, описываемых с помощью схемы
XML.
Сериализация данных XDTO является более универсальным
способом представления данных.
Механизм XDTO решает следующие задачи:
• обмен между информационными системами 1С
различной структуры метаданных;
• обмен с информационными системами не
являющимися системами 1С;
• разработка собственных типов данных;
• описание типов данных и возвращаемых параметров
web-сервисов.
167

170. Сериализация XDTO

&НаСервере
Процедура СерилизацияXDTOНаСервере()
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML,
Справочники.Контрагенты.НайтиПоКоду("000000001").ПолучитьОбъект(),
НазначениеТипаXML.Явное);
ТекстXDTO = ЗаписьXML.Закрыть();
Сообщить(ТекстXDTO);
КонецПроцедуры
Результат Тип(Строка) значение в переменной ТекстXDTO:
<CatalogObject.Контрагенты xmlns="http://v8.1c.ru/8.1/data/enterprise/current-config"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="CatalogObject.Контрагенты">
<Ref>5ac266a8-4fcf-11ed-be08-88d7f67f1c75</Ref>
<DeletionMark>false</DeletionMark>
<Code>000000001</Code>
<Description>МинскТранс</Description>
<РезидентРБ>true</РезидентРБ>
<ОсновнойДоговор>5ac266a9-4fcf-11ed-be08-88d7f67f1c75</ОсновнойДоговор>
</CatalogObject.Контрагенты>
168

171. Десериализация XDTO

&НаСервере
Процедура СерилизацияИДесериализацияXDTOНаСервере()
//сериализация элемента данных справочника
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(ЗаписьXML,
Справочники.Контрагенты.НайтиПоКоду("000000001").ПолучитьОбъект(),
НазначениеТипаXML.Явное);
ТекстXDTO = ЗаписьXML.Закрыть();
//десериализация
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ТекстXDTO);
ОбъектИБ = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
Сообщить(ОбъектИБ);
КонецПроцедуры
Результат Тип(СправочникОбъект) значение в переменной ОбъектИБ экзепляр данных справочника Контрагенты
169

172. Сериализация JSON

JSON (JavaScript Object Notation) - это универсальный
текстовый формат представления данных, который
используется
для
обмена
данными
между
приложениями. Для работы с данным форматом во
многих популярных языках программирования
доступны
специальные
объекты,
функции.
Сериализация JSON
вместо функций
может
быть
использована
ЗначениеВСтрокуВнутр()и ЗначениеИзСтрокиВнутр().
Преимуществом данного формата является
лаконичность представления данных. Данные
представленные в JSON, в отличии от XML, занимают
меньший объем. Сериализация и десериализация
выполняется быстрее чем с XML.
170

173. Сериализация JSON

&НаСервере
Процедура ЗаписьJSON()
ЗаписьJSON = Новый ЗаписьJSON;
//Или в строку
ЗаписьJSON.УстановитьСтроку();
//Или в файл
ЗаписьJSON.ОткрытьФайл("C:\testJSON.txt");
Номенклатура = Справочники.Номенклатура.НайтиПоКоду("000000001").ПолучитьОбъект();
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Номенклатура, НазначениеТипаXML.Явное);
СериализованнаяСтрока = ЗаписьJSON.Закрыть();
КонецПроцедуры
Результат Тип(Строка) значение в переменной СериализованнаяСтрока:
{
"#type": "jcfg:CatalogObject.Номенклатура",
"#value": {
"IsFolder": false,
"Ref": "3bb2f29b-4fc6-11ed-be08-88d7f67f1c75",
"DeletionMark": false,
"Parent": "007441c3-4fc8-11ed-be08-88d7f67f1c75",
"Code": "000000001",
"Description": "Пальто",
"ПолноеНаименование": "Пальто осеннее",
"ЦенаПроизводителя": 150.5,
"ПроцентСкидки": 0,
"Вид": "Товар",
"СтавкаНДС": "Ставка20"
}
}
171

174. Десериализация JSON

&НаСервере
Процедура ЧтениеJSON()
ЧтениеJSON = Новый ЧтениеJSON;
//Или из строки
ЧтениеJSON.УстановитьСтроку("");
//Или из файла
ЧтениеJSON.ОткрытьФайл("C:\ testJSON.txt");
Номенклатура = СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
КонецПроцедуры
Результат Тип(СправочникОбъект) значение в переменной Номенклатура экзепляр данных
справочника Номенклатуры
172

175. ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С

ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С
Архитектурный стиль – это набор согласованных ограничений и принципов проектирования,
позволяющий добиться определённых свойств системы.
API (Application programming interface) - программный интерфейс приложения для взаимодействия с
другими приложениями.
REST API (Representational State Transfer, передача состояния представления) - архитектурный стиль
разработки API веб-приложений или компонентов распределённого приложения, используя протокол
HTTP.
Другими словами, REST API - это набор правил, позволяющий программисту добиться неких целевых
свойств API своего приложения.
В 1С можно выделить следующие способы работы с REST:
• создавать свой REST API (метаданные "Общие - HTTP-сервис")
• обратиться к любому REST API (методы встроенного языка: HTTPСоединение, HTTPзапрос, HTTPОтвет)
• взаимодействовать с автоматически генерируемый REST-интерфейсом платформы
(автоматический REST-интерфейс через протокол OData)
https://www.nbrb.by/apihelp/exrates
https://www.nbrb.by/api/exrates/rates/840?ondate=2020-9-12&ParamMode=1
173

176. ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С

ПОНЯТИЕ И НАЗНАЧЕНИЕ HTTP-СЕРВИСОВ В 1С
Главной особенностью архитектуры RESTAPI является то, что при каждом
обращении сервер, принимающий запрос, думает, что принял это соединение
впервые! То есть при каждом запросе передается уникальный ключ авторизации,
который идентифицирует сессию.
Есть несколько основных типов запросов архитектуры REST:
GET, POST, PUT, DELETE, PATCH, MERGE, CONNECT, OPTIONS, TRACE,
PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK (или выбрать
"Любой", в этом случае можно использовать любой метод из приведённого
списка).
Все эти типы используются в RESTAPI.
Сервер, получая запросы RESTAPI, определяет их тип и понимает, что будет
происходить с переданными ему данными. Для того чтобы взаимодействовать с
определенным API необходимо зайти на его страницу и изучить документацию. В
ней обычно указывается, какие методы доступны для взаимодействия, какие
данные и как принимает сервер, пример ответа на функции.
174

177. Занятие 15

• 15.1 Механизм расширений конфигурации.
• 15.2 Обновление, сравнение, объединение конфигураций.
• 15.3 Журнал регистрации.
175

178. Механизм расширений конфигурации

Механизм расширения конфигурации – это специальный механизм, предназначенный для
доработки расширяемой конфигурации без изменения этой конфигурации (в том числе
без снятия с поддержки). Файл *.cfe.
Основное назначение расширения конфигурации – это доработка прикладного решения
при внедрении (или в «облаке») под нужды клиента. При этом дорабатываемую
конфигурацию не надо снимать с поддержки. В результате сохраняется простота
обновления типового прикладного решения, стоящего на поддержке, с необходимостью
выполнять доработки.
При
разработке
расширения
следует
понимать
функционирования расширения конфигурации:
некоторые
особенности
• расширяемая конфигурация в любой момент может быть изменена, например, в
результате обновления. При этом разработчик расширения не может никак повлиять на
возможность или невозможность обновления.
• следует учитывать тот факт, что в системе могут функционировать более одного
расширения и автор каждого расширения (в общем случае) не знает, как
функционирует другое расширение.
176

179. Какие возможности предоставляет механизм?


Можно изменять управляемые формы, существующие в типовой конфигурации;
• Можно добавлять новые подсистемы. Можно изменять состав подсистем, имеющихся в
типовой конфигурации;
• Можно изменять роли типовой конфигурации, добавляя в них объекты, созданные в
расширении;
• Можно изменять командный интерфейс типовой конфигурации (основного раздела,
подсистем);
Можно добавлять новые отчёты и обработки.
Планируется постепенно наращивать функциональность расширений.
177

180. Механизм расширений конфигурации

178

181. Сравнение и объединение конфигураций

Механизм сравнения и объединения конфигураций позволяет сравнивать между собой
два прикладных решения и объединять их полностью или выборочно по результатам
сравнения.
Такая возможность используется, например, когда одно прикладное решение
разрабатывается несколькими независимыми разработчиками, или в случае, когда
в исходную конфигурацию нужно загрузить сделанные изменения.
Этот механизм обеспечивает не только сравнение общих свойств объектов прикладного
решения (справочников, документов и т. д.), но и сравнение их отдельных реквизитов,
табличных частей. Также выполняется сравнение форм: сравниваются тексты модулей,
тексты описаний и макеты.
Все результаты сравнения можно просмотреть в детальном виде.
https://its.1c.ru/db/metod8dev/content/2299/hdoc
179

182. Рекомендации для начинающих программистов 1с.

https://online.1c.ru/catalog/free/learning - Учебная версия 1С
https://sites.google.com/site/1sspravocniktipovyhzadac/ - Немного полезной документации и примеры
кода
https://forum.infostart.ru/ - лучший форум по 1С
https://infostart.ru/1c/articles/198766/ - отличная статья по принципу работы управляемых форм
https://infostart.ru/1c/articles/682305/ - Как работает серверный вызов в 1С
https://flagman.top/about-business/ehkzamen-1s/obshchie-moduli - хорошая статья по свойствам общих
модулей.
https://flagman.top/about-business/ehkzamen-1s/sravnenie-i-obedinenie-konfiguracij - Текстовая статья по
обновлениям
https://www.youtube.com/watch?v=b0QeHx7XfII&ab_channel=Synoecium - Видео демонстрация примеров
обновлений конфигурапций
180

183. Список литературы


Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С.,
"Профессиональная разработка в системе 1С:Предприятие 8";
Радченко
М.Г.
Радченко М.Г., Хрусталева Е.Ю. "1С:Предприятие 8.3. Практическое пособие
разработчика. Примеры и типовые приемы;
Е.Ю. Хрусталева "Язык запросов "1С:Предприятия 8"
В.А. Ажеронок, А.В. Островерх, М.Г. Радченко, Е.Ю. Хрусталева "Разработка
управляемого интерфейса";
Е.Ю. Хрусталева "Разработка сложных отчетов в "1С:Предприятии 8.2". Система
компоновки данных";
Е.Ю. Хрусталева "101 совет начинающим разработчикам в системе "1С:Предприятие
8";
Система стандартов и методик разработки конфигураций для
1С:Предприятие 8; (Бесплатно https://its.1c.ru/db/v8std)
платформы
181

184. Полезные ссылки


https://uc1.1c.ru/poster/
https://uc1.1c.ru/helpful-links/
182

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

У объекта Документ имеется свой набор событий, с помощью которых
разработчик может вмешаться в процесс записи документа в базу данных
используя обработчики этих событий. В зависимости от вида действия, которое
выполнит пользователь, события документа вызываются в определенной
последовательности.
Существуют следующие основные виды действий для документа:
• Записать
• Провести
• Провести и закрыть
• Отмена проведения
183

186. Действие Записать

1. Модуль формы (&НаКлиенте) - перед записью;
2. Модуль формы (&НаСервере) - перед записью на
сервере;
3. Модуль объекта - перед записью (начинается
транзакция, документ еще не записан);
4. Модуль объекта - при записи (документ записан);
5. Модуль формы (&НаСервере) - при записи на сервере
(фиксация транзакции);
6. Модуль формы (&НаСервере) - после записи на
сервере;
7. Модуль формы (&НаКлиенте) - после записи.
1. Последовательность событий при записи документа
184

187. Действие Записать

1. Модуль формы (&НаКлиенте) - перед записью;
2. Модуль формы (&НаСервере) - обработка проверки
заполнения на сервере;
3. Модуль объекта - обработка проверки заполнения;
4. Модуль формы (&НаСервере) - перед записью на
сервере;
5. Модуль объекта - перед записью (начало транзакции,
документ еще не записан);
6. Модуль объекта - при записи (документ записан);
7. Модуль объекта - обработка проведения
(формирование набора записей движений документа);
8. Модуль формы (&НаСервере) - при записи на сервере
(записан набор записей движений документа,
фиксация транзакции);
9. Модуль формы (&НаСервере) - после записи на
сервере;
10.Модуль формы (&НаКлиенте) - после записи.
2. Последовательность событий при записи проведенного
документа
185

188. Действие Записать

1. Модуль формы (&НаКлиенте) - перед записью;
2. Модуль формы (&НаСервере) - обработка проверки
заполнения на сервере;
3. Модуль объекта - обработка проверки заполнения;
4. Модуль формы (&НаСервере) - перед записью на
сервере;
5. Модуль объекта - перед записью (начало транзакции,
документ еще не записан);
6. Модуль объекта - при записи (документ записан);
7. Модуль формы (&НаСервере) - при записи на сервере
(записан набор записей движений документа,
фиксация транзакции);
8. Модуль формы (&НаСервере) - после записи на
сервере;
9. Модуль формы (&НаКлиенте) - после записи.
3. Последовательность событий для не проводимого документа
186

189. Действие Провести (Провести и Закрыть)

Запись нового документа с проведением из формы,
последовательность выполнения событий будет такая же как и у
действия запись проведенного документа.
1. Модуль формы (&НаКлиенте) - перед записью;
2. Модуль формы (&НаСервере) - обработка проверки
заполнения на сервере;
3. Модуль объекта - обработка проверки заполнения;
4. Модуль формы (&НаСервере) - перед записью на
сервере;
5. Модуль объекта - перед записью (начало транзакции,
документ еще не записан);
6. Модуль объекта - при записи (документ записан);
7. Модуль объекта - обработка проведения (формирование
набора записей движений документа);
8. Модуль формы (&НаСервере) - при записи на сервере
(записан набор записей движений документа, фиксация
транзакции);
9. Модуль формы (&НаСервере) - после записи на сервере;
10.Модуль формы (&НаКлиенте) - после записи.
Последовательность событий при записи проведенного
документа
187

190. Действие Отмена проведения

1. Модуль формы (&НаКлиенте) - перед записью;
2. Модуль формы (&НаСервере) - перед записью на
сервере;
3. Модуль объекта - перед записью (начало транзакции);
4. Модуль объекта - обработка удаления проведения
(удаление движений);
5. Модуль объекта - при записи (движения удалены, документ
записан);
6. Модуль формы (&НаСервере) - после записи на сервере
(фиксация транзакции);
7. Модуль формы (&НаКлиенте) - после записи.
4. Последовательность событий при отмене проведения
документа
188
English     Русский Правила