arefaste/1C_Forums huggingface dataset:
Всем привет. Подскажите пожалуйста. У нас заказы летят из Б24 в 1с при помощи модуля синхронизации. Он настроен и работает давно, синхронизация осуществляется "в реальном времени", а именно если сделка попадает на определенную стадию, то сразу улетает в 1с. Так в чем вопрос, почему то сделки порой автоматом не летят и приходят только после ручной синхронизации. Помогает только перезапуск службы 1с и то не надолго.
Кто нить сталкивался? Что делать?
---
тут может быть несколько вариантов

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

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

3.
подвисает обмен
1с обращается к Б24, а Б24 ничего не отвечает, а 1с ждет ответа и в итоге не происходит обмен

что могу посоветовать))
- перезаписать ключ в 1с
- переписать метод синхронизации, чтобы он запускался в фоновом режиме с определенным интервалом
- поставить ограничение при ожидании ответа
- поставить до 5 раз обращаться к Б24 для получения данных (бывает, что не всегда успешно 1с получает ответ от Б24 и нужно еще раз опрасить Б24)
- дописать проверку по перезапуску регламетного задания по обмену (если давно запущен обмен и висит, то прибивать это регламентное задание и запускать новое)
---
тут может быть несколько вариантов

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

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

3.
подвисает обмен
1с обращается к Б24, а Б24 ничего не отвечает, а 1с ждет ответа и в итоге не происходит обмен

что могу посоветовать))
- перезаписать ключ в 1с
- переписать метод синхронизации, чтобы он запускался в фоновом режиме с определенным интервалом
- поставить ограничение при ожидании ответа
- поставить до 5 раз обращаться к Б24 для получения данных (бывает, что не всегда успешно 1с получает ответ от Б24 и нужно еще раз опрасить Б24)
- дописать проверку по перезапуску регламетного задания по обмену (если давно запущен обмен и висит, то прибивать это регламентное задание и запускать новое)
Всем привет.
Никто не подскажет как можно установить авторизацию операционной системы пользователю программно?
Конфигурация ДО 2.1. Никак не разберусь какие из НовоеОписаниеПользователяИБ, ПрочитатьПользователяИБ, ЗаписатьПользователяИБ использовать.
---
```1c
    ИдПользователя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ");
    СвойстваПользователяИБ = Пользователи.СвойстваПользователяИБ(ИдПользователя);
    СвойстваПользователяИБ.ПользовательОС = "\\Domain\Username";
    СвойстваПользователяИБ.АутентификацияОС = Истина;
    Пользователи.УстановитьСвойстваПользователяИБ(ИдПользователя, СвойстваПользователяИБ);
```

В УстановитьСвойстваПользователяИБ указано, что СвойстваПользователяИБ можно получить из НовоеОписаниеПользователяИБ, и если какое свойство не установлено, то будет использовано прочитанное или начальное значение.
---
```1c
    ИмяДомена = <<Указать имя домена>>;
    ИмяПользователя = <<Указать имя пользователя>>;
    СтрокаПользователяWindows = "\\" + ИмяДомена + "\" + ИмяПользователя;
    ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
    <<Заполнить реквизиты пользователя ИБ>>
    ПользовательИБ.ПользовательОС = СтрокаПользователяWindows;
    ПользовательИБ.Записать();
    НовыйПользователь = Справочники.Пользователи.СоздатьЭлемент();
    НовыйПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор;
    ...
```
---
А если ПользовательИБ уже есть просто получаем на него ссылку?
И НовыйПользователь зачем тогда?
ПользовательОС я заполню, но там же все данные хранятся в структуре какой то....и галка "Авторизация ОС" стоять должна.
У меня сейчас так написано:
1. Получаем ссылку на пользователя
2. Пишем в ПользовательОС
3. Записываем.

