1С:Предприятие 8
785 subscribers
55 photos
164 videos
53 links
🔥 Разработка в 1С — просто и понятно! 🔥

Полезные фишки и лайфхаки для разработчиков
Объяснение сложных тем простыми словами
Готовые решения, сниппеты и примеры кода
Разбор ошибок и способов их устранения
Новости и тренды в мире 1С
Download Telegram
Загрузка из Excel файла (через ADODB.Connection) в 1С 8.3


&НаСервере
Процедура ЗагрузитьИзXLS_ADODB()

// Создание COM-объекта для соединения
ADODB_conn = Новый COMОбъект("ADODB.Connection");

// Установка строки соединения
ADODB_conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;
|Data Source="+ИмяФайла+";
|Extended Properties=""Excel 12.0 XML;HDR=YES"";";
ADODB_conn.Open(); // Открытие соединения

// Создание COM-объекта для получения выборки
ADODB_rec = Новый COMОбъект("ADODB.Recordset");
ТекстЗапроса = "SELECT * FROM [ЛистN1$]";

// Выборка (запрос)
ADODB_rec.Open(ТекстЗапроса, ADODB_conn);

// Обход результата выборки
Пока НЕ ADODB_rec.EOF() Цикл
ЗначениеКолонки1 = ADODB_rec.Fields.Item("КолонкаN1").Value; // Обращение по имени колонки
ЗначениеКолонки2 = ADODB_rec.Fields.Item(0).Value; // Обращение по индексу колонки
ADODB_rec.MoveNext();
КонецЦикла;

ADODB_rec.Close();
ADODB_rec = Неопределено;
ADODB_conn.Close();
ADODB_conn = Неопределено;

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


👉@DevLab1C
🔥3👍1
Печатные формы

Конструктор печатных форм, макет, табличный документ. Разбор ошибок новичков
Внешняя печатная форма в 1С
БСП. Подсистема Печать. Макеты Печатных Форм. Подключение нового документа

источник

👉@DevLab1C
👍5🔥4
Обычные формы. Как организовать подбор в табличную часть

Рассмотрим решение задачи на примере формы документа, у которого имеется табличная часть «Заказ-наряды».

1. На форме документа на командную панель табличной части «Заказ-наряды» добавляем кнопку подбора и прописываем её код:


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


2. Далее у табличной части находим событие «ОбработкаВыбора» и прописываем для него код:


Процедура ЗаказНарядыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Если ТипЗнч(ВыбранноеЗначение) = Тип("ДокументСсылка.ЗаказНаряд") Тогда
Если ЗаказНаряды.НайтиСтроки(Новый Структура("ЗаказНаряд", ВыбранноеЗначение)).Количество() = 0 Тогда
НоваяСтрока = ЗаказНаряды.Добавить();
НоваяСтрока.ЗаказНаряд = ВыбранноеЗначение;

// также здесь можно выполнить дополнительные обработки
КонецЕсли;
КонецЕсли;
КонецПроцедуры


👉@DevLab1C
🔥3
Есть список контрагентов, нужно быстро узнать их коды в базе

Делаем такой запрос где в кавычках прописываем список наименований контрагентов (должен 100% совпадать с названиями контрагентов в базе):

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

👉@DevLab1C
👍3🔥2
СКД. Как вывести документ в виде: Г00001 от 01.01.2019, чтобы по двойному клику его можно было открыть

- По умолчанию документы в СКД выводятся в следующем виде:

- Мы сделаем его красивым и сокращенным:

- Для этого нужно прописать следующее выражение в колонку «Выражение представления» по этому полю:

👉@DevLab1C
🔥2👍1
Загрузка из Excel файла (напрямую через табличный документ) в 1С 8.3


&НаСервере
Процедура ЗагрузитьИзXLSНапрямую()// Начиная с версии 1С 8.3.8 (только &НаСервере)

ТабличныйДокумент.Прочитать(Объект.Файл, СпособЧтенияЗначенийТабличногоДокумента.Значение); //Способ чтения: Значение, Текст

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


👉@DevLab1C
👍2🔥1
Программно получить сохраненные пароли в базе данных 1С 8.3


Функция Получить_сохраненные_пароли() Экспорт // из регистра

// Функция позволяет:
// получить пароль системной учетной записи 1С
// учетный данные для обмена 1С с интернет магазином
// внутренний адрес менеджера сервиса
// пароль интернет поддержки пользователей
// и другие учетные жданные 1С

УстановитьПривилегированныйРежим(Истина);

ДанныеСтр = Новый Структура();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| БезопасноеХранилищеДанных.Данные КАК Данные
|ИЗ
| РегистрСведений.БезопасноеХранилищеДанных КАК БезопасноеХранилищеДанных
|ГДЕ
| БезопасноеХранилищеДанных.Владелец = &Владелец";

//будет выведен не весь список, а по конкретному владельцу
//Запрос.УстановитьПараметр("Владелец", Владелец);
РезультатЗапроса = Запрос.Выполнить().Выбрать();

Если РезультатЗапроса.Следующий() Тогда
Если ЗначениеЗаполнено(РезультатЗапроса.Данные) Тогда
ДанныеИзХранилища = РезультатЗапроса.Данные.Получить();
Если ЗначениеЗаполнено(ДанныеИзХранилища) Тогда
ЗаполнитьЗначенияСвойств(ДанныеСтр, ДанныеИзХранилища);
КонецЕсли;
КонецЕсли;
КонецЕсли;

УстановитьПривилегированныйРежим(Ложь);

Возврат ДанныеСтр;

КонецФункции


👉@DevLab1C
👍1🔥1