источник
✍️ @odin1C_rus
Добро пожаловать на канал "1C программист"! Если вы интересуетесь программированием на платформе 1С, то вы попали по адресу. Здесь вы найдете множество статей, курсов, советов и шаблонов кода, которые помогут вам стать настоящим профессионалом в области разработки на 1С
Наш канал предлагает обширный набор информации, которая позволит вам с легкостью освоить все тонкости программирования на платформе 1С. Будь то начинающий разработчик или опытный специалист, здесь вы сможете найти полезные материалы для расширения своих знаний и навыков в данной области
Если у вас возникли вопросы или вы хотите получить дополнительную информацию, не стесняйтесь обращаться к администратору канала @evgenycarter. Он с удовольствием поможет вам и ответит на все ваши запросы. Присоединяйтесь к нам прямо сейчас и начните погружение в увлекательный мир программирования на 1С!
12 Feb, 11:15
11 Feb, 07:04
10 Feb, 10:48
04 Feb, 10:57
04 Feb, 08:00
04 Feb, 05:34
03 Feb, 13:04
03 Feb, 10:32
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
03 Feb, 09:42
31 Jan, 20:31
30 Jan, 12:04
29 Jan, 20:51
// ВидМаркированнойПродукции = Перечисление.ВидыМаркируемойПродукции
// Выбираем элементы справочника Номенклатура
// Где заполнен реквизит "ВидМаркированнойПродукции"
Запрос = Новый Запрос;
ТекстЗапроса = "
|ВЫБРАТЬ
| Спр.Ссылка,
| Спр.ВидМаркированнойПродукции
|ИЗ
| Справочник.Номенклатура КАК Спр
|
|ГДЕ
| НЕ Спр.ВидМаркированнойПродукции.ССылка is NULL
|";
Запрос.Текст = ТекстЗапроса;
Выборка = Запрос.Выполнить().Выбрать();
27 Jan, 11:03
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
27 Jan, 10:27
24 Jan, 19:24
22 Jan, 13:02
22 Jan, 12:02
22 Jan, 11:10
22 Jan, 09:04
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
18 Jan, 15:08
18 Jan, 14:44
16 Jan, 08:08
15 Jan, 21:20
15 Jan, 09:13
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
14 Jan, 21:22
14 Jan, 09:00
11 Jan, 05:26
10 Jan, 09:06
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
09 Jan, 22:23
30 Dec, 10:03
28 Dec, 09:02
26 Dec, 07:56
//Подходит для файлов более 100Mb
&НаСервере
Процедура ПрочитатьФайлXMLПоПорядкуСпособ2(ПутьКФайлу)
XML = Новый ЧтениеXML;
XML.ОткрытьФайл(ПутьКФайлу);
СписокИмен = Новый СписокЗначений;
Пока XML.Прочитать() Цикл
Если XML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
СписокИмен.Добавить(XML.Имя);
ПутьXML = СобратьПуть(СписокИмен);
Если ПутьXML = "/Рестораны/Ресторан" Тогда
Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("Название ресторана: " + Название);//"Китайская грамота"
КонецЕсли;
Категория = XML.ЗначениеАтрибута("Категория");
Если Категория <> Неопределено Тогда
Сообщить("...наценочная категория ресторана: " + Категория);// Высшая
КонецЕсли;
Счет = XML.ЗначениеАтрибута("Счет");
Если Счет <> Неопределено Тогда
Сообщить("...средний счет ресторана: " + Счет);// 3500
КонецЕсли;
Кухня = XML.ЗначениеАтрибута("Кухня");
Если Кухня <> Неопределено Тогда
Сообщить("...кухня ресторана: " + Кухня);// Азиатская
КонецЕсли;
ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню" Тогда
Сообщить("Меню:");
ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Меню/Блюдо" Тогда
Название = XML.ЗначениеАтрибута("Название");
Если Название <> Неопределено Тогда
Сообщить("...название блюда: " + Название);
КонецЕсли;
ИначеЕсли ПутьXML = "/Рестораны/Ресторан/Описание" Тогда
XML.Прочитать();
Если XML.ТипУзла = ТипУзлаXML.Текст Тогда
Сообщить("Описание: " + XML.Значение);
КонецЕсли;
КонецЕсли;
ИначеЕсли XML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
СписокИмен.Удалить(СписокИмен.Количество() - 1);
КонецЕсли;
КонецЦикла;
XML.Закрыть();
КонецПроцедуры
&НаСервере
Функция СобратьПуть(СписокИмен)
НашПуть = "";
Для Каждого Имя Из СписокИмен Цикл
НашПуть = НашПуть + "/" + Имя;
КонецЦикла;
Возврат НашПуть;
КонецФункции
23 Dec, 09:01
20 Dec, 08:00
20 Dec, 07:55
19 Dec, 09:07
19 Dec, 07:49
16 Dec, 12:01
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
16 Dec, 10:01
04 Dec, 08:01
04 Dec, 07:02
02 Dec, 08:37
02 Dec, 07:14
&НаСервере
Процедура СозданиеШаблонаНастроекВторогоФактораАутентификации() // кнопка в обработке
ШаблонНастроек = ШаблоныНастроекВторогоФактораАутентификации.СоздатьШаблон();
ЗапросHTTP = Новый HTTPЗапрос;
ЗапросHTTP.АдресРесурса = "&host"; //в этот параметр на следующем шаге запишется адрес куда отправлять HTTP запрос
ЗапросHTTP.УстановитьТелоИзСтроки("Ваш код &secret","utf-8"); //тут можно изменить текстовку, обязательно ставим кодировку
ШаблонНастроек.HTTPЗапросНаАутентификацию = ЗапросHTTP;
ШаблонНастроек.МетодHTTPЗапросаНаАутентификацию = "POST"; //тут или GET, или POST,
//я в дальнейшем буду запрашивать пароли через POST
ШаблонНастроек.Имя = "ИмяШаблона"; //задаем имя шаблона, который используем в дальнейшем для назначения пользователю
ШаблонНастроек.Записать();
// Ставим галочку в конфигураторе у пользователя
// (Администрирование->Пользователи->ищем кому поставить) "Аутентификация токеном доступа"
КонецПроцедуры
&НаСервере
Процедура НазначениеШаблонаВторогоФактораАутентификации()
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("ИмяПользователя"); //ИмяПользователя - меняем на имя пользователя
НастройкаВФА = Новый НастройкаВторогоФактораАутентификации;
НастройкаВФА.ИмяШаблонаНастройки = "ИмяШаблона"; //Имя шаблона задавали на 1-ом этапе
ПараметрыНастройки = Новый Соответствие;
ПараметрыНастройки.Вставить("host","http://"127.0.0.1/otpavkod/hs/sendpass/?tel=123456789"); //Задаем адрес на который будет отправлен HTTP Запрос с кодом для авторизации
НастройкаВФА.Параметры = ПараметрыНастройки; //Задаем значение настройки
МассивНастроек = Новый Массив;
МассивНастроек.Добавить(НастройкаВФА); //задаем массив настроек, тут важно, что это массив, а значит можно указать несколько настроек аутентификации
Пользователь.НастройкиВторогоФактораАутентификации = МассивНастроек; //Устанавливаем настройки пользователю
Пользователь.ОбработкаНастроекВторогоФактораАутентификации = ТипОбработкиНастроекВторогоФактораАутентификации.ИспользоватьСледующуюПриОшибке; //что делать при некорректном вводе кода
Пользователь.Записать();
КонецПроцедуры
01 Dec, 10:01
30 Nov, 11:04
27 Nov, 20:32
исключительно в образовательных целях и подходит только для платформы версии 8.3.25.1257.
27 Nov, 09:35
27 Nov, 08:29
Реклама. ООО "Т1". ИНН 7720484492.
18 Nov, 11:09
13 Nov, 09:01
13 Nov, 05:00
Процедура НастроитьВариантыОтчетов(Настройки) Экспорт
ВариантыОтчетов.НастроитьОтчетВМодулеМенеджера(Настройки, Метаданные.Отчеты.тдс_ОтчетПоДебиторскойЗадолженности);
КонецПроцедуры
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
НастройкиОтчета.ОпределитьНастройкиФормы = Истина;
КонецПроцедуры
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
НоваяКоманда = Форма.Команды.Добавить("ИсходныеДанные");
НоваяКоманда.Заголовок = "Исходные данные";
НоваяКоманда.Действие = "ит_УправлениеФормамиКлиентСервер.ВыгрузитьСКДвТаблицуЗначений";
НоваяКоманда.Картинка = БиблиотекаКартинок.ФорматExcel;
НоваяКоманда.Отображение = ОтображениеКнопки.КартинкаИТекст;
ОтчетыСервер.ВывестиКоманду(Форма, НоваяКоманда, "Интеграция");
КонецПроцедуры
&НаКлиенте
Процедура ВыгрузитьСКДвТаблицуЗначений(ФормаОтчета, Команда) Экспорт
// ваш код команды
КонецПроцедуры
12 Nov, 08:00
12 Nov, 06:01
10 Nov, 17:24
09 Nov, 07:39
// Возвращает структуру реквизитов объекта или ссылки, включая стандартные реквизиты и реквизиты табличной части.
// Можно использовать, если необходимо, например, эмулировать вызов метода, использующего объект формы.
//
// Параметры:
// ВходящийОбъект - ЛюбаяСсылка или ЛюбойОбъект
//
// Возвращаемое значение:
// Структура
//
Функция КонвертироватьОбъектВСтруктуру(ВходящийОбъект)
СтруктураОбъекта = Новый Структура;
СтандартныеРеквизитыОбъекта = ВходящийОбъект.Метаданные().СтандартныеРеквизиты;
Для Каждого СтандартныйРеквизит Из СтандартныеРеквизитыОбъекта Цикл
СтруктураОбъекта.Вставить(СтандартныйРеквизит.Имя, ВходящийОбъект[СтандартныйРеквизит.Имя]);
КонецЦикла;
РеквизитыОбъекта = ВходящийОбъект.Метаданные().Реквизиты;
Для Каждого Реквизит Из РеквизитыОбъекта Цикл
СтруктураОбъекта.Вставить(Реквизит.Имя, ВходящийОбъект[Реквизит.Имя]);
КонецЦикла;
ТЧ = ВходящийОбъект.Метаданные().ТабличныеЧасти;
Для Каждого ТаблЧасть Из ТЧ Цикл
ТЗ = ВходящийОбъект[ТаблЧасть.Имя].Выгрузить();
Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);
СтруктураОбъекта.Вставить(ТаблЧасть.Имя, Массив);
КонецЦикла;
Возврат СтруктураОбъекта;
КонецФункции
08 Nov, 13:01
08 Nov, 10:18
08 Nov, 08:00
07 Nov, 06:01
31 Oct, 06:01
30 Oct, 21:03
&НаСервере
Процедура ВыгрузитьВ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_com = Новый COMОбъект("ADODB.Command");
ADODB_com.ActiveConnection = ADODB_conn;
// Присвоение текста команды для создания таблицы
ADODB_com.CommandText = "CREATE TABLE [ЛистN1] (КолонкаN1 char(255), КолонкаN2 date, КолонкаN3 int, КолонкаN4 float)";
ADODB_com.Execute(); // Выполнение команды
// Присвоение текста команды для добавления строки таблицы
ADODB_com.CommandText = "INSERT INTO [ЛистN1] (КолонкаN1, КолонкаN2, КолонкаN3, КолонкаN4) values (‘абвгдеё’, ‘8/11/2017’, ‘12345’, ‘12345,6789’)";
ADODB_com.Execute(); // Выполнение команды
// Удаление команды и закрытие соединения
ADODB_com = Неопределено;
ADODB_conn.Close();
ADODB_conn = Неопределено;
КонецПроцедуры
30 Oct, 09:00
28 Oct, 12:28
// Возвращает структуру реквизитов объекта или ссылки, включая стандартные реквизиты и реквизиты табличной части.
// Можно использовать, если необходимо, например, эмулировать вызов метода, использующего объект формы.
//
// Параметры:
// ВходящийОбъект - ЛюбаяСсылка или ЛюбойОбъект
//
// Возвращаемое значение:
// Структура
//
Функция КонвертироватьОбъектВСтруктуру(ВходящийОбъект)
СтруктураОбъекта = Новый Структура;
СтандартныеРеквизитыОбъекта = ВходящийОбъект.Метаданные().СтандартныеРеквизиты;
Для Каждого СтандартныйРеквизит Из СтандартныеРеквизитыОбъекта Цикл
СтруктураОбъекта.Вставить(СтандартныйРеквизит.Имя, ВходящийОбъект[СтандартныйРеквизит.Имя]);
КонецЦикла;
РеквизитыОбъекта = ВходящийОбъект.Метаданные().Реквизиты;
Для Каждого Реквизит Из РеквизитыОбъекта Цикл
СтруктураОбъекта.Вставить(Реквизит.Имя, ВходящийОбъект[Реквизит.Имя]);
КонецЦикла;
ТЧ = ВходящийОбъект.Метаданные().ТабличныеЧасти;
Для Каждого ТаблЧасть Из ТЧ Цикл
ТЗ = ВходящийОбъект[ТаблЧасть.Имя].Выгрузить();
Массив = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗ);
СтруктураОбъекта.Вставить(ТаблЧасть.Имя, Массив);
КонецЦикла;
Возврат СтруктураОбъекта;
КонецФункции
источник koder.by
28 Oct, 10:02
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
28 Oct, 06:01
21 Oct, 11:00
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
18 Oct, 11:55
18 Oct, 11:32
18 Oct, 09:02
16 Oct, 15:00
16 Oct, 14:50
16 Oct, 12:50
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
15 Oct, 21:03
1C
&НаСервере
Процедура КакУбратьДубликатыИзРезультатаЗапросаНаСервере()
// В справочнике Цвета есть повторящиеся элементы.
// Построим запрос так, чтобы в результат попали
// только различные цвета.
Запрос = Новый Запрос(
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Наименование
|ИЗ
| Справочник.Цвета"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
15 Oct, 09:34
13 Oct, 20:46
/// Как добавить в результат запроса столбец с определенным
/// значением в 1с 8.3, 8.2
&НаСервере
Процедура КакДобавитьВРезультатЗапросаСтолбецСОпределеннымЗначениемНаСервере()
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| 1000 КАК Цена,
| Калорийность
|ИЗ
| Справочник.Номенклатура"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры
11 Oct, 10:25
11 Oct, 09:35
ИмяZIPФайла = ПолучитьИмяВременногоФайла(".zip");
ФайлАрхива = Новый ЗаписьZipФайла(ИмяZIPФайла, , ,
МетодСжатияZIP.Сжатие,
УровеньСжатияZIP.Оптимальный);
ФайлАрхива.Добавить(ИмяВременногоФайла,
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ФайлАрхива.Записать();
11 Oct, 07:01
09 Oct, 11:01
-- Имена сервера и экземпляра
Select @@SERVERNAME as [Server\Instance];
-- версия SQL Server
Select @@VERSION as SQLServerVersion;
-- экземпляр SQL Server
Select @@ServiceName AS ServiceInstance;
-- Текущая БД (БД, в контексте которой выполняется запрос)
Select DB_NAME() AS CurrentDB_Name;
SELECT @@Servername AS ServerName ,
create_date AS ServerStarted ,
DATEDIFF(s, create_date, GETDATE()) / 86400.0 AS DaysRunning ,
DATEDIFF(s, create_date, GETDATE()) AS SecondsRunnig
FROM sys.databases
WHERE name = 'tempdb';
-- Похожая информация, может быть получена с помощью sp_who
SELECT @@Servername AS Server ,
DB_NAME(database_id) AS DatabaseName ,
COUNT(database_id) AS Connections ,
Login_name AS LoginName ,
MIN(Login_Time) AS Login_Time ,
MIN(COALESCE(last_request_end_time, last_request_start_time))
AS Last_Batch
FROM sys.dm_exec_sessions
WHERE database_id > 0
AND DB_NAME(database_id) NOT IN ( 'master', 'msdb' )
GROUP BY database_id ,
login_name
ORDER BY DatabaseName;
09 Oct, 08:45
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
09 Oct, 07:13
/// Как использовать в запросах псевдонимы для столбцов и таблиц
/// в 1с 8.3, 8.2
&НаСервере
Процедура КакИспользоватьПсевдонимыВЗапросахНаСервере()
// Псевдонимы делают текст запроса более лаконичным
// и понятным.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Продукты.Наименование КАК ИмяПродукта,
| Продукты.Вкус КАК ВкусПродукта
| ИЗ
| Справочник.Номенклатура КАК Продукты"
);
ВыполнитьЗапросИВывестиНаФорму(Запрос);
КонецПроцедуры