Не работает:(
---
```1c
    ИдПользователя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ");
    СвойстваПользователяИБ = Пользователи.СвойстваПользователяИБ(ИдПользователя);
    СвойстваПользователяИБ.ПользовательОС = "\\Domain\Username";
    СвойстваПользователяИБ.АутентификацияОС = Истина;
    Пользователи.УстановитьСвойстваПользователяИБ(ИдПользователя, СвойстваПользователяИБ);
```

В УстановитьСвойстваПользователяИБ указано, что СвойстваПользователяИБ можно получить из НовоеОписаниеПользователяИБ, и если какое свойство не установлено, то будет использовано прочитанное или начальное значение.
---
Спасибо большое, получилось, в трёх строчках заблудился(((
Пытаюсь сделать так:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.ФайлХранилище КАК ФайлХранилище
    |ИЗ
    | Справочник.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы КАК ЭлектронноеПисьмоВходящееПрисоединенныеФайлы";
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    ДвоичныеДанные = Выборка.ФайлХранилище.Получить();
    КонецЦикла;
```

Но значение из хранилища не получаю. Почему? Помогите пожалуйста!
---
Кажется разобрался нужно использовать:

```1c
    ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка);
```
---
```1c
    Запрос.Текст = Запрос.Текст = + |Where ref = &Ref
```
---
Кажется разобрался нужно использовать:

```1c
    ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка);
```
---
Вот так все работает, может пригодится кому-то:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Ссылка КАК Ссылка
    |ИЗ
    | Справочник.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы КАК ЭлектронноеПисьмоВходящееПрисоединенныеФайлы";
    Выборка = Запрос.Выполнить().Выбрать();

    Пока Выборка.Следующий() Цикл
    //ДвоичныеДанные = Выборка.ФайлХранилище.Получить();
    ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.Ссылка);
    ИмяФайла = "\\test1c\РО\Тест\Загрузка2.xlsx";
    ДвоичныеДанные.Записать(ИмяФайла);
    КонецЦикла;
```
---
или так

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ДвоичныеДанныеФайлов.ДвоичныеДанныеФайла КАК ДвоичныеДанныеФайла
    |ИЗ
    | Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы КАК ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДвоичныеДанныеФайлов КАК ДвоичныеДанныеФайлов
    | ПО ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Ссылка = ДвоичныеДанныеФайлов.Файл";

    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

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

    ДвоичныеДанные = Выборка.ДвоичныеДанныеФайла.Получить();

    КонецЦикла;
```
ДО 1.4
Подскажите как решить следующую задачу: При выполнении задачи "Согласовать" определенного юзера, необходимо создать процесс Ознакомление на другого юзера !
Как я это делаю: в конфигурации есть подписка на событие ЗадачаКомплексногоПроцессаПриВыполнении
Источником для которой является: ЗадачаОбъект.ЗадачаИсполнителя

Вначале я определяю является ли текущая задача, задачей нужного юзера (код работает, его я пропустил)
затем я хочу узнать результат выполнения задачи Согласовано/Не согласовано;
Проблема в следующем: запрос к регистру РегистрСведений.РезультатыВыполненияПроцессовИЗадач возвращает пусто ?!

```1c
    вчЗапрос = Новый Запрос("ВЫБРАТЬ Результат ИЗ РегистрСведений.РезультатыВыполненияПроцессовИЗадач ГДЕ Объект = &Объект");
    вчЗапрос.УстановитьПараметр("Объект", Источник.Ссылка); // тип = ЗадачаИсполнителя
    вчРез = вчЗапрос.Выполнить();
    вчВыборка = вчРез.Выбрать();
    Если вчВыборка.Следующий() Тогда
```
---
Пришлось перенести код в модуль менеджера РегистрСведений.РезультатыВыполненияПроцессовИЗадач
---
попробуйте сначала ваш запрос отладить в консоли запросов!
какие параметры, есть ли там данные и т.д.
затем вставляйте в отчет
---
само собой это я сделал в первую очередь !
Видимо запись результата в регистр происходит после события в котором я пытаюсь прочитать результат ...
---
Пришлось перенести код в модуль менеджера РегистрСведений.РезультатыВыполненияПроцессовИЗадач
Здравствуйте.
Возник такой простой вопрос , но не могу решить. Платформа 8.3(управляемые формы). На форме выводится реквизит Дата. Нужно чтобы выводилась в формате "1 .января .2017". Это вообще для поля ввода можно сделать ?
Я пробовал редактировать настройку формат - форматная строка "ДФ=дд.ММММ.гггг" . но ничего не изменилось как была дата "01.01.2017" так и осталась.
Спасибо.
---
форматная строка - это строка, а у вас тип дата, значит надо не поле ввода а отображение текста, и уже в этот текст запихнуть дату форматной строкой.
---
форматная строка - это строка, а у вас тип дата, значит надо не поле ввода а отображение текста, и уже в этот текст запихнуть дату форматной строкой.
---
Точно. Спасибо!
---
А мне нужно именно поле ввода.
Попытался воспользоваться условным форматированием - меняется любое оформление кроме формата вывода.
Во вложениях - настройки условного форматирования в конфигураторе и то, что получается в результате.
---
параметры формата у вас неправильно записаны, пишется в другом виде:
ДФ=dd.MM.yy
---
А откуда вообще взяли мнение, что можно поменять формат вывода встроенного в платформу поля ввода?
Хотя, введя в формат "ДФ=dd.MM.yy", получилось на выходе "22.06.21" в поле "Дата", и думаю, что это максимум, что можно получить в данном случае.
Доброго времени суток. Такая проблема, обновила БП до 3.0.95.21 и перестала работать обработка создания на основании (Выпуск продукции -> Реализация). Выходит такая ошибка. Из-за чего такая ошибка вылезает. по коду вроде все верно, или это что то в новом обновлении сделали?

"Нельзя изменять поле, содержащее объект данных формы
{ВнешняяОбработка.БП30_ВводНаОснованииОтчетПроизвЗаСменуРТиУ.Форма.Форма.Форма(37)}: ЗаполнитьЗначенияСвойств(НовыйОбъект, Основание);
{ВнешняяОбработка.БП30_ВводНаОснованииОтчетПроизвЗаСменуРТиУ.Форма.Форма.Форма(18)}: СоздатьНовыйДокумент(Элемент, ДанныеФормы);
{ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(429)}: ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения, СозданныеОбъекты);
{ОбщаяФорма.ДополнительныеОтчетыИОбработки.Форма(170)}: ДополнительныеОтчетыИОбработкиКлиент.ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ВладелецФормы, ВыполняемаяКоманда.ОбъектыНазначения);
{ОбщаяФорма.ДополнительныеОтчетыИОбработки.Форма(113)}: ВыполнитьОбработкуПоПараметрам()

по причине:
Ошибка установки значения свойства 'СведенияПрослеживаемости'
по причине:
Нельзя изменять поле, содержащее объект данных формы"

```1c
    &НаКлиенте
    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт
    Для каждого Элемент из ОбъектыНазначенияМассив Цикл
    ФормаДок = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары");
    ДанныеФормы = ФормаДок.Объект;
    СоздатьНовыйДокумент(Элемент, ДанныеФормы);
    КопироватьДанныеФормы(ДанныеФормы, ФормаДок.Объект);
    ФормаДок.Открыть();
    КонецЦикла;
    КонецПроцедуры

    &НаСервере
    Процедура СоздатьНовыйДокумент( Элемент,НовыйОбъект )
    // Заполняем
    Основание = Элемент.Ссылка;
    ЗаполнитьЗначенияСвойств(НовыйОбъект, Основание);
    НовыйОбъект.Номер = ";
    НовыйОбъект.Дата = ТекущаяДата();

    Для Каждого Строка Из Основание.Продукция Цикл
    НовСтрока = НовыйОбъект.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(НовСтрока, Строка);
    НовСтрока.Цена = Строка.ПлановаяСтоимость;
    НовСтрока.СчетУчета = Строка.Счет;
    НовСтрока.Сумма =Строка.СуммаПлановая;
    КонецЦикла;
    КонецПроцедуры
```
---
вопрос решился. ошибка связана с введение с 1 июня 2021 прослеживаемости товаров. чтобы убрать ошибку установки значения свойства 'СведенияПрослеживаемости' при заполнении значения свойств нужно исключить его из заполнения.
 ЗаполнитьЗначенияСвойств(НовыйОбъект, Основание,,"СведенияПрослеживаемости");
---
вопрос решился. ошибка связана с введение с 1 июня 2021 прослеживаемости товаров. чтобы убрать ошибку установки значения свойства 'СведенияПрослеживаемости' при заполнении значения свойств нужно исключить его из заполнения.
 ЗаполнитьЗначенияСвойств(НовыйОбъект, Основание,,"СведенияПрослеживаемости");
При попытке создать кассовую смену выходит ошибка "Номер 0999" не уникален. В кассовых сменах данных номер фигурирует.
---
В общем ГЕНнадИИ перенастроили нумерацию... и та тупо достигла предела. Из-за чего не могло сформировать новый документ. Привели нумерацию к единому стандарту... вроде заработало
---
У Вас сбита нумерация кассовых смен, скорее всего кто-то менял номер вручную.
---
И как это исправить. Даже если поменять вручную номер смены. Он создает смену 0999, после закрытия которой опять вылезает ошибка неуникальности
---
Исправлять надо номера всех смен, что сбились, номера должны идти друг за другом.
014 - оставить
996 - исправить и т.д.
---
Даже после исправления очередности. Пытается создать смену 0999
---
Ищите еще, не все смены проверили, сделайте сортировку по номеру. Помеченные на удаление тоже влияют на нумерацию.
---
Из-за этого не создается кассовая смена в 1С. Однако ее открывает на кассе...
---
https://infostart.ru/public/415406/
---
В общем ГЕНнадИИ перенастроили нумерацию... и та тупо достигла предела. Из-за чего не могло сформировать новый документ. Привели нумерацию к единому стандарту... вроде заработало
Помогите разобраться с проблемой:
В предприятии включены "дополнительные сведения", во всех журнал документов они отображаются и работают, а в журнале "Списание товаров" - нет. Т.е. они сохраняются для документа, через форму заполнения устанавливаются, однако в самом журнале не появляются.
Не понятно как реализован механизм работы "дополнительных сведений"

В частности, конфигурация "Бухгалтерия для Украины, редакция 2.0. (2.0.19.1)"
---
Вопрос решен, проблема была в следующем:
---
может в журнале отметка имеет вид чекбокс? Тогда вы её увидите только при значении свойства Истина в виде "галочки".
---
Нет, выбор из двух значений. И значение заполнено.
---
не, здесь, свойства колонки в форме списка документов
---
Не, там значение элемента справочника "Значение свойств..", проверял на отладке.
---
вы пробовали посмотреть для значение = Истина? Вам посоветовали это сделать )
---
е = Истина?
да. И это не булево - а список значений, от того что выберешь результат тот же, не отображается. Вопрос в том, как это вообще работает. Я не нашел функцию, которая бы добавляла и заполняла колонку что в рабочем журнале "Поступление", что в нерабочем "Списание"
---
Это часом не категории и не "свойства"?
---
Мне кажется, дело в самом доп. сведении.
Попробуйте доп. сведение, которое отображается, скопировать для этого документа и посмотреть отобразится ли оно.
---
Помню, было что- то такое же странное при значении булево, или такого же списка значений да/нет.
А зачем вы поставили весовой коэффициент?
---
Либо попробуйте не доп. сведение, а доп. реквизит сделать.
---
Всё правильно отображает, ведь у вас стоит галка "Значение характеризуется дополнительным весовым коэффициентом", а сам коэффициент не заполнен
---
При чем здесь весовой коэффициент к том, что не выводится значение (facepalm)
---
Вопрос решен, проблема была в следующем:
Всем привет ! 1С:Комплексная автоматизация 2 (2.4.13.170). Подскажите пожалуйста, что я делаю не так, необходимо к полю "Планируемая дата" прибавить 14 дней даты если "Хоз. операция" = Импорт, когда "Хоз операция" = Закупка у поставщика то нужно прибавить 7 дней.
Делал и пользовательское поле и добавлял вычисляемое поле, все равно не работает.
Делаю вычисляемое поле:

```1c
    ВЫБОР
    КОГДА ЗаказПоставщику.ХозяйственнаяОперация = "Импорт"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 14)
    ИНАЧЕ ВЫБОР
    КОГДА ЗаказПоставщику.ХозяйственнаяОперация = "Закупка у поставщика"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 7)
    КОНЕЦ
    КОНЕЦ
