arefaste/1C_Forums huggingface dataset:
Вопрос скорее теоретического плана, но тем не менее.

Есть ссылка, например на справочник:
```1c
    МойСправочник // Тип СсылкаСправочник.МойСправочник
```

Насколько я понимаю, при получении реквизита
```1c
    Значение1 = МойСправочник.Реквизит1;
```

происходит получение из БД как минимум всех реквизитов из таблицы реквизитов, а может и всего объекта вместе с табличной частью (или нет?).
А вот в случае

```1c
    Значение1 = МойСправочник.Реквизит1;
    Значение2 = МойСправочник.Реквизит2;
```

будет два обращения к БД, или же второй раз Ревизит2 будет получен из уже загруженного объекта?
---
происходит получение из БД как минимум всех реквизитов из таблицы реквизитов, а может и всего объекта вместе с табличной частью (или нет?).
Да. При обращении "через точку" вычитывается весь объект. Полностью. Включая табличные части. Именно поэтому не рекомендуется пихать реквизиты типа ХранилищеЗначения в справочники/документы. И поэтому во всех типовых есть функции общих модулей, которые получают нужные реквизиты запросом.
(1) будет два обращения к БД, или же второй раз Ревизит2 будет получен из уже загруженного объекта?
Из уже загруженного, если повторное обращение происходит в той же транзакции или прошло менее 20 минут и объект в БД не менялся.
ЗЫ. Про работу объектного кэша и кэша представлений, транзакционного и не транзакционного кэша - есть в одном из занятий учебника Радченко и в "Профразработке". Может, еще на ИТС где-то.
---
происходит получение из БД как минимум всех реквизитов из таблицы реквизитов, а может и всего объекта вместе с табличной частью (или нет?).
Да. При обращении "через точку" вычитывается весь объект. Полностью. Включая табличные части. Именно поэтому не рекомендуется пихать реквизиты типа ХранилищеЗначения в справочники/документы. И поэтому во всех типовых есть функции общих модулей, которые получают нужные реквизиты запросом.
(1) будет два обращения к БД, или же второй раз Ревизит2 будет получен из уже загруженного объекта?
Из уже загруженного, если повторное обращение происходит в той же транзакции или прошло менее 20 минут и объект в БД не менялся.
ЗЫ. Про работу объектного кэша и кэша представлений, транзакционного и не транзакционного кэша - есть в одном из занятий учебника Радченко и в "Профразработке". Может, еще на ИТС где-то.
---
Благодарю.
---
ИМХО:
Если справедливо моё мнение о кеше в 1С, по во втором случае должен сработать кеш...

З.Ы, Просто мнение - ничего конкретно не гарантирую
Доброго времени дня коллеги !
Имеем: Розница 2.3, простенькая обработка (писал сам), которая запросом отбирает дни рождения
физ. лиц., по некоторым условиям, в цикле сравнивает ДеньРождения с ТекДатой и сообщает что-то там при нажатии на кнопку.

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

Но не хотелось бы портить себе карму ) Поэтому решил провернуть данный план через расширение и тут наткнулся на непонятку. В расширении, в модуле приложения, пишу свою процедуру ПриНачалеРаботыСистемы и в ней вызываю процедуру из созданного в расширении общего модуля.
И естественно получаю ошибку, что данная процедура уже определена. Логично.

Вопрос: Лопата есть. Куда копать ?
---
В модуле приложения расширения должно быть что-то вроде

```1c
    &После("ПриНачалеРаботыСистемы")
    Процедура МояПроцедураПриНачалеРаботыСистемы
    ...
```

Однако, такую задачу лучше решать через регламентное задание, запускаемое один раз в день.
---
В модуле приложения расширения должно быть что-то вроде

```1c
    &После("ПриНачалеРаботыСистемы")
    Процедура МояПроцедураПриНачалеРаботыСистемы
    ...
```

