1С:8 : Преобразовать строку с разделителями в массив
1 |
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") |
Автоматизация бизнес-процессов
1 |
ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") |
Реализации механизма Drag and Drop (или проще говоря “Перетаскивания”) для ДереваЗначений расположенного на управляемой форме управляемого приложения 1С 8.3 Основная сложность реализации механизма перетаскивания заключается в том, что у строки ДереваЗначений платформа не позволяет просто изменить родителя, т.е. переподчинить строку. Единственный способ это сделать – создать новую строку вместе со всеми подчиненными строками, т.е. полностью скопировать всю ветку дерева вместе со всей иерархией и подчинить ее требуемой строке-родителю, после чего удалить исходную ветку. Данная задача распадается на две подзадачи: 1). Перед перетаскиванием необходимо проверить корректность данной операции, узел дерева нельзя переносить в узлы подчиненные ему самому, т.е. родительский узел нельзя переносить в дочерние, т.к. это приведет к “бесконечной рекурсии” и “падению” платформы. Это реализуется с помощью обработчика события ЭлементДеревоПроверкаПеретаскивания(…) 2). Если перетаскивание возможно, то при помощи обработчика ЭлементДеревоПеретаскивание(…)запускается рекурсивная функция, которая создает новую ветку дерева, подчиненную требуемому родителю, а исходную удаляет. Обращаю особое внимание на то, что в платформе 8.3 реализован механизм множественного выбора элементов, поэтому вышеуказанные операции необходимо произвести для всех выбранных пользователем элементов.
Читать далее
1 2 |
П = Новый Структура("Владелец", Объект.Контр); П = Новый Структура("Владелец", Объект.Контр); тФорма = ПолучитьФорму("Справочник.ДоговорыКонтрагентов.Форма.ФормаВыбора", Новый Структура("Отбор",П)); НовыйДоговор = тФорма.ОткрытьМодально(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
ГруппаОтбор = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); ГруппаОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ; Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Отбор.Родитель = ГруппаОтбор; Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование"); Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Отбор.Использование = Истина; Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; ЭлементОтбора.ПравоеЗначение = "000000001"; Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Отбор.Родитель = ГруппаОтбор; Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование"); Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Отбор.Использование = Истина; Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; ЭлементОтбора.ПравоеЗначение = "000000002"; |
Решиения проблемы: 1. Глюк сервака Остановите в диспетчере задач процессы: ragent rphost rmngr и Запустите службу «Агент сервера 1С:Предприятие» 2. При внезапном отключения питания или аналогичных ситуациях — повредился файл srvribrg.lst Нужно удалить все из папки srvinfo Для Windows зайдите в каталог c:\program files\1c\1cv82\srvinfo, если Linux — то файлы лежат в домашнем каталоге пользователя от имени которого запускается сервис: usr1cv8/home/.1cv8/1C/1cv8 … Запустите службу «Агент сервера 1С:Предприятие». Через Администрирование серверов 1С Предприятия по новой создать кластер 1С и добавить информационные базы 3. Переименовали сервер на котором служба агента 1С
Читать далее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
&НаСервере Процедура ДобавитьНаСервере() ДобавляемыеРеквизиты = Новый Массив; Реквизит1 = Новый РеквизитФормы("Таб", Новый ОписаниеТипов("ТаблицаЗначений"), , "Таблица", Истина); ДобавляемыеРеквизиты.Добавить(Реквизит1); ИзменитьРеквизиты(ДобавляемыеРеквизиты); ДобавляемыеРеквизиты = Новый Массив; Реквизит2 = Новый РеквизитФормы("Кол", Новый ОписаниеТипов("Строка"),"Таб" , "Колонка", Истина); ДобавляемыеРеквизиты.Добавить(Реквизит2); ИзменитьРеквизиты(ДобавляемыеРеквизиты); ТаблицаФормы = ЭтаФорма.Элементы.Добавить("Таблица", Тип("ТаблицаФормы"), ЭтаФорма); ТаблицаФормы.ПутьКДанным = "Таб"; Колонка = ЭтаФорма.Элементы.Добавить("Колонка", Тип("ПолеФормы"), ТаблицаФормы); Колонка.ПутьКДанным = "Таб.Кол"; КонецПроцедуры |
Ошибка при выполнении операции с информационной базой Ошибка СУБД При использовании Microsoft SQL Server 2014 требуется указывать пользователя с правами администратора или включить флаг 4199 для всего сервера с помощью команды DBCC TRACEON(4199, -1)
Читать далее
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
&НаКлиенте Процедура УпорядочитьПоКонтрагентам(Команда) ЭлементыПользовательскихНастроек = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; Для Каждого Элемент Из ЭлементыПользовательскихНастроек Цикл Если ТипЗнч(Элемент) = ТипЗнч(Список.КомпоновщикНастроек.Настройки.Порядок) Тогда Элемент.Элементы.Очистить(); УсловиеСортировки = Элемент.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); УсловиеСортировки.Поле = Новый ПолеКомпоновкиДанных("Организация.Наименование"); УсловиеСортировки.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; УсловиеСортировки.Использование = Истина; КонецЕсли; КонецЦикла; КонецПроцедуры |
ПолучитьФорму(«Документ.НазваниеДокумента.Форма.ФормаДокумента», Новый Структура(«Ключ», СсылкаНаДокумент));
Читать далееВ платформе 1С 8.3.10 добавили динамическое масштабирование:
Читать далееДля клиент-серверного варианта работы 1С, когда сервер 1С расположен на отдельном компьютере, если необходимо сохранить/открыть файл на сервере, к примеру *.xlsx открыть средствами Excel через COM/OLE:
1 2 3 4 5 6 7 8 |
&НаКлиенте Процедура ПрочитатьФайл(Команда) Файл = Новый ДвоичныеДанные(ИмяФайла); Адрес = ПоместитьВоВременноеХранилище(Файл, ЭтаФорма.УникальныйИдентификатор); ОбработатьНаСервере(Адрес); КонецПроцедуры |
Читать далее
Недавно столкнулся с следующей ошибкой: Поле объекта не обнаружено (ВключитьВУчетнуюПолитику) Ошибка возникает при открытии документа «Реализация товаров и услуг» под правами менеджера по продажам Причина ошибки в отсутствии соответствующего изображения в библиотеке картинок, но можно обойти эту ошибку не снимая конфигурацию с поддержки, достаточно временно включить пользователям роль: «Право изменения статусов проверки документов». А также новое в релизе:
Читать далееНа всякий, заметка: проведение документа из управляемой формы проводимого документа
Читать далееВ расширениях конфигурации можно добавить новый отчет, к примеру на СКД, при этом можно прямо в расширении создать свою подсистем в которой его можно разместить, можно и роль там же в расширении добавить. Но, не забываем, что для того, чтобы при разработке отчета можно было пользоваться конструктором запросов, необходимо передать в расширение все используемые объекты и их реквизиты (если используются реквизиты), а так же измерения и ресурсы используемых регистров. Если вы не хотите чтобы отчет вдруг оказался черно-белым, не забываем в расширение также предавать макет оформления (обычно это бежевый), без него отчет будет формироваться без оформления.
Читать далееЕсли необходимо получить итог по колонке динамического списка (с учетом отборов), можно воспользоваться следующим «костылем» 🙂 Если кто знает альтернативный вариант, сообщите в комментариях…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
СхемаКомпоновкиДанных = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных(); НастройкиКомпоновкиДанных = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных ,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ТаблицаЗначений = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновки); Возврат ТаблицаЗначений.Итог("ОсталосьВыплатить"); |