Ответы пользователя по тегу 1С-Предприятие
  • Как реализовать скрытие значения справочника в системе 1с предприятие (пример: уволенный сотрудник)?

    @Dementor
    программист, архитектор, аналитик
    То что вы описали и есть стандартное решение.

    Мы в часть справочников добавили реквизит "Не используется", а в формах списка/выбора при открытии накладываем отбор, что бы такие элементы не показывать пользователю. Тут же на формах прячем кнопку "Показать скрытые", которая снимает этот отбор для случая работы с архивными данными (к примеру, выбрать в отчет по старому периоду). Но это была УТ10. Возможно, что подобный функционал уже внесли в состав БСП - не рыл в данном направлении, не знаю...
    Ответ написан
  • Как после сохранение данных создавал xml файл?

    @Dementor
    программист, архитектор, аналитик
    Судя по набору слов, которые вы применили, у вас очень мало опыта в создании решений на PHP и вовсе нет понимания в работе с 1С. Поясню:

    1) Вы ссылаете на статью, где есть пример создания XML-файла с помощью инструментов работы с DOM. Можно и так. А можно сделать XSLT-трансформацию вашего представления заказа в тот вид, который вам дали для интеграции с 1С. А можно и вовсе не заморачиваться и писать просто текстовый файл. Все зависит от вашего мастерства в PHP-программировании и контекста выполнения скрипта.
    1.1) Насколько я понял Yii2 - это фреймворк для создания интерфейсов, а не набор базовых библиотек. Поэтому искать в нем средства выгрузки заказа в файл бесполезно - он не знает что такое "заказ". Он знает только, что такое грид, который подгружает данные с вашей базы заказов.

    2) Дропбокс не имеет никакого отношения к 1С (и никогда не имел). Решения на платформе "1С Предприятие 8" (и некоторые 7.7) умеют получать данные из файлов, из внешних СУБД, запрашивать их по HTTPS или с FTP, сами выставлять к себе доступ и получать данные по REST-сервисам, SOAP или даже по COM-соединению (а если подключать библиотеки, то каналы связи ограничены только фантазией разработчика). В вашем случае вам дали четкое ТЗ на разработку, где есть описанный XML-формат заказа и место, куда файл нужно выгружать (на дропбокс, но точно так же могли потребовать на Яндекс-диск) - к 1С эти данные не имеют прямого отношения, просто так захотели разработчики, с которыми вы контактируете.

    Буду благодарен, у кого был опыт и примерный алгоритм скажет как действовать, чтобы не набивать лишний раз шышки, так как не было опыта по интеграции

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

    @Dementor
    программист, архитектор, аналитик
    Если бездумно заменить одну таблицу на другую, то это вам не поможет. А индексы можно и в табличных частях справочника добавлять.

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

    P.S. Кстати, одна из причин использования непериодических регистров сведения, которые подчинены справочникам (в виде указания ведущим измерением), вместо обычных табличных частей - как раз борьба с блокировками, которые возникают при обычной работе пользователей в базе с формами этих справочников. Их продвигали в эпоху конфигураций 8.0-8.2, но в новых типовых конфигурациях вернулись назад к использованию табличных частей. Пример - контактная информация.
    Ответ написан
    Комментировать
  • Можно ли объединить два и более хранилищ систем 1с с разными конфигураторами?

    @Dementor
    программист, архитектор, аналитик
    Технически реализовать не сложно. Пишите скрипт по 1) выгрузке файлов из "доработанной базы" и "связанных баз", 2) далее замене файлов общих для всех баз объектов в каталогах выгрузки из "связанных баз", 3) загружайте файлы назад в связанные базы.

    Единственное, что вам нужно взять во внимание (кроме отслеживания логической целостности конфигурации) в этой схеме - нельзя делать загрузку файлов в базу, которая подключена к хранилищу. Если вам так сильно нужно вносить изменения именно в хранилище (внешние системы контроля версия типа GIT по какой-то причине не подходят), то вам нужно использовать промежуточные базы и цепочка в скрипте увеличивается: 0) обновиться с хранилища, 1) тот же, 2) тот же, 3) тот же но в промежуточную базу, 4) выгрузка из промежуточной базы единого файла конфигурации CF, 5) захват конфигурации в хранилище, 6) сравнение/объединение базы подключенной к хранилищу с полученным на предыдущем шаге файлом (не уверен, что это можно сделать скриптом - возможно нужно будет явно пощелкать мышкой).
    Ответ написан
  • Как снизить количество ошибок после очередной доработки системы?

    @Dementor
    программист, архитектор, аналитик
    Наличие ошибок - это отсутствие или неполноценное тестирование.

    Вызывает вопросы ваша тестовая база - зачем она вам, если она не защищает от ошибок? Кто обнаруживает ошибки в рабочей базе и почему вы не даете этим людям возможность увидеть эти ошибки еще во время обновления тестовой базы?

    В зависимости от бюджетов и компетенций можете внедрить какие-то из технологий сценарных тестирований, что бы автоматически выявлять привнесенные ошибки:
    1c.ru/news/info.jsp?id=17985
    https://habrahabr.ru/post/307808/
    https://infostart.ru/public/262904/
    https://github.com/silverbulleters/vanessa-behavior
    Ответ написан
    8 комментариев
  • Что за РучнаяНастройка_УСН?

    @Dementor
    программист, архитектор, аналитик
    1) Синтаксис помощник предназначен для получения справки по свойствам используемой версии платформы "1С:Предприятие". Так было со времен 7.7 (а может и раньше). Это не китайская "Книга перемен", что бы отвечать на произвольные вопросы.

    2) Очевидно, что РучнаяНастройка_УСН - это какая-то фишка по работе с налоговым учетом, которая была в вашей версии Бухгалтерии 2, но которой больше нет в Бухгалтерии 3. Что бы понять что это за реквизит и для чего он нужен, нужно провести "археологические раскопки". Для этого откройте старую бухгалтерскую конфигурацию и выполните глобальный поиск по данной строке (в свойствах поиска ставьте все галочки).
    Ответ написан
    Комментировать
  • В 1С 8.3 - где находится настройка обмена данными с web-сайтом?

    @Dementor
    программист, архитектор, аналитик
    8.2 и 8.3 - это номера платформы выполнения кода. Обновление 8.2 -> 8.3 это как на винду с первым сервис-паком накатить второй сервис-пак: программы не пропадаю, настройки не слетают, все документы на своем месте; просто закрываются неизвестные для обычного пользователя ошибки и система в целом просто более стабильно работает. Новые версии платформы могут выполнять старые программы, которые изначально писались под 8.0/8.1/8.2 (точно так же как в Windows есть режимы совместимости для старых программ с Win98/NT/2000/XP)

    Если у вас перестал работать обмен с сайтом, то вам обновили саму программу "Управление торговлей" (УТ). Подозреваю, что с версии УТ10 на УТ11 - их архитектура действительно настолько сильно различна, что старые обработки перестают работать (это как сменить просмотрщик с Adobe Reader на какой-нибудь DJVU Reader - обе программы хороши, но вторая не читает файлы от первой программы). В программах линейки "Управление торговлей" изначально заложен обмен с сайтом Битрикс. Вам нужно найти программиста, который знает новую торговую конфигурацию, что бы он подправил обработку обмена аналогично как вам ее исправляли для старой версии.
    Ответ написан
    2 комментария
  • Как в 1С программно выбрать склад?

    @Dementor
    программист, архитектор, аналитик
    В случае Розница 2.2 можете воспользоваться этим вариантом:
    ЕдинственныйСклад = Справочники.Склады.ПолучитьСкладПродажиПоУмолчанию(Магазин, ТипСклада);

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

    @Dementor
    программист, архитектор, аналитик
    Системное перечисление ОбходРезультатаЗапроса нужно использовать не с текущей базы/конфигурации/платформы, а именно то, которое существует на втором конце соединения по COM. То же самое касается перечисления РежимЗаписиДокумента и прочих системных перечислений.
    Ответ написан
  • Как вставить ссылку на документ из другой базы 1С?

    @Dementor
    программист, архитектор, аналитик
    Если есть задача хранить ссылку на объект из другой базы и при этом на формах отображать его по представления, то я бы пошел по пути создания дополнительного справочника для внешних данных. Наименование сделать идентичным тому, которое во внешней базе и оно же будет представлением. Далее сохранять путь подключения к другой базе, вид метаданных и GUID из ссылки - по двум последним сущностям вы сможете при COM-соединении получить на той стороне ссылку на элемент. При выборе элемента на других формах можно для начала, наложив фильтр по метаданным, отобрать уже сохраненные в первую базу элементы нужного типа и добавить туда же возможность запроса уже полной выборки во внешней базе.
    Ответ написан
    8 комментариев
  • Как исправить проблему Ошибка в процедуре ПриОпределенииНазначенияРолей общего модуля ПользователиПереопределяемый?

    @Dementor
    программист, архитектор, аналитик
    А почему вы не хотите сразу поставить последнюю версию 3.0.49.23 ? Обновитесь не с *.cfu, из файла *.cf - все обработчики с перехода конфигурации от версии к версии все равно будут запущены.

    Видимо в промежуточном релизе был глюк по управлению правами, который стреляет на более свежих платформах (ваша 3.0.43.100 разрабатывалась под 8.3.6.2449 и тогда видимо еще не было расширений конфигурации и соответствующих прав). Как вариант можете поставить платформу 8.3.6 и на ней сделать часть обновлений, а потом продолжить уже на вашей 8.3.8.
    Ответ написан
  • Можно ли отправлять данные в 1c предприятие между серверами паралельно а не последовательно?

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

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

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

    @Dementor
    программист, архитектор, аналитик
    Если зачистить прямо все-все, то:
    1) через конфигуратор сохраните конфигурацию,
    2) создайте новую пустую базу,
    3) загрузите в новую базы конфигурацию из оригинальной базы
    4) сохранитесь и получите абсолютно пустую базу

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

    @Dementor
    программист, архитектор, аналитик
    На ИТС есть на эту тему: "Система стандартов и методик разработки конфигураций для платформы 1С:Предприятие 8", но я бы порекомендовал лучше почитать статьи с сайта Инфостарт, которые посвящены аккуратным доработкам для легкого последующего обновления. Вот парочка из множества, которые мне выдал поиск:
    infostart.ru/public/518581
    infostart.ru/public/181932

    На счет "представителя 1с" не хочется вас расстраивать, но вас разводят на деньги. Любая Марья Ивановна из бухгалтерии может в типовую в режиме предприятия и выполнить обновление конфигурации, или следуя простым инструкциям может зайти в конфигуратор и там обновить доработанную конфигурацию на последний релиз. И в этом случае действительно возможны ситуации, когда доработки или затираются, или перестают работать. Что бы такое не произошло, как раз и зовут в гости "представителей 1с", которые берут деньги именно за то, что бы обойти такие проблемы и все доработки продолжили работать после обновления. Остаются некоторые нюансы, к примеру с внешними обработками, отчетами и печатными формами, но в общем случае у специалиста все карты в руках, что бы после обновления ничего не слетало.
    Ответ написан
    Комментировать
  • Нарушение сортировки номенклатуры в счете?

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

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

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

    Сколько людей - столько и мнений.

    Поэтому у меня следующие вопросы:

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

    2) С помощью периодического вызова метода ПланыОбмена.ВыбратьИзменения(). Он возвращает выборку из уже зарегистрированных для отправки объектов. Детальнее в справке.

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

    @Dementor
    программист, архитектор, аналитик
    Для начала рассмотрим какое предназначение форм у документа. Форма списка документов - это визуальное представление набора записей в таблице СУБД. Форма самого документа - это визуальное представление значения свойств одной конкретной записи во все той же таблице СУБД.

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

    Если чекбокс отражает существование реального значения в записи таблицы в СУБД, то его можно использовать и на форме списка. Что бы знать как это сделать, нужно знать вид используемых форм - обычные (типа Visual Studio) или управляемые (HTML-подобные). В первом случае, у списка есть события ПриВыводеСтроки и ПриПолученииДанных - в обоих вариантах доступны значения свойств выводимых записей и настройки их оформления - можно менять шрифты, фон и так далее. Во втором случае, все еще проще и без программирования - у самой формы есть настройки условного оформления и в визуальном конструкторе можно настроить как будут выглядеть какие из записей при наличии в них определенных значений. В последнем случае изменение условного оформления доступно не только программистам в конфигураторе, но и обычным пользователям в процессе их работы.
    Ответ написан
  • Как правильно создать новую колонку в списке документов "Реализация товаров и услуг"(Управление торговлей 10.3)?

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

    У табличного поля списка есть обработчики событий ПриАктивизацииСтроки, ПриАктивизацииКолонки и ПриАктивизацииЯчейки. В зависимости от нужного вам эффекта выберите то, что больше подходит. Далее предлагайте пользователю интерактивно внести новое значение с помощью функции ВвестиЗначение(). Определите на каком документе находитесь, откройте его программно, измените реквизит на введенное пользователем значение, запишите/проведите и обновите список документов, что бы новое значение перерисовалось на форме. Готово! ;)
    Ответ написан
    Комментировать
  • Почему элемент цикла Для Каждого остается инициализированным после завершения цикла?

    @Dementor
    программист, архитектор, аналитик
    Все верно. Это правильное поведение еще со времен платформы 8.0

    Цикл находится внутри контекста процедуры/функции. В языке 1С в отличии от C++ нельзя просто взять и процедурными скобками объявить еще один изолированный контекст, переменные которого удалятся при выходе за его рамки. Все переменные, которые создаются в рамках условий и циклов продолжают существовать и хранить полученные значения до завершения всей текущей выполняемой процедуры. Если вам нужно беречь память, то после вашего цикла вам самим нужно позаботится об очистке содержимого уже ненужных служебных массивов и таблиц.
    Ответ написан
    Комментировать
  • Как синхронизировать 1С: Предприятие с внешней системой?

    @Dementor
    программист, архитектор, аналитик
    1) Веб-сервисы, про которые вы упомянули предназначены для внешних потребителей. Если инициатором выступает 1С, то вам доступны практически все инструменты (кроме особо экзотических) - обмены через файловые шары, FTP, веб-службы, COM-подключения, прямые выгрузки в СУБД при наличии ODBC-драйверов и так далее.

    2) В платформе есть специальный объект "подписка на события", который позволяет не редактируя те же самые справочники вставить свой исполняемый код на события, которые связаны с конкретным справочником, их списком или каждым из справочников системы. Тоже самое касается документов (только список обрабатываемых событий более расширен) и некоторых других объектов.

    3) Совсем "вручную" не нужно. Вы можете сделать свою "каркасную" конфигурацию, которую через механизм "сравнения/объединения конфигураций" будете внедрять в пользовательскую, таким образом перенося в нее свои подписки на события и общие модули с их обработкой. Таким образом свои настройки интеграции распространяют такие компании как Битрикс, Агент-Плюс и пр. Для управляемых конфигураций (это самые последние разработки 1С - ERP, Бухгалтерия 3, Управление торговлей 11, Управление небольшой фирмой и так далее) совсем недавно появилась возможность создавать расширения. Обзорно можете почитать тут - https://habrahabr.ru/company/1c/blog/320018/
    Ответ написан
    6 комментариев