Однако, такую задачу лучше решать через регламентное задание, запускаемое один раз в день.
---
Большое спасибо, попробую. На счет рег задания тоже логично но запрос на 3 строчки, +цикл более чем простой ))
---
Здесь Расширение "Вышибала"
я делал так:
Модуль приложения:

```1c
    &После("ПриНачалеРаботыСистемы")
    Процедура Выш_ПриНачалеРаботыСистемы()

    Если Выш_ОбщийМодуль.ЭтоФайловаяБаза() Тогда

    //Проверим заполненность настроек
    ПроверитьНаличиеНастроекВышибалы();

    //Если есть время закрытия Вышибим при входе
    ЗакрытьТекСеансПользователя();

    //Запустим задание "Вышибалы"
    ПодключитьОбработчикОжиданияВышибалы();

    Иначе

    ПредупредитьЧтоНеРаботает();

    КонецЕсли;

    КонецПроцедуры

    #Область Вышибала

    //Проверка и начальное заполнение настроек
    Процедура ПроверитьНаличиеНастроекВышибалы() ЭКСПОРТ

    Выш_ОбщийМодуль.ПроверитьЗаполненностьСправочникаНастроек();

    КонецПроцедуры

    //Подключение обработчика ожидания
    Процедура ПодключитьОбработчикОжиданияВышибалы() ЭКСПОРТ

    ИнтервалПроверкиВышибалы = Выш_ОбщийМодуль.ПолучитьВремяПроверкиВышибания();

    Если ИнтервалПроверкиВышибалы > 0 Тогда

    ПодключитьОбработчикОжидания("ОбработчикОжиданияВышибалы", ИнтервалПроверкиВышибалы);

    Иначе

    ОтключитьОбработчикОжидания("ОбработчикОжиданияВышибалы");

    КонецЕсли;

    КонецПроцедуры
```

Выш_ОбщийМодуль - "Сервер" и "Вызов сервера"
Мне нужно добавить колонку штрихкод в печатную форму.
Я конечно могу накидать свой макет, вручную все поля заполнить, но как будет грамотнее??
Какая вообще практика правильной доработки типовых форм?
Отмечаю, нужно не просто макет немного изменить, а именно добавить новую колонку в макет, соответственно код заполнения в модуле менеджера тоже править придется.
---
Всем спасибо, получилось по советам
(5) и (4)
Как пример для тех у кого будет схожий вопрос прикладываю обработку которую наваял.
конфа ут11.4 документ перемещение товаров. вместо артикула вывожу шк
---
Отредактировать макет в режиме предприятия. Расширением сделать заполнение.
---
Правильная практика - не трогать типовые печатные формы, а создать свою внешнюю печатную форму, скопировав в неё типовой макет и вынеся в неё нужные процедуры из модуля менеджера.
---
вот этот вариант и интересует.

А где можно почитать про то как вынести "нужные" процедуры?
---
Процедура Печать() и всё, что вызывается внутри неё. Можно просто весь модуль менеджера скопировать. Работать будет, но наличие избыточного кода будет увеличивать время компиляции.
---
А где можно почитать про то как вынести "нужные" процедуры? В самой 1С: копипастите процедуру Печать() (в Конфигураторе) и пробуете печатать свою ВПФ в режиме Предприятия. На вызов какой процедуры/функции ругается - копипастите ее. Потом - следующую и так далее, пока ругань не прекратится.
---
Всем спасибо, получилось по советам
(5) и (4)
Как пример для тех у кого будет схожий вопрос прикладываю обработку которую наваял.
конфа ут11.4 документ перемещение товаров. вместо артикула вывожу шк
В БГУ2 в типовых документах есть кнопка ДтКт:

Если встать на эту кнопку, то свойства пустые.

