Ответы пользователя по тегу 1С-Предприятие
  • В чём причина ошибки "Значение не является значением объектного типа (Продукция)"?

    @Dementor
    программист, архитектор, аналитик
    Варианты ошибки в данной точке:
    1) Поле ДокументОснование не заполнено - исправить проверкой значения.
    2) Поле ДокументОснование заполнено, но таким типом документа, у которого нет табличной части Продукция - исправить проверкой типа основания
    3) У основания есть табличная часть Продукция, но там нет значений - прежде чем обращаться к строкам нужно поставить проверку их наличия.

    У вас похоже на вторую ошибку, но может и первая. Третья ошибка сгенерирует сообщение про обращение за пределы индекса.

    Кстати, тут может еще быть проблема при обращении к свойству Печать, если Номенклатура - это сложный тип, а не просто ссылка на справочник.

    В общем нужно проверку сделать. Что-то типа такого:
    Если ТипЗнч(Источник.ДокументОснования) <> Тип("ДокументСсылка.ЗаказНаРазработку") Тогда
    	Возврат;
    ИначеЕсли Источник.ДокументОснования.Продукция.Количество() = 0 Тогда
    	Возврат;
    КонецЕсли;
    Ответ написан
    1 комментарий
  • Как заставить работать сканер карт с 1С?

    @Dementor
    программист, архитектор, аналитик
    Нужно зарегистрировать компоненту в системе от имени администратора с помощью regsvr32
    Ответ написан
    Комментировать
  • Как правильно сравнить конфигурации в 1С: Предприятии?

    @Dementor
    программист, архитектор, аналитик
    Описание этих и других программ - https://solutions.1c.ru/catalog/
    Ответ написан
    Комментировать
  • Почему в файловой базе работает, а в клиент-серверной возникает ошибка "Попытка передачи с клиента на сервер мутабельного значения 1-го параметра..."?

    @Dementor
    программист, архитектор, аналитик
    1) При работе в файловой базе все находится в памяти вашего компьютера - тут нет никаких проблем. Но когда дело касается взаимодействия вашего компьютера-клиента с компьютером-сервером, то сервер уже не имеет доступа к вашей оперативке - передаваемая в обработку информация пакуются в контейнеры и отправляются по сети. Пока все понятно?

    2) При программировании на платформе 1С при работе с базой данных мы работаем или с Ссылками, или с полученными с их помощью Объектами. Ссылка отличается от Объекта своей неизменностью - это просто адрес с указанием типа данных и уникального идентификатора. Но Объект в отличии от Ссылки можно изменить и записать назад в базу по адресу этой Ссылки. Думаю это тоже понятно.

    3) Что вы пытаетесь сделать? У вас локально в памяти есть измененный Объект (в переменной Источник) и вы хотите передать его на сервер для дальнейшей параллельной обработки и тут и там. К сожалению мы работаем не на квантовых компьютерах и потому эффект запутанности нам недоступен. Мы можем править Объект или локально, или на сервере. Но не одновременно в двух местах!

    Итого. Судя по тексту вашей процедуры, вам вообще Источник передавать не нужно - передавайте сразу ДокументОснования. Но если предполагается, что на сервере Объект нужно изменить, то а) запишите его локально, б) передайте на него Ссылку, в) на сервере прочитайте по Cсылке, г) после изменения на сервере запишите Объект в базу, д) после возвращения потока управления на клиент, прочитайте Объект из базы по Ссылке.
    Ответ написан
    2 комментария
  • Как сформировать отчет на основе нескольких документов?

    @Dementor
    программист, архитектор, аналитик
    Судя по описанию задачи - это что-то нежизнеспособное. Учебный пример или задание на собеседование?
    Решение зависит от дополнительных вопросов, которые не были освещены.

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

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

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

    @Dementor
    программист, архитектор, аналитик
    Ответ зависит от варианта разрабатываемого интерфейса.

    Обычный интерфейс:
    Элемент формы связанный с табличной частью "ТаблицаДанных" - ЭлементыФормы.ТаблицаДанных
    Текущая колонка - ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка
    Имя реквизита формы для колонки - ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка.Имя
    Имя реквизита табличной части, который связан с колонкой - ЭлементыФормы.ТаблицаДанных.ТекущаяКолонка.Данные

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

    @Dementor
    программист, архитектор, аналитик
    Если этот "системный администратор", кроме администрирования хочет заниматься программированием под 1С - нужен.

    Цены узнавайте на местах: edu.1c.ru/dist/test/spisok.asp
    Ответ написан
    Комментировать
  • Почему не работает функция СтрНайти()?

    @Dementor
    программист, архитектор, аналитик
    1) отключить режим совместимости
    2) написать свою функцию поиска, которая будет в цикле искать до тех пор пока искомая подстрока встречается и последнее найденное будет первым с права.
    Ответ написан
    1 комментарий
  • Почему при попытке выгрузить информационную базу на диск D, возникает ошибка "Нехватка места на диске C"?

    @Dementor
    программист, архитектор, аналитик
    Измените на время выгрузки значения системных переменных TMP и TEMP на каталог на диске D:\
    Если не хотите менять темпы для всех приложений, то можно это сделать только для 1С. Создайте и запустите батник, где перед запуском самой 1С напишите:

    SET TMP=D:\TEMP
    SET TEMP=D:\TEMP
    Ответ написан
    8 комментариев
  • Как из конфигуратора или пользовательского режима выгнать пользователей из 1С?

    @Dementor
    программист, архитектор, аналитик
    Заходи в консоль кластера серверов 1С и "выкидывай" кого нужно и откуда нужно.
    Ответ написан
    3 комментария
  • Почему не запускается код из модуля управляемого приложения?

    @Dementor
    программист, архитектор, аналитик
    1) Ошибка на скрине - модуль управляемого приложения выполняется на клиенте. Если нужен вызов сервера, то перемести свою процедуру в серверный модуль. Директива НаСервереБезКонтекста имеет смысл только для модулей форм.

    2) Отладка серверных процедур не будет запускаться, если сервер 1С не переведен в режим отладки. по умолчанию - отладка только клиентского кода.
    3) Отладка фоновых процессов, вызовов веб-сервисов, внешних соединений и так далее включается в настройке автоматического подключения окна поиска предметов отладки.
    4) Если нужно делать отладку именно веб или http сервисов, то нужно добавить элемент debug в файл default.vrd.
    Ответ написан
    4 комментария
  • Можно ли на форме реализовать интерактивный чертёж/макет шильдика?

    @Dementor
    программист, архитектор, аналитик
    Как это реализовать?

    Обратитесь к программистам 1С. Можно долго объяснять теорию про варианты вывода графической информации на формы и вы возможно даже умом поймете механику, но какой из этого толк, если вы не сможете это запрограммировать?
    Ответ написан
    5 комментариев
  • Почему не работают ограничения на значения для поля ввода в форме элемента справочника?

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

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

    @Dementor
    программист, архитектор, аналитик
    На обычных формах (не управляемые) контекст основного реквизита (в данном случае СправочникОбъект.Номенклатура) дополняет контекст самой формы. Т.е. если в тексте модуля формы явно не определять переменные Артикул, НоменклатурнаяГруппа и т.д. , а сразу начать их читать или заполнять значениями - работа будет идти напрямую с одноименными реквизитами редактируемого объекта.

    Поля ввода, так же как и прочие элементы на форме, входят в множество ЭлементыФормы. Т.е. у вас есть на форме элемент с именем Артикул, то с помощью пути ЭлементыФормы.Артикул можно получить доступ к свойствам вашего поля ввода и далее управлять видимостью, доступностью, подсказкой и прочими свойствами, которые доступны для изменения.

    Если поле ввода находится в коллекции (к примеру, является колонкой в табличном поле, которое связано с табличной частью), то доступ немного усложняется и будет в духе: ЭлементыФормы.Товары.Колонки.Цена
    Ответ написан
    Комментировать
  • Как в 1с 8.3 предприятии добавить поле?

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

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

    @Dementor
    программист, архитектор, аналитик
    Странно ожидать, что виндузная блокировка будет работать под Линуксом. Хотите только чтение - ставьте соответствующие права доступа.

    Что это обычно означает для файловой базы? Конечно же, крах спустя время, ведь веб-клиент и толстый будут лезть в базу несогласованно.
    Это бред. По вашей логике, то что в современных СУБД работают тысячи пользователей одновременно - это миф, так как многопользовательский доступ разрушает любую базу.

    Толстые клиенте, тонкие клиенты или веб-клиенты через вебсервер, которые обращается к базе с помощью библиотеки wsap22.so - все они с точки зрения файла 1Cv8.1CD одинаково читают и пишут данные. Если у вас 2 пользователя одновременно работают с базой через толстый клиент и это ее не уничтожает, то при заходе человека через веб-клиент (или тонкий клиент, но через веб-адрес) ситуация не изменится.

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

    @Dementor
    программист, архитектор, аналитик
    1) Находясь в Конфигураторе, в окошке "О программе" смотрите название кластера сервера и имя базы в нем.
    2) Закройте Конфигуратор и откройте "Консоль кластеров 1С"
    3) Если в консоли нет записи для искомого кластера - создайте ее (иногда, но редко, требуется знать логин/пароль администратора кластера)
    4) В списке баз кластера найдите искомую (название посмотрели в Конфигураторе)
    5) Заходите в свойства базы и увидите тип СУБД, адрес сервера, название БД и имя пользователя.
    6) Настройки бэкапирования выполняются в зависимости от типа СУБД и имеющихся к ней доступов.
    Ответ написан
  • Можно ли реквизиту формы элемента справочника задать тип Перечисление?

    @Dementor
    программист, архитектор, аналитик
    Да. Делай кнопку выпадающего списка и заполни список выбора.
    Вот быстренько набросал прототип:
    https://www.dropbox.com/s/qt52g8yiy43zb9f/%D0%A2%D...
    Ответ написан
  • Как из обработчика события "ОбработкаПроведения", назначенного для подписки на событие, получить поля созданного или измененного документа?

    @Dementor
    программист, архитектор, аналитик
    Один из параметров этой процедуры из общего модуля (кажется всегда первый) - это и есть измененный объект. С помощью его Ссылки можно вычислить - это новый или редактирование существующего. Если редактирование, то через Ссылку можно получить значение реквизитов ДО изменения.
    Ответ написан
    3 комментария
  • Как из пустой информационной базы 1С 8.3 осуществить COM-соединение к другой файловой базе 1С 8.3?

    @Dementor
    программист, архитектор, аналитик
    COM-соединение из базы в базу делают чтобы получить или передать информацию. Передавать или получать информацию вы будете не телепатически, а с помощью обработки или алгоритма на какой-то из форм. Следовательно:
    1) если точка использования подключения будет одна, то процедура не нужна - скопируйте ее начинку и вставьте в место, где она нужно это подключение
    2) если точек несколько (к примеру, подключения к нескольким базам или отдельные алгоритмы для передачи заказов и оплат), то копируйте эту процедуру в тот модуль, где описан алгоритм обмена - модуль обработки или модуль формы
    3) если у вас несколько обработок или форм для обмена, то можете создать общий модуль и закинуть в него процедуру.
    Ответ написан
    Комментировать