Задать вопрос
  • Почему запрос формируется бесконечно долго?

    @Dementor
    программист, архитектор, аналитик
    Чтобы запросы выполнялись быстро, запросы должны быть понятными! Только для понятных запросов планировщик сможет создать план выполнения с максимальной эффективностью!

    А что тут у вас???

    1) Зачем тут вложенный запрос? Мало того, что он не имеет смысла, так он еще заставляет выделять в два раза больше памяти на стороне СУБД чем нужно. Удалить!

    2) Зачем тут ЕСТЬNULL ? Эта функция для подстановки значений по умолчанию при соединениях (когда под условие соединения не попадают некоторые поля) или при обращении к реквизитам ссылки (когда ссылка может быть пустой). Тут нет ни первого ни второго случая. СУБД пытается понять что от нее хотят и делает ряд вспомогательных таблиц в памяти, которых вообще не должно было быть!

    3) Почему в запросе 4 поля с функцией СУММА и ни одного группировочного? Это вообще не имеет смысла. Тем более, что виртуальная таблица РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты сама суммирует суммовые показатели по выбранным счетам/измерениям.

    4) Почему каждое выбираемое поле обвернуто в условный оператор ВЫБОР? Это вообще не позволяет выполнять никаких оптимизаций.

    Как это можно оптимизировать?

    1) Запрос должен быть единым - без вложенных подзапросов и временных таблиц!

    2) Вместо бредятины с анализом входящего и исходящего валютного сальдо нужно использовать признак валютности в счете (имею в виду бухгалтерский счет, а не мультивалютность в банковском счете). Различные валютные переоценки валютных счетов проходят только корректировкой балансовых сумм и с нулями по валютной сумме - в логике текущего запроса такие валютные счета будут считаться невалютными.

    3) Сделать группировку суммовых полей (обычных и валютных) по признаку валютности - в результате получим не одну строчку, а две, но которые легко проанализировать в коде. В крайнем случае, если критически важно в результате выполнения запроса получить только одну строку, то можно нарушить совет №1 и сделать временную таблицу, чтобы потом во втором запросе уже за микросекунды соединить две строки в одну единую.
    Ответ написан
    2 комментария
  • Как установить 1С в Docker?

    @Dementor
    программист, архитектор, аналитик
    Хочу поставить 1С 8.3 по мануалам здесь
    По мануалам мне требуются два .deb-файла:
    ....
    Подскажите где можно скачать эти файлы для установки?

    В мануале же вам четко написали, что нужно купить!

    Может быть есть альтернативный способ установки?

    Найденый вам мануал - это и есть альтернативный способ установки.

    Одним из основных способов, который бесплатен, является следующий:
    1) Зарегистрироваться на сайте разработчиков 1С
    2) Зайти в раздел "Комьюнити-лицензии"
    3) Скачать нужную вам версию платформы - на выбор Windows, Linux и MacOS (по ссылке на Linux будут упомянутые deb-пакеты)
    4) Во время установки на шаге указания лицензии выбрать вариант комьюнити-лицензии и указать свои логин/пароль с портала разработчика.
    5) Готово!
    Ответ написан
    2 комментария
  • Множественный фильтр в динамическом списке 1С УТ 11.5?

    @Dementor
    программист, архитектор, аналитик
    1. Если такое есть в вашей УТ11.5 - копируйте.

    2. Если образца нет и идея с головы, то:
    2.1 Список с галочками - это реквизит формы типа СписокЗначений с указанием нужного типа значений
    2.2 Список на форму нужно переносить как поле ввода (предложит таблицей - не соглашайтесь)
    2.3 На событие ПриИзменении поля реализуйте установку фильтра на ваш динамический список.
    Ответ написан
    Комментировать
  • Как сделать так, что после введения данных первой строки, при переходе на вторую, в ней "копировались" данные из предыдущей в 1c?

    @Dementor
    программист, архитектор, аналитик
    Алена, ваш вопрос очень не прост. Вы даете минимум информации, а потом выдаете код, где идет смесь приемов по работе с обычными и управляемыми формами, формой объекта и формой списка. Понятно, что работать не будет. Даже, если вы исправите все синтаксические ошибки и компилятор перестанет ругаться, это не сработает.

    Попробую по шагам объяснить.

    1. Это обычная форма или управляемая (версия не важна)? Сигнатура метода похожа на обработчик с обычной формы. Для работы с коллекцией элементов формы используется ЭлементыФормы, а не Элементы. Но используется метод управляемой формы НайтиПоИдентификатору()

    2. Глобальное свойство СправочникСписок характерно для форм списков, но там совсем другие обработчики событий. В обычном интерфейсе на форме списка справочника можно выполнять непосредственное редактирование, но только реквизитов, а не табличных частей.

    3. Исходя из пунктов 1 и 2 можно сделать заключение, что речь все же про обычную форму объекта элемента справочника. В таком случае всю фигню про идентификаторы и индексы из кода (и тем более про СправочникСписок) нужно выбрасывать. Тут непосредственная работа в контексте объекта (который дополняет контекст формы).

    4. Задача решается очень просто. Вам нужно из ЭлементыФормы.Список.ТекущиеДанные.НомерСтроки получить номре строки. Если номре строки больше 1, то значит у нее есть предыдущая, к которой можно обратится через конструкцию Список[НомерСтроки - 2] (в обычных формах индекс строки табличной части всегда на 1 меньше номера строки). А далее копируйте свойства с помощью метода ЗаполнитьЗначенияСвойств()

    5. Рекомендую пользоваться отладчиком, пока вы учитесь. Буквально делайте обработчик события без кода, ставьте в нем точку останова, запускайте и в отладке далее изучайте какие свойства формы и параметры метода вам доступны, и какая полезная информация в них содержится.

    Финальный код будет примерно таким:

    Процедура СписокПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
        Если НоваяСтрока Тогда
            НомерСтроки = ЭлементыФормы.Список.ТекущиеДанные.НомерСтроки;
            Если НомерСтроки > 1 Тогда
                ПредыдущаяСтрока = Список[НомерСтроки - 2];
                ЗаполнитьЗначенияСвойств(ЭлементыФормы.Список.ТекущиеДанные, ПредыдущаяСтрока, "Наименование, ЦветпоГИБДД")
            КонецЕсли;
        КонецЕсли;	
    КонецПроцедуры
    Ответ написан
    Комментировать
  • Как сравнить дату из реквизита с текущей?

    @Dementor
    программист, архитектор, аналитик
    Пожалуйста подскажите, если мне нужно сравнить дату установленную в реквизите справочника (тип реквизита - дата) с текущей датой, условно чтобы нельзя было в документ потом добавить если дата в реквизите позже текущей стоит,

    я и пытаюсь разобраться как к каждому реквизиту даты обращаться и сравнивать с текущей тк мне нужно чтобы были активны для выбора в документ только те, чья дата подходит


    Вам нужно в настройке динамического списка на форме выбора прописать условие, что показывать только элементы, чья дата соответствует вашему условию (в условиях СКД среди стандартных дат есть "текущая дата" - программировать ничего не нужно). Если есть необходимость давать возможность пользователю отключать фильтр по дате, то добавьте этот обор в пользовательские настройки.
    Ответ написан
    Комментировать
  • Как развернуть базу 1с предприятия в PostgreSQL безопасно?

    @Dementor
    программист, архитектор, аналитик
    Вы не написали под какой СУБД сейчас база 1С работает. Если под такой же PostgreSQL, то это будет самый простой вариант - делаете pgdump и разворачиваете на новом месте. Во всех остальных случаях нужно выгружать базу в файл *.dt , а потом из него загружать в пустую базу, которую предварительно нужно поднять на PostgreSQL.

    На время выгрузки в *.dt никто не сможет работать и потому нужно подбирать максимально нерабочее время и предупредить пользователей. Время выгрузки в *.dt (а так же время на распаковку на новом месте) зависит от размеров базы - маленькие файловые Бухгалтерии за пару минут, средние Торговли около часа, базы на сотни гиг - часами. В моей практике одна из рабочих баз (примерно 200-300 Гб) выгружалась около 15 часов и мы делали это в очень редких случаях и только на выходных.
    Ответ написан
    1 комментарий
  • Как получить изображение из REST-сервиса/odata 1С?

    @Dementor
    программист, архитектор, аналитик
    Так вы же уже получили картинку и даже прикрепили ее в тексте вопроса - свойство ТекстХранилище_Base64Data. Делайте декодирование из Base64 и получите содержимое файла.
    Ответ написан
  • Передача данных из приложения в 1С?

    @Dementor
    программист, архитектор, аналитик
    nopik, прочел вопрос и комментарии, пришел к выводу, что вы просто не поняли, что такое 1С.

    Начать нужно с того, что фирма "1С" использует бренд "1С" для созданной ею платформы "1С:Предприятие", в котором можно описывать требуемую логику хранения и обработки данных на языке "1С", а готовые для эксплуатации решения называются "конфигурациями 1С" (УТ, УП, УХ и остальные буквы). Если приводить аналоги, то платформа 1С - это JVM, язык 1С - это Java, а конфигурации 1С - это программы, которые могут быть написаны на базе Sping Boot (в 1С - это БСП) или J2EE (более старые решения типа УПП).

    Нагуглена куча ссылок на внутренний обмен между 1С и 1С, или передачу данных из 1С посредством OData.

    OData - это стандартный интерфейс платформы, который позволяет получить веб-доступ ко всей функциональности конкретного решения. Обмен данными происходит в две стороны - можно реализовать сложные CRUD-операции.

    А возможно-ли то же самое - но наоборот? Т.е. указать адрес сервера, а 1С сама получит объекты обмена и заберет их.

    Конечно может! Можем даже расширить абстракции - Операционная Система может забирать данные, серверное железо может забирать данные, Интернет может забирать данные, Вселенная может забирать данные.

    Компьютерные технологии только в фильмах Джеймса Кэмерона обладают самосознанием, а в реальной жизни выполняют ровно то, на что их программируют программисты. Хотите реализовать "получит объекты обмена и заберет их" - напишите код, который будет подобное делать (или убедитесь в существовании уже написанного).

    В идеале хотелось бы определить на сервере готовые диалоговые(или HTML) формы

    Кто вас ограничивает? Изучайте JavaScript и другие веб-технологии, и реализуйте любые веб-формы согласно вашего полета фантазии.

    В поставке "1С:Предприятия" есть собственный веб-клиент, для работы с которым необходим работающий веб-сервер (IIS, Apache) и установленная компонента для работы с веб-серверами (раз читали про OData, то должны знать). Это позволяет получить доступ к данным конкретной базы 1С через браузер, но только при условии, что конфигурация 1С написана в режиме совместимости с веб-клиентом (т.е. только новые конфигурации и даже среди них далеко не все).

    какие-то стандартные для 1С элементы обмена для передачи таблиц, изображений, содержимого полей, состояний удаленной системы и т.п.

    Уже пошли какие-то фантазии. Решения 1С в вебе могут работать со стандартными для веба "элементами обмена для передачи" - это типы JSON и XML - т.е. строки с числами плюс двоичные данные в формате base64

    Нужно отображать ход и результаты лабораторных испытаний в 1С с возможностью управления процессом в реальном времени и передачи выбранных полей в виде каких-то стандартных типов приходно-расходных транзакций (такие в 1С вообще есть???) и документов.

    Если кратко, то это ваша проблема, которая 1С абсолютно не касается. Вы пишете какой-то код для обработки каких-то данных, а 1С вам на запрос данных дает эти данные (или выбрасывает исключение - в случае отсутствия данные или прав доступа на них) или позволяет изменять указанные данные (или выбрасывает исключение - в случае отсутствия данные или прав доступа на них). Если хотите визуализировать ответы от 1С в виде некоего веб-интерфейса, то смотрите предыдущие блоки ответа - вам нужно написать собственный "лабораторный портал" как альтернативный интерфейс по работе с 1С.

    в виде каких-то стандартных типов приходно-расходных транзакций (такие в 1С вообще есть???)

    Из перечисленных терминов в 1С есть только "стандартные типы" - это числа, строки, булево, даты и ряд более сложных типов для работы с функциональностью платформы (работа с ОС, работа с архивами, работа с криптографией и так далее). Про понятие "приходно-расходные транзакции" никогда не слышал. В торговом документообороте есть понятие "приходно-расходных документов", которые еще называют "приходники" и "расходники", которые реализованные в некоторых конфигурациях 1С с торговым и бухгалтерским уклоном (те самые буквы - УТ, УП, УХ). "Транзакция" - это термин из теории баз данных, который позволяет как единую операцию выполнить несколько действий, которые должны одновременно или записаться или отклонится - платформа 1С реализовывает свои варианты транзакций и позволяет программистам описывать собственные для групповых обработок.

    По COM я могу передать 1С список любых объектов - но не знаю, как объяснить ей - куда их засунуть. С кодом для COM проблем нет - он есть и будет любой (при чем тут вообще Delphi - непонятно) - но для него нужна, как минимум, Windows. API моего сервера тоже есть - с ним тоже никаких проблем.

    Во первых, использование Windows и COM - это для пиратов, или очень богатых; обычные бизнесы, которым нужна стабильная работа и которые не хотят проблем, используют Linux.
    Во вторых, по COM вы никуда и ничего не можете передать. Вы с помощью COM создаете справочники, документы и записи регистров, заполняете их вашими данными и записываете в базу. Исключением будут вызовы функций конфигураций, но тут вам и думать не нужно - просто передавайте как параметры ваши "список любых объектов", а их обработку внутри функции уже описал программист конфигурации.

    И я ничего не хочу делать под 1С, для 1С или средствами 1С

    Выше куча текста про то, как хотите делать веб-порталы и обработку данных " под 1С, для 1С или средствами 1С", а теперь даете заднюю??? Определитесь чего хотите!!!

    нужно дать возможность потребителю, имеющему документооборот в 1С взять то, что он захочет не прибегая к услугам вымогателей

    А вы в этой схеме каким боком? Десятки тысяч (сотни тысяч?) пользователей документооборота 1С ежедневно работают в своих базах и получают все что им там нужно. Или вы тот самый "вымогатель", который хочет встроится в "схему"?

    отсюда и вопрос: может ли это... изделие... получать данные извне не специфично к конфигурации как УТ, УП, УХ и остальные буквы, а универсально

    Универсально - это и есть через открытые API - OData в вебе и COM на Windows. Все остальные варианты уже специфичны для конкретных конфигураций.

    Есть, в принципе, клиент на NativeAPI - но простому пользователю, без редактирования конфигурации (так же как и на COM) доступа к нему нет - а если все таки есть - то скажите, где.

    Не существует никаких "клиент на NativeAPI"! NativeAPI - это технология (описание API) для написаний внешних компонент для работы в адресном пространстве работающей базы 1С, как собственных библиотек. Примеры компонент написанных на технологии NativeAPI есть в стандартных торговых конфигурациях - это работа со сканерами штрихкодов, с электронными весами и принтерами чеков.

    Если есть документ, описывающий как 1С может запросить объекты с сервера не 1С - то скажите, как он называется.

    И наконец-то кольцо замкнулось и мы вернулись к тому с чего начали - у базы 1С, конфигурации 1С, кода 1С, сервера 1С и так далее нет никакой свободы воли - это все платформа для запуска написанного программистами кода. Если кому-то требуется запросить данные с внешнего сервера, то он пишет код или ищет уже готовый, кем-то другим написанный (на гитхабе или инфостарте).
    Ответ написан
    Комментировать
  • 1С как получить Имя или Заголовок дополнительного реквизита?

    @Dementor
    программист, архитектор, аналитик
    1С как получить Имя или Заголовок дополнительного реквизита?

    На скрине же четко видна надпись - "Недоступно на клиенте".
    Работайте с элементами формы на сервере.

    Каждый раз формируются с новым УИНом

    Да, именно так и работают допреквизиты в большинстве конфигураций - при создании формы создаются програмные атрибуты и новые элементы формы, а при записи все это считывается и помещается в табличную часть или в некоторых случаях в регистр сведений.

    Можете при создании для себя заполнить соответствие сгенерированых имен и заголовков. Если это соответствие хранить в реквизите формы, то можно получать заголовки без серверных вызовов.
    Ответ написан
    Комментировать
  • Как востановить бэкап Паруст торнадо?

    @Dementor
    программист, архитектор, аналитик
    Можно по пунктам
    1.2.3

    Можно и по пунктам:
    1. Открываете документацию по своей программе
    2. Находите раздел по техническому обслуживанию, а там подраздел по бэкапированию
    3. Выполняете официальную инструкцию по восстановлению архива


    P.S. Рекомендация задавать вопросы по обслуживанию Паруса в службу поддержки Паруса, или хотя бы на их форуме.
    Ответ написан
    Комментировать
  • В каком формате 1c передает данные о картинке товара на сайт?

    @Dementor
    программист, архитектор, аналитик
    Ответ на вопрос заголовка:
    В каком формате 1c передает данные о картинке товара на сайт?

    В формате Base64. Но вероятно информации о содержимом файлов картинки будет недостаточно и нужно дополнительно передавать их название и указание к каким товарам их крепить. А на это вам могут ответить лишь те люди, которые отвечают за работоспособность сайта.

    Детальное описание вопроса вместо того, чтобы уточнить главный вопрос заголовка и дать необходимые детали, только путает. Полный сумбур - куча ненужной информации про наличие 1С Бухгалтерии на отдельном сервере, о крутых админах с навыками загрузки данных и про какой-то неизвестный "дром". Так же в тексте вперемешку, что данные выгружаются в "файл XML" и в "файл эксель". Вначале сами определитесь с сутью проблемы, а потом четко и лаконично задавайте вопрос.
    Ответ написан
    1 комментарий
  • Как изменить данные в табличной части, в зависимости от выбора значения?

    @Dementor
    программист, архитектор, аналитик
    в то время как в справочнике ТоварныеПозиции есть регистр Валюта, который ссылается на справочник Валюта.

    1. Вероятно тут имелось в виду, что в справочнике ТоварныеПозиции есть реквизит типа справочник Валюта, на который как было сказано выше ссылается регистр КурсыВалют
    2. Справочники и регистры сведений - это два варианта хранения табличных данных в 1С, главное отличие в том, что у справочников есть ссылки для адресации конкретных записей таблицы, а у регистров такой ссылки нет, но зато есть опция получения первых или последних значений по набору измерений. Главное, что эти метаданные полностью независимы и не могут содержать друг друга внутри - это вам не ООП.

    Как изменить данные в табличной части, в зависимости от выбора значения?

    Пропишите обработчик события ПриИзменении для требуемого элемента управления, в котором будет вся логика изменения соседних ячеек.

    Я получаю курс необходимой валюты на текущую дату из регистра сведений следующим образом:
    Отбор = Новый Структура;
    Отбор.Вставить("Валюта", РусРубли);
    ...Но эта обработка для всех валют...

    Нет, тут написан код отбора курса только для валюты, значение которой в переменной РусРубли (согласно названия там рубли, но хз как на самом деле). Если нужно получить значение курса для валюты, которую указал пользователь, то именно пользовательскую валюту нужно указать в параметре-отборе для среза последних.
    Ответ написан
    Комментировать
  • Вопрос: с чего начать обучение 1С: Документооборот?

    @Dementor
    программист, архитектор, аналитик
    Радченка потом будешь читать, когда нужно будет квалификацию нарабатывать.

    Первое, что должен сделать обязательно - пойти на курс по 1С:Документообороту 2 (обрати внимание, что третья версия сильно переделана). Там тебе расскажут концепцию системы, почему документы сделаны из справочников, про версии файлов, о процессах и настройке их маршрутов, о совместной работе и пяти вариантах настройки прав доступов, исполнительной дисциплине делопроизводителей, о соответствии нормам о ведении документооборота организаций и многие другие вопросы, которые должен знать пользователь системы.

    Зная систему, можно приступать к изучению конфигурации и программированию. При чем ДО 2.1 позволяет максимально обойтись без программирования в конфигураторе. На встроенном языке можно писать код для проверки условий для узлов бизнес-процессов и для срабатывания триггеров бизнес-событий, а так же на встроенном языке можно описать сами обработчики бизнес-событий.
    Ответ написан
    3 комментария
  • Как рассчитывается себестоимость в отчете "Валовая прибыль" при формировании документа "Передача на комиссию"?

    @Dementor
    программист, архитектор, аналитик
    Как рассчитывается себестоимость в отчете

    Заходите в конфигуратор, открывайте этот отчет и анализируйте алгоритм.

    при формировании документа «Передача на комиссию»

    Сомневаюсь, что у вас настроено автоматическое формирование отчета в момент записи документа, но даже если и так, то это ничего не меняет. Документ согласно своим алгоритмам (заходите в конфигуратор, открывайте и анализируйте) пишет движения в регистры, а далее отчет считывает данные из регистров, так как читать из множества разнородных вариантов документов накладно.

    Но все, что выше - вода и лишь формально правильный ответ.

    Проблема - программа ведет себя неожиданным образом. Причина проблемы - неправильные настройки, неправильная эксплуатация, ошибки в коде. Решение проблемы - это не писать "абстрактные вопросы"! Решение проблемы для специалиста - проанализировать данные и алгоритмы, на основании чего сделать вывод, что все так и должно быть, и дать инструкции по правильной эксплуатации; или обнаружить и исправить корень проблемы. Решение для НЕ-специалиста - обратится к специалисту!
    Ответ написан
  • Как написать функцию которая преобразователь строку в дату?

    @Dementor
    программист, архитектор, аналитик
    1) На скриншоте названия месяцев с маленькой буквы, а в вашей функции с большой. Поэтому не работает.
    2) Отладка, отладка, отладка! Уже давно все сами увидели и исправили.
    Ответ написан
    Комментировать
  • 1С как выбрасывать пользователей из-за которых растёт tempdb?

    @Dementor
    программист, архитектор, аналитик
    Именно кто наполняет tempdb напрямую увидеть нельзя, только методом онлайн анализа логов технологичного журнала, который настроен с ключем SDBL.

    Но в консоли кластера (так же програмно из языка 1С, с помощью OneScript и с помощью RAS/RAC) можно по конкретной базе увидеть какие пользователи очень долго и в большом объеме захватывают СУБД.

    У меня на прошлой работе (где я был инхаус и обеспечивал работоспособность системы) такие случаи были очень редкие и достаточно было в консоли кластера найти и потушить "проблемный сеанс" (пользователь запустил финансовый отчет за слишком большой период или вообще без фильтров). Если не помогало, то смотрел идентификатор rphost и просто его килял - проблемному пользователю вылетала ошибка, а остальные ничего не замечали, так как автоматически перекидывались на другие процессы кластера или дожидались старта нового процесса. Вот эти многобукв данного абзаца можно автоматизировать, если проблемы каждый день.
    Ответ написан
    Комментировать
  • Как подключиться к локальной базе данных 1С УНФ через COM соединение?

    @Dementor
    программист, архитектор, аналитик
    Видимо строки подключения неверна. Во первых не используйте кирилицу, а во вторых проверьте права доступа к каталогу.
    Ответ написан
    Комментировать
  • Как разобраться в версиях явы?

    @Dementor
    программист, архитектор, аналитик
    Как я понимаю, это приложение нельзя же будет запустить, просто зайдя на сайт java.com и скачав оттуда последнюю версию (которая, как ни странно, версии 8)?

    Верно - обратной совместимости нет.

    Последние версии java можно скачать на официальном сайте:
    https://www.oracle.com/java/technologies/downloads/
    Ответ написан
  • Как связать 1С УНФ и сайт на Django?

    @Dementor
    программист, архитектор, аналитик
    Берите модуль интеграции УНФ и Битрикс - это сразу половина дела.

    Далее под Джангу есть модули для обмена с 1С как раз под битриксовский формат. Кажется видел в открытом доступе несколько лет назад. Но даже если прямо сейчас бесплатного модуля нет (или он сильно устарел), то на рынке есть десяток компаний, которые за деньги с радостью вам все настроят.

    Если формат Битрикса по каким-то причинам не подходит, то готовьтесь к долгому пути описания архитектуры, а потом ее реализации в двух системах. Очень затратный путь.
    Ответ написан
  • Как настроить импорт из 1С при условии, что изображения товаров хранятся на стороне сайта?

    @Dementor
    программист, архитектор, аналитик
    Есть ли возможность настроить импорт на стороне 1С или сайта так,

    Такой галочки, которую сделали специально для вас, нет.
    Но вы можете сделать требуемую доработку "на стороне 1С или сайта".
    Ответ написан