1С:Предприятие 8
875 subscribers
93 photos
222 videos
72 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Ошибка в 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 с непроизносимым цифро-буквенным названием, это говорит о повреждении файлов кеша. Как правило ошибка вылетает только у одного пользователя. Чтобы исправить ошибку нужно пройти по указанному пути и удалить папку с цифро-буквенным названием. Вот пример расположения файла.

👉@DevLab1C
🔥21👍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 - Лучше использовать метод Заполнить

источник

👉@DevLab1C
🔥4👍2👎1
Media is too big
VIEW IN TELEGRAM
В видео рассмотрим 8 наиболее типовых ошибок при разработке запросов 1С
Евгений Гилев

• Запросы в цикле
• Необоснованное использование вложенных запросов
• Не корректное использование условий в запросах
• Использование таблиц значений
• «Бомба», заложенная в разыменовании полей
• Непопадание в индекс в условиях и соединениях
• Создание динамических запросов
• Получение ссылочных полей в запросе

источник

👉@DevLab1C
👍21🔥1
Дерево значений в управляемой форме

Дерево значений в 1С (тип значения "ДеревоЗначений") – это Универсальная коллекция значений в системе 1С, где Элементы упорядочены по Индексу (нумерация начинается с 0). Каждое значение Элемента содержит в себе Коллекцию подчиненных Строк, где у каждой Строки коллекции указывается Родитель – Элемент, находящийся на уровень выше. У корневого Элемента (элемент первого уровня) Родитель отсутствует. Доступ к Элементам осуществляется через Индекс, по номеру которого можно получить доступ к значению Элемента и коллекции подчиненных ему Строк.

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

https://telegra.ph/Derevo-znachenij-v-upravlyaemoj-forme-12-23

👉@DevLab1C
👍2🔥1
Хранилище значений в 1С

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

Хранилище значений – это определенный объект языка в конфигурации, который может хранить информацию любого типа: файлы программ Word, Excel, PDF или объемы графической информации. То есть этот объект может хранить любую необходимую информацию.

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

Хочу обратить внимание, что вся работа справочников, имена которых носят частично имя владельца справочника, а частично «Присоединенные файлы», построена на реквизите с типом «ХранилищеЗначений».

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

Настройки = Новый Структура () ;
Настройки.Вставить ("ПоУмолчанию", Истина);
Настройки. Вставить ("Наименование", "Наименование1") ;

Хранилище = Новый ХранилищеЗначения(Настроики, Новый СжатиеДанных(9);


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

Чтоб очистить значение этого объекта, достаточно только установить ему значение «Неопределено».

2. Копии базы
Кстати, чуть не забыл про один немаловажный факт про этот объект.

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

👉@DevLab1C
🔥4👍31
Вставить объект в буфер обмена средствами 1С

Платформа 1С 8.3 позволяет работать с буфером обмена с помощью внешней компоненты COMОбъект("HtmlFile").
Внимание! Структура базы приёмника и структура база источника должно быть 100% идентичной!


Вставить объект в буфер обмена с помощью внешней компоненты в 1С 8.3:

&НаКлиенте
Процедура Вставить_объект_В_буфер_обмена(Команда)

COM_Объект = Новый COMОбъект("htmlfile");
Вставить_объект_НаСервере(COM_Объект.ParentWindow.ClipboardData.Getdata("Text"));

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

&НаСервере
Процедура Вставить_объект_Сервере(ТекСтрока)

Новая_запись=Новый ЧтениеXML;
Новая_запись.УстановитьСтроку(ТекСтрока);
Новая_запись.Прочитать(); // элемент Root
Новая_запись.Прочитать(); // элемент с документом

Если ВозможностьЧтенияXML(Новая_запись) Тогда // получаем тип данных XML из Новая_запись
СсылкаНаОбъект=ПрочитатьXML(Новая_запись);
СсылкаНаОбъект.Ссылка.УникальныйИдентификатор();
Пользователю = Новый СообщениеПользователю;
Если СсылкаНаОбъект.Ссылка.Пустая() Тогда
СсылкаНаОбъект.Записать();
Пользователю.Текст = "Загружен "+СсылкаНаОбъект.Ссылка;
Иначе
СсылкаНаОбъект = СсылкаНаОбъект.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(СсылкаНаОбъект, Новая_запись);
Пользователю.Текст = "Изменен "+СсылкаНаОбъект.Ссылка;
КонецЕсли;
Пользователю.Сообщить();
КонецЕсли;

Новая_запись.Закрыть();

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


👉@DevLab1C
🔥2
Работа со строками в 1С

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

Язык программирования 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 СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
Например:

СтрЗаменить("Произвольная Строка", " " , "") //"ПроизвольнаяСтрока"


👉@DevLab1C
🔥3👍2
Media is too big
VIEW IN TELEGRAM
Взломать сервер 1С за 15 минут

👉@DevLab1C
🔥4👍1
Интенсивное обучение программированию 1С

Диалоги с пользователем
Зачем нужно проведение документа в системе 1С: Предприятие?
Хранение и отображение картинок в информационной базе 1С
Зачем нужны регистры? Часть 1 - Регистры сведений
Зачем нужны регистры? Часть 2 - Регистры накопления
Зачем нужны регистры? Часть 3 - Регистры бухгалтерии
Зачем нужны регистры? Часть 4 - Регистры расчета
Формирование отчета о продажах тремя способами
Программная работа с условным оформлением

источник

👉@DevLab1C
🔥3