Я добавил в БГУ2 свой документ, мне тоже нужно выводить проводки.
Как добавить в мой документ такую же кнопку?
---
Добавьте свой документ в определяемый тип РегистраторыРегистраБухгалтерии и сохраните изменения в конфигурации.
Далее на вкладке "Командный интерфейс" формы документа проверьте установлены ли галочки для общей команды.
У меня в командном интерфейсе общая команда появилась только после сохранения конфигурации и перезапуска конфигуратора
---
Добавил свой документ!
а в регистраторы регистра проводок - добавил?
---
Сообщение было скрыто модератором.
---
Да:
---
Сообщение было скрыто модератором.
---
Добавьте свой документ в определяемый тип РегистраторыРегистраБухгалтерии и сохраните изменения в конфигурации.
Далее на вкладке "Командный интерфейс" формы документа проверьте установлены ли галочки для общей команды.
У меня в командном интерфейсе общая команда появилась только после сохранения конфигурации и перезапуска конфигуратора
---
В типовых формах это - общая команда, добавленная в командный интерфейс формы:

Но как её добавить в командный интерфейс своей формы?
Перетаскиванием не получается.
Заполняю пакет XDTO, тип объекта "Сотрудники", у него есть атрибут "Пол", Тип - Gender (см. скрин).

Вопрос - как мне установить значение моему атрибуту из Gender?
---
Вопрос - как мне установить значение моему атрибуту из Gender?
```1c
    ОбъектХДТО.Пол = "Male";
    ...
    ОбъектХДТО.Пол = "Female";
```
Меня все эти "умники" тоже напрягают )))
---
Вопрос - как мне установить значение моему атрибуту из Gender?
```1c
    ОбъектХДТО.Пол = "Male";
    ...
    ОбъектХДТО.Пол = "Female";
```
Меня все эти "умники" тоже напрягают )))
---
Спасибо! Оказывается это было просто ограничение значений, допустимое к установке! Все заработало!
---
Поставь конвертацию значений 3.0. Сформированные правила обмена - емкий справочник примеров и шаблонов. Там вся конфигурация переносится, а прописана в коде в одном модуле.
---
отходите от soap к http сервисам
там проще
---
Вы предлагаете прийти в крупный холдинг \ гос. корпорацию, у которой годами настроена эта интеграция с множеством различных баз и тд и для того, чтобы передавать сотрудников из своего маленького внедрения предложить им "отойти от soap к http сервисам там проще"?
Оригинально. Вам 2. Просьба давать ответ по существу. Я же в вопросе не спросил "Где проще? К какому сервису мне отойти от soap" :)
---
ну хозяин барин
работаю в крупной корпорации тоже были wsdl/soap отказались на корню еще с 2015г
счс все интеграции только http-сервисами.
бизнесу нужно давать выбор
либо старый тяжелый wsdl со сложностями в мобильности/доработки
либо переходить на http-сервисы, которые легки в разработке, доработке мобильны счс все web бакендщики только за работу по rest, soap не признают

