Тест Гилева. Нагрузочный тест TPC-1C
Из этого видео вы узнаете как быстро оценить скорость работы системы в целом, используя нагрузочный тест TPC-1C.
Замер производительности в 1С
Из этого видео вы узнаете как в 1С можно замерить производительность какой-либо операции: измерить частоту использования конкретных участков кода и скорость их выполнения.
источник
✍️@razrab_1C
Из этого видео вы узнаете как быстро оценить скорость работы системы в целом, используя нагрузочный тест TPC-1C.
Замер производительности в 1С
Из этого видео вы узнаете как в 1С можно замерить производительность какой-либо операции: измерить частоту использования конкретных участков кода и скорость их выполнения.
источник
✍️@razrab_1C
👍4🔥1
Настройка получения данных при использовании Планов Видов Характеристик
№ 1. Выборка запросом с явной связью
№ 2. Использование настроек характеристик в СКД
№ 3. Описание связи в настройках самого объекта
источник
✍️@razrab_1C
№ 1. Выборка запросом с явной связью
№ 2. Использование настроек характеристик в СКД
№ 3. Описание связи в настройках самого объекта
источник
✍️@razrab_1C
🔥4👍1
Как посчитать количество дней между датами в 1С
Рассмотрим различные ситуации, в которых нам может понадобиться это вычисление для работы программистом 1С.
1. В коде модулей
В частном случае в коде модулей требуется вычислить разность между датами, приведенными к началу дня. Результат будет вычислен в секундах, следовательно, его потребуется перевести в дни:
Пример использования в коде модуля
2. В тексте запросов 1С 8.3
Язык запросов 1С 8.3 также поддерживает ряд специализированных функций для операций с датами, среди которых имеется РАЗНОСТЬДАТ, предназначенная как раз для того, чтобы определить разность между датами, переданными ей, с указанием основной единицей измерения времени:
Синтаксис функции в языке запросов
Следует отметить, что при вычислении результата действия игнорируются параметры, единицы измерения которых меньше, чем переданная в третьем параметре, что позволяет предварительно не приводить в соответствие даты к началу дня.
Пример использования в языке запросов
3. В системе компоновки данных (СКД) 1С
Язык выражений 1С СКД также поддерживает специализированные функции для работы с датами и временем, как и язык запросов 1С 8.3, среди которых имеется функция РазностьДат, но ее синтаксис имеет некоторые отличия: третий параметр, определяющий тип разности, имеет значение типа Строка.
✍️@razrab_1C
Рассмотрим различные ситуации, в которых нам может понадобиться это вычисление для работы программистом 1С.
1. В коде модулей
В частном случае в коде модулей требуется вычислить разность между датами, приведенными к началу дня. Результат будет вычислен в секундах, следовательно, его потребуется перевести в дни:
РазницаВДнях = (НачалоДня (ДатаОкончания) - НачалоДня (Датаначала) ) / (60 * 60 * 24);Пример использования в коде модуля
2. В тексте запросов 1С 8.3
Язык запросов 1С 8.3 также поддерживает ряд специализированных функций для операций с датами, среди которых имеется РАЗНОСТЬДАТ, предназначенная как раз для того, чтобы определить разность между датами, переданными ей, с указанием основной единицей измерения времени:
РАЗНОСТЬДАТ (<Выражение>,«Выражение>, Секунда | Минута | Час | День | Месяц | Квартал | Год)Синтаксис функции в языке запросов
Следует отметить, что при вычислении результата действия игнорируются параметры, единицы измерения которых меньше, чем переданная в третьем параметре, что позволяет предварительно не приводить в соответствие даты к началу дня.
ВЫБРАТЬ
РАЗНОСТЬДАТ (ДАТАВРЕМЯ (2019, 4, 20, 15, 22, 5), ДАТАВРЕМЯ (2020,5), LAJABELMA (2020,4, 20, 15, 22,5), ДЕНЬ) КАК Вариант1, //366
РАЗНОСТЬДАТ (ДАТАВРЕМЯ (2020, 1,1,0,0, 0), ДАТАВРЕМЯ (2020, 12, 31, 23, 59, 59), ДЕНЬ) КАК Вариант2//365Пример использования в языке запросов
3. В системе компоновки данных (СКД) 1С
Язык выражений 1С СКД также поддерживает специализированные функции для работы с датами и временем, как и язык запросов 1С 8.3, среди которых имеется функция РазностьДат, но ее синтаксис имеет некоторые отличия: третий параметр, определяющий тип разности, имеет значение типа Строка.
ВЫБРАТЬ
ДАТАВРЕМЯ (2019, 4, 20, 15, 22, 5) Дата1,
ДАТАВРЕМЯ (2020,4, 20, 15, 22, 5) Дата2,
ДАТАВРЕМЯ (2020, 1, 1, 0, 0, 0) Дата3,
ДАТАВРЕМЯ (2020, 12, 31, 23, 59, 59) Дата4✍️@razrab_1C
👍4🔥2
Ошибка в 1С 8.3: Файл базы данных поврежден
Ошибка 1С «файл базы данных поврежден» встречается время от времени у многих пользователей 1С 8.3. Причин может быть множество: отключение света, некорректное выключение компьютера, с базой данных по локальной сети работает более одного пользователя, большой размер файловой базы данных и т.д. Как правило ошибка 1С 8.3 такого рода встречается в файловых базах данных. Первым делом нужно внимательно посмотреть, какой именно файл поврежден – тут возможны варианты.
1. Файл 1CD
Чаще всего бывает поврежден файл 1CD. Это файл базы данных непосредственно. Эта ошибка базы 1С говорит о том, что повреждена какая-то часть базы или таблицы, или сами данные. Поэтому любая попытка починить базу, скорее всего, будет сопровождаться частичной потерей данных. Самый лучший вариант – восстановить базу из резервной копии, если она есть. Если копии нет, тогда база чинится только утилитой chdbfl. Утилита эта входит в поставку программы и находится в папке bin вашей платформы 1С 8.3. Вот примерный путь:
Запускаете утилиту, указываете путь к базе данных. Путь к базе данных можно найти в окне запуска снизу или по кнопке Изменить в поле «Каталог информационной базы» 1С.
Обязательно ставите галку «Исправлять обнаруженные ошибки». Затем нажимаете кнопку «Выполнить».
При работе этой утилиты никто не должен работать в базе. Всех пользователей нужно попросить выйти.
Далее после проведения тестирования утилитой chdbfl имеет смысл провести Тестирование и исправление. Для этого нужно запустить базу в режиме конфигуратора и пройти Администрирование-Тестирование и исправление. Расставляем галки и точки как на картинке.
Чуть более подробно про тестирование и исправление. Много споров о том, как правильно заполнять 2 последних пункта – «При наличии ссылок на несуществующие объекты» и «При частичной потере данных объектов». Я ставлю «Очищать ссылки» и «Удалять объекты», потому что при выборе пункта «Создавать объекты» база попытается создать объект, данных для которого у нее нет. То есть это будет пустой объект с кодом вида F000000001, в котором не будут заполнены даже стандартные реквизиты.
В теории его можно потом заполнить. Но на практике часто вручную пользователь не может заполнить объект как раз из-за отсутствия стандартных реквизитов, и приходится писать программы, чтобы заполнить объекты, или пользоваться какими-то обработками. Создавать объект на мой взгляд имеет смысл только при наличии копии базы с целью найти все объекты с кодом F0, найти в копии их аналоги и перенести. В ином случае это может быть чревато сложностями в работе конфигурации, обменов и в прохождении тестирования, не говоря уже о работе пользователей.
2. Повреждение файлов кеша
Второй случай ошибки «Файл базы данных поврежден» встречается реже, но решается проще. Когда ошибка указывает на поврежденный файл 1С в папке AppData с непроизносимым цифро-буквенным названием, это говорит о повреждении файлов кеша. Как правило ошибка вылетает только у одного пользователя. Чтобы исправить ошибку нужно пройти по указанному пути и удалить папку с цифро-буквенным названием. Вот пример расположения файла.
✍️@razrab_1C
Ошибка 1С «файл базы данных поврежден» встречается время от времени у многих пользователей 1С 8.3. Причин может быть множество: отключение света, некорректное выключение компьютера, с базой данных по локальной сети работает более одного пользователя, большой размер файловой базы данных и т.д. Как правило ошибка 1С 8.3 такого рода встречается в файловых базах данных. Первым делом нужно внимательно посмотреть, какой именно файл поврежден – тут возможны варианты.
1. Файл 1CD
Чаще всего бывает поврежден файл 1CD. Это файл базы данных непосредственно. Эта ошибка базы 1С говорит о том, что повреждена какая-то часть базы или таблицы, или сами данные. Поэтому любая попытка починить базу, скорее всего, будет сопровождаться частичной потерей данных. Самый лучший вариант – восстановить базу из резервной копии, если она есть. Если копии нет, тогда база чинится только утилитой chdbfl. Утилита эта входит в поставку программы и находится в папке bin вашей платформы 1С 8.3. Вот примерный путь:
Запускаете утилиту, указываете путь к базе данных. Путь к базе данных можно найти в окне запуска снизу или по кнопке Изменить в поле «Каталог информационной базы» 1С.
Обязательно ставите галку «Исправлять обнаруженные ошибки». Затем нажимаете кнопку «Выполнить».
При работе этой утилиты никто не должен работать в базе. Всех пользователей нужно попросить выйти.
Далее после проведения тестирования утилитой chdbfl имеет смысл провести Тестирование и исправление. Для этого нужно запустить базу в режиме конфигуратора и пройти Администрирование-Тестирование и исправление. Расставляем галки и точки как на картинке.
Чуть более подробно про тестирование и исправление. Много споров о том, как правильно заполнять 2 последних пункта – «При наличии ссылок на несуществующие объекты» и «При частичной потере данных объектов». Я ставлю «Очищать ссылки» и «Удалять объекты», потому что при выборе пункта «Создавать объекты» база попытается создать объект, данных для которого у нее нет. То есть это будет пустой объект с кодом вида F000000001, в котором не будут заполнены даже стандартные реквизиты.
В теории его можно потом заполнить. Но на практике часто вручную пользователь не может заполнить объект как раз из-за отсутствия стандартных реквизитов, и приходится писать программы, чтобы заполнить объекты, или пользоваться какими-то обработками. Создавать объект на мой взгляд имеет смысл только при наличии копии базы с целью найти все объекты с кодом F0, найти в копии их аналоги и перенести. В ином случае это может быть чревато сложностями в работе конфигурации, обменов и в прохождении тестирования, не говоря уже о работе пользователей.
2. Повреждение файлов кеша
Второй случай ошибки «Файл базы данных поврежден» встречается реже, но решается проще. Когда ошибка указывает на поврежденный файл 1С в папке AppData с непроизносимым цифро-буквенным названием, это говорит о повреждении файлов кеша. Как правило ошибка вылетает только у одного пользователя. Чтобы исправить ошибку нужно пройти по указанному пути и удалить папку с цифро-буквенным названием. Вот пример расположения файла.
✍️@razrab_1C
👍5🔥2❤1
Media is too big
VIEW IN TELEGRAM
Рекомендации по улучшению хорошего кода на 1С
00:00 - Программный интерфейс
01:53 - Получить в именах Функций
03:00 - Использование глаголов в именах функций
04:03 - Где объявлять переменные
05:09 - Лишняя абстракция
06:23 - Функция-конструктор
06:52 - Внедрение зависимостей
07:43 - Адаптеры
08:27 - Побочный эффект метода
09:05 - Связность метода
10:00 - Выделение внешнего формата
10:50 - Хороший пример объявления выходного значения
11:45 - Метод должен либо обрабатывать данные, либо возвращать
13:05 - Дата провайдеры пишем в модуле менеджера
14:00 - Паттерн фасад
14:35 - Блокировки
16:35 - ОбменДанными.Загрузка = Истина
17:30 - Общий модуль не должен много знать об объектах
18:55 - Презентер
20:00 - ad-hoc полиморфизм
20:37 - Использование Знач
22:37 - Детали и бизнес-логика
23:37 - ВызватьИсключение — это хорошо
25:10 - Комментарии
26:14 - Метод делает два действия и это плохо
27:40 - Лучше использовать метод Заполнить
источник
✍️@razrab_1C
00:00 - Программный интерфейс
01:53 - Получить в именах Функций
03:00 - Использование глаголов в именах функций
04:03 - Где объявлять переменные
05:09 - Лишняя абстракция
06:23 - Функция-конструктор
06:52 - Внедрение зависимостей
07:43 - Адаптеры
08:27 - Побочный эффект метода
09:05 - Связность метода
10:00 - Выделение внешнего формата
10:50 - Хороший пример объявления выходного значения
11:45 - Метод должен либо обрабатывать данные, либо возвращать
13:05 - Дата провайдеры пишем в модуле менеджера
14:00 - Паттерн фасад
14:35 - Блокировки
16:35 - ОбменДанными.Загрузка = Истина
17:30 - Общий модуль не должен много знать об объектах
18:55 - Презентер
20:00 - ad-hoc полиморфизм
20:37 - Использование Знач
22:37 - Детали и бизнес-логика
23:37 - ВызватьИсключение — это хорошо
25:10 - Комментарии
26:14 - Метод делает два действия и это плохо
27:40 - Лучше использовать метод Заполнить
источник
✍️@razrab_1C
👍3🔥1
Зависшие сеансы 1С
1. Приложение «Диспетчер задач»
Чаще всего такая проблема встречается при клиент-серверном варианте работы, а причиной является некорректное завершение сеанса.
В файловом варианте работы для ОС Windows обычно достаточно через «Диспетчер задач» (Task Manager) завершить процесс Windows с рабочего места пользователя (ориентируясь, например, по заголовку окна):
В ОС семейства Linux привычного для пользователей ОС Windows приложения «Диспетчер задач» нет. Вместо этого используются консольные утилиты и команды, но в ряде дистрибутивов (например, Ubuntuи др.) имеется «Системный монитор» (SystemMonitor):
2. Администрирование серверов 1С
В случае использования клиент-серверного варианта работы управление сеансами осуществляется через оснастку «Администрирование серверов 1С:Предприятие». Для завершения сеанса необходимо обладать полномочиями администратора кластера серверов. Список сеансов может быть отображен двумя способами:
· для всего кластера в целом;
· отдельной информационной базы 1С.
Чтобы отобразить список соединений для отдельной информационной базы, следует в дереве центральных серверов выбрать нужный центральный сервер, выбрать нужный кластер, выбрать нужную информационную базу, а затем выбрать и раскрыть ветку Сеансы:
Для завершения сеанса следует выбрать требуемый сеанс в списке сеансов и выполнить команду контекстного меню Удалить или аналогичную команду главного меню утилиты. Если в момент завершения сеанса этот сеанс активен, то выполняется попытка разрыва соединения.
Перед удалением консоль кластера предлагает ввести текст сообщения об ошибке, который будет показан пользователю, который инициировал удаляемый сеанс:
К использованию данного средства следует подходить с осторожностью, так как завершение сеанса пользователя, активно работающего с информационной базой, может привести к потере данных.
Стоит также упомянуть о новом «явлении» для платформы 8.3 по сравнению с 8.2, введенном для повышения устойчивости работы клиентских приложений (для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут), при котором платформа выполняет удержание сеансов при продолжительном их бездействии (по умолчанию 20 минут). При этом у таких сеансов отсутствуют активные соединения и рабочий процесс:
Завершение «спящих» сеансов платформой выполняется автоматически по истечении заданного времени – по умолчанию 24 часа. При необходимости параметры засыпания и завершения спящих сеансов можно менять для конкретной информационной базы через конфигуратор (Администрирование → Параметры информационной базы):
Более подробно об этих и других параметрах информационной базы можно узнать в документации по платформе, доступной на портале ИТС.
✍️@razrab_1C
1. Приложение «Диспетчер задач»
Чаще всего такая проблема встречается при клиент-серверном варианте работы, а причиной является некорректное завершение сеанса.
В файловом варианте работы для ОС Windows обычно достаточно через «Диспетчер задач» (Task Manager) завершить процесс Windows с рабочего места пользователя (ориентируясь, например, по заголовку окна):
В ОС семейства Linux привычного для пользователей ОС Windows приложения «Диспетчер задач» нет. Вместо этого используются консольные утилиты и команды, но в ряде дистрибутивов (например, Ubuntuи др.) имеется «Системный монитор» (SystemMonitor):
2. Администрирование серверов 1С
В случае использования клиент-серверного варианта работы управление сеансами осуществляется через оснастку «Администрирование серверов 1С:Предприятие». Для завершения сеанса необходимо обладать полномочиями администратора кластера серверов. Список сеансов может быть отображен двумя способами:
· для всего кластера в целом;
· отдельной информационной базы 1С.
Чтобы отобразить список соединений для отдельной информационной базы, следует в дереве центральных серверов выбрать нужный центральный сервер, выбрать нужный кластер, выбрать нужную информационную базу, а затем выбрать и раскрыть ветку Сеансы:
Для завершения сеанса следует выбрать требуемый сеанс в списке сеансов и выполнить команду контекстного меню Удалить или аналогичную команду главного меню утилиты. Если в момент завершения сеанса этот сеанс активен, то выполняется попытка разрыва соединения.
Перед удалением консоль кластера предлагает ввести текст сообщения об ошибке, который будет показан пользователю, который инициировал удаляемый сеанс:
К использованию данного средства следует подходить с осторожностью, так как завершение сеанса пользователя, активно работающего с информационной базой, может привести к потере данных.
Стоит также упомянуть о новом «явлении» для платформы 8.3 по сравнению с 8.2, введенном для повышения устойчивости работы клиентских приложений (для поддержания сеанса тонкий клиент и веб-клиент обеспечивают обращение к кластеру не реже 1 раза в 10 минут), при котором платформа выполняет удержание сеансов при продолжительном их бездействии (по умолчанию 20 минут). При этом у таких сеансов отсутствуют активные соединения и рабочий процесс:
Завершение «спящих» сеансов платформой выполняется автоматически по истечении заданного времени – по умолчанию 24 часа. При необходимости параметры засыпания и завершения спящих сеансов можно менять для конкретной информационной базы через конфигуратор (Администрирование → Параметры информационной базы):
Более подробно об этих и других параметрах информационной базы можно узнать в документации по платформе, доступной на портале ИТС.
✍️@razrab_1C
👍3❤1🔥1
Media is too big
VIEW IN TELEGRAM
В видео рассмотрим 8 наиболее типовых ошибок при разработке запросов 1С
Евгений Гилев
• Запросы в цикле
• Необоснованное использование вложенных запросов
• Не корректное использование условий в запросах
• Использование таблиц значений
• «Бомба», заложенная в разыменовании полей
• Непопадание в индекс в условиях и соединениях
• Создание динамических запросов
• Получение ссылочных полей в запросе
источник
✍️@razrab_1C
Евгений Гилев
• Запросы в цикле
• Необоснованное использование вложенных запросов
• Не корректное использование условий в запросах
• Использование таблиц значений
• «Бомба», заложенная в разыменовании полей
• Непопадание в индекс в условиях и соединениях
• Создание динамических запросов
• Получение ссылочных полей в запросе
источник
✍️@razrab_1C
👍4🔥3
🔥5👍2👎1
Хранилище значений в 1С
Мало кто знает преимущества такого специального объекта в языке 1С, как хранилище значений.
Хранилище значений – это определенный объект языка в конфигурации, который может хранить информацию любого типа: файлы программ Word, Excel, PDF или объемы графической информации. То есть этот объект может хранить любую необходимую информацию.
Выбрать такой тип можно для реквизитов всех объектов, где их можно использовать. К примеру, реквизиты справочников, документов. Также можно его установить как тип константы и хранить информацию на более глобальном уровне.
Хочу обратить внимание, что вся работа справочников, имена которых носят частично имя владельца справочника, а частично «Присоединенные файлы», построена на реквизите с типом «ХранилищеЗначений».
1. Пример с изображением товара
Давайте разберем на примере. У нас есть изображение товара, и нам необходимо автоматически при загрузке номенклатуры загружать и изображение. Для этого необходимо, чтобы был справочник «НоменклатураПрисоединенныеФайлы» с одним реквизитом с нужным нам типом. После этого мы выбираем нужный нам файл с изображением и грузим его. Все легко и просто. Конечно, при загрузке множества файлов могут возникнуть проблемы, но только в моментах, которые Вы можете не знать или где-то ошиблись.
Выше приведен пример того, как можно работать с хранилищем и помещать туда данные. Существует один момент, на который я хотел бы обратить Ваше внимание. Это расчет степени сжатия. Максимальное сжатие, которое мы можем назначить – это 9. Этот режим программы сжимает файлы так, что они занимают мало места и не обременяют базу.
Чтоб очистить значение этого объекта, достаточно только установить ему значение «Неопределено».
2. Копии базы
Кстати, чуть не забыл про один немаловажный факт про этот объект.
Если у Вас настроено резервное копирование базы любыми средствами, и Вы поместили в базу какой-то нужный Вам файл, то он тоже будет сохранен в копии и в любой момент можно получить этот файл. Даже спустя годы, если, конечно, столько времени у Вас хранятся копии баз.
✍️@razrab_1C
Мало кто знает преимущества такого специального объекта в языке 1С, как хранилище значений.
Хранилище значений – это определенный объект языка в конфигурации, который может хранить информацию любого типа: файлы программ Word, Excel, PDF или объемы графической информации. То есть этот объект может хранить любую необходимую информацию.
Выбрать такой тип можно для реквизитов всех объектов, где их можно использовать. К примеру, реквизиты справочников, документов. Также можно его установить как тип константы и хранить информацию на более глобальном уровне.
Хочу обратить внимание, что вся работа справочников, имена которых носят частично имя владельца справочника, а частично «Присоединенные файлы», построена на реквизите с типом «ХранилищеЗначений».
1. Пример с изображением товара
Давайте разберем на примере. У нас есть изображение товара, и нам необходимо автоматически при загрузке номенклатуры загружать и изображение. Для этого необходимо, чтобы был справочник «НоменклатураПрисоединенныеФайлы» с одним реквизитом с нужным нам типом. После этого мы выбираем нужный нам файл с изображением и грузим его. Все легко и просто. Конечно, при загрузке множества файлов могут возникнуть проблемы, но только в моментах, которые Вы можете не знать или где-то ошиблись.
Настройки = Новый Структура () ;
Настройки.Вставить ("ПоУмолчанию", Истина);
Настройки. Вставить ("Наименование", "Наименование1") ;
Хранилище = Новый ХранилищеЗначения(Настроики, Новый СжатиеДанных(9);Выше приведен пример того, как можно работать с хранилищем и помещать туда данные. Существует один момент, на который я хотел бы обратить Ваше внимание. Это расчет степени сжатия. Максимальное сжатие, которое мы можем назначить – это 9. Этот режим программы сжимает файлы так, что они занимают мало места и не обременяют базу.
Чтоб очистить значение этого объекта, достаточно только установить ему значение «Неопределено».
2. Копии базы
Кстати, чуть не забыл про один немаловажный факт про этот объект.
Если у Вас настроено резервное копирование базы любыми средствами, и Вы поместили в базу какой-то нужный Вам файл, то он тоже будет сохранен в копии и в любой момент можно получить этот файл. Даже спустя годы, если, конечно, столько времени у Вас хранятся копии баз.
✍️@razrab_1C
🔥4👍2
Вставить объект в буфер обмена средствами 1С
Платформа 1С 8.3 позволяет работать с буфером обмена с помощью внешней компоненты COMОбъект("HtmlFile").
Внимание! Структура базы приёмника и структура база источника должно быть 100% идентичной!
Вставить объект в буфер обмена с помощью внешней компоненты в 1С 8.3:
✍️@razrab_1C
Платформа 1С 8.3 позволяет работать с буфером обмена с помощью внешней компоненты COMОбъект("HtmlFile").
Внимание! Структура базы приёмника и структура база источника должно быть 100% идентичной!
Вставить объект в буфер обмена с помощью внешней компоненты в 1С 8.3:
&НаКлиенте
Процедура Вставить_объект_В_буфер_обмена(Команда)
COM_Объект = Новый COMОбъект("htmlfile");
Вставить_объект_НаСервере(COM_Объект.ParentWindow.ClipboardData.Getdata("Text"));
КонецПроцедуры
&НаСервере
Процедура Вставить_объект_Сервере(ТекСтрока)
Новая_запись=Новый ЧтениеXML;
Новая_запись.УстановитьСтроку(ТекСтрока);
Новая_запись.Прочитать(); // элемент Root
Новая_запись.Прочитать(); // элемент с документом
Если ВозможностьЧтенияXML(Новая_запись) Тогда // получаем тип данных XML из Новая_запись
СсылкаНаОбъект=ПрочитатьXML(Новая_запись);
СсылкаНаОбъект.Ссылка.УникальныйИдентификатор();
Пользователю = Новый СообщениеПользователю;
Если СсылкаНаОбъект.Ссылка.Пустая() Тогда
СсылкаНаОбъект.Записать();
Пользователю.Текст = "Загружен "+СсылкаНаОбъект.Ссылка;
Иначе
СсылкаНаОбъект = СсылкаНаОбъект.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(СсылкаНаОбъект, Новая_запись);
Пользователю.Текст = "Изменен "+СсылкаНаОбъект.Ссылка;
КонецЕсли;
Пользователю.Сообщить();
КонецЕсли;
Новая_запись.Закрыть();
КонецПроцедуры
✍️@razrab_1C
👍2🔥1
Работа со строками в 1С
Для того чтобы создать какой-то программный продукт, необходимо обладать навыками программирования, знать его «язык».
Язык программирования 1С - полноценный функционал для разработки собственных решений, и он является главным инструментом разработки.
1. Три основных типа данных в языке программирования 1С 8.3
Кто только начинает изучение, вначале знакомится с самыми простыми его элементами – типами данных, как первоклассник учит буквы, чтобы в дальнейшем составлять слова и предложения.
Основными типами данных в языке программирования 1С являются:
·Строка. Отличный пример таких данных - цитата из стихотворения «Мой дядя самых честных правил,». Обратите внимание, что данные типа Строка всегда заключается в кавычки.
·Число. С этим типом данных мы часто имеем дело в реальной жизни. Числа могут быть, как вы знаете, целыми и дробными, как со знаком плюс, так и с минусом.
·Дата. Примером данных данного типа можно считать дату Нового Года – 31.12.2019. На языке компьютера эти данные будут выглядеть так: ‘20191231’. Дата всегда заключается в одинарные кавычки.
Давайте же рассмотрим, как используется тип данных Строка в самых простых функциях программирования.
2. Функции работы со строками в 1С
2.1 Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
Примеры:
2.2 СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
Например:
2.3 ВРег, НРег, ТРег
Функции для управления регистром строки.
ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
Примеры:
2.4 ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Пример:
Аналогично можно проверить строку на пустое значение следующим образом:
2.5 СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:
✍️@razrab_1C
Для того чтобы создать какой-то программный продукт, необходимо обладать навыками программирования, знать его «язык».
Язык программирования 1С - полноценный функционал для разработки собственных решений, и он является главным инструментом разработки.
1. Три основных типа данных в языке программирования 1С 8.3
Кто только начинает изучение, вначале знакомится с самыми простыми его элементами – типами данных, как первоклассник учит буквы, чтобы в дальнейшем составлять слова и предложения.
Основными типами данных в языке программирования 1С являются:
·Строка. Отличный пример таких данных - цитата из стихотворения «Мой дядя самых честных правил,». Обратите внимание, что данные типа Строка всегда заключается в кавычки.
·Число. С этим типом данных мы часто имеем дело в реальной жизни. Числа могут быть, как вы знаете, целыми и дробными, как со знаком плюс, так и с минусом.
·Дата. Примером данных данного типа можно считать дату Нового Года – 31.12.2019. На языке компьютера эти данные будут выглядеть так: ‘20191231’. Дата всегда заключается в одинарные кавычки.
Давайте же рассмотрим, как используется тип данных Строка в самых простых функциях программирования.
2. Функции работы со строками в 1С
2.1 Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
Примеры:
Строка(ТекущаяДата()) //"20.11.2019 14:10:33"
Строка(Истина) // Да
Строка(2019) // "2 019" 2.2 СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
Например:
СтрДлина("Тестовая строка") // 15 2.3 ВРег, НРег, ТРег
Функции для управления регистром строки.
ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
Примеры:
ВРег("Тестовая строка") // "ТЕСТОВАЯ СТРОКА"
НРег("Тестовая строка") // "тестовая строка"
ТРег("Тестовая строка") // "Тестовая Строка" 2.4 ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Пример:
ПустаяСтрока("Тест") //ложь
ПустаяСтрока(" ") // истинаАналогично можно проверить строку на пустое значение следующим образом:
СокрЛП(" ") = "" // истина 2.5 СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:
СтрЗаменить("Произвольная Строка", " " , "") //"ПроизвольнаяСтрока"✍️@razrab_1C
👍3❤1🔥1
Работа с объектами в 1С
1. Что дает доступ к метаданным конфигурации
В "1С:Предприятии" дается доступ к метаданным конфигурации. Данная возможность требуется для создания общих алгоритмов, с помощью которых можно было бы упростить работу с различными объектами конфигурации.
Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.
В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.
Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки "Общие". Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку "Общие", подчиняются “корневому” объекту.
2. Для чего нужен доступ к структуре метаданных
Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.
Например:
Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.
Например:
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().
Например:
Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.
Например:
С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.
Например:
Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().
Например:
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующему объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя().
Например:
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.
Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.
Например:
Продолжение в комментариях➡️
✍️@razrab_1C
1. Что дает доступ к метаданным конфигурации
В "1С:Предприятии" дается доступ к метаданным конфигурации. Данная возможность требуется для создания общих алгоритмов, с помощью которых можно было бы упростить работу с различными объектами конфигурации.
Доступ к метаданным дает право только на непосредственное чтение, а программное изменение не поддерживается.
В документации не приводятся свойства метаданных и коллекций подчиненных ей объектов. Для знакомства со структурой и составом свойств, необходимо использовать отчет метаданным конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, показанные в отчете, соответствуют именам свойств и коллекций объектов.
Метаданные в отчетах и в программных моделях не содержат ранее упомянутой ветки "Общие". Ветка “Общие” используется только в дереве метаданных для дополнительного удобства и редактирования. Данная возможность требуется в отчете и в программной модели все объекты, входящие в ветку "Общие", подчиняются “корневому” объекту.
2. Для чего нужен доступ к структуре метаданных
Доступ к структуре метаданных осуществляется через Метаданные глобального контекста. Данное свойство предоставляет доступ непосредственно к корневому объекту конфигурации и коллекциям объектов. Каждый объект метаданных 1С предоставляет доступ к своим свойствам и подчиненным объектам. Так данная возможность требуется для получить доступ к множеству объектов.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент);Кроме того, у некоторых типов, предназначенных для работы с прикладными объектами, имеется метод Метаданные(), предназначенный для получения объекта метаданных 1С, отвечающего за их конкретный тип.
Например:
Док = Документы.Счет.СоздатьДокумент();
Сообщить(Док.Метаданные().ПолноеИмя());Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных 1С, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу().
Например:
Выборка = Документы.Счет.Выбрать();
Сообщить(Метаданные.НайтиПоТипу(ТипЗнч(Выборка)));Объекты метаданных 1С можно сравнивать на равенство. При этом проверяется схожесть объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается конкретно – один и тот же объект метаданных конфигурации.
Например:
Сообщить(Метаданные.ОсновнаяФормаКонстант = Метаданные.ОбщиеФормы.Основная);С помощью метода Родитель() можно получить вышестоящий объект метаданных 1С.
Например:
Сообщить(Метаданные.Документы.Счет.Реквизиты.Контрагент.Родитель());Для представления объекта метаданных 1С пользователю нужно использовать преобразование значения к строке или метод Представление().
Например:
Сообщить(Метаданные.Справочники.РасчетныеСчета);
Сообщить(Метаданные.Справочники.РасчетныеСчета.Представление());Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующему объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя().
Например:
Сообщить(Метаданные.ОбщиеФормы.Основная.ПолноеИмя());Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам.
Некоторые свойства объектов метаданных имеют перечислительный тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию Свойства Объектов, предоставляемую “корневым” объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ПериодичностьНомера =
Метаданные.СвойстваОбъектов.ПериодичностьНомераДокумента.Год);Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных.
Например:
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Количество());
Сообщить(Метаданные.Документы.Счет.ВводитсяНаОсновании.Содержит(Метаданные.Справочники.Контрагенты));Продолжение в комментариях
✍️@razrab_1C
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Регистры накопления в 1С 8.3, с чем их едят?
Для успешного управления каким-либо хозяйственным объектом необходимо обладать точными данными о его состоянии на текущий момент, а также за прошедшие периоды. Так как только на основе данной информации можно делать определенные выводы и прогнозировать дальнейшую деятельность.
То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.
К примеру, есть магазин, торгующий различными товарами. Продавец при реализации или оприходовании товара выписывает накладную, а также делает запись в специальном журнале, где указывает сумму, количество, дату и сведения о контрагенте. В конце каждого месяца вычисляется итоговые результаты.
В системе 1С накладной будет соответствовать документ и запись в регистр накопления. Причем, если в журнал записываются сведения только о проданных товарах, то это будет оборотный регистр. Если поступления и продажи – тогда регистр накопления остатков. Записи в журнале – аналог таблицы движений, вычисленные результаты за месяц таблицы итогов.
https://telegra.ph/Registry-nakopleniya-v-1S-83-s-chem-ih-edyat-01-04
✍️@razrab_1C
Для успешного управления каким-либо хозяйственным объектом необходимо обладать точными данными о его состоянии на текущий момент, а также за прошедшие периоды. Так как только на основе данной информации можно делать определенные выводы и прогнозировать дальнейшую деятельность.
То есть данные необходимо накапливать и обрабатывать. Собственно, для этих целей и служат регистры накопления в 1С 8.3.
К примеру, есть магазин, торгующий различными товарами. Продавец при реализации или оприходовании товара выписывает накладную, а также делает запись в специальном журнале, где указывает сумму, количество, дату и сведения о контрагенте. В конце каждого месяца вычисляется итоговые результаты.
В системе 1С накладной будет соответствовать документ и запись в регистр накопления. Причем, если в журнал записываются сведения только о проданных товарах, то это будет оборотный регистр. Если поступления и продажи – тогда регистр накопления остатков. Записи в журнале – аналог таблицы движений, вычисленные результаты за месяц таблицы итогов.
https://telegra.ph/Registry-nakopleniya-v-1S-83-s-chem-ih-edyat-01-04
✍️@razrab_1C
🔥2