```

Даже ради интереса сделал так, но все равно выводит пустое поле

```1c
    ВЫБОР
    КОГДА ЗаказПоставщику.ХозяйственнаяОперация ="Импорт"
    ТОГДА 1
    КОНЕЦ
```

За ранее всем спасибо за ответы!!!
---
Так и сравнивайте с перечислением, или хозяйственную операцию приведите к строке.
---
в (4) вам подсказали, соответственно выражение будет выглядеть так:

```1c
    ВЫБОР
    КОГДА СТРОКА(ЗаказПоставщику.ХозяйственнаяОперация) = "Импорт"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 14)
    КОГДА СТРОКА(ЗаказПоставщику.ХозяйственнаяОперация) = "Закупка у поставщика"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 7)
    ИНАЧЕ ЗаказПоставщику.Товары.ПланируемаяДатаПоставки
    КОНЕЦ
```
---
А тип ЗаказПоставщику.ХозяйственнаяОперация точно строка?
---
нет, ПеречислениеСсылка.ХозяйственныеОперации
---
Так и сравнивайте с перечислением, или хозяйственную операцию приведите к строке.
---
в (4) вам подсказали, соответственно выражение будет выглядеть так:

```1c
    ВЫБОР
    КОГДА СТРОКА(ЗаказПоставщику.ХозяйственнаяОперация) = "Импорт"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 14)
    КОГДА СТРОКА(ЗаказПоставщику.ХозяйственнаяОперация) = "Закупка у поставщика"
    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПоставщику.Товары.ПланируемаяДатаПоставки, "ДЕНЬ", 7)
    ИНАЧЕ ЗаказПоставщику.Товары.ПланируемаяДатаПоставки
    КОНЕЦ