p/s/ у нас счс даже старый sap и тот http-сервисами общается
Почему-то при запуске внешней обработки заполнения ТЧ в режиме "Веб-сервер" возникает ошибка
"{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(322)}: Метод объекта не обнаружен (ВыполнитьКоманду)"
платформа 8.3 (8.3.20.1549), подскажите что может быть?
---
решили изменить вызов на "ТипКомандыОткрытиеФормы()"
---
Возможно, отсутствует экспортная клиентская процедура "ВыполнитьКоманду" в модуле формы внешней обработки. Либо в модуле присутствует инструкция препроцессора, исключающая эту процедуру для использования в веб-клиенте, примерно так:
```1c
    #Если НЕ ВебКлиент Тогда

    #КонецЕсли
```
---
процедура есть и в модуле про ВебКлиент ничего нет
---
Конкретно про ВебКлиент может ничего и не быть. Есть ли вообще инструкции препроцессора в модуле формы? Указана ли директива компиляции &НаКлиенте перед процедурой ВыполнитьКоманду?
---
(9Первая картинка общий модуль, вторая внешняя обработка
---
Форма объекта у обработки установлена по умолчанию?
---
это началось после обновления на 8.3.20.1549, до этого все работало, проблема только в режиме "Веб-сервер"
---
Ошибка Метод объекта не обнаружен (ВыполнитьКоманду) в общем модуле "ДополнительныеОтчетыИОбработкиКлиент"
Вообще-то наоборот. Процедура в общем модуле как раз есть. А вот что она пытается вызвать и откуда - покажет только отладчик.

{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(322)}: Метод объекта не обнаружен (ВыполнитьКоманду) Вот же она, даже номер строки указан - 322. Что там в этой строке?
---
ФормаВнешнегоОбъекта.ВыполнитьКоманду(ПараметрыВызоваСервера.ИдентификаторКоманды, ПараметрыВызоваСервера.ОбъектыНазначения);

Она должна вызвать экспортную процедуру "ВыполнитьКоманду" и эта процедура есть
---
Да что вы все время путаете??? Все же наоборот!!! Из общего модуля система пытается вызвать экспортную функцию формы!
Кто такая ОНА? Что она вам должна??? Можете попытаться изъясняться на русском?

Еще раз: Ставите отладчик на эту строку - и смотрите, что у вас там приходит в ФормаВнешнегоОбъекта. И смотрите сам модуль этой внешней формы.
---
в режиме "Серверный" все работает, в режиме "Веб-сервер" не работает. Я ставлю точку останова в режите "Серверный", у формы клиентского приложения есть метод "ВыполнитьКоманду", в режиме "Веб-сервер" этот метод пропадает.
---
такое ощущение что отваливать какая-то библиотека, отвечающая за веб режим
---
Ну вы же на вебсервере указали новый путь к библиотекам новой платформы?
---
решили изменить вызов на "ТипКомандыОткрытиеФормы()"
---
Аналогичная ситуация и у меня после перехода на 8.3.20.1590.
Добрый день!
Необходимо в форме ТЧ документа расположить несколько колонок, объединённых общим заголовком (скрин1.) В режиме 1с:Предприятие выглядит это не очень красиво, появляется пустая строка выше каждых введенных данных(скрин 2). Подскажите, как избавиться от нее?
---
Зайди в свойства табличного поля событие "ПриВыводеСтроки".
в процедуру добавляем одну строку:

```1c
    ОформлениеСтроки.Ячейки.ТвояЯчейкая.Видимость = Ложь;
```
---
можно программно при выводе строки установить видимость в ложь
---
Зайди в свойства табличного поля событие "ПриВыводеСтроки".
в процедуру добавляем одну строку:

```1c
    ОформлениеСтроки.Ячейки.ТвояЯчейкая.Видимость = Ложь;
```
---
А как сделать это? я пишу процедуру ОтборыИУпаковкаПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) в модуле формы документа( ОтборыИУпаковка - имя табличной части), но эта процедура не вызывается.
---
```1c
    Процедура ТабличнаяЧасть1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.Начисления.Видимость = Ложь;
    КонецПроцедуры
```
---
Вот картинка
http://prntscr.com/1y95e83
---
Управляемую форму сделать)
---
Всем спасибо, разобрался.
Нужно умножить 2 поля между собой в 3 поле

ЕСТЬNULL(СчетНаОплатуПоставщика.СуммаДокумента, 0) * ЕСТЬNULL(ОплатаСчетов.СтавкаНДС, 0)

Пишет неверные параметры "*"

