Потребовалось в УТ быстро удалить все движения по банку, дело вроде легкое - отменить проведение всех поступлений и списаний безналичных денежных средств, но не тут то было...
При попытке отмены проведения выполнялись проверки на условия оплаты по заказу и документ ни как не отменял проведения
Ну не может типовым способом, заставим не типовым: Через запрос делаем выбору необходимых нам документов и в обработке результата пишем:
Готовая функция для использования в своих обработках или общем модуле:
В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.
Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.
В моем случае передача значений в фоновую задачу происходила через параметры. Метод ЗагрузитьИзВИБ имеет два параметра это ВходнойПараметр и АдресВХранилище. ВходнойПараметр это структура, в которую сгружаются все данные, необходимые для проведения загрузки. АдресВХранилище это адрес во временном хранилище, по которому будет передан результат загрузки. Сам код метода фонового задания выглядит так:
Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.
Для того чтобы запустить фоновые задачи выполняется следующий код:
Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.
После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.
Вопрос определения оптимального количества потоков выходит за рамки данного поста. А после получения некоторых результатов на рабочих данных пока что выходит и за рамки моего сознания . Но если у вас есть идеи как посчитать нужное количество потоков, пишите в комментариях, с радостью почитаю.
Последовательность событий, которые происходят при открытии формы нового элемента, можно представить следующей схемой:
Прежде всего, при заполнении нового объекта данными, можно попробовать обойтись вообще без написания какого-либо кода. Для этого у реквизитов объектов конфигурации есть свойства ЗначениеЗаполнения и ЗаполнятьИзДанныхЗаполнения.
Эти свойства позволяют визуально (в конфигураторе) задать правила, по которым реквизит будет заполняться данными при создании нового объекта.
Если этих возможностей недостаточно, то тогда нужно использовать возможности встроенного языка.
Действия с данными объекта нужно выполнять в модуле объекта, в обработчике события ОбработкаЗаполнения. Этот событие возникает только при создании новых объектов, при открытии форм существующих объектов это событие не вызывается. Поэтому в нем не нужно узнавать, новый это объект, или нет. Нужно только описать алгоритм заполнения объекта данными. При этом следует учитывать, что это событие будет вызываться в нескольких случаях:
при интерактивном создании нового объекта,
при вводе на основании,
при выполнении метода объекта Заполнить().
При этом параметр Основание, передаваемый в этот обработчик, может иметь различные значения в зависимости от того, каким образом создается новый элемент.
Например, он может иметь тип ссылки, если новый объект вводится на основании.
Или он может иметь тип Структура, если новый объект создается интерактивной командой из списка, в котором установлен отбор. В этом случае структура будет содержать значения элементов отбора этого списка.
Также этот параметр может иметь тип Неопределено, если новый элемент создается интерактивной командой из панели действий. То есть в своем алгоритме начального заполнения полезно анализировать этот параметр.
Что касается внешнего вида формы нового объекта, то им нужно управлять в обработчике события формы ПриСозданииНаСервере.
Это событие возникает и для новых, и для существующих объектов. Поэтому в нем нужно убедиться в том, что открывается форма именно нового объекта. Убедиться в этом можно проанализировав параметр формы Ключ.
Если объект новый, в этом параметре будет пустая ссылка. Если это существующий объект – в этом параметре будет ссылка на этот объект:
Если требуется выполнять какие-то действия в обработчике события формы ПриОткрытии, то в нем ситуация аналогичная, нужно анализировать параметр формы Ключ.
Для тех кто не хочет читать все что выше, код проверки на ЭтоНовый в Управляемом приложении:
Мне частенько приходится взаимодействовать с 1С-разработчиками, и во время совместной работы над проектами замечаю, что далеко не все из них хорошо знают свой главный инструмент – «Конфигуратор». Причем это не относится к степени крутости девелопера. Как оказалось, даже синьоры пользуются далеко не всеми возможностями «Конфигуратора», а ведь они могут сэкономить кучу времени, а тем самым повысить продуктивность разработчика.
Под катом я решил собрать несколько полезных фишек стандартного конфигуратора, которыми пользуюсь регулярно. Многие из них появились в платформе «1С:Предприятие 8.3.х», поэтому перед тестированием обязательно проверьте номер версии установленной у вас платформы.
Закладки
Функция установки в коде закладок появилось еще с первых релизов 8-й версии платформы «1С:Предприятие». Штука чрезвычайно полезная и помогает разработчику быстрей передвигаться по коду. Например, у нас есть большой модуль, в который мы решили добавить ряд функций. Естественно, потом нам предстоит их отлаживать, а соответственно постоянно между ними переключаться.
Хорошо, если новые функции добавлены в самый конец модуля, а если потребовалось расположить в разных частях? Вот тут начинается самое интересное. Одни программисты начинают скролить текст (как правило, этим страдают новички). Более продвинутые применяют поиск по тексту (Ctrl + F).
Оба способа рабочие, но пользоваться ими долго. Куда правильней использовать функцию «закладки». Например, переходим к какой-нибудь строке. Нажимаем ALT + F2 и получаем закладку (слева от строки отобразиться квадратик).
Убирается закладка тем же сочетанием клавиш. Так вот, закладок может быть в модуле расставлено много. По ним легко передвигаться нажатием клавиши F2. Фича крутая, но она была изначально не доделана и не позволяла, например, передвигаться по закладкам в разных модулях. Это досадное ограничение создавало лишние тормоза для программистов, привыкших к хорошим IDE (например, Visual Studio, PHP Storm).
В версии 8.3 недочет исправили и сделали классную вещь – «Список закладок». Нажимаем клавиши «Ctrl + Shift + F2», и перед нами откроется окно с полным списком установленных закладок:
В нем перечислены все закладки в разрезе модулей. Для каждой закладки указан номер строк и доступен перечень действий: перейти к коду, удалить закладку, удалить все закладки.
Таким образом, работать с закладками стало на порядок проще. Еще бы добавили возможность установки горячих клавиш на закладки, и стало бы совсем хорошо. Помню еще со времен «Delphi 6» привык к установке закладок по горячим клавишам Alt + <Цифра>. Наставил закладок и быстро перемещайся по ним.
Группировка строк
В «1С:Предприятие» с самого начала была одна большая проблема – отсутствие возможности создавать дополнительные модули для определенных объектов. Например, есть у меня справочник «Контрагенты» и мне хочется разделить его функционал на модули. Допустим, функционала очеееень много. Так вот, в моем распоряжении все равно стандартный набор: Модуль объекта, Модуль менеджера и модуль формы. Понятное дело, что у каждого модуля своя роль, но что делать мне с моими 100500 функциями, которые относятся непосредственно к справочнику «Контрагенты»?
По мнению 1С я должен оформить их в виде общего модуля. С одной стороны, идея классная. Делаем модуль, его сразу видно и т.д., и т.п. Правда всегда есть один нюанс. Если следователь этой методике, то при наличии кучу объектов в конфигурации число общих модулей будет зашкаливать.
Вот взять хотя бы библиотеку БСП. Стоит ее внедрить и в количестве модулей начинает теряться. Я уже молчу про конфигурации, которые построены на базе БСП. Там и сто пятьсот модулей от БСП, и еще столько же специально для конфигурации.
В общем, неудобство налицо (особенно после опыта разработки в языках, где нет подобных ограничений). Увы, спастись от этой проблемы в настоящее время не получится. Зато, мы можем использовать возможности группировки функций/процедур в модулях.+
Например, есть у нас общий модуль «РаботаСКонтрагентами». В нем часть функций отвечают за поиск контрагента, другая часть за загрузку контрагентов из внешних источников и т.д. Чтобы не потеряться во всем этом многообразии возможностей, можно логически сгруппировать все функции/процедуру. Для этого в платформе 8.3 появилась функция под названием «Области». Рассмотрим пример:
После добавление областей (язык препроцессора) наш код будет сгруппирован. Если их свернуть (области), то в итоге мы увидим симпатичный комментарий (см. рисунок ниже):
Клик мышкой по плюсику развернет область, и мы увидим свернутые функции. Если хочется сразу развернуть все имеющиеся функции (в пределах области), то кликаем по плюсику удерживая Ctrl.
Вот такая мега удобная вещь и в модулях с большим количеством функций спасает очень даже. В предыдущих версиях платформы было модно использовать для подобных целей блоки комментариев, но управлять/добавлять областями явно удобней.
Форматирование кода
Собственно говоря, тут и рассказывать особо нечего – выделяем код, нажимаем «Alt + Shift + F» и редактор попытается привести его в божеский вид в соответствии с вшитым code-style. Функция работает вполне сносно и ей обязательно надо пользоваться. Пишу это потому, что неоднократно видел, как разработчики пытаются отбивать отступы самостоятельно. Это конечно круто, но зачем тратить время, если большую часть работы можно выполнить одной горячей клавишей?
Комментирование
Опять же, никаких секретных действий – выделили код, нажали “Ctrl + num /” (слеш на дополнительной области клавиатуры) и получили закомментированный участок. Захотели вернуть обратно? Не беда! Выделяем закомментированный участок кода, нажимаем «Ctrl + Shift + num /» и мгновенно приводим его в боевой режим. Фишка попсовая, но опять же, новички про нее не знают, и тратят кучу времени на расстановку слешей. Да еще и матерят компанию «1С», за отсутствие возможности многострочного комментирования, как в продвинутых язык программирования.
Быстрая вставка специальных символов
Иногда возникает необходимость быстро вставить в редактор специальный символ (которого нет на клавиатуре). В большинстве случаев разработчики используют для этого функции встроенного языка (например, символ). А ведь есть способ проще. Если удерживать клавишу Alt и набрать на доп. клавиатуре код нужного символа (из таблицы ASKII), то он тут же будет вставлен. Например, держим ALT и набираем 65. На выходе получаем букву «А». Или вводим 4 и получаем бубновую масть.
Вставка специальных символов
Хорошо, с этим понятно, но какой от этого еще можно получить профит? Лично я, таким образом вставляю символ амперсанда (&). Все знают, что этот символ используется для определения параметров в языке запросов. Неудобство состоит в том, что текст запроса мы пишем на русском языке, а для добавления этого символа перед параметром приходится переключить на английский, затем нажать Shift + 7, а потом вернуться обратно на русский.
Чтобы избавить себя от этой рутиной последовательности действий, я использую выше озвученную функцию. С ее помощью для установки амперсанда требуется лишь набрать с удержанной клавишей «alt» последовательность цифр 38. При этом надобность в двойном переключении языка отпадает.
Многие могут подумать, что я искусственно раздул проблему из ничего, но тут просто дело привычки. Кода приходится писать много и вот такие мелочи немного повышают производительность и избавляют от лишних нажатий клавиши backspace (для удаления случайно набранных символов). Не убедил? Тогда просто выделите время и попробуйте себя переучить
Обратился ко мне старый клиент и говорит - беда с нумерацией счетов!
Менеджеры, кто как хотел - так и изменял номера документов. с префиксом, без, писали даже б/н. Но тут пришел новый бухгалтер и сказал - нужно с 1 октября запустить авто нумерацию с номера 00010000, но старые счета не трогать!
Попросили - сделали:
т.к. Старые трогать нельзя - простое восстановление нумерации отпадает
Первое решение, которое пришло в голову, сделать выборку по моментувремени создания счета - обратная сортировка - получить первый - и к полученному номеру документа +1
Но оказалось, что бывает такое: менеджеры создают счета сегодня, но ставят дату вчера - и получается только что созданный документ уже не последний пришлось переделать алгоритм.
Только алгоритм решили немного переделать - не получаем дату создания документа, а сортируем по части ГУИДа, которая является началом периода создания документа.
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д.
Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки
Путем тестов было вяснено, что проблема не в коде, а происходит это на этапе обращения платформы к SQL серверу... после долгих поисков решений, в интернете была найдена статья, которая помогла в решении данной проблемы:
Кто что блокирует, MS SQL + 1C
В повседневной работе достаточно задействовать только первый блок "/*кто кого*/". Открываем MS SQL Server Management Studio, правой на корень - "new query" - вставляем код запроса (только верхнюю часть до "Кто что блокирует", остальное - для детального анализа), выполняем запрос (вверху есть кнопочка выполнения запроса).
Выполнив запрос, запоминаем "ID виновника", быстренько идем в консоль сервера 1С, заходим в ветку "Сеансы" нашей базы. Видим все соединения с 1С-сервером, ищем там колонку "Соединение с СУБД", чтобы увидеть соединения 1С-сервера с MSSQL-сервером. В колонке будет всего несколько заполненных значений, среди них и будет "ID виновника".
Что делать если его там нет, тут 3 варианта:
1. Вернитесь в MSSQL и сделайте запрос еще несколько раз подряд, если значения меняются или таблица вообще пуста - постоянной блокировки нет, у вас (уже) все в порядке.
2. Сеанс который блокирует MSSQL находится в другой базе т.е. блокировка не в той базе (можно попробовать задействовать ветку всех сеансов в консоли 1С-сервера) - вернитесь в MSSQL и внимательно посмотрите в колонку DB в ней находится название базы.
3. Бывает что ID процесса в 1С-консоли вообще отсутствует, такое тоже бывает если у вас есть какие-то внешние программы подключенные напрямую в базу 1С, если пускаете кого-то в MSSQL напрямую, то вариант не исключен.
Клиент попросил настроить автоматическую архивацию баз 1С раз в три дня и выгрузку архивов на Dropbox и на FTP Сервер. Кроме 1С нужно архивировать папку с рабочими документами. Хочет - так хочет, делаем:
Первым делом настроим автоматическую архивацию данных. Конечно, можно использовать планировщик Windows и VBS скрипт, но это дедовский способ, т.к. уже полно универсальных, платных и бесплатных инструментов для архивации данных.
Из платных могу посоветовать handy backup, версия expert умеет работать с 1С, но цена ~ 5 300 немного останавливает - поэтому мы используем бесплатный Cobian Backup - респект разработчику!
Установка Cobian Backup
Скачиваем с оф. сайта
и запускаем установщик:
Устанавливаем службу, используя учетку от 1С
Далее идет установка, ОК по завершении.
Настройка автоархивирования 1С
У нас в арсенале 3 базы 1С:
1 - файловая
2 - серверных
Для создания архивов 1С мы будем использовать типовой механиз, для этого создана папка Backup1C и в ней bat файлы выполняющие архивацию баз:
Для файловых баз код bat файла следующий (zup.bat):
Для серверных (crm.bat):
Отроем Cobian Backup, для создания заданий
Настроим архивацию файловой базы:
Добавляем создание, снимаем галки внизу, т.к. у нас не будет прямого копирования:
на закладке Файлы устанавливаем копирование каталога на FTP:
Расписание:
далее можно задать цикличность - приоритет, сжатие архивов, шифрование - но это я буду использовать при архивировании документов, а для 1С мы это не используем.
Доп. действия:
Выполнить и ждать закрытия bat файл и добавим паузу в 180 секунд (этого времени хватает чтобы выполнить выгрузку базы ЗУП)
На закладке Дополнительно, я поставил только одну галку - Синхронизация
Итог настройки:
Запускаем задание для проверки работоспособности, и через ~ 3 минуты:
Архив успешно создан, FTP сервер я пока не настроил, поэтому он вызвал ошибку - Но главное мы получили дамп базы 1С для дальнейшего копирования на сервера ftp, при верных настройках ftp, все отлично копируется - проверено уже не раз
Настраиваем архивацию серверной базы
Тут все тоже как и в файловой, только добавим перезапуск агента сервера 1С(для перезапуска процессов 1С и отключения пользователей)
и базы на SQL большие - поэтому после выполнения bat файла добавим паузу 3000 секунд
Результат тестового выполнения:
Архив сделался за 8 минут, т.е. паузы 600 секунд вполне хватит.
Выгрузка на Dropbox
Для выгрузки на DropBox использовал резервное копирование от Антивируса Касперского. Он быстро подключился к хранилищу, правда пришлось на нем оплатить место до 1 ТБ)
В итоге:
все работает как часики: архивы создаются 2 раза в неделю и заливаются на облачные сервера
Каждый расчетчик сталкивается с начислением планового аванса, но как правильно это оформить в ЗУП 2.5 знает не каждый.
Ниже небольшая инструкция по начислению планового аванса в ЗУП:
В ЗУПе разработаны два способа расчета аванса:
- Аванс фиксированной суммой;
- Аванс за первую половину месяца пропорционально отработанным
Настройки для расчета
Откройте Сервис - Параметры учета и установите настройки значений для Вашей организации:
Аванс фиксированной суммой
Необходимо в списке справочника «Сотрудники организаций» в поле «Аванс» указать сумму, которая будет являться фиксированным авансом для каждого из сотрудников.
После этого как вы заполните все фиксированные суммы по сотрудникам, чтобы выплатить аванс. Открываем документ «Зарплата к выплате».
«Расчет зарплаты - Касса и Банк - Зарплата к выплате организаций»
Создаем новый документ
Указываем в нем месяц начисления (аванс за какой месяц выплачивается), способ выплаты (через кассу или через банк). Самое главное поле это поле «Выплачивать». В нем надо обязательно выбрать вариант «Плановый аванс». После этого нажимаем кнопку «Заполнить» и табличная часть документа будет заполнена сотрудниками, по которым мы указали размер аванса в справочнике «Сотрудники организаций».
Проведем документ, далее за каждым сотрудником получившим аванс формируется задолженность перед организацией, т.е. они оказываются должны предприятию. Это происходит поскольку к моменту выплаты аванса, ещё не была начислена основная часть заработной платы документом «Начисление зарплаты». Это можно увидеть в отчете «Расчетная ведомость организации» и «Свод начисленной зарплаты».
Аванс за первую половину месяца пропорционально отработанным
Когда нужно выплатить аванс за половину месяца пропорционально отработанному времени то для этого в программе 1С Зарплата и Управление Персоналом есть специальный функционал - Документ «Начисление зарплаты» и конечно «Зарплата к выплате».
Открываем документ «Начисление зарплаты». В нем необходимо указать месяц начисления и в поле «Режим начисления» обязательно выбрать «Первая половина текущего месяца». После этого по кнопке «Заполнить» получить в табличной части перечень сотрудников с их начислениями
и по кнопке «Рассчитать - Полный расчет» - идет расчет аванса за первую половину месяца. При этом обратите внимание, что у сотрудников в качестве начислений присутствуют не только основные плановые начисления, но и все дополнительные плановые начисления положенные работникам.
НДФЛ
Проведение документа «Начисление зарплаты» с режимом начисления «Первая половина текущего месяца» на самом деле не делает никаких начислений, а лишь осуществляет расчет сумм аванса. Поэтому, когда мы в конце месяца будем пользоваться этим документом для расчета зарплаты, то он снова будет считать всех сотрудников с первого числа месяца, а не с середины.
После расчета аванса в документе «Начисление зарплаты» необходимо его провести и обратиться к документу «Зарплата к выплате». В нем указываем месяц начисления и в поле «выплачивать» выбираем «Аванс по расчету за первую половину месяца». Жмем кнопку «заполнить». В результате табличная часть будет заполнена сотрудниками, для которых рассчитан аванс за половину месяца за вычетом НДФЛ.
Как и в первом случае после проведения документа «Зарплата к выплате», сформируется задолженность сотрудника перед организацией.
Часто задаваемые Вопросы по начислению аванса:
Необходимо чтобы в аванс начислялось 40% от суммы месячного оклада, Как начислить?
В списке сотрудников или в регистре сведений Авансы сотрудникам организаций (меню Расчет зарплаты по организациям - Касса и банк - Авансы сотрудникам организаций) указываете сумму планового аванса 40 от зп вашего сотрудника.
Далее формируете документ "Зарплата к выплате" операция "плановый Аванс"
Как рассчитать НДФЛ с аванса?
Уточните, плз, что должно выплачиваться за первую половину месяца: собственно аванс или зарплата за 1 половину месяца?
1.Если аванс, но это НЕ НАЧИСЛЕНИЕ! Это-ВЫПЛАТА!
Сразу создаем документ Зарплата к выплате, заполняем его из фиксированной суммы аванса, заданной в регистре сведений Авансы сотрудникам.
НДФЛ НЕ ПЛАТИМ!
Да, неудобно фиксированной суммой.
Можно, да, заполнить эти фиксированные суммы какой-нибудь обработкой.
Или заполнять обработкой не регистр сведений Авансы сотрудникам, а сам документ Зарплата к выплате.
2.Если это зп за 1 половину месяца, то она, действительно, расчитывается док.Начисление зп за 1 половину месяца, берется и уплачивается НДФЛ и т.п. Но начисляем не аванс как таковой, а часть оклада, тарифа, надбавок за часть месяца.
Это должно быть прописано в официальных документах организации, а не "как удобно расчетчику"
И,-подчеркну.-аванс это НЕ начисление. Начисляются-оклад, тариф, надбавки.
Мы НЕ назначаем такое начисление-аванс.И формулу его создать стандарными средствами НЕ можем.
Подскажите пожалуйста, пытаюсь людям начислить аванс, выбрала "плановый аванс" 50% от з/п, проставила у каждого сотрудника. Затем делаю "выплата", выбираю "банк", так как хочу на карты перечислить, и тут у меня отображается только один сотрудник...в чем подвох? хотя если выбрать "через кассу" отображаются все..Лицевые счета по всем заполнены.
В программе вы можете "плановый аванс" задать как вид выбираемой операции в док-те "Зарплата к выплате" . Тогда в ведомость автоматически подставятся суммы, проставленные каждому сотруднику. Причем, те сотрудники, которым вы не назначали плановый аванс, в такую ведомость не попадут.
Далее, если способ выплаты вы выбираете "через кассу", то такой вариант ведомости предоставляет впоследствии лишь возможность "ввести на основании" РКО (кассовый документ). Так реализовано в Зарплате и Управлении Персоналом 8, ред. 2.5.
А если вы выбираете способ выплаты - "через банк" , то справа открывается поле для контрагента- банка, в который вы передаете ведомость на списание суммы с вашего р/счета на карточные зарплатные счета ваших сотрудников по Зарплатному проекту.
В таком случае можно провести перечисление по банку обычного планового аванса.
Но если у вас установлен упрощенный вариант учета взаиморасчетов с сотрудниками, то у вас не получится ни платежное поручение ввести (как документ), ни в выписке банка что-либо оформить в конфигурации.
Кроме того, есть ещё вариант для того, чтобы некий аванс попал в ведомость для перечисления с банковского счета (или по расходом кассе). Для этого нужно производить отдельный расчет (док-том Начисление з/пл) за первую половину месяца. Такой расчет должен учитывать фактические невыходы (табель учета раб.времени), то есть выплата не просто плановой суммой, а в меньшей сумме, если первая половина месяца отработана сотрудником не полностью.
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать:
1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
2. Формирование в привилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
В дополнении у пункту 1, код процедуры сформировать отчет(). Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах:
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает
И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и т.д.... вообще нужно прямое подключение с ноутбука к базе на сервере. Дело не хитрое, ставим клиента, подключаем базу и получаем ошибку следующего содержания:
server_addr=tcp://192.168.1.123:1541 descr=192.168.1.123:1541:10060(0x0000274C): Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ; line=842 file=src\DataExchangeTcpClientlmpl.cpp
Выполняется ожидание возможности запуска.
При появлении возможности, запуск будет выполнен автоматически.
Полный скрин:
Решение:
Первое что приходит на ум, отключить антивирус и брандмауэр на сервере:
И тут же 1С запускается! Итог - нужно добавить правила для 1С в антивирус и брандмауэр.
Недавно я уже описывал решение проблемы: Ошибка сетевого доступа к серверу (Windows Sockets - 10060 (0x0000274C)) в нем пришлось еще прописать IР-шник сервера в файле C:\WINDOWS\system32\drivers\etc\hosts и еще в C:\Program Files\1cv8\bin\conf\nethasp.ini в описании [NH_TCPIP] в строке NH_SERVER_ADDR = IР-шник вашего сервера - Возможно Вам это тоже понадобится