```
---
Да, так и написал, спасибо, огромное!!!
Здравствуйте, Уважаемое сообщество!!! Подскажите пожалуйста, кто знает, всю голову сломал над этой задачей. Есть внешняя обработка Печать ценников и этикеток для конфигурации 1С УТ 11.4, добавлено в форму два элемента, поле Скидка и кнопка Рассчитать скидку со своим кодом для этого расчета. Вопрос: Как в команде кнопки дописать код цикла для каждой строки табличной части, чтобы при выделение всех строк, программный код кнопки Рассчитать скидку работал одновременно для всех строк!?

Прилагаю скриншот, программный код кнопки, саму внешнюю обработку!

```1c
    &НаКлиенте
    Процедура РасчитатьСкидку(Команда)

    Цена1 = Элементы.Товары.ТекущиеДанные.Цена;
    Цена2 = Элементы.Товары.ТекущиеДанные.ЦенаДополнительно;
    Скидка = Элементы.Товары.ТекущиеДанные.Скидка;

    Если Цена2 > 0 Тогда
    Разница = Цена2 / Цена1;
    Разница2 = Разница * 100;
    Скидка = 100 - Разница2;
    Элементы.Товары.ТекущиеДанные.Скидка = Формат(Скидка, "ЧДЦ=2; ЧРД=,");
    ОчиститьСообщения();
    Сообщить("Скидка успешно расчитана по процентной ставке...");
    КонецЕсли;

    Возврат;

    КонецПроцедуры