Если можно примеры с умножением в запросе?
---
Скорее всего, "ОплатаСчетов.СтавкаНДС" - это не число.
---
Цитата из справки по языку запросов 1С:
Бинарными (арифметическими) операциями являются операции:
+ | – | * | /
Бинарные операции используются для типов ЧИСЛО.
---
посмотрите еще -- https://forum.infostart.ru/forum9/topic106030/
---
Скорее всего, "ОплатаСчетов.СтавкаНДС" - это не число.
---
Условие умножения запроса должно быть число?
---
Цитата из справки по языку запросов 1С:
Бинарными (арифметическими) операциями являются операции:
+ | – | * | /
Бинарные операции используются для типов ЧИСЛО.
---
Спасибо))) пощёл решать вопрос с типами
---
СтавкаНДС это не число, это перечисление, его нельзя перемножать.
---
Я понял уже)) поставил за место НДС число умножение заработало)
---
(ЕСТЬNULL(ЦеныПоставщиковСрезПоследних.Цена, 0) * ТД.Количество) Как Сумма
---
```1c
    ВЫБРАТЬ
    1 КАК Множитель1,
    1 КАК ИД
    ПОМЕСТИТЬ ВТ1

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    2,
    2
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    3 КАК Множитель2,
    1 КАК ИД
    ПОМЕСТИТЬ ВТ2

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    4,
    4
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ1.ИД КАК ВТ1_ИД,
    ВТ2.ИД КАК ВТ2_ИД,
    ЕСТЬNULL(ВТ1.Множитель1, 0) * ЕСТЬNULL(ВТ2.Множитель2, 0) КАК Поле3
    ИЗ
    ВТ1 КАК ВТ1
    ПОЛНОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
    ПО (ВТ1.ИД = ВТ2.ИД)
```

Работает без проблем.
Доброго времени суток. При смене Страницы с табличной частью Товары на управляемой форме полоса прокрутки позиционируется посередине поэтому не видно Командной панели табличной части Товары, возможно программно поднять вверх полосу прокрутки? "ВертикальнаяПрокрутка" в значении Авто
---
Сделай текущим элементом первый элемент на форме. Я через ТекущийЭлемент делаю.
---
Сделай текущим элементом первый элемент на форме. Я через ТекущийЭлемент делаю.
Необходимо переопределить ввод по строке в 1с, чтобы из справочника отбирались не все элементы, а подходящие под условие. Сделал как написано в https://infostart.ru/public/912339/
Но при вводе в поле постоянно сбрасывается текст и остается последний введенный символ. Скачал пример обработки и сравнил. Вроде бы все точно так же.
Где черт зарыт то?
---
&НаСервере
Функция ПолучитьДанныеВыбораПроекта (Текст)

замените на &НаСервереБезКонтекста
---
смотрите свойство поля ввода "ОбновлениеТекстаРедактирования". Оно или "Не использовать" или "При изменении значения".
Но в данном случае правильно использовать внеконтекстный вызов.
---
надо использовать событие АвтоПодбор
---
Оно самое и используется.

```1c
    &НаКлиенте
    Процедура ПроектАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ДанныеВыбора = ПолучитьДанныеВыбораПроекта (Текст);
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьДанныеВыбораПроекта (Текст)

    спВыбора = Новый СписокЗначений;

    Запрос = новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
    | Проекты.Ссылка КАК Ссылка,
    | Проекты.Наименование КАК Наименование
    |ИЗ
    | Справочник.Проекты КАК Проекты
    |ГДЕ
    | Проекты.ЭтоПроектнаяЗадача = ЛОЖЬ
    | И Проекты.Наименование ПОДОБНО &Наименование
    |
    |УПОРЯДОЧИТЬ ПО
    | Наименование";
    Запрос.УстановитьПараметр("Наименование", "%"+Текст+"%");

    Выборка = запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл

    Представление = Выборка.Наименование;
    спВыбора.Добавить(Выборка.Ссылка,Представление);

    КонецЦикла;

    Возврат спВыбора;

    КонецФункции
```

Но при вводе в поле текста через пол секунды введенный текст сбрасывается, хотя поиск осуществляется.
---
&НаСервере
Функция ПолучитьДанныеВыбораПроекта (Текст)

замените на &НаСервереБезКонтекста
---
Спасибо добрый человек, я бы не заметил)
---
Вернее, при вводе сбрасывается весь введенный текст, примерно через пол секунды. Обработка вложенная отрабатывает корректно.
---
Вообще есть возможность в модуле менеджера объекта конфигурации написать нужный код. Я так делал транслитный поиск.
По какой то причине в настройках текущего рабочего места отображается абсолютно другое, которое не имеет подключенного оборудования.

