Ответы пользователя по тегу 1С-Предприятие
  • Как в 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 комментариев
  • Как избавиться от артефактов 1с при копировании в Excel?

    @Dementor
    программист, архитектор, аналитик
    Ни разу такого не делал, но трудно ли этот ваш макрос внедрить в шаблоны пользователей (кажется normal.dotm), что бы событие копипасты само отлавливалось и все вставляемые Shapes автоматически удалялись?
    Ответ написан
    Комментировать
  • Как разрешить редактирование единиц измерений?

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

    Пример. Вы продаете кабель и его единица измерения по какой-то причине сантиметр. В документе прихода было 2 километра, что в проводках дало 200000 сантиметров. Далее в реализации вы продали 50 метров, что в проводках дало 5000 сантиметров. При анализе остатков склада у вас показывает 195000, что сбивает кладовщика с толку и он просит давать ему отчет в метрах. Тут два выхода - 1) не трогать злополучные сантиметры, а установить метр как единицу для отчетов 2) заменить единицу для остатков, что вы и задумали.

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

    Варианты для специалистов:
    1) Включить для конфигурации возможность редактирования, отключить проверку при записи номенклатуры, написать и запустить обработку, которая в торговых регистрах заменит реквизит Количество. Это по времени намного быстрее чем полное перепроведение всех документов и проводки гарантированно не поплывут при наличии нехронологического ввода информации.
    2) Вы упомянули про перенос из другой базы. Именно в этот этап можно вклинится и сделать в загружаемых данных нужную подмену.
    Ответ написан
    Комментировать
  • Организация доступа к базе данных в web?

    @Dementor
    программист, архитектор, аналитик
    Большая часть программ 1С, так же как и Просто Софт и прочие офисные программы не имеют штатного веб-доступа. Для удаленной работы через браузер вам нужно будет делать настройки на вашем Windows Server. Смотрите в сторону TS Web Access.

    P.S. С указанными тегами windows-админы никогда не увидят ваш вопрос и не смогут вам помочь.
    Ответ написан
    Комментировать
  • 1С Веб-клиент почему не активна кнопка Записать?

    @Dementor
    программист, архитектор, аналитик
    Не важно как вы заходите - веб, тонкий или толстый клиенты. Если кнопка записать недоступна, то значит у вас только чтение и нет прав на редактирование справочника. Обратитесь к вашему администратору.
    Ответ написан
    5 комментариев
  • Чем заменить оператор Выполнить()?

    @Dementor
    программист, архитектор, аналитик
    Ничем. Как пишут в документации:
    В режиме запуска веб-клиент оператор не поддерживается, при его вызове будет сгенерировано исключение.

    Вам остается только поиском найти все вызовы этой "обвертки" и явно заменить их текстом процедур, которые передавались в виде параметра. Или пользоваться тонким клиентом поверх HTTP.

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

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

    @Dementor
    программист, архитектор, аналитик
    Извините, но ваш вопрос прямо из категории: "Откликнитесь те, кто пишут слева направо. Почему вы не можете отказаться от такой своей привычки? Вот у меня есть друзья арабы и они говорят, что писать справа налево намного удобнее" :)

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

    Так же не стоит забывать и о самой специфике программирования на разных языках. Для языков ООП считается дурным тоном, когда листинг кода больше одного экрана (а в каталоге проекта меньше сотни мелких файликов). В то же время для 1С во времена 7.7 был доступен всего один модуль, куда писали ВСЕ, а в последних релизах есть множество общих модулей, но их размеры часто все равно зашкаливают за сотни тысяч строк кода. Т.е. боковая панелька размером на 2 символа вроде не очень мешает, а при ширине 6-7-8 уже как-то не очень, особенно в начале модуля, где большая часть панели не занята абсолютно ни чем. А если учесть, что для 1С практически всегда нужно смотреть на другие дополнительные боковые панельки (дерево метаданных, панель свойств, синтаксис-помощник), то становится понятным идея борьбы за рабочее пространство.
    Ответ написан
    Комментировать