```
---
Примерно так:

```1c
    &НаКлиенте
    Процедура РасчитатьСкидку(Команда)

    ОчиститьСообщения();

    Для Каждого Строка Из Объект.Товары Цикл

    Если Строка.ЦенаДополнительно > 0
    И Строка.Цена <> 0 Тогда
    Строка.Скидка = 100 * (1 - Строка.ЦенаДополнительно / Строка.Цена);
    Сообщить(СтрШаблон("В строке %1 Скидка успешно расчитана по процентной ставке...", Строка.НомерСтроки));
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```
---
Примерно так:

```1c
    &НаКлиенте
    Процедура РасчитатьСкидку(Команда)

    ОчиститьСообщения();

    Для Каждого Строка Из Объект.Товары Цикл

    Если Строка.ЦенаДополнительно > 0
    И Строка.Цена <> 0 Тогда
    Строка.Скидка = 100 * (1 - Строка.ЦенаДополнительно / Строка.Цена);
    Сообщить(СтрШаблон("В строке %1 Скидка успешно расчитана по процентной ставке...", Строка.НомерСтроки));
    КонецЕсли;

    КонецЦикла;

    КонецПроцедуры
```
---
То что нужно!!! Спасибо!!!
```1c
    ТекущийФайл = Новый Файл(КаталогЭДО + "\" + Document.FileName);
    Если Не ТекущийФайл.Существует() Тогда
    Document.SaveContent(КаталогЭДО + "\" + Document.FileName);
    КонецЕсли;
```

ТекущийФайл.Существует() выдает Истина , а реально файла нет проверил в отладчики.
---
Извиняюсь нашел ошибку
---
Извиняюсь нашел ошибку
---
ну так написал бы а чем твой косяк!
Файл на сервере, а ты на клиенте смотрел?
Здравствуйте, учусь программированию в 1с и столкнулся с трудностью, нужно посчитать зарплату мастера в табличной части документа ЗаказНаряд (формула КоличествоНормочасов * СтавкаНормочаса). Мастер выбирается в табличной части и количество нормочасов задается тут же, а значение ставки нормочаса находится в справочнике Сотрудники, и я не знаю как обратиться к этому значению в справочнике.
---
Вопрос решен, может кому понадобится

```1c
    &НаКлиенте
    Процедура РаботыКоличествоНормочасовПриИзменении(Элемент)
    Стр = Элементы.Работы.ТекущиеДанные;
    Если ЗначениеЗаполнено(Стр.Мастер) Тогда
    Стр.Зарплата = Стр.КоличествоНормочасов * ПолучитьСтавкуНормоЧаса(Стр.Мастер);
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьСтавкуНормочаса(Мастер);
    Возврат Мастер.СтавкаНормоЧаса;
    КонецФункции;
```
---
КоличествоНормочасов * Мастер.СтавкаНормоЧаса
---
Мастер.СтавкаНормоЧаса это строка табличной части? Если да, то не считает
---
Вопрос решен, может кому понадобится

```1c
    &НаКлиенте
    Процедура РаботыКоличествоНормочасовПриИзменении(Элемент)
    Стр = Элементы.Работы.ТекущиеДанные;
    Если ЗначениеЗаполнено(Стр.Мастер) Тогда
    Стр.Зарплата = Стр.КоличествоНормочасов * ПолучитьСтавкуНормоЧаса(Стр.Мастер);
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Функция ПолучитьСтавкуНормочаса(Мастер);
    Возврат Мастер.СтавкаНормоЧаса;
    КонецФункции;
```
В типовых конфигурациях есть типовой справочник, например Проекты, в этом справочнике в метаданных нет форм: формы выбора например. У справочника Проекты есть нетиповой реквизит Критерий_Х. В нетиповом документе Бюджет_Х есть реквизит Проект_Х (тип СправочникСсылка.Проекты), при выборе которого нужно, чтобы в списке выбора указывалась также колонка Критерий_Х. Как это можно реализовать,не создавая форм в конфигураторе ,но
просто в событии начало выбора реквизита используя ОткрытьФорму?
---
никак.
(3) ФормаХ = ОткрытьФорму(..) даст тот-же эффект, но толку от этого мало.
Для изменения элементов формы нужен серверный контекст формы.
---
В таких случаях я использую Форму выбора по запросу https://infostart.ru/public/1385148/
---
ну как минимум нужна форма, в которую будет добавляться колонка. Если форма генерируется автоматически при открытии, туда влезть вряд ли возможно.
---
а влезть вряд ли возможно
Как-то в нее влезть можно, если использовать процедуру ФормаХ = ПолучитьФорму(..), а потом уже ФормаХ.Открыть().
---
никак.
(3) ФормаХ = ОткрытьФорму(..) даст тот-же эффект, но толку от этого мало.
Для изменения элементов формы нужен серверный контекст формы.
---
никак.
Немного изменю задачу. у справочника Проекты есть типовая форма списка ФормаСписка. Ее изменять нельзя.
Можно ли ее использовать для выбора? Если можно,что для этого нужно сделать?
---
Всем спасибо. Вопрос решен использованием типовой формы ФормаСписок справочника Проекты:
ОткрытьФорму(..), для которой есть общий модуль ЛокализацияПроекты (который можно править).