+ при попытке залезть в настройки драйвера эквайрингового терминала выдается сообщение: runtime error 216 at OD5B8926

Перед этим всем проводилось восстановление системы.
---
По какой то причине
проводилось восстановление системы.
по вот этой причине поменялся идентификатор рабочего места
---
По какой то причине
проводилось восстановление системы.
по вот этой причине поменялся идентификатор рабочего места
---
Кхем - неприятненько однако. Никогда бы не подумал что такое возможно.
---
Восстановление "не равно" переустановка. А место все равно меняется - забавно.
Сделал обработку заполнения ТЧ документа. Как выставить модифицированность (звездочку в форме). Этаформа.Модифицированность = Истина; не рабоет!
---
Внешняя обработка заполнения? Если да, то не ЭтаФорма, а ВладелецФормы.Модифицированность
---
Внешняя обработка заполнения? Если да, то не ЭтаФорма, а ВладелецФормы.Модифицированность
---
Модифицированность = Истина;
вот так попробуй
Здравствуйте.
Сохранил ПФ в ворд. Заменил там нужные данные на параметры. Сохранил документ в XML. Скопировал строки с содержанием таблицы в 1с. В этих строках меняю параметры и формирую итоговую строку XML. Ее я вставляю в параметр шаблона, который документ с расширением docx.
Обычно все происходит нормально, но сейчас при попытке открыть шаблон после формирования, получаю ошибку на скриншоте. XML текст таблицы и текст из document.XML проходят валидацию. Никто не сталкивался с подобным? Куда капать?
---
Вроде починил.
в строку в самом начале поместил </w:t></w:r></w:p>. А В конце строки <w:p><w:r><w:t>. Сейчас формируется документ
---
удалите символы.НП из "В этих строках меняю параметры и формирую итоговую строку XML".
Скорее всего в значении параметра попался символ который нужно экранировать. т.е. для примера если в параметр передать "<любой текст..>" будет такая ошибка.
---
Вроде починил.
в строку в самом начале поместил </w:t></w:r></w:p>. А В конце строки <w:p><w:r><w:t>. Сейчас формируется документ
Добрый день.
Возможно ли реализовать "Выбор" в запросе на 7-ке, с возможностью группировки по такому полю?
Поясню.

Справочник "Номенклатура".
Есть поле "ОсновноеНаименование", тип - Справочник.ОсновныеНаименованияНоменклатуры

В отчетах (существующих, таких несколько) нужно добавить группировку "Основное наименование" по катому принципу:

Если ОсновноеНаименование заполнено - выводить его (можно ОсновноеНаименование.Наименование),
Иначе - Наименование номенклатуры (Номенклатура.Наименование)

Выгружать в ТЗ не вариант - много очетов переделывать, + геморрой с изменением порядка группировок и т.п.

Спасибо
---
Тогда один выход - добавить текстовое поле, в которое при записи писать "ОсновноеНаименование", а если не заполнено, то "Наименование номенклатуры", назвать его как-то "Моё поле для группировки", и уже к нему обращаться в запросах.
---
нет
---
в прямом запросе наверное можно.
---
Даже не наверно. CASE отрабатывает))

В обычный запрос 7.7 можно притянуть функцию из модуля, но делать это надо с головой.
---
"функцию из модуля" - как?
Я знаю, что функцию из модуля можно притянуть в Условие(), но так не решить задачу автора (?)
---
"функцию из модуля" - как?
Да, проверил, никак.

Сори. (Давно использовал, лет 12ть назад, потом на прямые запросы пересел, забыл)
---
Про функции, условия - в курсе.
Согласен с CheBurator, в учловиях, функциях можно использовать.
Мне нужна именно группировка
---
Тогда один выход - добавить текстовое поле, в которое при записи писать "ОсновноеНаименование", а если не заполнено, то "Наименование номенклатуры", назвать его как-то "Моё поле для группировки", и уже к нему обращаться в запросах.
---
как вариант...
подумаю.
спасибо
---
Остановился на этом варианте.
Спасибо