Каталог статей
В разделе материалов: 260 Показано материалов: 231-240
Бывает что при переносе базы слетает нумерация документов и при попытке сохранить новый документ говорит, что номер документа не уникален.
В это случае мне помогло выполнить "Проверка логической целостности информационной базы" в Тестировании и исправлении информационно базы" |
Принцип такой:
Формируем файл на сервере. Имя генерируем ПолучитьИмяВременногоФайла();. Потом передаем временный файл в хранилище и удаляем его на сервере.
На клиенте получаем файл из хранилища с помощью ОписаниеПередаваемогоФайла и НачатьПолучениеФайлов. В последнем указываем оповещение. В процедуре оповещения на входе получаем массив принятых файлов.
Формы |
Просмотров: 1442 |
Добавил: leshic |
Дата: 10.07.2019
|
В БСП (1С:Библиотека стандартных подсистем 8.2) если у пользователя есть полные права, то остальные роли игнорируются. Т.е. если у пользователя полные права и роль "Роль1", а в коде стоит проверка "Если РольДоступна("Роль1")..." то у пользователя эта проверка может не сработать. В этом случае надо добавлять так же в условие проверку на РольДоступна("ПолныеПрава") |
Задача делится на 2 подзадачи:
1) сначала открываем диалог выбора файла немодально и присваиваем реквизиту формы ФайлДанных значение выбранного файла. Для строкового реквизита ФайлДанных устанавливаем свойство "Кнопка выбора" = Да, и пишем обработчик события "Начало выбора".
2) передаем файл на сервер после чего обрабатываем его. (можно почитать здесь: https://its.1c.ru/db/v8std#content:542:hdoc)
Для передачи используем процедуру НачатьПомещениеФайла(ОписаниеОповещения, , ФайлДанных, Ложь, УникальныйИдентификатор);.
Здесь УникальныйИдентификатор - это УИД формы (можно было написать ЭтаФорма.УникальныйИдентификатор)
На входе процедуры в описании оповещения вторым параметром идет Адрес. Его можно задать принудительно при вызове процедуры НачатьПомещениеФайла. Если он не задан, то создается новый файл и в адрес будет занесен путь файла во временном хранилище. У этой процедуры есть параметр "Интерактивно". Если он равен Истина, то можно не писать обработку выбора файла. Система сама вызовет такой диалог и передаст файл во временное хранилище.
1С сильно рекомендует использовать ПолучитьИмяВременногоФайла() для создания временных файлов. При этом имя формируется в временный каталог пользователя. Если имя временного файла и каталог задать жестко, то есть вероятность того, то при запуске обработки другим пользователем выйдет ошибка совместного доступа к файлу.
Формы |
Просмотров: 1865 |
Добавил: leshic |
Дата: 26.06.2019
|
|
Столкнулся с тем, что табличный документ не хотел печататься на 2 сторонах. Проблема решилась неожиданным способом: увеличил размер полей.
СКД |
Просмотров: 342 |
Добавил: leshic |
Дата: 20.06.2019
|
|
Часто бывает, что при печати таблицы многострочная ячейка разбивается на 2 листа, если целиком не влезла. Особенно коряво получается, когда в одном из соседних столбцов 2 строки, а в другом одна объединенная строка, тогда лист оканчивается посередине объединенной ячейке и буквы рвутся по горизонтали.
Чтобы этого избежать в макете табличного документа в свойствах строки устанавливаем свойство "ВместеСоСледующим" В этом случае, если эта строка и следующая не влезают на 1 лист, то они обе переносятся на другой.
Это же можно использовать и для колонок.
СКД |
Просмотров: 469 |
Добавил: leshic |
Дата: 20.06.2019
|
|
Независимо от того, какой запрос написан в наборе данных, СКД исключает из результирующего запроса поля, не участвующие в настройках отчета. Это может приводить к тому, что в результате суммы по оборотам могут быть либо больше, либо меньше реальных.
Например, делаем запрос по сумме проданной номенклатуры. В запросе указываем день, номенклатуру, сумму, покупателя, регистратор. Допустим у нас один и тот же покупатель купил 3 раза одну и туже номенклатуру в один и тот же день по одной и той же цене (100 руб.).
- Регистратор1, Номенклатура, Покупатель, 100
- Регистратор2, Номенклатура, Покупатель, 100
- Регистратор3, Номенклатура, Покупатель, 100
Если в настройках отчета укажем все поля запроса то получим верные данные. Если укажем только номенклатуру, покупателя и сумму, то рискуем получить меньший оборот, если у нас не будет детальных записей. В этом случае СКД сгруппирует все данные и вместо 3 строк по 100 руб, у нас появится 1 строка по 100 руб. Так как все 3 покупки будут различаться только регистраторами, который мы не включили, то в результате данные сгруппируются до 1 строки: Номенклатура, Покупатель, 100
Чтобы такого не случилось (мало ли как будут настраивать отчет пользователи), надо поставить в Роли поля "Регистратор" галку "Обязательное"

В этом случае, какая бы не была настройка отчета, поле Регистратор всегда будет участвовать в запросе СКД
СКД |
Просмотров: 1162 |
Добавил: leshic |
Дата: 17.06.2019
|
|
Рефа́кторинг (англ. refactoring), или перепроектирование кода, переработка кода, равносильное преобразование алгоритмов — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы.
Во многом при рефакторинге лучше полагаться на интуицию, основанную на опыте. Тем не менее имеются некоторые видимые проблемы в коде (англ. code smells), требующие рефакторинга:
- дублирование кода;
- длинный метод;
- большой класс;
- длинный список параметров;
- «жадные» функции — это метод, который чрезмерно обращается к данным другого объекта;
- избыточные временные переменные;
- классы данных;
- несгруппированные данные.
Один из основных приемов "Выделение метода".
Выделение метода заключается в выделении из длинного и/или требующего комментариев кода отдельных фрагментов и преобразовании их в отдельные методы, с подстановкой подходящих вызовов в местах использования. В этом случае действует правило: если фрагмент кода требует комментария о том, что он делает, то он должен быть выделен в отдельный метод. Также правило: один метод не должен занимать более чем один экран (25-50 строк, в зависимости от условий редактирования), в противном случае некоторые его фрагменты имеют самостоятельную ценность и подлежат выделению. Из анализа связей выделяемого фрагмента с окружающим контекстом делается вывод о перечне параметров нового метода и его локальных переменных.
В 1С есть встроенный механизм Выделение метода. Примеры использования можно посмотреть здесь: https://1c-programmer-blog.ru/platforma/refaktoring-v-1s.html
|
Информацию взял с http://1centerprise8.blogspot.com/2015/12/vyvod-tch-v-ja-chejku.html
Для отображения нескольких строк (значений) в одной ячейке надо использовать агрегатный функции Массив([Различные] Выражение) и СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок).
Так же есть агрегатная функция ТаблицаЗначений([Различные] Выражение1 [КАК ИмяКолонки1][, Выражение2 [КАК ИмяКолонки2],...]), но при её использовании не получиться вывести таблицу внутри ячейки.
Если возможностей встроенных функций не достаточно, то можно написать свою функцию в общем модуле и использовать её, для формирования массива или многострочной строки.
СКД |
Просмотров: 5312 |
Добавил: leshic |
Дата: 23.05.2019
|
|
|
Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|