Rerforator 3000
Мастер
(1119)
2 месяца назад
Ваш код на 1С выглядит вполне корректно для выполнения задач, связанных с выдачей заказов и формированием списка ожидающих заказов. Вот краткий обзор каждой процедуры и возможные улучшения:
Процедура ВыдатьЗаказ
1. Проверка прав: Вы проверяете права пользователя, что является хорошей практикой.
2. Подтверждение действия: Использование диалогового окна для подтверждения действия — это полезно для предотвращения случайных ошибок.
3. Изменение статуса заказа: Вы правильно изменяете статус заказа и сохраняете изменения.
4. Сообщение пользователю: Уведомление о том, что заказ выдан, также является хорошей практикой.
Процедура Сформировать
1. Запрос данных: Вы формируете запрос для получения заказов со статусом "Ожидает", что позволяет динамически загружать данные.
2. Цикл обработки результатов: Использование цикла для добавления строк в таблицу — это стандартный подход.
Возможные улучшения
1. Обработка ошибок: Рассмотрите возможность добавления обработки ошибок, чтобы отлавливать возможные исключения при выполнении запросов или записи данных.
2. Логирование действий: Можно добавить логирование действий пользователя, чтобы отслеживать, кто и когда выдал заказ.
3. Проверка на наличие заказов: Перед тем как формировать таблицу, можно добавить проверку на наличие заказов со статусом "Ожидает", чтобы избежать пустой таблицы.
4. Улучшение пользовательского интерфейса: Если это возможно, добавьте визуальные элементы, чтобы пользователи могли легче ориентироваться в системе.
Если у вас есть конкретные вопросы по коду или вы хотите улучшить его функциональность, дайте знать!
Constant Surveillance
Знаток
(383)
2 месяца назад
Это код для работы с пользователями и заказами в 1С CRM. Он позволяет создавать новых пользователей, проверять их логины и пароли, чтобы они могли войти в систему. Еще он проверяет, какие у пользователя права, прежде чем позволить ему что-то делать, например, выдавать заказы. Также этот код показывает список заказов, которые ждут выдачи. В общем, он помогает управлять пользователями и заказами в CRM.
Если СтрДлина(Логин) < 3 Тогда
Отказ = Истина;
Сообщить("Логин должен содержать не менее 3 символов!");
КонецЕсли;
Если ЭтоНовый() Тогда
Если СтрДлина(Пароль) < 8 Тогда
Отказ = Истина;
Сообщить("Пароль должен содержать не менее 8 символов!");
КонецЕсли;
Пароль = Хешировать(Пароль);
КонецЕсли;
КонецПроцедуры
Процедура Войти(Команда)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПользователиCRM.Ссылка КАК Пользователь,
| ПользователиCRM.Пароль КАК Пароль,
| ПользователиCRM.Роль КАК Роль
|ИЗ Справочник.ПользователиCRM КАК ПользователиCRM
|ГДЕ ПользователиCRM.Логин = &Логин";
Запрос.УстановитьПараметр("Логин", Логин);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Если Хешировать(Пароль) = Результат.Пароль Тогда
ГлобальныеПеременные.ТекущийПользователь = Результат.Пользователь;
ГлобальныеПеременные.ТекущаяРоль = Результат.Роль;
Закрыть();
Сообщить("Вход выполнен: " + Логин);
Иначе
Сообщить("Неверный пароль!", СтатусСообщения.Важное);
КонецЕсли;
Иначе
Сообщить("Пользователь не найден!", СтатусСообщения.Важное);
КонецЕсли;
КонецПроцедуры
Функция Хешировать(Пароль)
Возврат СтрЗаменить(СтрШифрование(Пароль, Новый УникальныйИдентификатор()), "-", "");
КонецФункции
Процедура ПроверитьПрава(РольТребуется)
Если ГлобальныеПеременные.ТекущаяРоль <> РольТребуется Тогда
Сообщить("У вас нет прав на выполнение этой операции!", СтатусСообщения.Важное);
Прервать();
КонецЕсли;
КонецПроцедуры
Процедура ПередЗаписью(Отказ, РежимЗаписи)
Если Статус = "Выдан" Тогда
Сообщить("Вы не можете изменить заказ, который уже выдан!");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Процедура ВыдатьЗаказ(Команда)
ПроверитьПрава("Оператор");
ВыбранныйЗаказ = ВыбраннаяСтрока.Заказ;
Если Вопрос("Вы уверены, что заказ выдан?", РежимДиалогаВопрос.ОКОтмена) = КодВозвратаДиалога.ОК Тогда
ВыбранныйЗаказ.Статус = "Выдан";
ВыбранныйЗаказ.Записать();
Сообщить("Заказ выдан!");
КонецЕсли;
КонецПроцедуры
Процедура Сформировать()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Заказ.Ссылка КАК Заказ,
| Заказ.Клиент КАК Клиент,
| Заказ.Дата КАК Дата
|ИЗ Документ.Заказ КАК Заказ
|ГДЕ Заказ.Статус = 'Ожидает'";
Результат = Запрос.Выполнить();
РезультатВыбора = Результат.Выбрать();
Пока РезультатВыбора.Следующий() Цикл
Строка = Таблица.НоваяСтрока();
Строка.Заказ = РезультатВыбора.Заказ;
Строка.Клиент = РезультатВыбора.Клиент;
Строка.Дата = РезультатВыбора.Дата;
Таблица.Добавить(Строка);
КонецЦикла;
КонецПроцедуры
Перем ТекущийПользователь;
Перем ТекущаяРоль;
Процедура Выйти(Команда)
ТекущийПользователь = Неопределено;
ТекущаяРоль = Неопределено;
Сообщить("Выход выполнен.");
КонецПроцедуры